chore(desktop): route bundle and menu display names through one value
What
Separates the app's display name from its productName, so the visible name can change later without moving any on-disk state.
- New
getAppDisplayName()(apps/desktop/src/main/lib/app-display-name.ts):app.namewith its first word replaced byCOMPANY.NAME, so the suffix stays ("Canary", "(workspace)"). - The macOS app menu, About/Hide/Quit labels, About panel and notification registration use it.
electron-builder.ts/electron-builder.canary.ts:CFBundleName,CFBundleDisplayNameand the Linux desktop entryName=come from adisplayNamevalue.productNameis unchanged.
Why productName stays
Electron derives the userData folder, the logs folder the CLI reads, sessionData (browser-pane cookies), the macOS keychain entry, the .app bundle the updater replaces and the Windows install folder from productName. Changing it would move or orphan all of that for existing users. Display surfaces don't have that problem.
Behaviour today
None. COMPANY.NAME and displayName are both "Superset" (and "Superset Canary"), so every label, bundle field and path is identical to main.
Mobile is untouched: an explicit CFBundleDisplayName would change the Expo runtime fingerprint and force a new native build, so the mobile display name changes together with its next native release instead.
Verification
- Biome clean on the changed files.
- A probe Electron bundle with
CFBundleName/CFBundleDisplayNamedifferent fromproductNamekeptapp.name, userData, sessionData and logs on theproductNamepath before and afterready. - Relying on CI for typecheck and tests.
🤖 Generated with Claude Code
Summary by cubic
Separates the app's visible name from its productName so the display name can change later without moving any on-disk state.
- New
getAppDisplayName()inapps/desktop/src/main/lib/app-display-name.tsswaps the first word ofapp.namefor the company name, keeping suffixes like "Canary" or "(workspace)". - The macOS app menu, About panel, notification registration,
CFBundleName/CFBundleDisplayName, and Linux desktop entry now read this display value. productNameis unchanged because Electron derives the userData folder, logs path, keychain entry, and updater bundle from it; changing it would orphan that state for existing users.- Mobile is untouched: an explicit
CFBundleDisplayNamewould change the Expo runtime fingerprint and force a new native build.
No behavior changes today: the display name and productName are identical ("Superset" / "Superset Canary").
Summary by CodeRabbit
- Improvements
- Updated the app’s display name across desktop and iOS, including macOS notifications, the About panel, and application menus.
- macOS menu items now include the app name in their labels.