2025-11-13 - 2026-11-13
Overview
46 Releases published by 1 user
Published
v1.5.1
ipx 1.5.1
Published
directory-v1.4.1
ipx-directory 1.4.1
Published
v1.5.0
ipx 1.5.0
Published
directory-v1.4.0
ipx-directory 1.4.0
Published
web-v1.3.0
ipx-web 1.3.0
Published
v1.4.0
ipx 1.4.0
Published
directory-v1.3.0
ipx-directory 1.3.0
Published
web-v1.2.0
ipx-web 1.2.0
Published
v1.3.0
ipx 1.3.0
Published
web-v1.1.0
ipx-web 1.1.0
Published
directory-v1.2.0
ipx-directory 1.2.0
Published
v1.2.0
ipx 1.2.0
Published
directory-v1.1.1
ipx-directory 1.1.1
Published
web-v1.0.2
ipx-web 1.0.2
Published
v1.1.0
ipx 1.1.0
Published
directory-v1.1.0
ipx-directory 1.1.0
Published
web-v1.0.1
ipx-web 1.0.1
Published
v1.0.0
ipx 1.0.0
Published
directory-v1.0.0
ipx-directory 1.0.0
Published
web-v1.0.0
ipx-web 1.0.0
Published
v0.12.0
Published
v0.11.0
Published
v0.10.3
Published
v0.10.2
Published
v0.10.1
Published
v0.10.0
Published
v0.9.1
Published
v0.9.0
Published
v0.8.4
Published
v0.8.3
Published
v0.8.2
Published
v0.8.1
Published
v0.8.0
Published
v0.7.0
Published
v0.6.1
Published
v0.6.0
Published
v0.5.5
Published
v0.5.4
Published
v0.5.3
Published
v0.5.2
Published
v0.5.1
Published
v0.5.0
Published
v0.4.0
Published
v0.2.0
Published
v0.3.0
Published
v0.1.0
445 Issues closed from 2 users
Closed
#456 Phone reader: back and the item's actions float over the text
Closed
#455 Share on a paid episode's file hands over a link signed for you
Closed
#454 Share does not say why an episode gets no play link
Closed
#452 Share does nothing in the iOS app on an episode of a private feed
Closed
#451 The ipx-play image does not build: web/logo-dark.svg is not copied in
Closed
#445 iOS: the app's settings in Settings, not behind a shake
Closed
#442 iOS CarPlay to app handoff issues
Closed
#443 iOS CarPlay lists feeds without podcasts
Closed
#425 iOS: episodes kept on the device, played offline
Closed
#427 iOS: Siri and Shortcuts (App Intents)
Closed
#429 iOS: sleep timer and AirPlay route picker
Closed
#419 iOS: native API client, credentials in the keychain
Closed
#428 iOS: home screen widget, unread and where you left off
Closed
#434 iOS: check the layout on iPad
Closed
#418 An iOS app: the page in a web view, with the phone's own player
Closed
#444 native-bridge test: the CarPlay checks run after the failure count is read
Closed
#441 Terminal reader: moving onto an item marks it read
Closed
#440 Terminal reader: feeds grouped and pinned as on the page
Closed
#439 Terminal reader: play an item's file
Closed
#420 iOS: CarPlay audio
Closed
#438 Image builds compile every dependency again on any Cargo.lock change
Closed
#437 A terminal reader
Closed
#435 iOS: the page itself offline (App-Bound Domains, so the service worker runs)
Closed
#430 iOS: haptics on play, pause and mark read
Closed
#421 iOS: unread badge on the app icon
Closed
#433 iOS: push notifications for new episodes, and an exact badge
Closed
#436 Admin page: an error toast throws, haptic is not defined
Closed
#423 Admin page: the back button sits under the status bar in the iOS app
Closed
#424 Status line at the bottom looks odd against the phone's rounded corners
Closed
#422 A service token's secret was committed in ios/.envrc
Closed
#414 Redesign the admin page
Closed
#413 Item lists don't show which episodes are kept on the device
Closed
#416 Two Refresh buttons on a list on a phone
Closed
#417 The search box's placeholder is cut off on a phone
Closed
#415 A Signal's new hits test fails in the full browser suite, passes alone
Closed
#412 Episodes cannot be kept on the device to listen offline
Closed
#407 Coverage: what the measurements leave out
Closed
#408 Log lines lose their trace ids under a scoped subscriber
Closed
#411 Production log lines lost their trace ids after ba18b44
Closed
#409 No limit on wrong passwords for one name or address
Closed
#410 A download stopped by a restart waits for its feed's next check
Closed
#405 Tests: the Directory inside the app
Closed
#406 Tests: the page's dialogs, keyboard and player
Closed
#404 Tests: the page's live updates
Closed
#402 Tests: the directory's background work
Closed
#401 Tests: feeds that move, WordPress.com, Patreon and the catalogue
Closed
#400 Tests: the daemon's start, shutdown and the CLI talking to it
Closed
#397 Tests: torrents
Closed
#398 Tests: Signals' judging, pacing and icons
Closed
#399 Tests: Cloudflare Access sign-in, the sign-in rate limit and account settings
Closed
#403 Tests: the log's fields and the metrics Grafana reads
Closed
#396 Tests: removing old and over-quota downloads
Closed
#395 No browser test opens the directory's public pages
Closed
#394 The API's coverage is not measured, and coverage is nowhere to be seen over time
Closed
#393 No test signs in with the sign-in form
Closed
#392 Tests, tooling and two served scripts are still JavaScript
Closed
#391 The offline code is untested where it clears for a new account, queues a position and trims pictures
Closed
#390 Nothing measures how much of the code the tests run
Closed
#389 iPX does not open or read without a connection
Closed
#388 An open page keeps running the old version after ipx-web is deployed
Closed
#386 YouTube channels still miss most days after the retry in #382
Closed
#387 prod-check's traces hide whose a trace is and an event's error
Closed
#385 On the Unread tab the page thinks there is more to load once its items are read
Closed
#384 Swipes and a reader that will not scroll leave no trace
Closed
#383 After a long session on the phone the reader stops scrolling and swiping
Closed
#382 YouTube channels fail most days with a 404 or 500 that a second request does not get
Closed
#381 ipx-web logs a deprecation warning at every start
Closed
#380 The directory has no robots.txt or sitemap
Closed
#379 A tap's span runs on to requests it did not set off
Closed
#378 The page overflows its stack reporting a tap
Closed
#377 Syncing a list asks for every account, and its subscription to the list, once per listed feed
Closed
#376 A tap in the page sends no span of its own
Closed
#374 Start-up is not traced
Closed
#375 The directory's log lines carry no trace id
Closed
#373 Commands on the control socket are not traced
Closed
#371 ipx-web publishes no metrics
Closed
#372 Syncing an OPML or Patreon list has no spans inside it
Closed
#370 The directory's requests, feed checks and snapshots have no metrics
Closed
#369 The page's timings are only log lines
Closed
#367 How long a request waits for a database connection, and queries take, is not measured
Closed
#368 Feed failures, new items, downloads and DeadAir's savings are counted only from the log
Closed
#366 Prometheus does not scrape the monitoring itself
Closed
#365 Nothing alerts when ipx goes wrong
Closed
#364 Every API request is logged three times, and ipx has no request metric to stand in for its line
Closed
#363 The logs repeat what metrics and the line itself already say
Closed
#361 Two feeds' items with the same guid: the second can't be marked read
Closed
#362 The same feed can be subscribed twice, over http and https
Closed
#360 An item's text runs the full width of a wide window
Closed
#359 Choose a font in Settings, beside the theme
Closed
#358 A show made a feed of its own stays hidden with its OPML
Closed
#357 The Herd with Colin Cowherd no longer updates: its feed is over the 50 MB cap
Closed
#356 Rust: the root modules hold most of the code
Closed
#355 Rust: types written with their full path instead of imported
Closed
#354 Rust: ipx-feed and ipx-directory have public items without doc comments
Closed
#353 Rust: small departures from the style guide (imports, unwrap, for headers, must_use, bool parameters, SAFETY)
Closed
#352 Unread counts still hash every read-state row a person has
Closed
#347 Unread lists and counts read all of a person's items to find the few unread
Closed
#349 Two requests for the same missing artwork fetch it twice
Closed
#345 Artwork kept on disk is read from FUSE, blocking the async threads
Closed
#348 A Signal's counts run the same verdict query twice
Closed
#346 The item list and feed list wait on queries one at a time that could run together
Closed
#344 A page of items reads every enclosure in the database to find its files
Closed
#323 ipx-web strips only the Cf-Access header names, while ipx trusts whatever header trusted_header names from Caddy's address
Closed
#342 One rw snapshot with an enormous subscriber count breaks the directory's listings for everyone
Closed
#343 On the server's key, one user's Signal text shares a Jev call with other users' Signals and may steer their verdicts
Closed
#340 Any signed-in user can make unlimited TypeSafe calls on the server's key through the icon route, even with signals_on_server off
Closed
#324 Disconnecting sign-in requests escape the password-check limit and run unbounded Argon2 work on the blocking pool
Closed
#338 One OPML upload of many same-titled outlines does quadratic work while holding the catalogue lock, and adds tens of thousands of permanent feeds to the shared scan
Closed
#333 Any signed-in user can mark a feed they do not subscribe to private, and promote an OPML-derived feed out of its OPML
Closed
#335 An open /api/events stream keeps sending daemon events to an account after it is removed
Closed
#325 Private feed keys in the URL path reach every signed-in user through /api/events
Closed
#334 Changing a password leaves every existing session and API token valid
Closed
#336 Bodyless POST routes accept cross-origin simple requests carrying ambient credentials
Closed
#337 A subscribed OPML with very many outlines causes quadratic sync work and an unbounded set of child feeds scanned on the shared worker
Closed
#339 One feed listing many distinct http artwork hosts holds the shared scan worker for hours, on every scan
Closed
#329 The directory's refresher fetches LAN and container-network addresses named by an rw peer or by a listed feed's redirect
Closed
#341 Anonymous directory pages each run an unpaged query over the whole catalogue on a shared 10-connection pool
Closed
#327 Feeds listed in a password-protected OPML inherit its username and password and send them to their own, unrelated hosts
Closed
#328 Enclosure downloads send the feed's basic-auth password to whatever host the feed names, unlike feed fetches
Closed
#332 A kept feed from a private OPML loses its private mark when the OPML is removed and is shared to the directory
Closed
#321 Every fresh install seeds an admin account with the public password 'ipodderx', usable through the unauthenticated login endpoint
Closed
#351 cargo deny: RUSTSEC-2026-0385 (ctutils 0.4.2) and RUSTSEC-2026-0382 (rustls-webpki 0.103.15)
Closed
#330 A feed's .torrent URL, or a tracker it names, can make the daemon buffer an unbounded body in memory
Closed
#320 Feed, enclosure, OPML and artwork fetches reach any internal address, and the responses come back to the user
Closed
#322 A deeply nested OPML, uploaded by any signed-in user or served by any feed publisher, can overflow the stack and abort the whole daemon
Closed
#326 Item and enclosure links from feeds are used as href and window.open targets without a scheme check
Closed
#319 Downloaded enclosure served same-origin with an extension-guessed type allows stored XSS
Closed
#331 Torrent enclosures write with overwrite enabled straight into a folder other feeds share, so one publisher can replace another feed's downloaded episodes
Closed
#318 A multi-file torrent's name is recorded unchecked as the enclosure path, so a feed publisher can point Delete, reap and media serving at any path
Closed
#350 Traces of some routes show their time with nothing under it
Closed
#317 WordPress.com sites answer the feed with a browser check, and the feed fails for hours
Closed
#316 A feed's page keeps showing an error after a check succeeds
Closed
#315 The Directory's cover fan names the wrong property in will-change
Closed
#314 The tab bar's corners do not nest around its tabs
Closed
#313 Cover artwork has no edge, and dark covers melt into dark themes
Closed
#310 Reduced motion leaves no sign that a check for new items is running
Closed
#311 Hover styles stick on a phone after a tap
Closed
#312 Scrolling past the end of a dialog or the phone drawer scrolls the page behind
Closed
#309 iPX's and the page's versions are only in a hover tooltip
Closed
#308 An off switch is nearly invisible in every light theme
Closed
#307 Fields in dialogs have labels that are not tied to them
Closed
#306 Dialogs are not dialogs: focus is not moved in, kept in, or given back
Closed
#305 Text fields' borders fail 3:1 in every theme but High contrast
Closed
#304 Error toasts show the browser's or server's raw text, with no next step
Closed
#303 Toasts are not announced, and error toasts vanish after six seconds
Closed
#302 Search and filter placeholders fail contrast in 20 of 25 palettes
Closed
#301 The player's seek bar has no name
Closed
#300 The read toggle on an item row is named "●"
Closed
#299 Play and Delete on an item row are invisible while focused
Closed
#298 An item can't be opened from the keyboard or a screen reader
Closed
#297 CLAUDE.md's test counts are out of date
Closed
#295 A feed address that serves a large file is read whole into memory
Closed
#296 Searching items for % or _ matches more than was typed
Closed
#294 Other people's download failures and progress show on everyone's page
Closed
#293 Downloads folder missing for a moment makes ipx forget every downloaded file
Closed
#292 Patreon's signed download links go to every open page and the log
Closed
#291 A search box has no button to clear what was typed
Closed
#290 Redesign a feed's settings dialog
Closed
#289 Keep a feed, an OPML or a Patreon creator out of Signals
Closed
#288 Keep a feed, an OPML or a Patreon creator out of All Subscriptions
Closed
#287 A slow item list's trace does not say which list it was
Closed
#286 ipx-web's spans are all named ipx-web
Closed
#285 Switch an item between its HTML and its Markdown when a feed sends both
Closed
#268 App-icon tiles for Signals and DeadAir, drawn as the logo is
Closed
#273 The Directory shows initials for podcasts nobody here subscribes to: their artwork is refused
Closed
#272 Every artwork request scans the whole entries table: no index on entries.image
Closed
#284 A feed written in Markdown shows the Markdown as text, not formatted
Closed
#283 An OPML's page lists its shows, not their items together
Closed
#282 ipx lists atom_syndication, quick-xml and rss but does not use them
Closed
#281 Dependencies with known security advisories: ammonia, rustls, h2, ringbuf
Closed
#280 Keep a podcast from an OPML subscription when the OPML drops it
Closed
#279 Artwork served without an image type is refused, so the podcast shows initials
Closed
#278 Signals' metrics are not broken out by person, so the server's bill cannot be split
Closed
#277 Signals can outrun TypeSafe's rate limits, and a 429 is retried as any other error
Closed
#276 Signals: a look-back window an admin sets, a week by default, and an edit that asks again only what was picked out
Closed
#274 The Signals judge scans the whole entries table on every pass, outside any trace
Closed
#275 Signals call Jev one item at a time, so a new Signal takes about 20 minutes to fill
Closed
#269 The API reference on ipxreader.app has no Signals
Closed
#271 Signals: an admin setting for whose TypeSafe key pays for Jev
Closed
#270 Signals have no metrics, and failed Jev calls do not show as failed traces
Closed
#267 Signals judge an image-only item by its title alone: xkcd's Ground Effect went into Formula 1
Closed
#266 A Signal with no key should link to getting one and adding it
Closed
#265 No + on the Signals folder's row
Closed
#264 Jev is offered brand icons through their search terms: Disney Parks got the Mandalorian
Closed
#263 Jev picks a Signal's icon, on the server's key
Closed
#262 Signal tiles all in one colour
Closed
#261 A Signal's own icon, chosen from Font Awesome Free
Closed
#259 Signals pick out far too much: each keyword is a subject on its own
Closed
#260 Signals judge 25 items every 5 minutes instead of going straight through the queue
Closed
#258 Signal unread counts go stale on the page
Closed
#257 Signals: TypeSafe answers 422 to every Jev request
Closed
#256 Signals folder right under All Subscriptions, with its + on the folder's row
Closed
#255 Signals in a folder in the sidebar, like an OPML or Patreon creator
Closed
#254 Signals: smart feeds picked by Jev
Closed
#253 The directory sends its answers uncompressed
Closed
#250 /api/directory's time is mostly outside any span
Closed
#252 The Directory knows only what this server's people subscribe to
Closed
#251 The dashboard's Database connections panel looks exhausted when it is not
Closed
#249 Currently Listening's list takes 1.3 s to answer
Closed
#248 Currently Listening and the Directory's front page still wait for the server
Closed
#247 Opening a list waits for the server, with nothing to say it is loading
Closed
#246 How long a list takes to show after a click is not measured
Closed
#245 The load test's browse scenario fails without a directory
Closed
#240 The feed list counts every item of every feed on each load
Closed
#241 All Subscriptions' item query takes 0.3-0.9 s for about 14,000 items
Closed
#242 Feeds that never answer 'not modified' are downloaded whole every hour
Closed
#244 Feed fetches accept only gzip
Closed
#239 ipx-web sends the API uncompressed
Closed
#243 The directory re-checks every feed every six hours
Closed
#238 A private feed's key is written to the log when its fetch fails
Closed
#236 The page's type-check does not catch nulls
Closed
#237 ipx-web's image carries curl 8.22.0, affected by CVE-2026-92392
Closed
#235 The page's type-check catches little: strict is off
Closed
#234 No unit tests for the page's own functions
Closed
#232 Unread counts blink as a scan goes by
Closed
#233 Refresh buttons should turn from the press to the end of that scan
Closed
#231 The check-every-feed icon turns in jerks
Closed
#230 A server that accepts and never answers holds a scan for 30 s
Closed
#228 A forced scan looks up site icons one feed at a time
Closed
#229 A feed's fetch span does not say which feed
Closed
#227 Directory: a feed check round waits on each feed in turn
Closed
#226 Grafana: the Downloads panel fails
Closed
#225 Private feeds' tokens are kept in traces
Closed
#224 Memory: no way to tell what holds it, and the directory reports none
Closed
#223 Docs: a page for each topic, and an API reference laid out like docs.rs
Closed
#222 The website has no docs: how to install ipx and ipx-web, and how to use ipx's and the directory's APIs
Closed
#221 The prod-check skill still expects the healthcheck's lines after #218
Closed
#220 ipx-directory holds about 900 MB, and nothing shows whether it climbs
Closed
#219 The page reports a NetworkError rejection each time a background fetch fails
Closed
#217 ipx's image does not build: the directory crate's logo files are not copied in
Closed
#216 A home page for iPX at ipxreader.app
Closed
#214 The directory moves to directory.ipxreader.app
Closed
#215 A public web view of the directory at directory.ipxreader.app
Closed
#207 Split ipx into directory, backend and frontend
Closed
#206 Split: directory admin from ipx
Closed
#213 ipx-web and ipx-directory send no traces
Closed
#212 On a phone, a Directory feed's Subscribe button is squashed to 18px
Closed
#210 Dashboard, metrics and traces do not cover ipx-directory or ipx-web
Closed
#211 ipx sends the directory its whole snapshot every half minute
Closed
#203 Split: the frontend in its own container behind Caddy
Closed
#205 Split: ipx uses the directory service
Closed
#209 ipx-web strips Cloudflare Access headers from the tunnel too
Closed
#204 Split: the directory service at ipx-dir.sdf1.net
Closed
#202 Split: move to a Cargo workspace, shared feed crate
Closed
#208 Move ipx into its own Arcane project, with a sample compose for others
Closed
#201 Add a feed asks for a folder
Closed
#200 A larger database pool on Postgres
Closed
#199 The Database connections panel looks maxed out when the pool is idle
Closed
#198 The Artwork kept panel is a flat line at 500 MiB
Closed
#196 Postgres logs an error every 30 seconds for the old DeadAir table
Closed
#197 A scan's not-due notices overflow the live-update stream
Closed
#193 Every scan waits 1-12 s for a check that only needs doing once a day
Closed
#195 Metrics miss the worker's current job, the queues and the work in flight
Closed
#194 No metrics for what the daemon holds between requests, such as database connections in use
Closed
#192 A play's trace holds only its report, not the playlist and audio it fetched
Closed
#188 All Subscriptions takes about a second to list, nearly all of it one query
Closed
#191 The changelog's Unreleased link compares from 0.10.3, not 0.11.0
Closed
#190 Nothing the page does in the browser reaches the logs or traces
Closed
#189 Cloudflare caches DeadAir's audio, so its copy skips the subscriber check
Closed
#187 Traces cannot say where a slow reap, episode list or DeadAir pass spends its time
Closed
#184 Browser test "touch gestures on a phone ... goes to the item just read" fails now and then in the full run
Closed
#186 Saving an episode keeps its dead air though DeadAir is on
Closed
#185 DeadAir sits outside the box of a show's other podcast settings
Closed
#183 DeadAir's pause choice reads as four unrelated buttons
Closed
#178 DeadAir: start an episode at once and move to the shortened copy when it is ready
Closed
#182 DeadAir leaves pauses too short, so speech sounds rushed
Closed
#181 DeadAir: play episodes through an HLS playlist of the original instead of a copy
Closed
#180 Test whether an iPhone plays DeadAir's cuts as an HLS playlist over the original file
Closed
#179 DeadAir copies are kept as long as the episode, doubling its space
Closed
#177 The container's ffmpeg is 5.1, two major versions behind
Closed
#176 Show that DeadAir is still working on an episode
Closed
#175 A downloaded file's buttons wrap onto two rows in the Files pane
Closed
#174 DeadAir fails on an episode with more than about 100 silences, and never tries it again
Closed
#173 DeadAir makes no copy of an episode you have opened but not played
Closed
#172 DeadAir in the page: a switch per feed, one beside the speed, and the time saved
Closed
#171 DeadAir: play episodes with their silences shortened
Closed
#170 The web server leaves Nagle's algorithm on, so a response sent in parts can wait for the browser's acknowledgement
Closed
#169 Five Glass Cannon feeds show no artwork, and every page load logs a 502 for each
Closed
#167 Redesign the feed settings dialog
Closed
#168 All Subscriptions shows unread items that have been read, until the page is reloaded
Closed
#166 A feed set to download 0 downloads nothing, though the dialog says 0 means every episode
Closed
#165 The feed list counts every item of every feed on the server, about 70% of its time
Closed
#164 The feed list's traces do not say where its 290 ms goes
Closed
#163 patch_feed asks for the subscription twice
Closed
#161 Adding a feed from the CLI and from the page are the same steps written twice
Closed
#162 Downloading or deleting a file that no longer exists answers 500 instead of 404
Closed
#160 A feed's Directory page builds the whole Directory to check that one feed is listed
Closed
#159 The feed list asks the database three times per feed in a Patreon or OPML group for the group's title
Closed
#157 Removing an account leaves the feeds only they read downloading for no one
Closed
#158 A torrent of several files can be neither played nor reaped
Closed
#156 The reaper counts read marks and pins of people who no longer subscribe
Closed
#155 An episode whose file turns out to be a torrent is never marked downloaded, and is fetched again every scan
Closed
#154 Download latest with more than 64 items hangs the request and holds up adding feeds and Refresh
Closed
#152 A download that stalls partway stops every scan and download, and the daemon still reports healthy
Closed
#153 A change to the feed list can silently undo another made at the same time
Closed
#147 Color matching
Closed
#151 On a phone the closed feed list casts its shadow along the page's left edge
Closed
#149 toddstashwick-com-devil-inside has never been read: the site redirects to itself forever
Closed
#145 daily-quests and hots-dots are dead: both domains have lapsed
Closed
#144 Pelgrane Press's feed is behind a browser check that refuses iPX most of the time
Closed
#150 Two Directory feeds are dead: Yahoo Finance's is gone, TV Fanatic's is behind a browser check
Closed
#146 Icons should not wrap
Closed
#148 Pin icon remains hard to read
Closed
#143 A moment's DNS failure keeps a listed feed failing for a day: 205 feeds have never been read
Closed
#142 A feed's Directory page says nobody subscribes when someone does, and not why it has nothing
Closed
#141 A feed's corrections never reach an item already stored: a scan skips every item it has seen
Closed
#136 On SQLite every request and every scan write share one database connection
Closed
#120 ipx rm and ipx add while the daemon runs change the database but not the daemon, which then undoes them
Closed
#127 The search box does nothing on Currently Listening
Closed
#119 A feed whose domain has lapsed looks like a quiet feed, not a failing one
Closed
#139 Run the load tests on Postgres, as production runs
Closed
#140 On Postgres every write waits for the server's disk: a scan takes most of a second a feed
Closed
#133 Load tests: what many people at once do to the server, which the browser tests cannot show
Closed
#138 How long a sign-in takes to fail tells anyone whether the name is an account
Closed
#134 Every feed's artwork in the feed list flashes while a refresh of every feed runs
Closed
#137 A flood of wrong passwords stalls every other request
Closed
#135 On SQLite every statement waits for the disk: a scan takes over a second a feed
Closed
#132 The Directory's category tiles fan their covers choppily
Closed
#130 Keep a feed's own description, for its page in the Directory
Closed
#131 Some Directory category tiles are green, which reads as yours
Closed
#129 Anyone signed in can read any feed's items and files, a private feed's included
Closed
#128 Open a feed from the Directory before subscribing to it
Closed
#126 The search box does nothing on the Directory
Closed
#124 Redesign the Directory as a place to browse, with the most subscribed feeds in it
Closed
#125 Feeds that use Apple's Football or Soccer category show as categories of their own beside Sports
Closed
#123 No way for a script or agent to use the API as a person
Closed
#122 The Directory cannot be sorted: only most subscribers first
Closed
#121 A pinned item's pin looks nothing like a pinned feed's
Closed
#118 The Directory's category chips mix categories and subcategories in one flat list
Closed
#117 Most feeds have no Directory category: blogs name none, and it is only set by hand
Closed
#112 The daemon times out fetching some feeds that answer at once from anywhere else
Closed
#115 Follow a feed that has moved for good to its new address
Closed
#116 Items without a title all read "(untitled)"
Closed
#114 The daemon runs a scan pass every minute, nearly always for nothing
Closed
#113 The download queue counts 4420 files that will never download on their own
Closed
#111 Keep artwork on disk and serve it from iPX
Closed
#109 iPhones asking for /apple-touch-icon-precomposed.png get a 404
Closed
#110 Artwork published on http should be stored on https where its host serves it
Closed
#108 A feed whose server hangs holds up the whole scan: fetches have no timeout
Closed
#107 Seed the Directory with vetted news feeds, and keep it free of dead ones
Closed
#106 The startup warning says the token is all that guards the web UI
Closed
#105 The page reloads the whole feed list after every change to one feed
Closed
#104 Feeds are fetched one at a time, so a refresh waits on every site in turn
Closed
#103 An open page reloads the whole feed list every minute, and settings with it
Closed
#102 Adding a site that links no feed subscribes to its web page
Closed
#101 Adding a site without https:// fails on every check
Closed
#100 A feed that was failing stays in the database after its last subscriber leaves
Closed
#99 A failing feed is retried on its normal schedule forever
Closed
#97 Every scan downloads three more old episodes of each show, working back through its whole history
Closed
#98 An unlimited per-check limit stops downloads on Postgres
Closed
#96 Most of a slow feed's scan time is in untraced work after the fetch
Closed
#95 Feeds with no artwork of their own ask their website for an icon on every scan
Closed
#94 The feed list takes about 320ms to load: six queries per feed
Closed
#91 Log as JSON for Loki
Closed
#90 Artwork only on http:// does not show on the https page
Closed
#82 ipx list does not show feed ids
Closed
#85 Remove ipx copy-db once Postgres is settled
Closed
#92 Four subscribed feeds fail on every scan: their publishers' addresses are dead
Closed
#93 A failing feed's error mark is easy to miss, especially in dark mode
Closed
#89 A feed's own artwork is used even when it is gone
Closed
#81 The log is lost on every deploy
Closed
#87 Send OpenTelemetry traces to Tempo
Closed
#88 The log carries terminal colour codes when nobody is at a terminal
Closed
#86 Remove subscribing the first admin to the catalogue
Closed
#84 Remove the move of feeds and settings from config.toml into the database
Closed
#83 Remove the startup pass that folds files WordPress listed twice
Closed
#80 A site icon is never looked up again after the first time
Closed
#79 A site icon the page names but that is missing is stored anyway
Closed
#78 The refresh button gives no sign the feed is being checked
Closed
#77 Refreshing every feed still asks each one only for changes
Closed
#76 A feed page's refresh button looks different from the buttons beside it
Closed
#75 The Directory's Subscribe button shows the Subscribed icon
Closed
#74 Pinned and read look different in each place they are shown
Closed
#73 Existing feeds wait for new content before getting a site icon
Closed
#72 Looking for a page's feed link can panic on non-ASCII text
Closed
#71 Adding a web page's address instead of its feed fails
Closed
#70 A feed with no image shows no artwork, even when its site has a favicon
Closed
#68 Pull to refresh gives no sign it started
Closed
#69 The theme follows the account, so every device gets the same one
Closed
#67 Homepage cannot show ipx's numbers
Closed
#66 The logo takes room from search in the phone's top bar
Closed
#65 The iOS home-screen icon does not follow light and dark mode
Closed
#64 The favicon is the light logo in dark mode too
Closed
#63 Modern theme and the logo's dark variant
Closed
#62 Between releases the running build claims to be the last release
Closed
#61 Settings shows the server's download folder, which nobody can change there
Closed
#60 Logo beside the add-feed button, with the name and version on hover
Closed
#59 The logo's orange needle is too close to the blue bars
Closed
#50 When viewing unread articles, unable to go back after read.
Closed
#58 On the Unread tab a swipe back cannot reach the item just read
Closed
#57 A changed favicon is not picked up for a day
Closed
#56 Rename iPodderX to iPX
Closed
#55 A logo drawn from the radio's screen, to app icon guidelines
Closed
#54 Nothing keeps clear of the Dynamic Island and status bar
Closed
#53 The phone layout looks like a shrunk desktop page, not an iOS app
Closed
#52 Swiping between items shows the item list underneath
Closed
#51 Glass theme: light catching the panel edges
Closed
#48 add a share option
Closed
#47 User managed list of blocked keywords.
Closed
#49 Swipe gesture to go to next article
Closed
#46 The bottom bar is cut off by the home indicator in a full-screen shell
Closed
#44 Browser test 'an export from one account imports into another' is flaky
Closed
#45 The page cannot hand playback to a native app
Closed
#43 Glass theme in the style of Apple's Liquid Glass
Closed
#42 Substack subtitles are dropped
Closed
#41 Proxy sign-in trusts a header any container on Tower can send
Closed
#40 Web token printed in the startup log
Closed
#39 tea comment never exits without a closed stdin, as CLAUDE.md shows it
Closed
#38 CLAUDE.md's pkill -x ipx would also kill production's daemon
Closed
#37 Scan all feeds toast
Closed
#18 Backend DB To use PostgreSQL instead of SQLite
Closed
#36 Revert Pin on entries move to the top
Closed
#35 Pinned entries should be at the top of the entry list
Closed
#19 Admin Redesign
Closed
#33 Pin Feed
Closed
#34 Play/pause icons do not match
Closed
#22 Enable mobile gestures for feed and articles
Closed
#32 ipodderx logo as favicon?
Closed
#31 Media icon alignment is not consistent
Closed
#27 Updated Themes and selector
Closed
#23 use swc to minify html and js
Closed
#24 Move inline js to typescript
Closed
#21 On mobile there is no way to currently delete an enclosure item
Closed
#30 Add feed modal should not include popular list
Closed
#20 Feed errors in ui while scanning all feeds
Closed
#25 unrendered js code or something in body of article
Closed
#28 the-observation-deck missing image
Closed
#29 admin and logging permissions
Closed
#15 Remove light/dark/classic switcher from main UI
Closed
#16 Unread status
Closed
#17 When filtering for unread, ui unread-> read behaviour is undesired
Closed
#14 Currently listening lists nothing
Closed
#11 Switch to using the Inter font
Closed
#12 double audio
Closed
#13 pin header icon is not aligned
Closed
#10 Directory: let an admin give a blog its category
Closed
#9 Pin not flag
Closed
#8 Keybindings
Closed
#3 Retire davewiner's 922 rows, without taking the 12 that people still read
Closed
#6 Directory: split the rail by what a feed is before what it is about
Closed
#7 Directory: replace the flat list with a chip rail over an artwork grid
Closed
#4 Directory: give feeds a category, from the feed itself
Closed
#5 Directory: expose category on /api/popular and /api/directory
Closed
#2 Say what a site sent when it is not XML at all
Closed
#1 Add a feed never loads its Popular list when opened over Directory or Popular
456 Issues created by 1 user
Opened
#1 Add a feed never loads its Popular list when opened over Directory or Popular
Opened
#2 Say what a site sent when it is not XML at all
Opened
#3 Retire davewiner's 922 rows, without taking the 12 that people still read
Opened
#4 Directory: give feeds a category, from the feed itself
Opened
#5 Directory: expose category on /api/popular and /api/directory
Opened
#6 Directory: split the rail by what a feed is before what it is about
Opened
#7 Directory: replace the flat list with a chip rail over an artwork grid
Opened
#8 Keybindings
Opened
#9 Pin not flag
Opened
#10 Directory: let an admin give a blog its category
Opened
#11 Switch to using the Inter font
Opened
#12 double audio
Opened
#13 pin header icon is not aligned
Opened
#14 Currently listening lists nothing
Opened
#15 Remove light/dark/classic switcher from main UI
Opened
#16 Unread status
Opened
#17 When filtering for unread, ui unread-> read behaviour is undesired
Opened
#18 Backend DB To use PostgreSQL instead of SQLite
Opened
#19 Admin Redesign
Opened
#20 Feed errors in ui while scanning all feeds
Opened
#21 On mobile there is no way to currently delete an enclosure item
Opened
#22 Enable mobile gestures for feed and articles
Opened
#23 use swc to minify html and js
Opened
#24 Move inline js to typescript
Opened
#25 unrendered js code or something in body of article
Opened
#27 Updated Themes and selector
Opened
#28 the-observation-deck missing image
Opened
#29 admin and logging permissions
Opened
#30 Add feed modal should not include popular list
Opened
#31 Media icon alignment is not consistent
Opened
#32 ipodderx logo as favicon?
Opened
#33 Pin Feed
Opened
#34 Play/pause icons do not match
Opened
#35 Pinned entries should be at the top of the entry list
Opened
#36 Revert Pin on entries move to the top
Opened
#37 Scan all feeds toast
Opened
#38 CLAUDE.md's pkill -x ipx would also kill production's daemon
Opened
#39 tea comment never exits without a closed stdin, as CLAUDE.md shows it
Opened
#40 Web token printed in the startup log
Opened
#41 Proxy sign-in trusts a header any container on Tower can send
Opened
#42 Substack subtitles are dropped
Opened
#43 Glass theme in the style of Apple's Liquid Glass
Opened
#44 Browser test 'an export from one account imports into another' is flaky
Opened
#45 The page cannot hand playback to a native app
Opened
#46 The bottom bar is cut off by the home indicator in a full-screen shell
Opened
#47 User managed list of blocked keywords.
Opened
#48 add a share option
Opened
#49 Swipe gesture to go to next article
Opened
#50 When viewing unread articles, unable to go back after read.
Opened
#51 Glass theme: light catching the panel edges
Opened
#52 Swiping between items shows the item list underneath
Opened
#53 The phone layout looks like a shrunk desktop page, not an iOS app
Opened
#54 Nothing keeps clear of the Dynamic Island and status bar
Opened
#55 A logo drawn from the radio's screen, to app icon guidelines
Opened
#56 Rename iPodderX to iPX
Opened
#57 A changed favicon is not picked up for a day
Opened
#58 On the Unread tab a swipe back cannot reach the item just read
Opened
#59 The logo's orange needle is too close to the blue bars
Opened
#60 Logo beside the add-feed button, with the name and version on hover
Opened
#61 Settings shows the server's download folder, which nobody can change there
Opened
#62 Between releases the running build claims to be the last release
Opened
#63 Modern theme and the logo's dark variant
Opened
#64 The favicon is the light logo in dark mode too
Opened
#65 The iOS home-screen icon does not follow light and dark mode
Opened
#66 The logo takes room from search in the phone's top bar
Opened
#67 Homepage cannot show ipx's numbers
Opened
#68 Pull to refresh gives no sign it started
Opened
#69 The theme follows the account, so every device gets the same one
Opened
#70 A feed with no image shows no artwork, even when its site has a favicon
Opened
#71 Adding a web page's address instead of its feed fails
Opened
#72 Looking for a page's feed link can panic on non-ASCII text
Opened
#73 Existing feeds wait for new content before getting a site icon
Opened
#74 Pinned and read look different in each place they are shown
Opened
#75 The Directory's Subscribe button shows the Subscribed icon
Opened
#76 A feed page's refresh button looks different from the buttons beside it
Opened
#77 Refreshing every feed still asks each one only for changes
Opened
#78 The refresh button gives no sign the feed is being checked
Opened
#79 A site icon the page names but that is missing is stored anyway
Opened
#80 A site icon is never looked up again after the first time
Opened
#81 The log is lost on every deploy
Opened
#82 ipx list does not show feed ids
Opened
#83 Remove the startup pass that folds files WordPress listed twice
Opened
#84 Remove the move of feeds and settings from config.toml into the database
Opened
#85 Remove ipx copy-db once Postgres is settled
Opened
#86 Remove subscribing the first admin to the catalogue
Opened
#87 Send OpenTelemetry traces to Tempo
Opened
#88 The log carries terminal colour codes when nobody is at a terminal
Opened
#89 A feed's own artwork is used even when it is gone
Opened
#90 Artwork only on http:// does not show on the https page
Opened
#91 Log as JSON for Loki
Opened
#92 Four subscribed feeds fail on every scan: their publishers' addresses are dead
Opened
#93 A failing feed's error mark is easy to miss, especially in dark mode
Opened
#94 The feed list takes about 320ms to load: six queries per feed
Opened
#95 Feeds with no artwork of their own ask their website for an icon on every scan
Opened
#96 Most of a slow feed's scan time is in untraced work after the fetch
Opened
#97 Every scan downloads three more old episodes of each show, working back through its whole history
Opened
#98 An unlimited per-check limit stops downloads on Postgres
Opened
#99 A failing feed is retried on its normal schedule forever
Opened
#100 A feed that was failing stays in the database after its last subscriber leaves
Opened
#101 Adding a site without https:// fails on every check
Opened
#102 Adding a site that links no feed subscribes to its web page
Opened
#103 An open page reloads the whole feed list every minute, and settings with it
Opened
#104 Feeds are fetched one at a time, so a refresh waits on every site in turn
Opened
#105 The page reloads the whole feed list after every change to one feed
Opened
#106 The startup warning says the token is all that guards the web UI
Opened
#107 Seed the Directory with vetted news feeds, and keep it free of dead ones
Opened
#108 A feed whose server hangs holds up the whole scan: fetches have no timeout
Opened
#109 iPhones asking for /apple-touch-icon-precomposed.png get a 404
Opened
#110 Artwork published on http should be stored on https where its host serves it
Opened
#111 Keep artwork on disk and serve it from iPX
Opened
#112 The daemon times out fetching some feeds that answer at once from anywhere else
Opened
#113 The download queue counts 4420 files that will never download on their own
Opened
#114 The daemon runs a scan pass every minute, nearly always for nothing
Opened
#115 Follow a feed that has moved for good to its new address
Opened
#116 Items without a title all read "(untitled)"
Opened
#117 Most feeds have no Directory category: blogs name none, and it is only set by hand
Opened
#118 The Directory's category chips mix categories and subcategories in one flat list
Opened
#119 A feed whose domain has lapsed looks like a quiet feed, not a failing one
Opened
#120 ipx rm and ipx add while the daemon runs change the database but not the daemon, which then undoes them
Opened
#121 A pinned item's pin looks nothing like a pinned feed's
Opened
#122 The Directory cannot be sorted: only most subscribers first
Opened
#123 No way for a script or agent to use the API as a person
Opened
#124 Redesign the Directory as a place to browse, with the most subscribed feeds in it
Opened
#125 Feeds that use Apple's Football or Soccer category show as categories of their own beside Sports
Opened
#126 The search box does nothing on the Directory
Opened
#127 The search box does nothing on Currently Listening
Opened
#128 Open a feed from the Directory before subscribing to it
Opened
#129 Anyone signed in can read any feed's items and files, a private feed's included
Opened
#130 Keep a feed's own description, for its page in the Directory
Opened
#131 Some Directory category tiles are green, which reads as yours
Opened
#132 The Directory's category tiles fan their covers choppily
Opened
#133 Load tests: what many people at once do to the server, which the browser tests cannot show
Opened
#134 Every feed's artwork in the feed list flashes while a refresh of every feed runs
Opened
#135 On SQLite every statement waits for the disk: a scan takes over a second a feed
Opened
#136 On SQLite every request and every scan write share one database connection
Opened
#137 A flood of wrong passwords stalls every other request
Opened
#138 How long a sign-in takes to fail tells anyone whether the name is an account
Opened
#139 Run the load tests on Postgres, as production runs
Opened
#140 On Postgres every write waits for the server's disk: a scan takes most of a second a feed
Opened
#141 A feed's corrections never reach an item already stored: a scan skips every item it has seen
Opened
#142 A feed's Directory page says nobody subscribes when someone does, and not why it has nothing
Opened
#143 A moment's DNS failure keeps a listed feed failing for a day: 205 feeds have never been read
Opened
#144 Pelgrane Press's feed is behind a browser check that refuses iPX most of the time
Opened
#145 daily-quests and hots-dots are dead: both domains have lapsed
Opened
#146 Icons should not wrap
Opened
#147 Color matching
Opened
#148 Pin icon remains hard to read
Opened
#149 toddstashwick-com-devil-inside has never been read: the site redirects to itself forever
Opened
#150 Two Directory feeds are dead: Yahoo Finance's is gone, TV Fanatic's is behind a browser check
Opened
#151 On a phone the closed feed list casts its shadow along the page's left edge
Opened
#152 A download that stalls partway stops every scan and download, and the daemon still reports healthy
Opened
#153 A change to the feed list can silently undo another made at the same time
Opened
#154 Download latest with more than 64 items hangs the request and holds up adding feeds and Refresh
Opened
#155 An episode whose file turns out to be a torrent is never marked downloaded, and is fetched again every scan
Opened
#156 The reaper counts read marks and pins of people who no longer subscribe
Opened
#157 Removing an account leaves the feeds only they read downloading for no one
Opened
#158 A torrent of several files can be neither played nor reaped
Opened
#159 The feed list asks the database three times per feed in a Patreon or OPML group for the group's title
Opened
#160 A feed's Directory page builds the whole Directory to check that one feed is listed
Opened
#161 Adding a feed from the CLI and from the page are the same steps written twice
Opened
#162 Downloading or deleting a file that no longer exists answers 500 instead of 404
Opened
#163 patch_feed asks for the subscription twice
Opened
#164 The feed list's traces do not say where its 290 ms goes
Opened
#165 The feed list counts every item of every feed on the server, about 70% of its time
Opened
#166 A feed set to download 0 downloads nothing, though the dialog says 0 means every episode
Opened
#167 Redesign the feed settings dialog
Opened
#168 All Subscriptions shows unread items that have been read, until the page is reloaded
Opened
#169 Five Glass Cannon feeds show no artwork, and every page load logs a 502 for each
Opened
#170 The web server leaves Nagle's algorithm on, so a response sent in parts can wait for the browser's acknowledgement
Opened
#171 DeadAir: play episodes with their silences shortened
Opened
#172 DeadAir in the page: a switch per feed, one beside the speed, and the time saved
Opened
#173 DeadAir makes no copy of an episode you have opened but not played
Opened
#174 DeadAir fails on an episode with more than about 100 silences, and never tries it again
Opened
#175 A downloaded file's buttons wrap onto two rows in the Files pane
Opened
#176 Show that DeadAir is still working on an episode
Opened
#177 The container's ffmpeg is 5.1, two major versions behind
Opened
#178 DeadAir: start an episode at once and move to the shortened copy when it is ready
Opened
#179 DeadAir copies are kept as long as the episode, doubling its space
Opened
#180 Test whether an iPhone plays DeadAir's cuts as an HLS playlist over the original file
Opened
#181 DeadAir: play episodes through an HLS playlist of the original instead of a copy
Opened
#182 DeadAir leaves pauses too short, so speech sounds rushed
Opened
#183 DeadAir's pause choice reads as four unrelated buttons
Opened
#184 Browser test "touch gestures on a phone ... goes to the item just read" fails now and then in the full run
Opened
#185 DeadAir sits outside the box of a show's other podcast settings
Opened
#186 Saving an episode keeps its dead air though DeadAir is on
Opened
#187 Traces cannot say where a slow reap, episode list or DeadAir pass spends its time
Opened
#188 All Subscriptions takes about a second to list, nearly all of it one query
Opened
#189 Cloudflare caches DeadAir's audio, so its copy skips the subscriber check
Opened
#190 Nothing the page does in the browser reaches the logs or traces
Opened
#191 The changelog's Unreleased link compares from 0.10.3, not 0.11.0
Opened
#192 A play's trace holds only its report, not the playlist and audio it fetched
Opened
#193 Every scan waits 1-12 s for a check that only needs doing once a day
Opened
#194 No metrics for what the daemon holds between requests, such as database connections in use
Opened
#195 Metrics miss the worker's current job, the queues and the work in flight
Opened
#196 Postgres logs an error every 30 seconds for the old DeadAir table
Opened
#197 A scan's not-due notices overflow the live-update stream
Opened
#198 The Artwork kept panel is a flat line at 500 MiB
Opened
#199 The Database connections panel looks maxed out when the pool is idle
Opened
#200 A larger database pool on Postgres
Opened
#201 Add a feed asks for a folder
Opened
#202 Split: move to a Cargo workspace, shared feed crate
Opened
#203 Split: the frontend in its own container behind Caddy
Opened
#204 Split: the directory service at ipx-dir.sdf1.net
Opened
#205 Split: ipx uses the directory service
Opened
#206 Split: directory admin from ipx
Opened
#207 Split ipx into directory, backend and frontend
Opened
#208 Move ipx into its own Arcane project, with a sample compose for others
Opened
#209 ipx-web strips Cloudflare Access headers from the tunnel too
Opened
#210 Dashboard, metrics and traces do not cover ipx-directory or ipx-web
Opened
#211 ipx sends the directory its whole snapshot every half minute
Opened
#212 On a phone, a Directory feed's Subscribe button is squashed to 18px
Opened
#213 ipx-web and ipx-directory send no traces
Opened
#214 The directory moves to directory.ipxreader.app
Opened
#215 A public web view of the directory at directory.ipxreader.app
Opened
#216 A home page for iPX at ipxreader.app
Opened
#217 ipx's image does not build: the directory crate's logo files are not copied in
Opened
#219 The page reports a NetworkError rejection each time a background fetch fails
Opened
#220 ipx-directory holds about 900 MB, and nothing shows whether it climbs
Opened
#221 The prod-check skill still expects the healthcheck's lines after #218
Opened
#222 The website has no docs: how to install ipx and ipx-web, and how to use ipx's and the directory's APIs
Opened
#223 Docs: a page for each topic, and an API reference laid out like docs.rs
Opened
#224 Memory: no way to tell what holds it, and the directory reports none
Opened
#225 Private feeds' tokens are kept in traces
Opened
#226 Grafana: the Downloads panel fails
Opened
#227 Directory: a feed check round waits on each feed in turn
Opened
#228 A forced scan looks up site icons one feed at a time
Opened
#229 A feed's fetch span does not say which feed
Opened
#230 A server that accepts and never answers holds a scan for 30 s
Opened
#231 The check-every-feed icon turns in jerks
Opened
#232 Unread counts blink as a scan goes by
Opened
#233 Refresh buttons should turn from the press to the end of that scan
Opened
#234 No unit tests for the page's own functions
Opened
#235 The page's type-check catches little: strict is off
Opened
#236 The page's type-check does not catch nulls
Opened
#237 ipx-web's image carries curl 8.22.0, affected by CVE-2026-92392
Opened
#238 A private feed's key is written to the log when its fetch fails
Opened
#239 ipx-web sends the API uncompressed
Opened
#240 The feed list counts every item of every feed on each load
Opened
#241 All Subscriptions' item query takes 0.3-0.9 s for about 14,000 items
Opened
#242 Feeds that never answer 'not modified' are downloaded whole every hour
Opened
#243 The directory re-checks every feed every six hours
Opened
#244 Feed fetches accept only gzip
Opened
#245 The load test's browse scenario fails without a directory
Opened
#246 How long a list takes to show after a click is not measured
Opened
#247 Opening a list waits for the server, with nothing to say it is loading
Opened
#248 Currently Listening and the Directory's front page still wait for the server
Opened
#249 Currently Listening's list takes 1.3 s to answer
Opened
#250 /api/directory's time is mostly outside any span
Opened
#251 The dashboard's Database connections panel looks exhausted when it is not
Opened
#252 The Directory knows only what this server's people subscribe to
Opened
#253 The directory sends its answers uncompressed
Opened
#254 Signals: smart feeds picked by Jev
Opened
#255 Signals in a folder in the sidebar, like an OPML or Patreon creator
Opened
#256 Signals folder right under All Subscriptions, with its + on the folder's row
Opened
#257 Signals: TypeSafe answers 422 to every Jev request
Opened
#258 Signal unread counts go stale on the page
Opened
#259 Signals pick out far too much: each keyword is a subject on its own
Opened
#260 Signals judge 25 items every 5 minutes instead of going straight through the queue
Opened
#261 A Signal's own icon, chosen from Font Awesome Free
Opened
#262 Signal tiles all in one colour
Opened
#263 Jev picks a Signal's icon, on the server's key
Opened
#264 Jev is offered brand icons through their search terms: Disney Parks got the Mandalorian
Opened
#265 No + on the Signals folder's row
Opened
#266 A Signal with no key should link to getting one and adding it
Opened
#267 Signals judge an image-only item by its title alone: xkcd's Ground Effect went into Formula 1
Opened
#268 App-icon tiles for Signals and DeadAir, drawn as the logo is
Opened
#269 The API reference on ipxreader.app has no Signals
Opened
#270 Signals have no metrics, and failed Jev calls do not show as failed traces
Opened
#271 Signals: an admin setting for whose TypeSafe key pays for Jev
Opened
#272 Every artwork request scans the whole entries table: no index on entries.image
Opened
#273 The Directory shows initials for podcasts nobody here subscribes to: their artwork is refused
Opened
#274 The Signals judge scans the whole entries table on every pass, outside any trace
Opened
#275 Signals call Jev one item at a time, so a new Signal takes about 20 minutes to fill
Opened
#276 Signals: a look-back window an admin sets, a week by default, and an edit that asks again only what was picked out
Opened
#277 Signals can outrun TypeSafe's rate limits, and a 429 is retried as any other error
Opened
#278 Signals' metrics are not broken out by person, so the server's bill cannot be split
Opened
#279 Artwork served without an image type is refused, so the podcast shows initials
Opened
#280 Keep a podcast from an OPML subscription when the OPML drops it
Opened
#281 Dependencies with known security advisories: ammonia, rustls, h2, ringbuf
Opened
#282 ipx lists atom_syndication, quick-xml and rss but does not use them
Opened
#283 An OPML's page lists its shows, not their items together
Opened
#284 A feed written in Markdown shows the Markdown as text, not formatted
Opened
#285 Switch an item between its HTML and its Markdown when a feed sends both
Opened
#286 ipx-web's spans are all named ipx-web
Opened
#287 A slow item list's trace does not say which list it was
Opened
#288 Keep a feed, an OPML or a Patreon creator out of All Subscriptions
Opened
#289 Keep a feed, an OPML or a Patreon creator out of Signals
Opened
#290 Redesign a feed's settings dialog
Opened
#291 A search box has no button to clear what was typed
Opened
#292 Patreon's signed download links go to every open page and the log
Opened
#293 Downloads folder missing for a moment makes ipx forget every downloaded file
Opened
#294 Other people's download failures and progress show on everyone's page
Opened
#295 A feed address that serves a large file is read whole into memory
Opened
#296 Searching items for % or _ matches more than was typed
Opened
#297 CLAUDE.md's test counts are out of date
Opened
#298 An item can't be opened from the keyboard or a screen reader
Opened
#299 Play and Delete on an item row are invisible while focused
Opened
#300 The read toggle on an item row is named "●"
Opened
#301 The player's seek bar has no name
Opened
#302 Search and filter placeholders fail contrast in 20 of 25 palettes
Opened
#303 Toasts are not announced, and error toasts vanish after six seconds
Opened
#304 Error toasts show the browser's or server's raw text, with no next step
Opened
#305 Text fields' borders fail 3:1 in every theme but High contrast
Opened
#306 Dialogs are not dialogs: focus is not moved in, kept in, or given back
Opened
#307 Fields in dialogs have labels that are not tied to them
Opened
#308 An off switch is nearly invisible in every light theme
Opened
#309 iPX's and the page's versions are only in a hover tooltip
Opened
#310 Reduced motion leaves no sign that a check for new items is running
Opened
#311 Hover styles stick on a phone after a tap
Opened
#312 Scrolling past the end of a dialog or the phone drawer scrolls the page behind
Opened
#313 Cover artwork has no edge, and dark covers melt into dark themes
Opened
#314 The tab bar's corners do not nest around its tabs
Opened
#315 The Directory's cover fan names the wrong property in will-change
Opened
#316 A feed's page keeps showing an error after a check succeeds
Opened
#317 WordPress.com sites answer the feed with a browser check, and the feed fails for hours
Opened
#318 A multi-file torrent's name is recorded unchecked as the enclosure path, so a feed publisher can point Delete, reap and media serving at any path
Opened
#319 Downloaded enclosure served same-origin with an extension-guessed type allows stored XSS
Opened
#320 Feed, enclosure, OPML and artwork fetches reach any internal address, and the responses come back to the user
Opened
#321 Every fresh install seeds an admin account with the public password 'ipodderx', usable through the unauthenticated login endpoint
Opened
#322 A deeply nested OPML, uploaded by any signed-in user or served by any feed publisher, can overflow the stack and abort the whole daemon
Opened
#323 ipx-web strips only the Cf-Access header names, while ipx trusts whatever header trusted_header names from Caddy's address
Opened
#324 Disconnecting sign-in requests escape the password-check limit and run unbounded Argon2 work on the blocking pool
Opened
#325 Private feed keys in the URL path reach every signed-in user through /api/events
Opened
#326 Item and enclosure links from feeds are used as href and window.open targets without a scheme check
Opened
#327 Feeds listed in a password-protected OPML inherit its username and password and send them to their own, unrelated hosts
Opened
#328 Enclosure downloads send the feed's basic-auth password to whatever host the feed names, unlike feed fetches
Opened
#329 The directory's refresher fetches LAN and container-network addresses named by an rw peer or by a listed feed's redirect
Opened
#330 A feed's .torrent URL, or a tracker it names, can make the daemon buffer an unbounded body in memory
Opened
#331 Torrent enclosures write with overwrite enabled straight into a folder other feeds share, so one publisher can replace another feed's downloaded episodes
Opened
#332 A kept feed from a private OPML loses its private mark when the OPML is removed and is shared to the directory
Opened
#333 Any signed-in user can mark a feed they do not subscribe to private, and promote an OPML-derived feed out of its OPML
Opened
#334 Changing a password leaves every existing session and API token valid
Opened
#335 An open /api/events stream keeps sending daemon events to an account after it is removed
Opened
#336 Bodyless POST routes accept cross-origin simple requests carrying ambient credentials
Opened
#337 A subscribed OPML with very many outlines causes quadratic sync work and an unbounded set of child feeds scanned on the shared worker
Opened
#338 One OPML upload of many same-titled outlines does quadratic work while holding the catalogue lock, and adds tens of thousands of permanent feeds to the shared scan
Opened
#339 One feed listing many distinct http artwork hosts holds the shared scan worker for hours, on every scan
Opened
#340 Any signed-in user can make unlimited TypeSafe calls on the server's key through the icon route, even with signals_on_server off
Opened
#341 Anonymous directory pages each run an unpaged query over the whole catalogue on a shared 10-connection pool
Opened
#342 One rw snapshot with an enormous subscriber count breaks the directory's listings for everyone
Opened
#343 On the server's key, one user's Signal text shares a Jev call with other users' Signals and may steer their verdicts
Opened
#344 A page of items reads every enclosure in the database to find its files
Opened
#345 Artwork kept on disk is read from FUSE, blocking the async threads
Opened
#346 The item list and feed list wait on queries one at a time that could run together
Opened
#347 Unread lists and counts read all of a person's items to find the few unread
Opened
#348 A Signal's counts run the same verdict query twice
Opened
#349 Two requests for the same missing artwork fetch it twice
Opened
#350 Traces of some routes show their time with nothing under it
Opened
#351 cargo deny: RUSTSEC-2026-0385 (ctutils 0.4.2) and RUSTSEC-2026-0382 (rustls-webpki 0.103.15)
Opened
#352 Unread counts still hash every read-state row a person has
Opened
#353 Rust: small departures from the style guide (imports, unwrap, for headers, must_use, bool parameters, SAFETY)
Opened
#354 Rust: ipx-feed and ipx-directory have public items without doc comments
Opened
#355 Rust: types written with their full path instead of imported
Opened
#356 Rust: the root modules hold most of the code
Opened
#357 The Herd with Colin Cowherd no longer updates: its feed is over the 50 MB cap
Opened
#358 A show made a feed of its own stays hidden with its OPML
Opened
#359 Choose a font in Settings, beside the theme
Opened
#360 An item's text runs the full width of a wide window
Opened
#361 Two feeds' items with the same guid: the second can't be marked read
Opened
#362 The same feed can be subscribed twice, over http and https
Opened
#363 The logs repeat what metrics and the line itself already say
Opened
#364 Every API request is logged three times, and ipx has no request metric to stand in for its line
Opened
#365 Nothing alerts when ipx goes wrong
Opened
#366 Prometheus does not scrape the monitoring itself
Opened
#367 How long a request waits for a database connection, and queries take, is not measured
Opened
#368 Feed failures, new items, downloads and DeadAir's savings are counted only from the log
Opened
#369 The page's timings are only log lines
Opened
#370 The directory's requests, feed checks and snapshots have no metrics
Opened
#371 ipx-web publishes no metrics
Opened
#372 Syncing an OPML or Patreon list has no spans inside it
Opened
#373 Commands on the control socket are not traced
Opened
#374 Start-up is not traced
Opened
#375 The directory's log lines carry no trace id
Opened
#376 A tap in the page sends no span of its own
Opened
#377 Syncing a list asks for every account, and its subscription to the list, once per listed feed
Opened
#378 The page overflows its stack reporting a tap
Opened
#379 A tap's span runs on to requests it did not set off
Opened
#380 The directory has no robots.txt or sitemap
Opened
#381 ipx-web logs a deprecation warning at every start
Opened
#382 YouTube channels fail most days with a 404 or 500 that a second request does not get
Opened
#383 After a long session on the phone the reader stops scrolling and swiping
Opened
#384 Swipes and a reader that will not scroll leave no trace
Opened
#385 On the Unread tab the page thinks there is more to load once its items are read
Opened
#386 YouTube channels still miss most days after the retry in #382
Opened
#387 prod-check's traces hide whose a trace is and an event's error
Opened
#388 An open page keeps running the old version after ipx-web is deployed
Opened
#389 iPX does not open or read without a connection
Opened
#390 Nothing measures how much of the code the tests run
Opened
#391 The offline code is untested where it clears for a new account, queues a position and trims pictures
Opened
#392 Tests, tooling and two served scripts are still JavaScript
Opened
#393 No test signs in with the sign-in form
Opened
#394 The API's coverage is not measured, and coverage is nowhere to be seen over time
Opened
#395 No browser test opens the directory's public pages
Opened
#396 Tests: removing old and over-quota downloads
Opened
#397 Tests: torrents
Opened
#398 Tests: Signals' judging, pacing and icons
Opened
#399 Tests: Cloudflare Access sign-in, the sign-in rate limit and account settings
Opened
#400 Tests: the daemon's start, shutdown and the CLI talking to it
Opened
#401 Tests: feeds that move, WordPress.com, Patreon and the catalogue
Opened
#402 Tests: the directory's background work
Opened
#403 Tests: the log's fields and the metrics Grafana reads
Opened
#404 Tests: the page's live updates
Opened
#405 Tests: the Directory inside the app
Opened
#406 Tests: the page's dialogs, keyboard and player
Opened
#407 Coverage: what the measurements leave out
Opened
#408 Log lines lose their trace ids under a scoped subscriber
Opened
#409 No limit on wrong passwords for one name or address
Opened
#410 A download stopped by a restart waits for its feed's next check
Opened
#411 Production log lines lost their trace ids after ba18b44
Opened
#412 Episodes cannot be kept on the device to listen offline
Opened
#413 Item lists don't show which episodes are kept on the device
Opened
#414 Redesign the admin page
Opened
#415 A Signal's new hits test fails in the full browser suite, passes alone
Opened
#416 Two Refresh buttons on a list on a phone
Opened
#417 The search box's placeholder is cut off on a phone
Opened
#418 An iOS app: the page in a web view, with the phone's own player
Opened
#419 iOS: native API client, credentials in the keychain
Opened
#420 iOS: CarPlay audio
Opened
#421 iOS: unread badge on the app icon
Opened
#422 A service token's secret was committed in ios/.envrc
Opened
#423 Admin page: the back button sits under the status bar in the iOS app
Opened
#424 Status line at the bottom looks odd against the phone's rounded corners
Opened
#425 iOS: episodes kept on the device, played offline
Opened
#426 iOS: share extension, Add to iPX
Opened
#427 iOS: Siri and Shortcuts (App Intents)
Opened
#428 iOS: home screen widget, unread and where you left off
Opened
#429 iOS: sleep timer and AirPlay route picker
Opened
#430 iOS: haptics on play, pause and mark read
Opened
#431 iOS: Spotlight search of episodes
Opened
#432 iOS: universal links on ipxreader.app
Opened
#433 iOS: push notifications for new episodes, and an exact badge
Opened
#434 iOS: check the layout on iPad
Opened
#435 iOS: the page itself offline (App-Bound Domains, so the service worker runs)
Opened
#436 Admin page: an error toast throws, haptic is not defined
Opened
#437 A terminal reader
Opened
#438 Image builds compile every dependency again on any Cargo.lock change
Opened
#439 Terminal reader: play an item's file
Opened
#440 Terminal reader: feeds grouped and pinned as on the page
Opened
#441 Terminal reader: moving onto an item marks it read
Opened
#442 iOS CarPlay to app handoff issues
Opened
#443 iOS CarPlay lists feeds without podcasts
Opened
#444 native-bridge test: the CarPlay checks run after the failure count is read
Opened
#445 iOS: the app's settings in Settings, not behind a shake
Opened
#446 iOS: redesign the widgets
Opened
#447 Share an episode as a page, as Overcast does
Opened
#448 Artwork that can never be shown is downloaded again every hour
Opened
#449 Page error: the sleep timer's control missing when the script ran
Opened
#450 The reader would not scroll twice this week, on a Hacker News item
Opened
#451 The ipx-play image does not build: web/logo-dark.svg is not copied in
Opened
#452 Share does nothing in the iOS app on an episode of a private feed
Opened
#453 iOS app: confirm() in the page always answers Cancel
Opened
#454 Share does not say why an episode gets no play link
Opened
#455 Share on a paid episode's file hands over a link signed for you
Opened
#456 Phone reader: back and the item's actions float over the text
Opened
#457 One place to get an episode's file where you are
Opened
#458 ipx-play has no metrics and no place on the dashboard