feat(desktop): Managed updates section — per-connection SSH updates with live receipts (#91277 Phase 4 UI) - #95982
Merged
Merged
Conversation
Slim renderer UI for the managed SSH remote update engine (#95942), adapted from #93042's renderer unit with the deferred canary/rollout scope stripped. Adds a per-connection store (idle/updating/terminal states, receipt, managed-update-in-progress busy envelope) and a 'Managed updates' section on the Gateways settings page with an Update button, progress line, and correlated receipt per registered Desktop-managed SSH connection. Fails closed when the Electron main lacks connections.updateManaged.
Contributor
૮ >ﻌ< ა ci reviewran on 15a4b96 — feat(desktop): Managed updates section drives per-connection
|
22 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The managed SSH remote update (#95942) is now human-drivable: a "Managed updates" section on the Gateways settings page lists every registered SSH connection with an Update button, live progress, and the correlated receipt (#91277 Phase 4 UI; adapted from #93042's renderer unit by @andrexibiza with the canary/rollout scope stripped per sequencing).
Screenshots (approved by Teknium pre-merge; harness renders without app theme vars — in the Desktop the section inherits Gateways-settings styling):
Changes (all
apps/desktop/)src/store/managed-updates.ts(new): per-connection state machine —idle → updating → updated | partial | refused | failed; receipt + restored-scope capture; in-flight dedupe (repeat click joins the running promise); themanaged-update-in-progressbusy envelope handled BOTH as a refused result and as a thrown IPC error, so a busy gate renders as calm "in progress", never a scary failure.src/app/settings/managed-updates-section.tsx(new): one row perkind: 'ssh'connection (label,user@host, status Pill via the standard tone tokens), Update →connections.updateManaged, progress line, terminal receipt line (Receipt <id8> · outcome · pre → post · stopReason), restored/unrestored profile lines with per-profile failure reasons. Renders nothing when there are no SSH sources or the main process lacks the bridge (older backend — fail-closed).src/store/managed-updates.test.ts(new): 9 tests (success+receipt, join-on-repeat, partial restore-failed, busy refusal, thrown busy envelope, non-busy refusal, stop-reason fallback, missing-bridge fail-closed, busy matcher).Stripped vs #93042's unit: rollout waves, canary cohorts, fleet-updates store surface, i18n beyond en (entangled with the deferred scope — follows if/when that lands).
Validation
Advances #91277 Phase 4 (final UI piece). Credit: @andrexibiza (#93042 renderer design).
Infographic