Skip to content

feat: add optional Pi configuration - #26

Merged
kunchenguid merged 3 commits into
mainfrom
fm/dotpub-pi-public-batch-r1
Aug 1, 2026
Merged

feat: add optional Pi configuration#26
kunchenguid merged 3 commits into
mainfrom
fm/dotpub-pi-public-batch-r1

Conversation

@kunchenguid

Copy link
Copy Markdown
Owner

Intent

Implement the captain-approved, strictly additive public Pi teaching batch in kunchenguid/dotfiles while preserving the existing from-scratch tutorial flow and video fidelity. Ship exactly a clean-room Rose Pine Moon theme made from the public Rose Pine palette and public Pi theme schema; credential-free model context-window overrides with no authentication, endpoint, headers, account metadata, or default model selection; documented generic sanitized settings with no personal provider/model/thinking tuple, packages, runtime state, or undocumented fields; the captain-authored dependency-free terminal status-title extension; four explicit per-file Home Manager out-of-store links only; gitignore guards for auth.json and Home Manager adoption backups; and concise opt-in README documentation. Keep the containing Pi directory and all credentials, sessions, trust, caches, logs, telemetry, packages, prompts, skills, Firstmate, Herdr, launcher cask/PATH shim, and other private/runtime surfaces unmanaged and excluded. Do not introduce a Node extension-test convention or generalized Nix JSON assertion. Document that Pi and Pi Launcher are owner-installed optional dependencies, model overrides are inert until the user authenticates, Pi may deliberately rewrite tracked settings, the title extension reloads via /reload, and this is post-video additive scope. The theme must be clean-room, not copied, compared, hashed, or adapted from any private or live theme bytes.

What Changed

  • Add opt-in Pi configuration with a clean-room Rose Pine Moon theme, generic settings, credential-free model context overrides, and a terminal status-title extension.
  • Manage only four authored Pi files through Home Manager while ignoring credentials and nested adoption backups.
  • Document optional Pi and Pi Launcher installation, authentication behavior, tracked settings rewrites, extension reloads, and post-video scope.

Risk Assessment

✅ Low: The change is well-bounded, both prior findings are resolved, and the current source conforms to the required additive Pi scope without exposing or managing private runtime surfaces.

Testing

Inspected the base-to-target change, loaded and rendered every declared theme role through Pi 0.82.0, validated the credential-free overrides and generic settings, exercised the title extension from idle through spinner and completion, evaluated exactly four Home Manager links, verified ignore guards, and recorded a real offline Pi TUI showing the theme, title, and inert-until-login behavior. All checks passed and the worktree stayed clean. A screenshot was attempted but unavailable because the gate had no browser, so the raw ANSI terminal recording is supplied as the end-user visual evidence.

Evidence: Focused Pi acceptance transcript

Pi 0.82.0 loaded all 52 theme roles, accepted the credential-free overrides, exercised idle/spinner/completed titles, and verified documentation and managed-file boundaries.

THEME: Pi 0.82.0 loaded rose-pine-moon and rendered all 52 declared UI roles
MODELS: Pi accepted three 272000-token overrides with no credentials, endpoint, headers, account metadata, or default selection
SETTINGS: only the eight documented generic UI/behavior fields are present; no package, runtime, provider, model, or thinking tuple is selected
TITLE EXTENSION: ○ | π | pi-course -> working spinner -> ✓ | π | Public Pi lesson; shutdown stopped timer writes
HOME MANAGER: exactly four per-file Pi links; the containing directory is unmanaged
PUBLIC BATCH: exactly four Pi files; no auth, sessions, trust, caches, logs, telemetry, packages, prompts, skills, Firstmate, Herdr, or launcher payloads
README: opt-in owner installation, inert-until-auth overrides, rewrite caveat, /reload, and post-video additive scope are documented
RESULT: focused Pi public-batch acceptance checks passed
Evidence: Real offline Pi TUI with Rose Pine Moon colors, status title, and authentication prompt
^D��^D���[?2004h�[>7u�[?u�[c�[?25l�]0;○ | π | 01KYXEMDXDE1VRHZAE07BQ313X��]0;π - 01KYXEMDXDE1VRHZAE07BQ313X��[<u�]0;○ | π | 01KYXEMDXDE1VRHZAE07BQ313X��[?2026h�[0m�]8;;�

 �[38;5;216mWarning: No models available. Use /login to log into a provider via OAuth or   �[0m�]8;;�

 �[38;5;216mAPI key. See:                                                                  �[0m�]8;;�

 �[38;5;216m  /Applications/Pi Launcher.app/Contents/Resources/pi/docs/providers.md        �[0m�]8;;�

 �[38;5;216m  /Applications/Pi Launcher.app/Contents/Resources/pi/docs/models.md�[39m           �[0m�]8;;�

�[0m�]8;;�

�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[0m�]8;;�

�[7m �[0m                                                                               �[0m�]8;;�

�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[38;5;60m─�[39m�[0m�]8;;�

�[38;5;60m~/.no-mistakes/worktrees/ae718910ea2d/01KYXEMDXDE1VRHZAE07BQ313X (detached)�[39m�[0m�]8;;�

�[38;5;60m0.0%/0 (auto)�[39m�[38;5;60m                                                            unknown�[39m�[0m�]8;;��[?2026l�[3A�[1G�[?25l �[4B

�[?25h�[?2004l�]0;π - 01KYXEMDXDE1VRHZAE07BQ313X�
Evidence: Home Manager Pi evaluation

The evaluated Home Manager configuration contains exactly four non-recursive Pi file entries.

[
  {
    "path": ".pi/agent/extensions/terminal-status-title.js",
    "recursive": false,
    "source": "/nix/store/im3h8i5q5bjrmlziikcg6frfhxykjv99-hm_terminalstatustitle.js"
  },
  {
    "path": ".pi/agent/models.json",
    "recursive": false,
    "source": "/nix/store/idx9g0gyd8grwynchnr13pra2fy4yndq-hm_models.json"
  },
  {
    "path": ".pi/agent/settings.json",
    "recursive": false,
    "source": "/nix/store/al802c8shljb11yr802619y68b719zbv-hm_settings.json"
  },
  {
    "path": ".pi/agent/themes/rose-pine-moon.json",
    "recursive": false,
    "source": "/nix/store/cin7kv6sxb442dlaz1aim8ba8ix6ipsp-hm_rosepinemoon.json"
  }
]
Evidence: Pi gitignore guards

Both auth.json and nested Home Manager adoption backups match their intended ignore rules.

.gitignore:12:/home/.pi/agent/auth.json	home/.pi/agent/auth.json
.gitignore:13:/home/.pi/agent/**/*.backup	home/.pi/agent/adopt/deep/settings.json.backup
Evidence: Overrides remain inert without authentication

No models available. Use /login to log into a provider via OAuth or API key.

No models available. Use /login to log into a provider via OAuth or API key. See:
  /Applications/Pi Launcher.app/Contents/Resources/pi/docs/providers.md
  /Applications/Pi Launcher.app/Contents/Resources/pi/docs/models.md

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

🔧 **Review** - 2 issues found → auto-fixed ✅
  • 🚨 .gitignore:11 - The intent requires “gitignore guards for auth.json and Home Manager adoption backups,” but this pattern matches only backups directly under agent/. Backups beside the nested managed theme and extension remain unignored. Use /home/.pi/agent/**/*.backup or add explicit nested guards.
  • ⚠️ home/.pi/agent/extensions/terminal-status-title.js:129 - Pi documents agent_end as the end of one low-level run, before possible automatic retries, compaction, or queued follow-ups. Marking the title done here stops the spinner while Pi may still be working. Set completion on agent_settled instead, while retaining agent_start for working state.

🔧 Fix: Cover nested Pi backups and settled completion
✅ Re-checked - no issues remain.

✅ **Test** - passed

✅ No issues found.

  • git diff --name-status 7857db1b96d525e23c2d3ce53d9383987a494328..825487fed701d199185f878c61cefa9adc16ba1f plus complete seven-file intent review
  • nix eval --json .#darwinConfigurations.mac.config.home-manager.users.kunchen.home.file filtered to .pi/ entries
  • One-off node --input-type=module acceptance harness using Pi 0.82.0's real theme and model loaders plus the extension event lifecycle
  • PI_CODING_AGENT_DIR=<evidence>/agent PI_OFFLINE=1 PI_TELEMETRY=0 pi --list-models gpt-5.6
  • git check-ignore -v --no-index home/.pi/agent/auth.json home/.pi/agent/adopt/deep/settings.json.backup
  • Recorded PTY launch: pi --offline --no-session --no-context-files --approve using the isolated public configuration
  • Attempted browser-based screenshot capture; the gate reported that no browser was available
  • git status --short after testing and transient-worktree cleanup check
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

@kunchenguid
kunchenguid merged commit 2bab87a into main Aug 1, 2026
1 check passed
@kunchenguid
kunchenguid deleted the fm/dotpub-pi-public-batch-r1 branch August 1, 2026 01:36
Aviator-Coding pushed a commit to Aviator-Coding/dotfiles that referenced this pull request Aug 1, 2026
* Add optional Pi teaching configuration

* no-mistakes(review): Cover nested Pi backups and settled completion

* no-mistakes(document): Clarify Pi per-file symlink documentation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant