Add updater release notes recovery flow - #5343
Conversation
|
🧪 This PR changes the updater flow in a way that needs a manual QA pass before merge — please hold off self-merging for now; we'll loop QA in once it's merge-ready. |
mrcfps
left a comment
There was a problem hiding this comment.
@PerishCode Thanks for the release-notes recovery work here. I reviewed the changed workflow/release metadata path, updater popup normalization, fixture coverage, and sourcemap dry-run guard. I found one non-blocking UI correctness issue around release-note metadata precedence when a downloaded update is kept visible while a newer candidate has been checked. I also attempted the focused web updater Vitest command, but this checkout does not currently have vitest available for @open-design/web, so I could not use that local validation signal.
Generated-By: looper 0.10.1 (runner=fixer, agent=codex)
|
Looper fixer round complete — c6264c9
🔁 Powered by Looper · runner=fixer · agent=codex · An autonomous AI dev team for your GitHub repos. |
mrcfps
left a comment
There was a problem hiding this comment.
@PerishCode I reviewed the latest head across the updater popup changes, release-note metadata publishing, beta/betas force-latest recovery path, sourcemap dry-run side-effect guard, fixture support, and the follow-up fix for active-release metadata precedence. The prior release-notes link mismatch is addressed by preferring status.active.metadata, with a regression covering an active downloaded version while newer incoming/top-level metadata exists. I did not find any new actionable issues in the changed ranges. Thanks for the careful recovery-path work here.
|
Closing this PR after product/research alignment changed the auto-update direction. Keeping the branch for reference; follow-up work will continue from #5071's branch. |













































Why
This PR prepares the updater release-notes path for beta recovery work on the 0.14.1 line.
The immediate pain is operational: beta metadata may need to move back from a 0.14.2 path to 0.14.1 after stale R2 objects are manually removed. The release workflow previously treated that as a semver regression and would block both version preparation and
latest.jsonpublishing. This also closes the dry-run side-effect gap where sourcemap upload could still reach PostHog.What users will see
When a packaged update is ready, the updater popup opens as a centered expanded dialog by default. It renders a local release-notes preview text, includes a control to collapse back to the compact form, and shows a "View full release notes" action when updater metadata provides an HTTPS
jumpToURL.Release operators get an explicit
force_latestworkflow input for beta/betas recovery. Normal runs keep the existing forward-version protection.Surface area
apps/weborapps/desktop(including Electron menu bar)odsubcommand or flag, newtools-dev/tools-pack/tools-prflag, or newOD_*env var/api/*endpoint, new SSE event, or changed shape inpackages/contractsskills/,design-systems/,design-templates, orcraft/, or change to the skills protocolTRANSLATIONS.mdfor the locale workflow)package.json(dependenciesordevDependencies); workspace-packagepackage.jsonfiles are out of scope. Include a paragraph on what we get vs. what bytes we ship (seeCONTRIBUTING.md→ Code style)Screenshots
Local packaged validation captured expanded and compact updater states:
.tmp/updater-force-0141-r1-install/screenshots/round1-expanded.png.tmp/updater-force-0141-r1-install/screenshots/round1-compact.png.tmp/updater-force-0141-r2-install/screenshots/round2-expanded.png.tmp/updater-force-0141-r2-install/screenshots/round2-compact.pngThe expanded screenshot was inspected locally and shows the centered large updater dialog, local constant release-notes copy, and the full release-notes jump button.
Bug fix verification
Validation
pnpm installactionlint -color .github/workflows/release-beta.yml .github/workflows/release-beta-s.yml .github/workflows/release-stable.ymlpnpm --filter @open-design/tools-release exec vitest run tests/channel-prepare.test.tspnpm --filter @open-design/tools-serve exec vitest run tests/release-metadata-publish.test.tspnpm --filter @open-design/tools-release typecheckpnpm --filter @open-design/tools-serve typecheckpnpm --filter @open-design/web typecheckpnpm --filter @open-design/tools-pack typecheckpnpm --filter @open-design/tools-pack exec vitest run --maxWorkers=2 tests/web-sourcemaps.test.ts tests/config.test.ts tests/release-workflows.test.tspnpm i18n:checkpnpm --filter @open-design/e2e exec vitest run tests/packaged-smoke-workflow.test.tspnpm --filter @open-design/web exec vitest run tests/lib/updater.test.ts tests/components/UpdaterPopup.test.tsxpnpm --filter @open-design/tools-serve exec vitest run tests/updater-fixture.test.tspnpm guardpnpm typecheckgit diff --checkPackaged updater loop validated twice locally with
tools-serve+tools-packonrelease-beta: build0.14.1-beta.1, install/start0.14.1-beta.0, trigger updater download, render popup, capture expanded/compact screenshots, close, and uninstall.Release follow-up: after the stale R2
0.14.2objects are cleared, dispatchrelease-betawithrelease_version=0.14.1-beta.1andforce_latest=trueso the workflow can publishbeta/latest/metadata.jsonback to the 0.14.1 line.