Repository navigation
feat(npx-cli): add --mac flag to install a macOS app bundle - #3379
julioflima wants to merge 2 commits into
Conversation
Adds `npx vibe-kanban --mac` which creates a native macOS .app bundle at /Applications/Vibe Kanban.app. The app can be pinned to the Dock and reopened without a terminal window. - Launcher script resolves npx via nvm/volta/homebrew paths - Reuses existing server session if the port is still listening - The vibe-kanban binary handles browser opening itself - Icon built from bundled 2000x2000 PNG (assets/AppIcon.png) - Registers with Launch Services for Spotlight discovery Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit ed9f7f2. Configure here.
| import infoPlist from './Info.plist'; | ||
|
|
||
| const APP_NAME = 'Vibe Kanban'; | ||
| const BUNDLED_ICON = path.join(__dirname, '../../assets', 'AppIcon.png'); |
There was a problem hiding this comment.
Bundled icon path resolves to wrong directory
High Severity
BUNDLED_ICON uses ../../assets relative to __dirname, but after esbuild bundles everything into bin/cli.js, __dirname at runtime is the bin/ directory. Two levels up from bin/ overshoots the package root entirely. The existing pattern in download.ts correctly uses path.join(__dirname, '..', 'dist') — one level up — to reach the package root. This path resolves to <parent_of_package>/assets/AppIcon.png instead of <package_root>/assets/AppIcon.png, so the icon file is never found and the .app bundle is always installed without its icon.
Reviewed by Cursor Bugbot for commit ed9f7f2. Configure here.
Aggressive review summary — PR #3379158-line addition to What it does
The launcher wraps Findings
NITs
VerdictApprove. — Reviewed by automated single-pass review (mac install-flow; full 4-tool battery skipped — change is contained to npx-cli/, no Rust impact, the security/permissions concerns are about the macOS environment rather than the code). |


Summary
Adds
npx vibe-kanban --macwhich installs a native macOS.appbundle to/Applications/Vibe Kanban.app. Users can pin it to the Dock and launch it without ever opening a terminal.How it works
/Applications/Vibe Kanban.appwith a properInfo.plistand launcher shell script.icnsicon from the bundledassets/AppIcon.png(2000×2000)On subsequent clicks from the Dock, the launcher:
ncport check) and reuses the sessionnpx vibe-kanbanin the background — the binary handles browser opening itselfUsage
Notes
npxacross nvm, volta, homebrew, and system paths (no PATH issues when launched from Dock)npx-cli/assets/AppIcon.pngNote
Medium Risk
Adds a new install path that writes to
/Applicationsand executes platform tools (sips,iconutil,lsregister,open), which can fail in varied macOS environments and affects local system state.Overview
Adds a new
npx vibe-kanban --macflow that installs and launches a macOS.appbundle in/Applicationsinstead of starting the app in browser/desktop mode.The PR introduces a small macOS installer module that writes an
Info.plist, installs a launcher script, and optionally generates an.icnsicon from a bundled PNG before registering with Launch Services and opening the app. Build/packaging is updated to bundle.sh/.plistsources as text and to ship the newassetsdirectory.Reviewed by Cursor Bugbot for commit ed9f7f2. Bugbot is set up for automated code reviews on this repo. Configure here.