feat: add macOS desktop app installer#3627
Conversation
- Add install-qwen-macos-app.sh script for one-click macOS app installation - Add comprehensive documentation for macOS Desktop App feature - Update README.md with macOS Desktop App installation option - Users can now launch Qwen Code via Spotlight, Launchpad, or Applications folder Fixes user request for easier macOS desktop access to Qwen Code CLI Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Add qwen-icon.png (from vscode-ide-companion assets) to scripts/installation/ - Update install script to read icon from local SCRIPT_DIR - Fallback to default icon if qwen-icon.png not found - Update README and docs to use raw.githubusercontent.com URL This ensures the installer works immediately without waiting for CDN upload. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Co-authored-by: Shaojin Wen <shaojin.wensj@alibaba-inc.com>
…en-code macos installer - anomalyco/opencode#24491 (merge-after-nits): cross-project sidebar sync via cross-directory store fan-out + loadSessions refetch + panelProject memo, with two drive-by behavior changes (prompt.ts title gate, session.ts directory filter) that should be split out - anomalyco/opencode#24487 (merge-as-is): five-route httpapi parity bridge for share/unshare/deleteMessage/deletePart/updatePart with URL-vs-body validator on updatePart and SessionRunState.assertNotBusy gate on deleteMessage - QwenLM/qwen-code#3627 (needs-discussion): macOS osacompile-AppleScript installer with no signing/notarization, curl-pipe-bash from unpinned main URL, and login-shell PATH-resolution gap for nvm/fnm users
| log_warning 'Icon file not available, using default AppleScript icon' | ||
| fi | ||
|
|
||
| if [ -w "${SYSTEM_APP_DIR}" ]; then |
There was a problem hiding this comment.
[Suggestion] Reinstalling an existing user-level app can create a second app instead of replacing the one the user already has. The script detects ~/Applications/Qwen Code.app as existing_app_path, but later always prefers /Applications whenever it is writable. If only the user-level app exists and /Applications is writable, “Reinstall” installs a new /Applications/Qwen Code.app while leaving the stale ~/Applications/Qwen Code.app in place. Spotlight/Launchpad can keep showing or launching the old user-level app, so the reinstall may appear to succeed while not updating the app the user actually launches.
When existing_app_path is set and writable, reinstall to that same path; only choose the system/user fallback path for first-time installs.
— gpt-5.5 via Qwen Code /review
- google-gemini/gemini-cli#26225 MessageBus fail-fast — merge-after-nits - QwenLM/qwen-code#3627 macOS desktop installer — merge-after-nits - aaif-goose/goose#9014 unread state for background chats — merge-after-nits - charmbracelet/crush#2520 Ctrl+D quit prompt — merge-as-is
|
Hey @huangrichao2020 — thanks for picking this back up after #3564 and carrying through the review fixes. The script itself is well-defended ( I'm going to close this, and I want to be upfront about why so the time you spend isn't wasted — it's a direction call, not the implementation. What this PR adds is a macOS launcher: an AppleScript #3776 is the direction we're committing to: standalone archives that bundle the Node runtime, cross-platform (Linux/macOS/Windows), with checksum verification, mirror support, and staged rollback. Once that lands, "install" stops requiring a working npm. A real, signed, runtime-bundled Two installation paths are worse than one even when both work, and a macOS-only AppleScript launcher would be an awkward third thing to keep alive next to npm and the standalone archive. So I'd rather not carry it. If you'd like to contribute to the desktop-app angle, the more interesting follow-up after #3776 is a proper Thanks again for the effort here. |
Add docs/design/code-review/ covering the PR review automation system this branch is building toward: - code-review-design.md (569 lines): problem statement, design principles, 4-stage workflow pipeline, Design Gate spec with PR shape generation and fail modes, Feature PR Readiness Gate, author/maintainer feedback loop with override, historical PR/issue detection, incremental cache wiring, App integration plan, testing strategy, risks. - roadmap.md (179 lines): 7-phase rollout, each phase scoped to an independent PR with acceptance criteria. - compare.md (86 lines): capability comparison vs claude-code, coderabbit, copilot review, cursor bugbot, greptile. The design treats Direction/Scope/History/Validation as workflow preflight gates separate from bundled /review, so direction issues are decided in the first 30s rather than after a full deep pass. Anchors are existing repo artifacts (roadmap.md, architecture.md, docs/design/*) and historical close comments (#3863, #3627), not new team-policy docs.
Summary
This replaces the closed #3564 with the same macOS desktop launcher work, plus the review fixes from that thread.
It adds an optional installer that creates
Qwen Code.app, so macOS users can launch Qwen Code from Spotlight, Launchpad, Finder, or the Applications folder. The generated app opens Terminal and runsqwen, so it keeps the existing CLI runtime path.Changes
scripts/installation/install-qwen-macos-app.shscripts/installation/qwen-icon.pngfor clone-based installsdocs/users/installation/Review fixes carried over from #3564
${BASH_SOURCE[0]}unbound-variable failures underbash -cno-clone installs/Applicationsto~/Applicationsfor new installs when the system Applications directory is not writable~/Applicationswhen a stale/Applications/Qwen Code.appalready exists and cannot be replacedValidation
bash -n scripts/installation/install-qwen-macos-app.shosacompilesmoke test for the generated AppleScript appnpm run test:scriptsnpm run lint -- scripts/installation/install-qwen-macos-app.sh docs/users/installation/macos-desktop-app.md README.md.sh/.mdpaths.Prior art: a similarly scoped macOS launcher installer was accepted in
lsdefine/GenericAgent: lsdefine/GenericAgent#140