Skip to content

Releases: RINGOLINK/dsh-desktop-shell

1.1.3 - locale-safe shortcuts and scoped cleanup

Choose a tag to compare

@RINGOLINK RINGOLINK released this 15 Sep 15:18

Safety and correctness fixes for shortcut handling; no launcher (exe) change.

  • The debug shortcut is now DeepSeek Harness (Debug).lnk. WScript.Shell marshals the link path through the ANSI code page, so the previous Chinese-named link reached COM as DeepSeek Harness (????).lnk on any non-CJK Windows and Save() threw FileNotFoundException — aborting the script and skipping the Start Menu link. An existing pre-1.1.3 Chinese-named link is migrated away.
  • The Start Menu shortcut is no longer skipped when sign-in autostart is enabled (the generated script assigned a string to its own [switch]$Startup parameter; PowerShell variable names are case-insensitive). The script also takes -DesktopPath/-StartupPath/-ProgramsPath overrides.
  • Cleanup can only delete links this installation created: each launcher home records the absolute paths it made in shortcuts.json, and removeShortcuts / cleanup delete exactly those (older installs without the manifest fall back to the default names). Destructive helpers also honour the test seam: with DSH_DESKTOP_TEST=1 they report wouldRemove instead of deleting unless dryRun: false is explicit. POST /api/dsh-desktop/cleanup answers 409 when nothing is installed.
  • The manifest records the debug link again: entries are computed from the requested folders and confirmed on disk instead of parsed from PowerShell stdout (both scripts now force UTF-8 console output).
  • Tests: 50 → 57 checks, including a real PowerShell run against sandbox folders, sandboxed USERPROFILE/APPDATA with an escape assertion, the dry-run seam and manifest-scoped deletion.

Published through npm trusted publishing (OIDC) with provenance.

1.1.2 - settings row layout fix

Choose a tag to compare

@RINGOLINK RINGOLINK released this 15 Sep 14:55

Fixes the settings-row layout reported in the narrow settings column, plus a compact status/notes block.

  • The six-button control group was pinned with flexShrink: 0, so it kept its max-content width: it overflowed the column (the last button rendered outside the panel) and squeezed the label column to zero width, printing the title and description one character per line. The row now wraps (flex-wrap: wrap, the label column keeps a 1 1 260px basis, the control group is 0 1 auto and wraps its own buttons) and buttons never break inside their own label.
  • Verified on the shipped bundle bytes: at a 570px settings column the label width goes from 0px to 568px, horizontal overflow and clipped buttons go from 43px / 1 to 0 / 0, and the six buttons lay out on two rows. A layout regression test now pins that contract.
  • The status block renders one fact per line instead of a single ·-joined sentence, and the long behaviour notes collapse behind a 「行为说明(点击展开)」 / "Behaviour notes (click to expand)" disclosure.
  • Shorter button labels (「安装 / 修复」「调试重启」 / "Install / repair", "Debug restart"); the destructive action sits last.
  • Tests: 49 → 50 checks. No launcher (exe) change.

Published through npm trusted publishing (OIDC) with provenance.

1.1.1 - settings-row gating and doc fixes

Choose a tag to compare

@RINGOLINK RINGOLINK released this 14 Sep 06:11

Polish pass over the 1.1.0 settings row and documentation. No launcher (exe) change.

  • Management actions (rebuild shortcuts, the autostart switch, removal, both restart buttons) stay disabled until the shell is installed; the host half now also answers 409 for POST /api/dsh-desktop/autostart {enabled:true} and POST /api/dsh-desktop/shortcuts, so a raw API call cannot create a shortcut pointing at a launcher that does not exist.
  • The autostart switch treats a leftover Startup shortcut from an install older than 1.1 as ON, so one click on "disable" removes it (the row used to show "off" while the shortcut was still there).
  • Docs: "Remove installation" is documented as also deleting the saved WebView2 session, and as being re-provisioned by the next host start while the plugin stays installed (uninstall the plugin, or set DSH_DESKTOP_NO_AUTOINSTALL=1, when the removal has to stick).
  • New browser-half tests (stub module loader): module id, zh/en dictionary parity, settings-row registration, action-gating helpers, plus a check pinning lib/install.js VERSION to package.json. 40 → 49 checks.

Published through npm trusted publishing (OIDC) with provenance.

1.1.0 - opt-in autostart, removal action, hashes

Choose a tag to compare

@RINGOLINK RINGOLINK released this 14 Sep 05:52

Review follow-up: sign-in autostart is now opt-in, and everything the plugin installs can be removed again.

  • Sign-in autostart is off by default: the Startup-folder shortcut appears only after enabling it in 设置 → 通用设置 → DSH 桌面外壳; the choice lives in preferences.json (missing or corrupt resolves to off).
  • New "Remove installation" action (POST /api/dsh-desktop/cleanup) deletes every shortcut the plugin created plus the launcher home; it refuses while the launcher is running. Unloading the plugin never deletes files by itself.
  • New routes /api/dsh-desktop/autostart and /api/dsh-desktop/cleanup; /status now also reports preferences and launcherRunning.
  • Added SHA256SUMS.txt + assets/build-checksums.mjs (prebuilt exe, WebView2 DLLs and icons pinned by SHA-256, re-verified by the test suite) and README sections 行为与安全说明 / Reproducible build & hashes.
  • Tests: 27 → 40 checks. The launcher binary itself is unchanged.

Published through npm trusted publishing (OIDC) with provenance.

1.0.1 — trusted publishing (OIDC)

Choose a tag to compare

@RINGOLINK RINGOLINK released this 13 Sep 03:14

Packaging-only release: the npm pipeline now publishes through npm trusted publishing (OIDC).

  • .github/workflows/publish.yml publishes via npm trusted publishing (OIDC) — no NPM_TOKEN secret is stored in the repository, and provenance is generated automatically (this release carries a signed provenance statement: https://search.sigstore.dev/?logIndex=2813654666).
  • The workflow now fails fast when the npm CLI is older than 11.5.1, or when the pushed tag does not match the package.json version.
  • No runtime change: the launcher, host half and browser half are identical to 1.0.0.