Skip to content

feat(linux): package DSH Desktop as AppImage and deb - #676

Open
Xiaobaichipi wants to merge 1 commit into
anywhere-labs:masterfrom
Xiaobaichipi:feat/linux-package
Open

feat(linux): package DSH Desktop as AppImage and deb#676
Xiaobaichipi wants to merge 1 commit into
anywhere-labs:masterfrom
Xiaobaichipi:feat/linux-package

Conversation

@Xiaobaichipi

Copy link
Copy Markdown

Why

The desktop app has always carried Linux compatibility code (LinuxPlatformStrategy, the
Linux compatibility-mode window path), but there was no Linux installer: build.linux
only emitted an unpacked directory, the download table listed Windows x64 and macOS Universal
only, and the FAQ explicitly said "当前没有 Linux 安装包". This PR closes that gap so Linux
users get first-class installers.

What changed

  • Packaging config (dsh-plugin-desktop/package.json): build.linux now targets
    AppImage and deb for x64; adds executableName, category, maintainer,
    desktopName (top-level metadata) and linux.syncDesktopName so packaged windows associate
    with the .desktop entry.
  • New scripts:
    • dist:linux (root + package) → scripts/package-linux.ts: host guard (Linux + x64),
      runs the check:linux-package gate (market build, desktop build, typecheck, packaging &
      native-shell focused tests, runtime-closure verifier), then Electron Builder for
      AppImage/deb and verifies the artifacts. Sets CSC_IDENTITY_AUTO_DISCOVERY=false,
      npmRebuild=false, never publishes — same unsigned-local-build discipline as dist:win.
    • scripts/verify-linux-package.ts: validates the AppImage, the deb (!<arch> magic), and
      the linux-unpacked/dsh-desktop + app.asar.
  • Tests: tests/package-linux.spec.ts and tests/verify-linux-package.spec.ts mirror the
    Windows package tests; tests/package.spec.ts extended for the Linux config and scripts.
  • Docs: download tables in README.md/README.en.md, OS support in docs/faq.md +
    docs/faq.en.md, Linux install/run section in docs/user-guide.md + .en.md, and a
    "Local Linux x64 AppImage and deb" section in dsh-plugin-desktop/README.md + README.zh.md.
    Bilingual .i18n.yaml hashes re-recorded.

Verification (Ubuntu 22.04 LTS x64, X11)

  • Artifacts: DSH-Desktop-2.0.3-x86_64.AppImage (ELF x86-64, 191 MB) and
    DSH-Desktop-2.0.3-amd64.deb (valid ar/deb, Architecture: amd64) plus the
    linux-unpacked/dsh-desktop smoke tree.
  • End-to-end launch of the packaged app: native setup wizard → main window → official
    DeepSeek Harness web UI in compatibility mode (Linux presentation; extended/enhanced
    windows, the desktop terminal, and auto-update remain macOS/Windows boundaries).
  • yarn check green.

Artifacts are unsigned (same policy as the local dist:win build); a signed Linux release
and upgrade/uninstall testing remain release gates.

Add a Linux packaging path alongside the existing Windows and macOS
distributions: build.linux targets AppImage and deb for x64, a
dist:linux/check:linux-package script pair, and an artifact verifier
that validates the AppImage ELF, deb ar archive, and unpacked tree.

Linux artifacts are unsigned and use electron-builder's native arch
naming (x86_64 AppImage, amd64 deb). The config also sets desktopName
and linux.syncDesktopName so packaged windows associate with the
.desktop entry.

Docs: README (zh/en) download table, FAQ (zh/en), user guide (zh/en),
and the desktop package README (en/zh) now cover Linux AppImage/deb
support and compatibility-mode boundaries (terminal, auto-update, and
custom window modes remain macOS/Windows).

Verified end-to-end on Linux: packaged linux-unpacked app launches the
setup wizard, then runs the official DSH web UI in compatibility mode.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant