feat(cli): support paseo . to open desktop app with project (#189)

* fix(app): reorder settings sections for better grouping

* feat(app): add setup hint and paseo.sh link on mobile welcome screen

New app store users land on the welcome screen with no context. Show a
brief explanation that the desktop app or server is needed, plus a link
to paseo.sh — only on mobile (iOS/Android), hidden on web/desktop.

* docs(release): add pre-release sanity check and clarify changelog scope

Add a Codex 5.4 review step before cutting releases to catch breaking
changes and backward-compatibility issues (mobile apps lag behind
desktop/daemon updates). Clarify that the changelog always covers the
delta from the previous stable release, not from the last RC.

* feat(cli): support `paseo .` to open desktop app with project directory

Similar to VS Code's `code .`, users can now type `paseo .` or
`paseo <path>` to open the Paseo desktop app with that directory as
the active project.

- Desktop shims detect path-like first args and launch Electron in GUI
  mode with --open-project instead of CLI passthrough mode
- Electron main process parses --open-project, sends IPC event to
  renderer, and forwards via second-instance for the already-running case
- Renderer OpenProjectListener reuses existing openProject() RPC flow
- Standalone CLI discovers the desktop app per platform and spawns it
This commit is contained in:
Mohamed Boudra
2026-04-04 15:30:25 +08:00
committed by GitHub
parent 42cfed514c
commit 3d3e327378
9 changed files with 363 additions and 8 deletions
+10 -3
View File
@@ -1,7 +1,14 @@
import { createCli } from "./cli.js";
import { isPathLikeArg, openDesktopWithProject } from "./commands/open.js";
const program = createCli();
if (process.argv.length <= 2) {
process.argv.push("onboard");
const firstArg = process.argv[2];
if (firstArg && isPathLikeArg(firstArg)) {
await openDesktopWithProject(firstArg);
} else {
if (process.argv.length <= 2) {
process.argv.push("onboard");
}
program.parse(process.argv, { from: "node" });
}
program.parse(process.argv, { from: "node" });