Skip to content

Name the stamped Desktop and its release artifacts Whiteboard - #543

Merged
thesiti92 merged 2 commits into
mainfrom
feat/whiteboard-artifact-names
Sep 24, 2026
Merged

thesiti92 merged 2 commits into
mainfrom
feat/whiteboard-artifact-names

Conversation

@thesiti92

@thesiti92 thesiti92 commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Why

#507 set nameShort/nameLong to Whiteboard in product.json, but every release and preview job runs stamp-release-channel.mjs first, which overwrites those fields from release-channel.mjs. That file still said Review and Review Preview, so published builds kept shipping as Review.app / Review Preview.app and Review-darwin-arm64-<version>.dmg.

What changes

  • release-channel.mjs: both channel identities now carry Whiteboard names. The packaged bundle, Info.plist names, app menu and Linux desktop entry follow from this.
  • Artifact names: Whiteboard-darwin-arm64-<version>.zip / .dmg, the releases/latest/darwin-arm64/Whiteboard.dmg and preview-latest aliases, and df-whiteboard[-preview]-<version>.dmg download filenames. Updated in notarize-macos.sh, validate-release-artifacts.mjs, both release workflows and the landing verification steps.
  • Test fixtures, the CLI edges journey's bundle pattern, the latency runner's packaged path and the --preview help text.

What stays the same

applicationName, dataFolderName, darwinBundleIdentifier and urlProtocol are untouched. They name the Linux binary and RPM package, the user data directory, the bundle identifier Squirrel verifies updates against, and the share link scheme. Renaming any of them would break existing installs.

Rollout

  • Auto-update needs no sequencing: clients take the zip URL from the manifest the Worker hands them.
  • install.dev.fast must serve the new alias. Fix-Fast/dev#1084 switches the Worker to Whiteboard.dmg with a fallback to Review.dmg while the alias is absent, so it can deploy before or after the next release.
  • Existing installs keep their on-disk Review.app filename because Squirrel swaps the bundle contents in place. Only a fresh drag from the DMG produces Whiteboard.app. Worth a line in the release notes.
  • apps/review-desktop/README.md and scripts/review-latency/README.md still document the old filenames; left for a follow-up.

Validation

  • node --test on validate-release-artifacts, linux-package and stamp-release-channel: 25 pass.
  • Stamped a temp copy of product.json for both channels: Whiteboard / Whiteboard Preview with unchanged applicationName, bundle id and data folder.
  • oxlint, oxfmt --check and actionlint on the touched files show only pre-existing style notes.

#507 set nameShort and nameLong to Whiteboard in product.json, but every
release and preview job runs stamp-release-channel.mjs first, and that
overwrote them from release-channel.mjs, which still said Review and
Review Preview. Published builds therefore kept shipping as Review.app
and Review Preview.app.

Give both channel identities their Whiteboard names, so the packaged
bundle, the Info.plist names, the app menu and the Linux desktop entry
follow. Rename the artifacts to match: Whiteboard-darwin-arm64-<v>.zip
and .dmg, the releases/latest and preview-latest Whiteboard.dmg aliases,
and the df-whiteboard download filenames.

applicationName, dataFolderName, darwinBundleIdentifier and urlProtocol
stay as they are: they name the Linux binary and RPM, the user data
directory, the bundle Squirrel verifies updates against and the share
link scheme, so renaming them would break existing installs.

Existing installs keep their on-disk Review.app filename, since
Squirrel replaces the bundle contents in place. Only a fresh drag from
the DMG produces Whiteboard.app. install.dev.fast serves the new alias
once the update Worker deploys with its Review.dmg fallback.

Agent-Session: dc92f1ba-7080-4b63-b006-4dae65124781
Agent-Session: 78ffd160-974b-41b4-b7dd-d536de7c2833
Agent-Session: dd71f4e3-5ca2-4bf2-a4ca-1eb0bacd43ec
Agent-Session: a95580ef-9598-48ce-a13d-1c74ea1ef2fa
Agent-Session: aad32659-bbbe-45b2-b163-317afc1a6a83
Agent-Session: dc92f1ba-7080-4b63-b006-4dae65124781
Agent-Session: 78ffd160-974b-41b4-b7dd-d536de7c2833
Agent-Session: dd71f4e3-5ca2-4bf2-a4ca-1eb0bacd43ec
Agent-Session: a95580ef-9598-48ce-a13d-1c74ea1ef2fa
Agent-Session: aad32659-bbbe-45b2-b163-317afc1a6a83
Agent-Session: 01a0d16a-3c5b-7151-a388-02c852d993ff
@thesiti92
thesiti92 force-pushed the feat/whiteboard-artifact-names branch from 98ad54a to 4e2082d Compare September 24, 2026 03:32
@thesiti92
thesiti92 enabled auto-merge (squash) September 24, 2026 03:41
@thesiti92
thesiti92 merged commit 489e956 into main Sep 24, 2026
1 check passed
@thesiti92
thesiti92 deleted the feat/whiteboard-artifact-names branch September 24, 2026 03:42
thesiti92 added a commit that referenced this pull request Sep 24, 2026
## Why

Squirrel.Mac renames an install to the folder name inside the update zip
whenever the installed app's executable and folder names match
(`SQRLUpdater` `useUpdateBundleName`). After #543 the zip carries
`Whiteboard.app`, so every `Review.app` becomes `Whiteboard.app` on its
next update: the Dock tile turns into a question mark and the
post-install relaunch fails (`-67068`, ShipIt re-verifying the old
path). Seen on two preview installs today.

## What changes

One build, one signing and notarization pass, two zips:

- `release-channel.mjs` lists the bundle folder names each channel still
has in the field. Stable: `Review` (default) and `Whiteboard`. Preview:
`Whiteboard Preview` (default) and `Review Preview`.
- `notarize-macos.sh` copies the stapled app under each folder name and
zips it: `Review-darwin-arm64-<v>.zip` and
`Whiteboard-darwin-arm64-<v>.zip`. The DMG stays `Whiteboard.app`.
- `validate-release-artifacts.mjs` checks each zip's top-level folder
matches its bundle name and writes `latest.json` with a `bundles` map
keyed by folder name, plus the default `url`/`sha256hash` as before.
- Updater client: the darwin service adds `?bundle=<its own .app folder
name>` to the feed URL.
- Workflows upload every zip and verify the feed answers with the right
zip both with and without the parameter.
- README: the feed section and the sentence about renamed installs.

Result: `Review.app` installs stay `Review.app`, fresh installs are
`Whiteboard.app`, nobody's Dock breaks, and the relaunch after update
works. Old clients without the parameter get the channel default.

Depends on Fix-Fast/dev#1085 (Worker reads `bundles` and `?bundle=`),
which is backward compatible and should deploy before the next release.

## Validation

- `node --test` on the packaging scripts: 25 pass, including the
manifest schema change.
- Dry run of the zip loop and `assertZipFolder` on a fake bundle: both
zips carry the right top-level folder, mismatches throw.
- Fork typecheck: no errors under `platform/update` (the remaining
fresh-worktree errors are the ungenerated protocol module).
- `oxlint`, `oxfmt`, `shellcheck`, `actionlint` on the touched files.
- Not yet exercised end to end: a preview release after merge will show
both zips uploaded and the feed picking by `?bundle=`.
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.

2 participants