* 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
61 lines
1.7 KiB
Bash
Executable File
61 lines
1.7 KiB
Bash
Executable File
#!/bin/sh
|
|
set -eu
|
|
|
|
SCRIPT_PATH=$0
|
|
case "$SCRIPT_PATH" in
|
|
/*) ;;
|
|
*) SCRIPT_PATH="$(pwd)/$SCRIPT_PATH" ;;
|
|
esac
|
|
|
|
# Follow symlinks so `/usr/local/bin/paseo` resolves back into the app bundle.
|
|
while [ -L "$SCRIPT_PATH" ]; do
|
|
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$SCRIPT_PATH")" && pwd)
|
|
LINK_TARGET=$(readlink "$SCRIPT_PATH")
|
|
case "$LINK_TARGET" in
|
|
/*) SCRIPT_PATH="$LINK_TARGET" ;;
|
|
*) SCRIPT_PATH="${SCRIPT_DIR}/${LINK_TARGET}" ;;
|
|
esac
|
|
done
|
|
|
|
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$SCRIPT_PATH")" && pwd)
|
|
RESOURCES_DIR=$(CDPATH= cd -- "${SCRIPT_DIR}/.." && pwd)
|
|
|
|
# macOS: MacOS/Paseo is a sibling of Resources/
|
|
# Linux: the executable sits next to resources/
|
|
if [ -x "${RESOURCES_DIR}/../MacOS/Paseo" ]; then
|
|
APP_EXECUTABLE="${RESOURCES_DIR}/../MacOS/Paseo"
|
|
elif [ -x "${RESOURCES_DIR}/../Paseo" ]; then
|
|
APP_EXECUTABLE="${RESOURCES_DIR}/../Paseo"
|
|
else
|
|
echo "Bundled Paseo executable not found relative to ${RESOURCES_DIR}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
case "${1:-}" in
|
|
./*|../*|.|..|/*|~|~/*)
|
|
case "$1" in
|
|
~) ARG_PATH="$HOME" ;;
|
|
~/*) ARG_PATH="$HOME/${1#\~/}" ;;
|
|
*) ARG_PATH="$1" ;;
|
|
esac
|
|
if RESOLVED_PATH=$(CDPATH= cd -- "$ARG_PATH" 2>/dev/null && pwd); then
|
|
:
|
|
elif command -v realpath >/dev/null 2>&1; then
|
|
RESOLVED_PATH=$(realpath "$ARG_PATH" 2>/dev/null || printf "%s" "$ARG_PATH")
|
|
else
|
|
RESOLVED_PATH=$ARG_PATH
|
|
fi
|
|
if [ ! -e "${RESOLVED_PATH}" ]; then
|
|
echo "Path does not exist: ${RESOLVED_PATH}" >&2
|
|
exit 1
|
|
fi
|
|
if [ ! -d "${RESOLVED_PATH}" ]; then
|
|
echo "Not a directory: ${RESOLVED_PATH}" >&2
|
|
exit 1
|
|
fi
|
|
exec "${APP_EXECUTABLE}" --open-project "${RESOLVED_PATH}"
|
|
;;
|
|
esac
|
|
|
|
exec env PASEO_DESKTOP_CLI=1 "${APP_EXECUTABLE}" "$@"
|