- A bare terminal invocation reads answers from the real terminal (/dev/tty
when stdin is the curl pipe); piped data is never used as an answer and
nothing prompts without a controlling terminal.
- After the install choices it asks y/n separately for the speech model
download and the pip runtime install, runs the chosen steps in order and
stops at the first failure; equivalent flag commands are printed.
- Opens with a one-line note that the user can Ctrl+C and read the script.
- Drops the OpenVR autolaunch and --without-model questions from attended
mode; the KDE desktop entry is the launch path. Flags are unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Creates a user-local venv under $XDG_DATA_HOME/frameyap/runtimes from the
invoking python3 (3.10-3.13), installs CPU torch==2.8.0 from PyTorch's CPU
index and moondream==2.4.0 from PyPI (binary wheels only, pip --isolated,
Torch constrained), verifies imports and no CUDA, then sets python= in
paths.conf and removes superseded managed runtimes. Requires --yes; has a
read-only --print-plan/--json. A failure removes only the new venv.
Offline tests mock pip; a real run passed on x86-64 Python 3.12. ARM64 Frame
install is still pending.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Drop the fixed 'Type adds a space' hint; a Bindings failure note now
replaces the page count instead.
- Grow the transcript card to six lines, closing the empty band above the
footer; move pagination down.
- Header: right-aligned clock/date, L/HMD/R battery readouts from OpenVR
battery properties (headset falls back to the Linux system battery);
missing readings are hidden.
- Status line chip shows Buttons ready/paused from IsDashboardVisible().
- Type (A or button) with nothing to review queues Enter alone; the button
is labelled Enter in that state.
Offline and native x86-64 builds pass; not yet deployed to Frame.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>