2026-07-23 - 2026-10-23
Overview
44 Releases published by 1 user
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
354 Issues closed from 2 users
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
354 Issues created by 0 users
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