Files
zp-home ae508bd227 feat(desktop): open a folder named at launch as a workspace
Dropping a folder on the desktop or Start-menu shortcut raised the window
but registered nothing: main never parsed a positional argument, and the
second-instance handler discarded argv after two negative filters. The npm
launcher rejected positional arguments outright and hard-coded the Electron
argument list, so a path could not reach main at all.

Main now parses one launch folder, applies the existing native workspace
admission policy to it, and hands it to the mounted Host page through
executeJavaScript. A page that has not installed the client seam yet parks
the folder in a pending slot the client plugin drains on install, so neither
side has to wait on the other. The client bridge creates the workspace by
path (idempotent upstream) and opens it once both workspace and session
lists reach a ready phase, which keeps a baseline replacement from erasing
the freshly created row.

The launcher accepts `dsh-desktop <folder>` and forwards it to Electron with
an explicit flag, so a descendant Node command re-entering as a GUI process
is still rejected by the background-node guard. Relaunch argument builders
strip the folder, keeping it one-shot across all three restart shapes.

Windows covers both shortcut drops and the command line; Linux covers the
command line. A pinned taskbar icon needs a folder association and macOS
needs open-file wiring; both are out of scope here and documented as limits.

Refs #1119
2026-09-22 03:36:10 +08:00

21 lines
625 B
JSON

{
"extends": "./tsconfig.json",
"compilerOptions": {
"rootDir": ".",
"noEmit": true,
"emitDeclarationOnly": false
},
"include": ["scripts/**/*.ts", "src/*.ts", "tests/**/*.ts", "tests/**/*.tsx"],
"exclude": [
"tests/client-boot-health.spec.ts",
"tests/client-aa-settings.spec.ts",
"tests/client-desktop-settings.spec.ts",
"tests/client-desktop-update-settings.spec.ts",
"tests/client-environment.spec.ts",
"tests/client-launch-workspace.spec.ts",
"tests/client-layout-service.spec.ts",
"tests/client-sidebar-dom-anchor.spec.ts",
"tests/theme-presenter.spec.ts"
]
}