Release Notes
π‘ Features
- Migrate to sqlite by @ymgyt (9c33ee88)
- Add local serving mode by @ymgyt (1fc97099)
- Launch local api backend by @ymgyt (5e8b5d91)
- Default to local backend by @ymgyt (6d866eba)
- Support local backend in port commands by @ymgyt (7c4a0ec6)
- Add feed registry domain by @ymgyt (82b90c56)
- Add sqlite feed registry store by @ymgyt (5ea678ad)
- Expose feed registry events by @ymgyt (ea67403e)
- Consume feed registry events by @ymgyt (51de5c02)
- Rename sqlite database option by @ymgyt (a7026cdb)
- Add deterministic synd entry id by @ymgyt (04dff13e)
- Add event runtime for commands by @ymgyt (9932ffc2)
- Add sqlite event journal by @ymgyt (b7a72d61)
- Launch and control singleton daemon by @ymgyt (12d5e1d9)
- Add configurable keymap v2 by @ymgyt (bfacc9fe)
- Project crawl targets from subscriptions by @ymgyt (349068d0)
- Wake crawl scheduler from target events by @ymgyt (b31aadc1)
- Renew daemon session leases by @ymgyt (931d9f4e)
- Enqueue crawl jobs from scheduler by @ymgyt (aeffb114)
- Configure daemon session lifecycle by @ymgyt (12d8fe7e)
- Configure runtime root by @ymgyt (e44dfc45)
- Add daemon status json output by @ymgyt (6d0215a5)
- Include daemon launch diagnostics by @ymgyt (8d688e48)
- Report daemon session status by @ymgyt (11b7f0d3)
- Diagnose runtime daemon placement by @ymgyt (1d3aab53)
- Start crawl worker pool by @ymgyt (e3970d33)
- Add forced daemon shutdown by @ymgyt (af2f2e60)
- Claim crawl jobs from worker pool by @ymgyt (085a58a4)
- Persist crawl job completions by @ymgyt (44c198f5)
- Project feed state from crawl results by @ymgyt (92bf6fc1)
- Project timeline by @ymgyt (8e48ebc8)
- Project timeline membership events by @ymgyt (2d454276)
- Unify feed event subscription channel by @ymgyt (646249d3)
- Classify processor failures by @ymgyt (ecbc6365)
- Stream subscribe progress from registry events by @ymgyt (16d14f63)
- Add lifecycle logging by @ymgyt (3d29abda)
- Return unsubscribe disposition by @ymgyt (a9d8a3d0)
- Expose entry ids by @ymgyt (2e67f44b)
- Sync timeline incrementally by seq changes by @ymgyt (d0e7be8e)
- Sync timeline incrementally by seq changes by @ymgyt (c662d634)
- Redraw screen with R key by @ymgyt (612d9cff)
- Expose feed construction by @ymgyt (bf411702)
- Project complete feed state by @ymgyt (d6f0f6aa)
- Add diagnostic lifecycle logging by @ymgyt (5bb4a35b)
π Bug Fixes
- Handle gh not found gql error (#310) by @ymgyt (acd00677)
- Satisfy clippy warnings by @ymgyt (31276309)
- Avoid latest tag for prerelease images by @ymgyt (268c3252)
- Recover incompatible daemon by @ymgyt (f07676ea)
- Classify daemon session failures by @ymgyt (aa3b8a84)
- Classify missing daemon endpoint root by @ymgyt (4128446b)
- Report command failures plainly by @ymgyt (63e151a3)
- Tighten daemon control surface by @ymgyt (b7184658)
- Box daemon session handle by @ymgyt (b38f2bea)
- Disable ansi colors for log files by @ymgyt (d279f08c)
- Package the synd crate binary by @ymgyt (85a21fb4)
- Give every timeline change a unique seq by @ymgyt (95863902)
- Normalize shifted chars in keystroke identity by @ymgyt (70f131c0)
- Drop cursor position query from force redraw by @ymgyt (c1bbb0a8)
- Correct default requirement constant typo by @ymgyt (4356e0d3)
- Align distribution names with synd by @ymgyt (89356bba)
- Remove tokio unstable dependency by ymgyt (c805f476)
Infra
βοΈ Miscellaneous Tasks
- Trim package name from version in changelog by @ymgyt (46b17de1)
- Bump nom from 8.0.0-alpha2 to 8.0.0 by @ymgyt (e675e9ca)
- Bump rust from 1.84.0 to 1.85.0 by @ymgyt (a2d49805)
- Bump edition from 2021 to 2024 by @ymgyt (2162ff03)
- Add axum group to dependabot by @ymgyt (e2acae29)
- Bump crane from 0.20.0 to 0.20.1 by @ymgyt (73439a28)
- Fix axum group patterns by @ymgyt (0031b658)
- Bump rust from 1.85.0 to 1.86.0 by @ymgyt (e2014ded)
- Use flake update to update lockfile by @ymgyt (c3b366a0)
- Handle audit advisories by @ymgyt (d29532c6)
- Bump tokio from 1.43 to 1.44.1 by @ymgyt (9667ac0d)
- Bump opentelemetry from 0.27.0 to 0.29.0 by @ymgyt (1896b24a)
- Update string handling in nu script by @ymgyt (86151aec)
- Set abort in release profile by @ymgyt (d3930f17)
- Update ubuntu runner in release wf by @ymgyt (5ffb8940)
- Remove kvsd crates by @ymgyt (780aa05a)
- Replace deprecated into_path() with keep() for TempDir by @ymgyt (8ae91e44)
- Bump rust from 1.86 to 1.90 by @ymgyt (c814af95)
- Bump nixpkgs from 24.11 to 25.05 by @ymgyt (553d8c97)
- Bump nixpkgs from 25.05 to 25.11 by @ymgyt (5223fb9a)
- Bump rust from 1.90.0 to 1.92.0 by @ymgyt (c2cc53b7)
- Bump ratatui from 0.29.0 to 0.30.0 by @ymgyt (b3d040ce)
- Bump axum-server by @ymgyt (9958d01f)
- Use nixpkg-unstable to use latest cargo-audit for parsing CVSS 4 format by @ymgyt (86e67cc2)
- Use nixfmt as nix formatter by @ymgyt (24f1e41f)
- Fmt flake by @ymgyt (96dacae1)
- Update nixpkgs by @ymgyt (b7b7da83)
- Fmt cliff by @ymgyt (7fc265c3)
- Fmt toml by @ymgyt (9dc26b11)
- Fix taplo wildcard arg by @ymgyt (e86edbc0)
- Pass ci by @ymgyt (844601f9)
- Update bytes to 1.11.1 to address RUSTSEC-2026-0007 by @ymgyt (94d88fa0)
- Update time to 0.3.47 to address RUSTSEC-2026-0009 by @ymgyt (9ec95f73)
- Appease audit by @ymgyt (dd98f15d)
- Update octocrab gql response handling by @ymgyt (32b7bed9)
- Ignore .local dir by @ymgyt (01c6aa68)
- Remove unused cargo alias by @ymgyt (2085bd56)
- Remove stale just tasks by @ymgyt (712c96a0)
- Stop ignoring RUSTSEC-2024-0370 by @ymgyt (dfcde671)
- Update workspace lockfile by @ymgyt (c35794b6)
- Refresh flake inputs by @ymgyt (303029c3)
- Update dependabot fetch metadata by @ymgyt (aa1f56c0)
- Update cargo-dist release workflow by @ymgyt (ec178fe7)
- Refresh flake inputs by @ymgyt (b30a465a)
- Migrate from dependabot by @ymgyt (9cad35df)
- Update ratatui to 0.30.1 by @ymgyt (4282499a)
- Bump rust from 1.95.0 to 1.96.0 by @ymgyt (d47a352f)
- Widen update schedule by @ymgyt (d0d9307a)
- Align rust checks by @ymgyt (23ba0118)
- Remove stale task by @ymgyt (5bcd90c4)
- Fmt by @ymgyt (a19d3002)
- Update rust to 1.97.1 by @ymgyt (9d247ba8)
- Unify workspace versions by @ymgyt (b99d1b59)
- Unify changelog generation by @ymgyt (8b19d0e9)
- Prepare workspace publication by @ymgyt (0928afe5)
- Update binary distribution by @ymgyt (8747c2e1)
- Reorder recipe by @ymgyt (049feed5)
- Remove x86_64-apple-darwin from dist target by @ymgyt (a9285b67)
- Use profile add command by @ymgyt (fcb710e0)
- Update yanked spin dependencies by @ymgyt (0f6319ab)
π Documentation
- Fix typo by @ymgyt (7b1c2c5f)
- Update README for local-first mode by @ymgyt (6a3faf3f)
- Update contributor guide by @ymgyt (b7176f53)
- Refresh user-facing guide by @ymgyt (f8a9c74f)
- Update package topology and CLI guide by @ymgyt (11d96e51)
- Update user documentation by @ymgyt (4b2e4a49)
- Update README by @ymgyt (1aa9edf2)
- Update app topology by @ymgyt (c0c96857)
- Prepare synd README for v0.4.0-rc.1 by @ymgyt (d08c2698)
- Streamline README by @ymgyt (64e028e9)
- Prepare synd README for v0.4.0 by ymgyt (05c8b366)
π§ Testing
- Fix select arm order in refresher test by @ymgyt (28f747f0)
- Update snapshot by @ymgyt (956bec58)
- Update otel snapshots by @ymgyt (4337e8da)
- Stabilize otel metrics export test by @ymgyt (762a4b6d)
- Remove stale sqlite fixture by @ymgyt (be0a8df0)
- Skip cli integration test by @ymgyt (64768d99)
- Organize daemon session test contexts by @ymgyt (c31293fe)
- Cover shared daemon sessions by @ymgyt (eb25b703)
- Use assert_matches for pattern assertions by @ymgyt (9d2d1d73)
- Decompose integration coverage by @ymgyt (4cccea25)
- Cover registry crawl pipeline end to end by @ymgyt (308167d2)
- Align unauthorized assertion with error message by @ymgyt (370123f7)
π§Ή Refactor
- Appease clippy by @ymgyt (82e05232)
- Migrate to sqlite by @ymgyt (59a0720d)
- Appease clippy by @ymgyt (5a7b8727)
- Move refresh orchestration to registry by @ymgyt (44be527b)
- Absorb stdx and o11y by @ymgyt (ed50b30f)
- Split application components by @ymgyt (34fd2a6f)
- Split application drivers by responsibility by @ymgyt (4e507c55)
- Appease clippy by @ymgyt (16f0b832)
- Split cli, client, and runtime crates by @ymgyt (c891396e)
- Move current implementation under legacy by @ymgyt (1f8e29a1)
- Wire registry event runtime by @ymgyt (7ec76e17)
- Checkpoint event runtime migration by @ymgyt (cd6eed7e)
- Appease clippy by @ymgyt (9b2dfb5c)
- Import tracing macros by @ymgyt (fb321a08)
- Simplify registry event runtime by @ymgyt (1faf6ea1)
- Derive daemon database argument by @ymgyt (5bf9033a)
- Remove legacy registry surfaces by @ymgyt (75a6bb53)
- Simplify daemon launch configuration by @ymgyt (bfb8a807)
- Resolve placement during construction by @ymgyt (4b2223af)
- Process events transactionally by @ymgyt (a7afebd9)
- Process events in transactions by @ymgyt (e863064e)
- Simplify api service names by @ymgyt (c578ba2c)
- Centralize event processing setup by @ymgyt (909a7ff6)
- Clarify keymap v2 responsibilities by @ymgyt (f79afe79)
- Align crawl policy and endpoint schema by @ymgyt (6642c1af)
- Streamline subscription requests by @ymgyt (e5bf185c)
- Route subscriptions through subscriber scope by @ymgyt (521df9eb)
- Derive crawl targets from endpoint subscriptions by @ymgyt (21a754d0)
- Finalize keymap runtime by @ymgyt (91e80f88)
- Prepare TUI workflow testing by @ymgyt (c108939c)
- Isolate terminal application boundaries by @ymgyt (5f91cb21)
- Appease clippy by @ymgyt (0652808b)
- Complete event and db layer cleanup by @ymgyt (645b2704)
- Simplify registry event pipeline by @ymgyt (c669a5df)
- Route subscriptions through command handlers by @ymgyt (2637ec94)
- Align registry naming and type docs by @ymgyt (9a09223e)
- Add crawl scheduler dispatch scaffolding by @ymgyt (e941f85c)
- Add scheduler reconciliation scaffold by @ymgyt (70bc80a6)
- Rework crawl scheduling runtime by @ymgyt (c9896983)
- Restructure event pipeline and crawl dispatch by @ymgyt (55dff2e0)
- Extract page limit helper by @ymgyt (6a57ef44)
- Standardize registry module layout by @ymgyt (18f8ab26)
- Standardize session module layout by @ymgyt (6b555cea)
- Organize terminal startup flow by @ymgyt (4f20eb34)
- Simplify feed api startup by @ymgyt (84d85bd3)
- Model feed event subscription state by @ymgyt (6b26566a)
- Remove term subcommand by @ymgyt (13e9fff8)
- Rebuild application lifecycle and drivers by @ymgyt (449fbfba)
- Render after every event by @ymgyt (58063b83)
- Derive pending key discard from keymap layers by @ymgyt (9cf57426)
- Remove legacy entries surface and feed url filter by @ymgyt (43ac3c70)
- Remove broken feed refresh machinery by @ymgyt (1563ac94)
- Converge subscriptions on feedRegistry root by @ymgyt (0e4754f0)
- Bootstrap with subscription and timeline queries by @ymgyt (b4c60164)
- Drop dead entries reload from subscription apply by @ymgyt (91dad0ba)
- Reload subscriptions with r on feeds tab by @ymgyt (dfea2c44)
- Redesign schema as declared and observed state by @ymgyt (dc830b4d)
- Remove feed view sync machinery by @ymgyt (8d8ad33d)
- Own parsed entry model by @ymgyt (d10bccdd)
- Rename database capability traits by @ymgyt (9892f7d3)
- Make entry a first-class module by @ymgyt (2d1350c6)
- Remove terminal stop logging by @ymgyt (33bc54ca)
- Clarify driver operation and event flow by @ymgyt (3cdd35b9)
- Expose OpenTelemetry extension traits by @ymgyt (f9baac20)
- Redesign terminal application and client boundaries by @ymgyt (54b4018b)
- Remove dry-run startup probe by @ymgyt (d75c7849)
- Separate migration errors by @ymgyt (0d05a68d)
Install synd 0.4.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/ymgyt/syndicationd/releases/download/v0.4.0/synd-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/ymgyt/syndicationd/releases/download/v0.4.0/synd-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install ymgyt/syndicationd/syndInstall prebuilt binaries into your npm project
npm install @syndicationd/synd@0.4.0Download synd 0.4.0
| File | Platform | Checksum |
|---|---|---|
| synd-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| synd-x86_64-pc-windows-msvc.tar.gz | x64 Windows | checksum |
| synd-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
| synd-x86_64-unknown-linux-musl.tar.gz | x64 MUSL Linux | checksum |