Skip to content

v0.15.3: ARCH-1 step 3 — extract DependencyProbe#44

Closed
NathanNeurotic wants to merge 2 commits into
mainfrom
feature/v0.15.3-dependency-probe
Closed

v0.15.3: ARCH-1 step 3 — extract DependencyProbe#44
NathanNeurotic wants to merge 2 commits into
mainfrom
feature/v0.15.3-dependency-probe

Conversation

@NathanNeurotic
Copy link
Copy Markdown
Owner

Summary

Third collaborator extracted from `TrayContext`. No user-visible changes. Depends on PR #43 (v0.15.2 SettingsStore) — merge that first.

Changed

  • New `src/DependencyProbe.cs` owns:
    • Cached `RcloneAvailable` / `WinFspInstalled` booleans (the PERF-1 cache)
    • The TTL stamp + `IsStale` check
    • The slow synchronous probes — `File.Exists` walks for rclone path and `winfsp-x64.dll`, registry lookups for the WinFsp install key, and (rclone path-fallback) a `rclone.exe version` spawn
    • `PublishProbeResults(rclone, winfsp)` that the async refresh worker calls when it's done
  • `TrayContext.Setup.cs` delegates `RcloneAvailable` / `WinFspInstalled` / `ProbeRcloneAvailableSync` / `ProbeWinFspInstalledSync` to a lazily-initialised `DependencyProbe` field. The async refresh worker (`RefreshDependencyStatusAsync`) stays in `TrayContext` because it composes the status line and posts back via `BeginUi`; it just calls into the probe for the slow work and `PublishProbeResults` to commit.

Test plan

  • `scripts/run-tests.ps1` — 53/53 green
  • FileVersion 0.15.3.0
  • Real-world: dependency-status chip in the main window still updates correctly; rclone-found / WinFsp-found probes still work after the refresh tick

🤖 Generated with Claude Code

NathanNeurotic and others added 2 commits May 28, 2026 23:52
Second collaborator extracted from TrayContext partial. No user-
visible changes.

- New src/SettingsStore.cs owns settings.json read/write/cache/
  atomic-write/backup/prune mechanics. Constructor takes the
  settings file path + log callbacks.
- TrayContext.Settings.cs delegates ReadSettingsRoot,
  WriteSettingsRoot, BackupSettingsFile, BackupsDir to a lazy
  SettingsStore field. PERF-3 cache behavior preserved.
- Profile-specific shape logic (LoadProfiles/SaveProfiles) stays in
  TrayContext as before.

53/53 tests green, FileVersion 0.15.2.0.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Third collaborator extracted from TrayContext. No user-visible
changes.

- New src/DependencyProbe.cs owns cached RcloneAvailable /
  WinFspInstalled state, TTL stamp, and the slow synchronous
  probes (File.Exists, spawn rclone version, registry lookups).
  Constructor takes Func<string> rclone path provider + log
  callback.
- TrayContext.Setup.cs delegates RcloneAvailable, WinFspInstalled,
  ProbeRcloneAvailableSync, ProbeWinFspInstalledSync. The async
  refresh worker stays in TrayContext (composes results into the
  setup-status line) and calls Deps.PublishProbeResults at the
  end.

53/53 tests green, FileVersion 0.15.3.0.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@gemini-code-assist
Copy link
Copy Markdown

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant