Detect generated Orca Unix launcher files as stale CLI registrations and replace them during install, while keeping arbitrary regular files protected as conflicts. This removes the stale /usr/local/bin/orca blocker found during memory profiling.
* feat(ui): add instruction hints to command and prompt dialogs
Add helper text below prompt/description textareas in the quick command
dialog, automation editor dialog, and create PR dialog to inform users
about supported features like skills, file paths, and built-in commands.
Closes#3998
* fix: use resources/bin/orca.cmd for packaged Windows CLI path
resolveCommandPath() returned %LOCALAPPDATA%\\Programs\\Orca\\bin\\orca.cmd
but the actual CLI after updates lives at resources\\bin\\orca.cmd.
The bin\\orca.cmd shim is wiped on every update, breaking CLI access.
* chore: keep windows cli path PR focused
---------
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
Support packaged Linux AppImage CLI registration with a stable wrapper that invokes the outer AppImage and resolves the CLI entry from APPDIR at runtime.
The takeover drops the already-landed Linux command rename plus unrelated perf/GPU sandbox changes from the original branch, and adds regression coverage for wrapper install, stale wrapper replacement, legacy symlink cleanup, argument forwarding, and env preservation.
Co-authored-by: Emad Fussi <43019044+omd0@users.noreply.github.com>
* fix(cli): fall back to ~/.local/bin on macOS arm64 when /usr/local/bin is absent
/usr/local/bin does not exist by default on Apple Silicon Macs — Homebrew
moved to /opt/homebrew after the arm64 transition. The previous code called
mkdir(/usr/local/bin) inside install(), which threw EACCES (root-owned parent
directory) before installSymlink() was reached, so the existing osascript
privileged-runner fallback was never invoked. Settings permanently showed
"not installed" with no error surfaced anywhere, silently blocking all four
agent skill install flows (Orchestration, Browser Use, Computer Use, CLI).
Changes:
- resolveCommandPath() darwin branch now returns this.macCommandPath, a field
resolved once at construction time via existsSync(dirname(candidatePath)).
When /usr/local/bin is absent the constructor falls back to ~/.local/bin/orca
(user-writable, no sudo, XDG standard, already on PATH via shell init on arm64).
existsSync is not called on every getStatus() invocation.
- mkdir is moved from install() into installSymlink()'s try/catch block so any
EACCES failure reaches the osascript privileged runner instead of propagating
as an unhandled rejection. mkdir is kept in install() for the Windows wrapper
path where the target directory is always user-writable.
- defaultMacCommandPath option added as a test seam so tests can simulate an
absent /usr/local/bin without touching the real filesystem.
Fixesstablyai/orca#3557
* review: tighten macOS CLI installer coverage
- cover the macOS path-selection seam without bypassing it
- make the privileged-runner test invoke install and assert the fallback
- prove macCommandPath stays fixed after construction
---------
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
Adds an RPM Linux package target and renames the Linux CLI command to orca-ide to avoid shadowing GNOME Orca, while preserving macOS and Windows CLI command behavior.\n\nFollow-up hardening keeps the Linux launcher executable, removes only old Orca-managed Linux/WSL orca launchers during migration, preserves AppImage/deb artifact names, and updates package/release tests for the RPM asset.