sotashimozono_obsidian-remo.../plugin/src
Souta 8e258b4ce6 feat(daemon): version-aware provisioning — refresh the daemon on plugin upgrade
Dogfooding beta.13: the static-daemon fix shipped, but users still ran the
old dynamically-linked binary — the cache was keyed by ARCH only
(cacheHit = existsSync), so a plugin upgrade never re-downloaded the daemon.
And locateDaemonBinary returned any staged binary at the dev filename, so a
prior *download* masqueraded as a dev build and skipped the refresh entirely.

Now (single cached file, no per-version pileup):
- DaemonDownloader validates the cache by SHA against the release manifest,
  not mere existence: reuse iff the cached bytes still match the expected sha,
  else re-download (atomic overwrite = old dropped). A daemon that didn't
  change across a bump is NOT re-downloaded; a changed/stale one is.
- ensureDaemonBinary fast-paths on `settings.daemonBinaryVersion === version`
  (cached file present) -> no GitHub round-trip, works offline; on mismatch it
  runs the sha re-check and records the new version after provisioning.
- locateDaemonBinary now requires a `.dev-daemon` marker (written by
  dev-install) to treat a staged binary as a genuine dev build; an unmarked
  download is re-validated instead of trusted. This is what makes an existing
  store/BRAT user's stale binary auto-replace seamlessly (no manual delete).

Implements the deferred #406 "re-verify cached binary sha before reuse".
tsc/lint/vitest green (1188). Ships as beta.14.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 18:48:49 +09:00
..
adapter docs: compress the #429 corrections to minimal wording 2026-06-30 15:49:49 +09:00
cache chore: monorepo restructure (plugin/ + server/ + proto/) 2026-04-25 10:52:52 +09:00
conflict refactor: extract ConflictResolver from SftpDataAdapter (#199) 2026-05-01 14:10:36 +09:00
offline fix(types): eliminate validator unsafe-* / CSS-portability warnings (#394) 2026-06-09 15:04:58 +09:00
path chore(plugin): satisfy ObsidianReviewBot's stricter ruleset, round 2 (0.4.75) 2026-04-29 20:19:10 +09:00
proto fix(rpc): address PR #355 v2 review — pin startRpcSession + honest type 2026-05-18 00:28:26 +09:00
settings feat(ssh): support ProxyCommand and IdentityAgent (#430) 2026-06-30 14:13:37 +09:00
shadow fix(shadow): self-heal a stale server-bin junction instead of degrading to SFTP 2026-07-02 14:30:34 +09:00
ssh feat(ssh): support ProxyCommand and IdentityAgent (#430) 2026-06-30 14:13:37 +09:00
transport feat(daemon): version-aware provisioning — refresh the daemon on plugin upgrade 2026-07-02 18:48:49 +09:00
ui chore(deps-dev): integrate dev-deps group + prefer-window-timers fix (1.1.1-beta.1) (#371) 2026-06-08 13:18:07 +09:00
util fix(shadow): address Phase B adversarial review — version-ordered binaries + unhandled rejection 2026-06-30 21:38:04 +09:00
vault fix(vault): reflectRename synthesises a stale destination subtree (#423) 2026-06-30 14:01:56 +09:00
ConnectionManager.ts fix(daemon): address #406 review — reconnect downgrade, consent durability, loud tamper, atomic cache 2026-06-15 15:53:32 +09:00
constants.ts feat(walk): profile "Ignore directories" — prune big subtrees server-side 2026-05-17 23:43:40 +09:00
main.ts feat(daemon): version-aware provisioning — refresh the daemon on plugin upgrade 2026-07-02 18:48:49 +09:00
types.ts feat(daemon): version-aware provisioning — refresh the daemon on plugin upgrade 2026-07-02 18:48:49 +09:00