Skip to content

Feature/app update followups#253

Merged
highbyte merged 4 commits into
masterfrom
feature/app-update-followups
Jul 6, 2026
Merged

Feature/app update followups#253
highbyte merged 4 commits into
masterfrom
feature/app-update-followups

Conversation

@highbyte

@highbyte highbyte commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Follow-ups to the app update-detection / delegated-update feature (#251). Four independent items, one commit each.

1. Document the new update functionality

User-facing docs for the update behavior: a shared Staying up to date section in
installation.md, the --version / --check-update / --update flags folded into the shared
cli-general.md CLI reference (with host-specific notes), and a per-app "update surface" summary — no
duplication across the host-app pages.

2. RemoteClient --check-server-version

New read-only server.info remote command (host app name + release-stamped version).
dotnet-6502-remote --check-server-version connects, compares the endpoint's version with the
client's, and warns on mismatch (exit 3) with the brew/scoop update commands. No automatic check and
no extra round-trip on the normal command path. Docs updated (remote-client, examples, tcp-protocol).

3. Terminal update UI

In-TUI update affordance for the Terminal host: a TerminalUpdateService, an Updates dialog reached
via the F9 U leader command (version/status, Check now, Update now), and an "update available"
indicator in the window title / hint line (behind the leader key, so it never steals emulator focus).
Update now quits the TUI and runs the package-manager upgrade in the foreground. The automatic
Logs-pane notice is retained.

4. Install-channel path fallback

When the install-channel marker is absent, infer the channel from the run directory (Scoop
apps/<pkg>/current; Homebrew formula Cellar/<formula>/…; the cask stays marker-only). Still
confirmed by the package manager and biased to not-managed.

Testing

  • Updates lib: 76 tests green; new RemoteClient.Tests project (7 tests) green.
  • Full solution builds clean (0 warnings).
  • Server version check verified end-to-end (match / dev-build "cannot verify" / mismatch exit 3).

highbyte added 4 commits July 6, 2026 17:24
When the install-channel marker file is absent, infer a candidate
channel from the app's run directory before falling back to
not-managed:

- Scoop: run dir under <scoop>/apps/<package>/current (incl. a
  custom $SCOOP root).
- Homebrew formula: run dir under <prefix>/Cellar/<formula>/...
  for a known brew prefix, matched against the formula name.
- Homebrew cask stays marker-driven (the .app runs from
  /Applications, not the Cellar).

The path is only a guess and is still confirmed by querying the
package manager, so detection stays biased to not-managed. Refactor
the brew prefix / scoop root lists into shared helpers reused by both
the fallback and executable resolution.

Add 7 unit tests covering the fallback confirm/veto paths.
@highbyte highbyte force-pushed the feature/app-update-followups branch from 5ab733c to cd188d3 Compare July 6, 2026 15:35
@sonarqubecloud

sonarqubecloud Bot commented Jul 6, 2026

Copy link
Copy Markdown

@highbyte highbyte marked this pull request as ready for review July 6, 2026 18:19
@highbyte highbyte merged commit 99f7b45 into master Jul 6, 2026
10 checks passed
@highbyte highbyte deleted the feature/app-update-followups branch July 6, 2026 18:20
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