What's Changed
- feat: replace WAL stat-polling with PRAGMA data_version + identity check by @russellromney in #1
- refactor: use file-id crate for rust stable by @qiuzhanghua in #7
- fix: address all file-id follow-ups (#8) — entropy + Windows CI + non-{unix,windows} fallback by @russellromney in #9
- ci: add windows for python/node/extension; rename WalWatcher → UpdateWatcher; add panic + XOR-fold tests by @russellromney in #10
- test: fill cross-platform gaps and finish watcher cleanup (#12) by @russellromney in #13
- ci: harden against supply-chain attacks; add agent-ci Makefile targets by @russellromney in #15
- docs: drop pre-1.0 cleanup sequence from README by @russellromney in #17
- fix(core): explicit close() drops pool connections so Windows can unlink by @russellromney in #18
- ci: enable windows-latest for python and node binding jobs (closes #11) by @russellromney in #19
- ci: disable zizmor SARIF upload, switch to PR annotations by @russellromney in #20
- fix: bump honker-py for update-bridge Drop fix (closes #16) by @russellromney in #21
- test: split cross-language proof and cap CI runtime by @russellromney in #22
- fix(test): strip trailing CR in createLineReader for Windows by @russellromney in #24
- [codex] grug bring honker-dotnet by @russellromney in #31
- Make run_at jobs wake on time and add every-second scheduling by @russellromney in #29
- Prepare packages for release by @russellromney in #33
- feat: grug bring honker-dotnet by @russellromney in #32
- Move maintained bindings into the main repo by @russellromney in #35
- Clean up roadmap after binding merge by @russellromney in #36
- Add hard queue proof across processes and Go/Python by @russellromney in #37
- Add scary core and binding interop tests by @russellromney in #38
- Require Ruby interop in CI by @russellromney in #39
- Add real app and package install proof by @russellromney in #40
- feat: optional kernel-watch + shm-fast-path watcher backends by @russellromney in #30
- feat: make watcher proof parity binding-wide by @russellromney in #43
- Add JVM and Kotlin runtime bindings by @russellromney in #41
- Phase Mantle: schedule lifecycle + queue cancel/get_job by @russellromney in #42
- roadmap: Phase DiMaggio + Phase Berra by @russellromney in #47
- [codex] Improve Python extension loading by @russellromney in #51
- Fix Python wheel release packaging by @russellromney in #53
- Use trusted publishing for PyPI release by @russellromney in #54
- Use PyPI token for Python release by @russellromney in #55
- Use twine for cross-platform PyPI upload by @russellromney in #56
- Bundle the SQLite extension in the Ruby gem (and compile it for other platforms) by @cllns in #57
- Add Ruby DB helpers and railtie by @cllns in #58
- Simplify docs and configure watcher poll interval by @russellromney in #60
- docs: fix scheduler README snippet and document queue-in-transaction deadlock by @jjshanks in #64
- fix: correctness priority fixes (max_attempts, locks, wakes, JSON) by @russellromney in #65
- fix(python): fail fast on Queue construct inside open transaction by @russellromney in #66
- fix(node): reuse pending update waits across timeouts by @lklynet in #69
- fix(node): detach timed-out races from the shared update wait by @russellromney in #70
- fix(node): share the pending update wait inside UpdateEvents.next() by @russellromney in #71
- ci: fix zizmor ref-version-mismatch pin comments by @russellromney in #72
- fix(node): remove abort listeners after races; degrade on watcher death by @russellromney in #73
- fix(node): degrade event-only waits to poll cadence on dead watcher by @russellromney in #74
- fix(bun,node): stream resume off-by-one; 'watcher died' rejection message by @russellromney in #75
- docs: add examples READMEs for bun, elixir, go, rust, ruby bindings by @jjshanks in #77
- Move demo.py into the Python examples as quickstart.py by @jjshanks in #76
- ci: add lint gate, dependabot, aggregate status check, lockfile pinning by @jjshanks in #78
- docs: reconcile ROADMAP with shipped state by @jjshanks in #79
- fix: prevent TOCTOU race in prune_notifications max_keep logic by @fix2015 in #81
- fix: make notification max_keep pruning gap-safe by @russellromney in #86
- fix: close CI review gaps after #78 by @russellromney in #84
- fix: make the Python quickstart safe and CI-covered by @russellromney in #83
- docs: correct binding and release coverage claims by @russellromney in #85
- deps: bump the binding-cargo group across 1 directory with 2 updates by @dependabot[bot] in #90
- ci: bump the actions group with 9 updates by @dependabot[bot] in #91
- deps: bump the mix group across 1 directory with 2 updates by @dependabot[bot] in #92
- deps: bump github.com/mattn/go-sqlite3 from 1.14.24 to 1.14.48 in /packages/honker-go in the gomod group across 1 directory by @dependabot[bot] in #93
- deps: bump the maven group across 2 directories with 8 updates by @dependabot[bot] in #94
- deps: bump the cargo-minor-patch group with 5 updates by @dependabot[bot] in #87
- deps: bump notify from 6.1.1 to 8.2.0 by @dependabot[bot] in #88
- deps: upgrade rusqlite across all Rust packages by @russellromney in #95
- fix: preserve SQLite POSIX locks in watcher backends by @russellromney in #96
- Retry the WAL conversion instead of failing the open by @russellromney in #102
- Accept whole REAL arguments for integer SQL parameters by @russellromney in #101
- Extension reach for every binding (fixes #99) by @russellromney in #100
- Verify the Windows extension archive with stdlib sqlite3 by @russellromney in #103
New Contributors
- @russellromney made their first contribution in #1
- @qiuzhanghua made their first contribution in #7
- @cllns made their first contribution in #57
- @jjshanks made their first contribution in #64
- @lklynet made their first contribution in #69
- @fix2015 made their first contribution in #81
- @dependabot[bot] made their first contribution in #90
Full Changelog: https://github.com/russellromney/honker/commits/ext-v0.4.0