Commit Graph
57 Commits
Author SHA1 Message Date
Tianyi Cui 7f83658b4a fix(desktop): reject canonical drive roots in installer 2026-10-05 08:53:27 +08:00
Tianyi Cui 1de97d1c10 Merge pull request #5288 from deepseek-harness/worktree/desktop-cli/manage
feat(desktop): manage dsh command from the app menu
2026-09-29 16:27:30 +08:00
Tianyi Cui a01f2444c3 refactor(desktop): make CLI registration a post-install menu action 2026-09-29 15:41:06 +08:00
Tianyi Cui 6863e7fe9b fix(desktop): simplify command installation and correct checkbox text 2026-09-29 13:23:55 +08:00
Tianyi Cui 386487ec66 fix(desktop): preserve command errors and validate installer choices 2026-09-29 12:55:47 +08:00
Tianyi Cui d796ae1efd fix(desktop): preserve command ownership and guard silent installers 2026-09-29 12:55:46 +08:00
07akioni aaceea0554 feat(desktop): add fixed latest installer upload commands 2026-09-28 19:58:55 +08:00
liyao 3dc1e1a92f Merge remote-tracking branch 'origin/master' into fix/update-copy-review
# Conflicts:
#	packages/client/ui-settings-general/README.i18n.yaml
#	packages/client/ui-settings-general/README.md
#	packages/client/ui-settings-general/README.zh.md
2026-09-24 16:27:41 +08:00
liyao bcf0ba45cb fix(client): clarify update guidance and unnamed session labels 2026-09-24 16:16:17 +08:00
imccyu 6000dcdda5 fix(web): reconcile visual consistency after master rebase 2026-09-24 14:58:55 +08:00
winewill 5637311d5a fix(desktop): confirm the first close with the shared shell dialog 2026-09-24 14:25:02 +08:00
winewill 1bc594d701 Merge pull request #5076 from deepseek-harness/feat/windows-update-restart
fix(desktop): clarify Windows updates and raise the restarted window
2026-09-24 13:41:12 +08:00
winewill 037bed1f41 fix(desktop): reject running app before installer extraction 2026-09-24 11:49:01 +08:00
lsdsjy dd0578fadd Merge origin/master into fix/platform-webview-persistence 2026-09-24 11:05:40 +08:00
winewill a7e745de66 Merge master into feat/windows-update-restart 2026-09-24 01:11:36 +08:00
lsdsjy 311ab0524f Merge remote-tracking branch 'origin/master' into fix/platform-webview-persistence 2026-09-23 22:25:54 +08:00
07akioni 93b832f1b0 Merge pull request #4459 from deepseek-harness/feat/desktop-onboarding
feat(desktop): add device-local account onboarding
2026-09-23 22:21:18 +08:00
winewill d2a5490fa0 fix(desktop): clarify Windows updates and raise the restarted window 2026-09-23 21:25:54 +08:00
lsdsjy be3ecb4977 fix(desktop): persist account-scoped Platform page preferences 2026-09-23 10:55:33 +08:00
lsdsjy 318c83fa84 chore: merge master and restore PR validation 2026-09-22 22:25:13 +08:00
winewill 603a8fc7d3 Merge remote-tracking branch 'origin/master' into fix/fatal-diagnostics-and-crash-reports 2026-09-22 17:58:58 +08:00
lsdsjy 06a3daef9f Merge remote-tracking branch 'origin/master' into feat/account-provider-signout 2026-09-22 15:08:47 +08:00
lsdsjy 6ef32577a3 fix(account,models): reconcile provider lifecycle with master 2026-09-22 15:06:16 +08:00
winewill e38cca76fd feat(desktop): write a crash report before the fatal recovery dialog
The fatal recovery dialog showed the last eight lines of the error and
promised that the full diagnostic was in the Electron console, which a
packaged installation never surfaces. Two field failures were diagnosed
from screenshots of those eight lines: a Host killed by an uncaught
exception whose path happened to be in the tail, and a renderer boot
failure whose real import error lived only in the renderer console.

Every reportFatal caller now names its source (host, web-boot, renderer,
main). Before the first dialog opens, the shell writes
crash-<time>-<source>.log under app.getPath('logs') with the source, the
startup or running phase, application and runtime versions, the complete
inspected error with its properties and cause chain, and the primary
window's recent error-level console output (a 64 KiB tail captured from
webContents 'console-message'). The dialog names the file on its own line,
independent of whether the error was shortened and in the listener-conflict
variant too; the wait is bounded to one second and a failed write shows the
dialog without a path. Startup keeps the ten newest reports. Buttons and
recovery actions are unchanged.
2026-09-22 13:22:27 +08:00
winewill 3305bb1938 Merge remote-tracking branch 'origin/master' into feat/desktop-update-ui-2 2026-09-22 11:44:41 +08:00
lsdsjy d5db0ff0c4 merge: sync master into desktop welcome branch 2026-09-21 19:53:28 +08:00
winewill bc4e8bafe6 Merge remote-tracking branch 'origin/master' into feat/desktop-update-ui 2026-09-21 17:58:40 +08:00
winewill c1edda8a37 fix(desktop): show the Windows About command in the update dialog
Electron's About role on Windows falls back to a bare system message
box, which looks nothing like the shell's dimmed update prompts. Design
asked for the version check to match Check for Updates, so the Windows
menu item now opens the shared update dialog with the application name,
localized version line and a single OK button; macOS keeps the native
panel. The About command follows the renderer's chosen language like
the rest of the Windows caption menu.
2026-09-21 17:46:26 +08:00
winewill 0981cd5924 fix(desktop): harden the Windows uninstall data removal after review
Pinned directories are now opened with listing access so the handle takes
part in share checks and a rename or replacement of the directory under the
helper fails; a metadata-only handle did not participate. A DSH_HOME published
as an environment variable protects overlapping targets, and /KEEP_APP_DATA
retains data alongside --updated, matching the flags electron-builder passes
to an older uninstaller. The remover clears read-only attributes, keeps
deleting siblings after a locked file, and removes only ordinary empty scope
parents below %APPDATA% instead of an NSIS RMDir that would also unlink a
junction. The redundant un.DataInit extraction is gone.

The native regression now runs from the installer test driver and covers the
protected root, rename blocking, read-only and locked files and parent
removal; the uninstaller smoke uses a per-run scope, polls for the temp-copy
handoff, asserts InstallLocation after each silent install, and adds
/KEEP_APP_DATA and DSH_HOME-inside cases. The Agent Note keeps the topic's
2026-09-08 filename, states the amendment in the decision, and defers macOS.
2026-09-21 17:01:54 +08:00
winewill 93a65a9a94 feat(desktop): remove Electron data on Windows uninstall without a custom page
Product dropped Harness-home cleanup from the uninstaller, so the opt-in page,
its bilingual dialog, the uninstall.ini home record and the overlap check go
away. The uninstaller now always removes the Electron user-data directory,
the %APPDATA% product directory and the updater cache through the native
helper; the Harness home is never touched. Silent uninstalls remove the same
data, upgrades retain it, and a locked file is logged instead of stopping the
uninstall.

Electron derives user data from the scoped package name, so the removal
targets %APPDATA%\@deepseek-ai\dsh-desktop and removes the empty scope
directory afterwards. The previous fixture used an unscoped name and never
reached that directory; the fixture now uses a scoped package name.

The native uninstall smoke runs end to end on the development host after two
test fixes: the interactive uninstaller was launched hidden, which made every
control invisible to the text search, and the Chinese finish text matched
"已经从" instead of MUI's "已从你". The native remover regression is renamed
data-cleanup-test.exe because UAC installer detection demanded elevation from
the unmanifested uninstall-data-test.exe.
2026-09-21 15:14:44 +08:00
winewill dbbecd2461 feat(desktop): opt-in Windows uninstall data removal
The Windows uninstaller keeps every user file by default and adds a custom
page with unchecked options for desktop browser data and update caches, the
desktop plugin profile, and the complete Harness home. Selecting the whole
home requires a native warning that names the actual folder and the CLI
impact, defaults to Cancel, and forces the desktop child selection. Silent
and upgrade uninstalls never remove data, including through the legacy
--delete-app-data flag, which the adapted upstream template no longer honors.

Packaged Desktop records its resolved home in uninstall.ini under the
Electron user-data directory so a custom DSH_HOME is offered instead of the
default; a length field detects truncated NSIS reads and an invalid record
disables whole-home removal. The native remover in window-frame.dll rejects
protected roots and overlap with retained data, holds directory handles
during traversal, and unlinks reparse points without entering their targets.

Installation now also writes InstallLocation on the Windows uninstall entry,
which Explorer needs to associate the Start menu shortcut with this entry so
that the context-menu Uninstall launches the uninstaller directly instead of
opening the installed-apps list. The upstream template only records the
value under its private key.

Closes #3993
2026-09-21 14:22:39 +08:00
winewill b793dd2df6 Merge remote-tracking branch 'origin/master' into build/test-release-path-id
# Conflicts:
#	apps/desktop/scripts/desktop-package-environment.mjs
#	apps/desktop/tests/package-target-stages.spec.ts
2026-09-20 21:46:58 +08:00
winewill fd75c47ae9 fix(desktop): localize macOS application menu names 2026-09-20 15:08:57 +08:00
winewill c05771d828 build(desktop): isolate test downloads by release ID 2026-09-20 14:17:51 +08:00
lsdsjy fb829bfc5c fix(desktop): refine welcome sign-in and workspace entry focus 2026-09-20 11:31:41 +08:00
lsdsjy 52d5ecd7c6 fix(desktop): update welcome copy and remove forced preview 2026-09-20 11:31:41 +08:00
lsdsjy 048297321a feat(desktop,credentials,client): integrate DeepSeek account sign-in and Platform pages 2026-09-20 11:31:40 +08:00
lsdsjy 753eff67b1 feat(desktop,client): add the native welcome window 2026-09-20 11:31:27 +08:00
winewill 21887adc00 Merge origin/master into feat/desktop-update 2026-09-17 15:33:25 +08:00
07akioni e62a0e3e5d fix(desktop): explain listener conflicts with exit and restart recovery 2026-09-17 13:27:19 +08:00
winewill a11b0a218c Merge branch 'codex/desktop-test-package-20260916' into feat/desktop-update
# Conflicts:
#	packages/client/ui-deliverables/package.json
#	packages/client/ui-directory-picker-native/package.json
#	packages/extensions/tool-cordis/package.json
2026-09-17 11:05:11 +08:00
winewill c06d2719d0 merge: sync latest master into desktop updates 2026-09-17 10:48:32 +08:00
winewill c624c2eff0 fix(desktop): present installer welcome and package 0.1.6-alpha.1.20260916.2 2026-09-16 19:37:48 +08:00
Turtle 04794bd90e fix(desktop): clarify profile recovery scope and diagnostics 2026-09-16 18:41:47 +08:00
Turtle 8d5c7e4e2a fix(desktop): back up profile patches during recovery 2026-09-16 17:10:21 +08:00
winewill 1be847f736 feat(desktop): add native About menu and panel 2026-09-16 16:55:32 +08:00
winewill 63dd8fb80d feat(desktop): add ordinary and mandatory update flows 2026-09-16 10:48:23 +08:00
07akioni 791f731c08 fix(desktop): bound fatal diagnostics and restore failed package operations 2026-09-15 20:00:05 +08:00
07akioni dfb07a038c feat(desktop): replace failure pages with native recovery dialog 2026-09-15 16:48:27 +08:00
winewill c47a2c16b4 feat(desktop): load platform packaging settings from local dotenv files
Load target-owned Windows and macOS release settings, validate them before
preparation, and provide a configuration-only check command. Share the local
settings with upload, installer tests, and manual macOS signature checks.

Exercise English and Chinese installer fixtures using visible UI labels and
cover registered installation paths with trailing separators.
2026-09-14 12:47:08 +08:00