mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-07-03 12:27:41 +08:00
chore(app-identity): lowercase bundle id to com.cherryai.cherrystudio
Normalise the bundle id casing from com.cherryai.CherryStudio to com.cherryai.cherrystudio so it follows the dominant lowercase convention used by modern AI tools (Anthropic Claude, OpenAI Codex, Raycast, Docker) and the reverse-DNS norm. macOS LaunchServices is case-insensitive, so this is a no-op on existing installs - bundle-id bound state stays as it was after4439d3b28, and no new breaking-changes entry is needed. Touches the same five definition points as the original rebrand (electron-builder appId, notarize appBundleId, AppUserModelID, selection self-detection, preview workflow replaceAll/appId) plus the breaking-changes doc body. The doc's historical commit-subject reference for4439d3b28deliberately retains its original PascalCase to remain a faithful quote of that commit's subject.
This commit is contained in:
8
.github/workflows/v2-daily-preview-build.yml
vendored
8
.github/workflows/v2-daily-preview-build.yml
vendored
@@ -122,20 +122,20 @@ jobs:
|
||||
path: 'electron-builder.yml',
|
||||
replace: (content) =>
|
||||
content
|
||||
.replace(/^appId: .+$/m, 'appId: com.cherryai.CherryStudio.preview')
|
||||
.replace(/^appId: .+$/m, 'appId: com.cherryai.cherrystudio.preview')
|
||||
.replace(/^productName: .+$/m, 'productName: Cherry Studio Next')
|
||||
},
|
||||
{
|
||||
path: 'scripts/notarize.js',
|
||||
replace: (content) => content.replaceAll('com.cherryai.CherryStudio', 'com.cherryai.CherryStudio.preview')
|
||||
replace: (content) => content.replaceAll('com.cherryai.cherrystudio', 'com.cherryai.cherrystudio.preview')
|
||||
},
|
||||
{
|
||||
path: 'src/main/index.ts',
|
||||
replace: (content) => content.replaceAll('com.cherryai.CherryStudio', 'com.cherryai.CherryStudio.preview')
|
||||
replace: (content) => content.replaceAll('com.cherryai.cherrystudio', 'com.cherryai.cherrystudio.preview')
|
||||
},
|
||||
{
|
||||
path: 'src/main/services/selection/SelectionService.ts',
|
||||
replace: (content) => content.replaceAll('com.cherryai.CherryStudio', 'com.cherryai.CherryStudio.preview')
|
||||
replace: (content) => content.replaceAll('com.cherryai.cherrystudio', 'com.cherryai.cherrystudio.preview')
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
appId: com.cherryai.CherryStudio
|
||||
appId: com.cherryai.cherrystudio
|
||||
productName: Cherry Studio
|
||||
electronLanguages:
|
||||
- zh-CN
|
||||
|
||||
@@ -15,7 +15,7 @@ exports.default = async function notarizing(context) {
|
||||
|
||||
await notarize({
|
||||
appPath,
|
||||
appBundleId: 'com.cherryai.CherryStudio',
|
||||
appBundleId: 'com.cherryai.cherrystudio',
|
||||
appleId: process.env.APPLE_ID,
|
||||
appleIdPassword: process.env.APPLE_APP_SPECIFIC_PASSWORD,
|
||||
teamId: process.env.APPLE_TEAM_ID
|
||||
|
||||
@@ -45,7 +45,7 @@ const startApp = async () => {
|
||||
// app's notifications, taskbar icon grouping, and Jump Lists (no-op on macOS/Linux).
|
||||
// Must run before any window is created or notification fires, hence after the
|
||||
// migration gate returns and before lifecycle bootstrap.
|
||||
electronApp.setAppUserModelId('com.cherryai.CherryStudio')
|
||||
electronApp.setAppUserModelId('com.cherryai.cherrystudio')
|
||||
|
||||
// Start lifecycle (BeforeReady runs parallel with app.whenReady)
|
||||
application.registerAll(serviceList)
|
||||
|
||||
@@ -570,7 +570,7 @@ export class SelectionService extends BaseService implements Activatable {
|
||||
// [macOS] a hacky way
|
||||
// when set `skipTransformProcessType: true`, if the selection is in self app, it will make the selection canceled after toolbar showing
|
||||
// so we just don't set `skipTransformProcessType: true` when in self app
|
||||
const isSelf = ['com.github.Electron', 'com.cherryai.CherryStudio'].includes(programName)
|
||||
const isSelf = ['com.github.Electron', 'com.cherryai.cherrystudio'].includes(programName)
|
||||
|
||||
if (!isSelf) {
|
||||
// [macOS] an ugly hacky way
|
||||
|
||||
@@ -8,7 +8,7 @@ date: 2026-05-27
|
||||
|
||||
## What changed
|
||||
|
||||
The application's macOS bundle identifier was renamed from `com.kangfenmao.CherryStudio` to `com.cherryai.CherryStudio` as part of the v2 identity rebrand. The user-visible `productName` (`Cherry Studio`) is unchanged on every platform, and so is the `cherrystudio://` URL scheme name itself.
|
||||
The application's macOS bundle identifier was renamed from `com.kangfenmao.CherryStudio` to `com.cherryai.cherrystudio` as part of the v2 identity rebrand. The user-visible `productName` (`Cherry Studio`) is unchanged on every platform, and so is the `cherrystudio://` URL scheme name itself.
|
||||
|
||||
User data is preserved automatically. Electron's `userData` directory is keyed by `productName` (`~/Library/Application Support/Cherry Studio`), not by bundle id, so v1's SQLite database, preferences, and cache files are picked up by v2 on first launch without any migration step.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user