Repository navigation
Replies: 1 comment
|
Confirmed, and it is a one-key mistake, not a build-configuration subtlety. In a JavaScript object literal the second wins, so Two notes that make the fix easier to land. The comment that was attached to the original object is still the right statement of intent, and it is now orphaned above a key that gets discarded: macOS matches the application locale against this bundle rather than against the Electron Framework resources, which is why the key has to be in The merge itself is mechanical: one One thing I would keep out of the report: this is not an Electron or electron-builder bug. The later key silently replacing the earlier one is ordinary JS semantics; electron-builder never saw two entries. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Cause
728d561split the one macOSextendInfoobject into twoextendInfokeys of the same object literal (apps/desktop/scripts/electron-builder-config.mjs):In a JavaScript object literal the later key replaces the earlier one, so only the microphone description survives and
CFBundleLocalizationsis lost.942e496had added it so that macOS matches the application language to the user's preferred languages, and the Desktop README still describes that. Both keys are still in687f282. The installed0.2.1-rc.2Info.plisthas noCFBundleLocalizations, andContents/Resourceshas no.lprojdirectories, so macOS treats the application as English-only.Neither check caught it.
.oxlintrc.jsonignores**/*.mjs, sono-dupe-keysnever runs on this file; running that rule on it reportsDuplicate key 'extendInfo'at line 163.macos-signature.spec.tsasserts only the microphone description.What it affects
On macOS with Simplified Chinese as the preferred language, Desktop shows its own interface in Chinese, but everything that macOS and Chromium localize on the application's behalf stays English.
The folder dialog of "Add workspace" (file names, the home folder and tags blurred):
The same build with
CFBundleLocalizationsrestored:Menu items that macOS adds:
0.2.1-rc.2CFBundleLocalizationsText that Chromium formats with the application locale is English too.
navigator.languageisen-USinstead ofzh-CN, and the Trajectory timeline tooltip, which formats times without a locale informatRecordedTime, shows12:10:13.208 AMwhile the Conversation view shows the same message at00:10:With
CFBundleLocalizationsrestored, the tooltip shows00:10:13.208.We checked on macOS 26.7 with preferred languages Simplified Chinese, then English, launching each build normally through Launch Services. The comparison builds are copies of the installed application with a different bundle identifier, ad hoc signed with the installed entitlements. They differ only in
CFBundleLocalizations, and the re-signed copy without it behaves exactly like the installed build. The titlesEditandWindowand role items such asUndo,CopyandMinimizestay English in every build; they are Electron's default role labels, a separate gap.Fix
Merge both values back into one
extendInfoand assert the localizations inmacos-signature.spec.ts: mobile-dev-harness/deepseek-harness@9462b56 (compare with master). Without the merge, the new assertion fails withexpected undefined to deeply equal [ 'en', 'zh_CN' ]. It is MIT-licensed like DSH; please take it as-is or reimplement it.Device permissions for plugins
We are building Mobile Preview Plugin, an open-source DSH plugin for mobile developers that shows and controls Android devices, iOS Simulators and USB-connected iPhones in the side panel. We found this while reviewing Desktop's signing configuration for a related need: macOS exposes the screen of a USB-connected iPhone only as a camera capture device, and it attributes camera requests from Desktop's child processes, including plugin helpers, to Desktop. Desktop's hardened-runtime signature includes
com.apple.security.device.audio-inputbut notcom.apple.security.device.camera, so macOS denies these requests without a prompt, and Desktop never appears under Privacy & Security › Camera. Some of our plugins will need camera access this way.Is there a plan for how Desktop grants device permissions such as the camera to plugins? Adding the camera entitlement, as
846afdfdid for the microphone, would unblock this. We would appreciate it if you could consider it, and we are glad to share our measurements or a reference change.cc @LegGasai
All reactions