2026-10-13 - 2026-11-13
Overview
14 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
222 Issues closed from 1 user
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
233 Issues created by 1 user
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