Several gRPC test helpers created an ephemeral sqlite-backed
DatabaseEngine via connect_ephemeral() and then discarded the
returned TempDir guard before returning the still-live db/server to
the caller. Dropping the guard unlinks the directory backing the
sqlite file; on Windows the still-open file handle keeps the data
reachable (masking the bug locally), but on Linux the directory entry
disappears immediately, so any pool connection opened afterward fails
with "unable to open database file" -- exactly the flake CI hit in
nunciod::grpc::tests::preview_rule_dry_runs_against_a_stored_message_without_persisting.
Fixes the same pattern in nunciod::grpc's spawn_test_server and
spawn_filters_test_server helpers, nuncio-cli's HeadlessRunner
(ephemeral_with), and grpc_auth_test's start_server: each now returns
(or stores) the TempDir so it stays alive for as long as its caller
keeps using the database.
The CI/release workflows still targeted the archived presentation
shells (nuncio-gui, nuncio-tui, nuncio-mcp) and their Tauri/npm
toolchain, so every run failed before the engine crates were even
built.
- ci.yml: run on dev in addition to main, drop the GTK/WebKit/Tauri
apt packages (the engine only needs zbus-based keyring and bundled
sqlite, both pure-Rust/cc), rely on rust-toolchain.toml instead of
dtolnay/rust-toolchain@stable to avoid drift from the pinned 1.97.1
toolchain, and make the coverage job continue-on-error so it stays
informational.
- release.yml / release-nightly.yml: package only nuncio-cli and
nunciod (the shells are gone), and drop the fabricated installer/
Homebrew release notes.
- release-desktop.yml: deleted; the Tauri desktop GUI is being
rebuilt as a separate client repo and no longer belongs here.