feat(linux): package DSH Desktop as AppImage and deb - #676
Open
Xiaobaichipi wants to merge 1 commit into
Open
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The desktop app has always carried Linux compatibility code (
LinuxPlatformStrategy, theLinux compatibility-mode window path), but there was no Linux installer:
build.linuxonly 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
dsh-plugin-desktop/package.json):build.linuxnow targetsAppImageanddebfor x64; addsexecutableName,category,maintainer,desktopName(top-level metadata) andlinux.syncDesktopNameso packaged windows associatewith the
.desktopentry.dist:linux(root + package) →scripts/package-linux.ts: host guard (Linux + x64),runs the
check:linux-packagegate (market build, desktop build, typecheck, packaging &native-shell focused tests, runtime-closure verifier), then Electron Builder for
AppImage/deband verifies the artifacts. SetsCSC_IDENTITY_AUTO_DISCOVERY=false,npmRebuild=false, never publishes — same unsigned-local-build discipline asdist:win.scripts/verify-linux-package.ts: validates the AppImage, the deb (!<arch>magic), andthe
linux-unpacked/dsh-desktop+app.asar.tests/package-linux.spec.tsandtests/verify-linux-package.spec.tsmirror theWindows package tests;
tests/package.spec.tsextended for the Linux config and scripts.README.md/README.en.md, OS support indocs/faq.md+docs/faq.en.md, Linux install/run section indocs/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.yamlhashes re-recorded.Verification (Ubuntu 22.04 LTS x64, X11)
DSH-Desktop-2.0.3-x86_64.AppImage(ELF x86-64, 191 MB) andDSH-Desktop-2.0.3-amd64.deb(valid ar/deb,Architecture: amd64) plus thelinux-unpacked/dsh-desktopsmoke tree.DeepSeek Harness web UI in compatibility mode (Linux presentation; extended/enhanced
windows, the desktop terminal, and auto-update remain macOS/Windows boundaries).
yarn checkgreen.Artifacts are unsigned (same policy as the local
dist:winbuild); a signed Linux releaseand upgrade/uninstall testing remain release gates.