Files
ipx/crates/directory/CHANGELOG.md
rays 8d7a30d1f9 Faster scans and directory rounds, and fetches named by feed (#227, #228, #229, #230)
From the slow traces of 2026-10-13: the directory checked a round's 25 feeds one after
another, so two libsyn feeds timing out at 30 s made a round 70 s; a forced scan looked up
62 site icons in turn, 22 s of 62; mjg59.dreamwidth.org takes the connection and never
answers, so it ran the full 30 s in every scan it was in; and since #225 strips queries,
every YouTube fetch span read the same address, outside any span naming its feed.

The directory now checks five at a time (SQLite stays on one connection, so its writes
queue). A forced scan looks up the icon in the fetch-ahead task, which already runs six
deep, and hands it to scan_one with the body. Both feed clients give up after 15 s of
silence (no successful fetch took over 8 s in a day of traces); FEED_TIMEOUT stays 30 s
for a feed still sending. The directory's client had no connect timeout; it has ipx's 10 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:27:19 +00:00

2.4 KiB

Changelog: ipx-directory

The directory of public podcasts that ipx servers share (docs/directory.md). ipx's changelog is crates/ipx/CHANGELOG.md, the page's web/CHANGELOG.md.

Its version is in crates/directory/Cargo.toml, and a release is tagged directory-vX.Y.Z.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

Changed

  • The directory checks five feeds at a time, so a publisher that does not answer no longer holds up the rest of its round (#227).
  • A feed's server that takes 10 s to connect, or sends nothing for 15 s, is given up on (#230).

1.1.0 - 2026-10-13

Added

  • With metrics_bind set, the directory serves Prometheus metrics on a port of its own: memory, open files, and the feeds it has fetched and their bytes. A feed check's trace says how large the feed was (#224).

Changed

  • The directory uses mimalloc instead of glibc's allocator, so it gives back memory it has freed instead of holding over a gigabyte while idle (#224).
  • The example in docs/directory.md has no healthcheck; ipx-directory health is still there to run by hand (#218).

Security

  • A feed check's trace keeps the feed's address without its query or password (#225).

1.0.0 - 2026-10-12

Added

  • Anyone can browse the directory in a web browser, read only: the most subscribed, categories, every feed A to Z, a search by name, and each feed's page with its latest items and its address to copy into any podcast app (#215).
  • GET /v1/instances lists the servers holding a snapshot, with their feeds and subscribers, for an admin token (#206).
  • ipx-directory, a directory of public podcasts that ipx servers share: each sends the public feeds its people subscribe to, and any server with a token browses them, each feed listed once it has been read. Tokens are in its config file, each read-only, read-write or admin, and revoked one at a time (#204, #205).
  • Traces: a span a request, joining the trace of the ipx server that called, and a trace a refresher round with a span a feed (#213).