Guard doSetup() against re-initialization, route welcome to onboard
wizard, fix import confirmation logic, remove invalid syncthing
generate flags, and show full export path. Add shell-based integration
test suite (123 tests) at ~/src/test/pal/ covering all commands.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Process.exec uses popen(cmd, "r") which creates a read-only pipe where
the subprocess stdin is disconnected from the terminal. Console.readLine
reads directly from the parent process stdin via fgets, fixing all
interactive prompts (askConfirm, askInput, choice menus).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rename grapho → pal across entire codebase (CLI, NixOS module,
flake, docs, config paths)
- Add `pal onboard` interactive setup wizard with 4 steps:
device, config repo, sync, backups
- Shows current setup summary when re-running onboard on an
existing installation with warnings about what will change
- Fix askConfirm/askInput to read from /dev/tty so interactive
prompts work correctly
- Remove || operator usage in askConfirm (not reliable in Lux)
- Add pal package to nix develop shell
- Document ~/.config/pal/ directory structure in README
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>