Pre-v1 cleanup: dependency-refresh sweep + drop fs4 + remove dead build hook #2

Merged
eblume merged 2 commits from feature/pre-v1-cleanup into main 2026-06-03 23:15:25 -07:00
Owner

Pre-v1.0.0 cleanup sweep (the §14.9 dependency-refresh roadmap item, plus tooling tidy). All changes green locally; this PR's CI run validates the Linux build.

Dependency refresh (§14.9)

  • keyring 3 → 4 — the keyring_core split. KeyringTokenStore now registers the OS-native store once (lazily, via Once) and uses keyring_core::{Entry, Error}. not_keyutils = true so Linux prefers the Secret Service over the logout-wiped kernel keyutils store. Runtime behavior unchanged (tokens still go to the macOS Keychain / Linux Secret Service).
  • rusqlite 0.32 → 0.40, ratatui 0.29 → 0.30, rrule 0.13 → 0.14, yrs 0.26 → 0.27 — all needed zero source changes.
  • cargo update for semver-compatible bumps across the rest. (pulldown-cmark, jsonwebtoken, axum, clap, tokio, reqwest were already latest.)

Drop fs4 → std file locking

Rust stabilized std::fs::File::try_lock in 1.89; the inherent method now shadows the fs4::FileExt trait, making fs4 a dead dependency. Removed it and switched lock.rs to std. MSRV 1.85 → 1.89.

Tooling

  • Deleted the orphaned .forgejo/scripts/build hook — build.yaml invokes Dagger directly and never called it.

Testing

  • cargo test --all228 passed, 0 failed
  • mise run test-nvim25 headless e2e specs passed
  • cargo clippy --all-targets --all-features -- -D warnings + cargo fmt --all --check — clean

Watch on CI

Validated on macOS. keyring 4 (no features) compiles in all platform stores by default, so the Linux Dagger build exercises the secret-service store crates for the first time — they appear pure-Rust (zbus, no system libdbus), so I expect green, but this CI run is the proof.

Pre-v1.0.0 cleanup sweep (the **§14.9 dependency-refresh** roadmap item, plus tooling tidy). All changes green locally; this PR's CI run validates the Linux build. ## Dependency refresh (§14.9) - **keyring 3 → 4** — the `keyring_core` split. `KeyringTokenStore` now registers the OS-native store once (lazily, via `Once`) and uses `keyring_core::{Entry, Error}`. `not_keyutils = true` so Linux prefers the Secret Service over the logout-wiped kernel keyutils store. Runtime behavior unchanged (tokens still go to the macOS Keychain / Linux Secret Service). - **rusqlite 0.32 → 0.40**, **ratatui 0.29 → 0.30**, **rrule 0.13 → 0.14**, **yrs 0.26 → 0.27** — all needed **zero source changes**. - `cargo update` for semver-compatible bumps across the rest. (pulldown-cmark, jsonwebtoken, axum, clap, tokio, reqwest were already latest.) ## Drop fs4 → std file locking Rust stabilized `std::fs::File::try_lock` in **1.89**; the inherent method now shadows the `fs4::FileExt` trait, making fs4 a dead dependency. Removed it and switched `lock.rs` to std. **MSRV 1.85 → 1.89.** ## Tooling - Deleted the orphaned `.forgejo/scripts/build` hook — `build.yaml` invokes Dagger directly and never called it. ## Testing - `cargo test --all` — **228 passed, 0 failed** - `mise run test-nvim` — **25 headless e2e specs passed** - `cargo clippy --all-targets --all-features -- -D warnings` + `cargo fmt --all --check` — clean ## Watch on CI Validated on macOS. keyring 4 (no features) compiles in all platform stores by default, so the Linux Dagger build exercises the secret-service store crates for the first time — they appear pure-Rust (zbus, no system libdbus), so I expect green, but this CI run is the proof.
infra: pre-v1 dependency-refresh sweep + drop fs4 + remove dead build hook
Some checks failed
Build / validate (pull_request) Failing after 11m34s
490a8b3763
Bump all external crates to latest stable ahead of v1.0.0 (tech-spec §14.9):
keyring 3→4 (the keyring_core split + register-the-native-store model),
rusqlite 0.32→0.40, ratatui 0.29→0.30, rrule 0.13→0.14, yrs 0.26→0.27,
plus a cargo update for semver-compatible bumps.

keyring 4 moves Entry/Error into keyring_core and requires a credential
store to be registered before use; KeyringTokenStore now registers the
OS-native store once (lazily, via Once) and uses keyring_core types.
not_keyutils=true so Linux prefers Secret Service over the logout-wiped
kernel keyutils store.

Drop the fs4 dependency in favor of std::fs::File::try_lock (stable since
Rust 1.89); raise workspace MSRV 1.85→1.89. Remove the orphaned
.forgejo/scripts/build hook — CI invokes Dagger directly.

Green: 228 Rust tests + 25 heph.nvim headless e2e, clippy -D warnings + fmt.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
eblume force-pushed feature/pre-v1-cleanup from 490a8b3763
Some checks failed
Build / validate (pull_request) Failing after 11m34s
to 0c502834c2
Some checks failed
Build / validate (pull_request) Failing after 3m25s
2026-06-03 22:19:20 -07:00
Compare
ci: cap CARGO_BUILD_JOBS at 1 to stop the DinD engine OOM-killing
All checks were successful
Build / validate (pull_request) Successful in 23m46s
0fb5271f6d
The recent CI failures ("Cannot connect to the Docker daemon") are the
DinD build engine being OOM-killed mid-compile, not flakiness. Serialize
both the check and test_nvim cargo builds to jobs=1. Temporary mitigation
pending more host RAM.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
eblume merged commit 0c2c8435be into main 2026-06-03 23:15:25 -07:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
eblume/hephaestus!2
No description provided.