chore(desktop): route bundle and menu display names through one value

Closed
KI
1mo ago
+35-10

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.name with its first word replaced by COMPANY.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, CFBundleDisplayName and the Linux desktop entry Name= come from a displayName value. productName is 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/CFBundleDisplayName different from productName kept app.name, userData, sessionData and logs on the productName path before and after ready.
  • 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() in apps/desktop/src/main/lib/app-display-name.ts swaps the first word of app.name for 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.
  • productName is 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 CFBundleDisplayName would 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.