Skip to content

#1189 A T3 checkout update shows in the sidebar's update pill, like the desktop and harness updates - #27

Merged
Tevin2119 merged 1 commit into
masterfrom
delivery/1189-a-t3-checkout-update-shows-in-the-sideba-f8807ae82d
Oct 10, 2026
Merged

Tevin2119 merged 1 commit into
masterfrom
delivery/1189-a-t3-checkout-update-shows-in-the-sideba-f8807ae82d

Conversation

@polymaniadeveloper-hub

Copy link
Copy Markdown
Collaborator

Task pingdotgg#1189, run run-f8807ae82d. Approved by T for commit f9891a9, which passed its checks and the QA gate.

What was asked

apps/web/src/components/sidebar/SidebarUpdatePill.tsx and SidebarChrome.tsx, apps/web/src/components/CheckoutUpdateNotification.tsx and CheckoutUpdate.logic.ts. A T3 run from a git checkout under the checkout supervisor offers its update (Update and restart, progress, undone) as a toast (CheckoutUpdateNotification), while the v2 sidebar, now the default, shows desktop updates in SidebarUpdatePill and harness updates in SidebarProviderUpdatePill. Show the checkout update in the sidebar's update area the same way: when the server is checkout-supervised and a newer commit is available, the update pill offers it with its subject and how many commits, Update and restart starts it, the pill shows installing, building and restarting, and how it ended (updated, or undone and why). Keep the toast only where the sidebar is not shown, or drop it, and say which. Keep the logic in CheckoutUpdate.logic.ts and its tests.

Done when

  1. In a browser with the v2 sidebar, connected to a checkout-supervised server that has a newer commit, the sidebar's update area shows a checkout update pill with the new commit's subject (or short hash) and the commit count
  2. With the v2 sidebar showing, no checkout update toast appears for the same update
  3. Pressing Update and restart in the pill starts the checkout update, and while the update is starting the button cannot be pressed again
  4. While the update runs, the pill shows installing, then building, then restarting, matching the server's phase
  5. When the update is undone, the pill shows 'T3 update undone' with the reason; when it fails without being undone, the pill shows 'T3 could not update' with the reason
  6. After a successful update, the tab that started it reloads by itself, and any other open tab's pill offers Reload with the new commit
  7. If the update cannot be started (the request fails), the person is told it did not start and can try again
  8. Dismissing an offered update in the pill hides it until a newer commit is available, using the same remembered dismissal as the toast
  9. With the legacy sidebar setting on, the checkout update still appears as today's toast, with the same actions
  10. A server that does not report the checkoutUpdate capability shows no checkout pill and no checkout toast
  11. In the desktop app, the desktop update pill (check, download, install, and the Intel build warning) behaves exactly as before, and no checkout pill appears for its bundled server
  12. Settings > Connections still shows the checkout version row with Update and restart / Check now
  13. The pill's states are worked out in CheckoutUpdate.logic.ts, and CheckoutUpdate.logic.test.ts covers available, dismissed, each progress phase, undone, failed, reload and no-update
  14. The result says that web was changed, that desktop was checked to be unchanged, and that mobile was not changed because it has no checkout update screen; it also names the T3 sidebar update pill as the piece reused and says what was not checked in a browser

Opened by the delivery engine after a person's approval. Merging is a separate step.

…ktop and harness updates

Web only. The T3 checkout update now shows in the v2 sidebar's update area as a SidebarCheckoutUpdatePill placed next to SidebarProviderUpdatePill in SidebarChromeFooter, reusing the T3 sidebar update pill's tones, icons, small dismiss button and tooltip. One root-mounted controller (CheckoutUpdateProvider in CheckoutUpdateNotification.tsx, wrapping the app shell in __root.tsx) feeds both the pill and the retained toast. The toast is kept only for the legacy sidebar and Settings routes. Both are hidden until client settings load and when the server lacks the checkoutUpdate capability. CheckoutUpdate.logic.ts works out the states: phase titles (installing/building/restarting) that stay even when the server sends a message, undone vs could-not-update told apart even when an earlier undo is still on record, reason fallback to lastOutcome.reason, the pill view (available/starting/not-started notice/progress/undone/failed/reload/none) and the presentation choice. The controller blocks a second start before React re-renders and holds 'Starting…' until the server moves on (or passes on the request). A failed start says it did not start and allows retry. Start requests still in flight from a previous primary environment are ignored. The initiating tab reloads by itself and other tabs offer Reload. The loaded commit and initiating tab survive Settings navigation and a reconnect where the server briefly reports nothing. Offered-commit dismissal shares the existing t3code:checkout-update-dismissed:v1 key, outcome notices close locally, and a toast closed by the code no longer remembers a dismissal (this also fixes a failure toast that reopened after closing). Desktop updater files are unchanged; mobile is not changed because it has no checkout update screen.

Task task-96df4b2119, revision 2, run run-f8807ae82d.
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL labels Oct 9, 2026
@Tevin2119
Tevin2119 merged commit 9318555 into master Oct 10, 2026
7 of 15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants