From 99e7626e5e31017d8cb5536208ddd29e54b10444 Mon Sep 17 00:00:00 2001 From: alexion Date: Sat, 1 Aug 2026 20:48:48 -0400 Subject: [PATCH] Update completed dotfiles artifacts --- .obsidian/graph.json | 4 +- projects/dotfiles/002-pi-subagents-map.md | 18 +++---- ...47-pi-subagents-lifecycle-controls-task.md | 19 ++++--- ...agents-config-agents-tool-profiles-task.md | 22 +++++--- ...049-pi-subagents-batch-concurrency-task.md | 19 ++++--- .../050-pi-subagents-fork-context-task.md | 20 +++++--- .../051-pi-subagents-status-ui-task.md | 20 +++++--- ...ents-final-deployment-verification-task.md | 23 ++++++--- .../dotfiles/057-pi-ui-customization-map.md | 13 +++-- ...068-pi-ui-compact-status-extension-task.md | 28 ++++++---- .../070-pi-ui-flex-spacer-pi-patch-task.md | 23 ++++++--- ...i-ui-final-deployment-verification-task.md | 51 +++++++++++++++---- 12 files changed, 177 insertions(+), 83 deletions(-) diff --git a/.obsidian/graph.json b/.obsidian/graph.json index 0552e4e..4c31f48 100644 --- a/.obsidian/graph.json +++ b/.obsidian/graph.json @@ -77,10 +77,10 @@ "nodeSizeMultiplier": 2.51132136678201, "lineSizeMultiplier": 2.03949502595156, "collapse-forces": false, - "centerStrength": 0, + "centerStrength": 0.350183823529412, "repelStrength": 20, "linkStrength": 1, "linkDistance": 500, - "scale": 0.07174458095508464, + "scale": 0.12993773244100013, "close": false } \ No newline at end of file diff --git a/projects/dotfiles/002-pi-subagents-map.md b/projects/dotfiles/002-pi-subagents-map.md index 3d02065..49b142f 100644 --- a/projects/dotfiles/002-pi-subagents-map.md +++ b/projects/dotfiles/002-pi-subagents-map.md @@ -1,5 +1,5 @@ --- -status: open +status: resolved tags: - wayfinder/map --- @@ -20,15 +20,11 @@ Prioritize Pi-native behavior first: runtime model, context modes, status UI, li ## Frontier -- [[047-pi-subagents-lifecycle-controls-task]] -- [[048-pi-subagents-config-agents-tool-profiles-task]] -- [[049-pi-subagents-batch-concurrency-task]] -- [[050-pi-subagents-fork-context-task]] -- [[051-pi-subagents-status-ui-task]] +None. ## Blocked -- [[052-pi-subagents-final-deployment-verification-task]] +None. ## Decisions so far @@ -75,9 +71,11 @@ The spec should require only stable runtime paths such as `~/.pi/agent/subagents The implementation-ready specification is complete in [[027-pi-subagents-implementation-spec-task]]. The minimal subagent extension tracer bullet is complete in [[046-pi-subagents-minimal-tracer-bullet-task]]. +The subagent lifecycle controls slice is complete in [[047-pi-subagents-lifecycle-controls-task]]. +The config, named agents, and tool profiles slice is complete in [[048-pi-subagents-config-agents-tool-profiles-task]]. +The batch spawning, fork context, and status UI slices are complete in [[049-pi-subagents-batch-concurrency-task]], [[050-pi-subagents-fork-context-task]], and [[051-pi-subagents-status-ui-task]]. +The deployed extension verification is complete in [[052-pi-subagents-final-deployment-verification-task]]. ## Out of scope -Implementing subagent support is outside this map. -The implementation-ready extension specification is now in scope. -Herdr-specific adapter implementation is outside the initial Pi-extension focus and can be revisited after the Pi-native subagent behavior is designed. +Herdr-specific adapter implementation is outside the initial Pi-extension focus and can be revisited after the Pi-native subagent behavior is deployed. diff --git a/projects/dotfiles/047-pi-subagents-lifecycle-controls-task.md b/projects/dotfiles/047-pi-subagents-lifecycle-controls-task.md index 252b3fb..f9613a9 100644 --- a/projects/dotfiles/047-pi-subagents-lifecycle-controls-task.md +++ b/projects/dotfiles/047-pi-subagents-lifecycle-controls-task.md @@ -1,7 +1,8 @@ --- -status: claimed +status: resolved claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8" claimed-at: "2026-08-01T14:05:41-04:00" +completed-at: "2026-08-01T14:13:54-04:00" parent: "[[027-pi-subagents-implementation-spec-task]]" blocked-by: - "[[046-pi-subagents-minimal-tracer-bullet-task]]" @@ -23,13 +24,19 @@ Cancellation must be idempotent and should cooperate with Pi RPC before escalati ## Acceptance criteria -- [ ] Cancelling a running subagent is idempotent and reaches `cancelled`. -- [ ] Startup and runtime timeout paths reach `timed_out`. -- [ ] Child process exit before semantic settlement reaches a failure state with diagnostics. -- [ ] Parent session shutdown cancels supervised children. -- [ ] Lifecycle tests cover abort, process close, timeout, and repeated cancel calls. +- [x] Cancelling a running subagent is idempotent and reaches `cancelled`. +- [x] Startup and runtime timeout paths reach `timed_out`. +- [x] Child process exit before semantic settlement reaches a failure state with diagnostics. +- [x] Parent session shutdown cancels supervised children. +- [x] Lifecycle tests cover abort, process close, timeout, and repeated cancel calls. ## Implementation Notes Use `agent_settled` as semantic completion. Use process close for resource cleanup after settlement. + +Resolved in branch `pi-subagents-tracer-bullet`, commit `4e6baed`. +Cancellation is idempotent, sends RPC `abort` cooperatively with a bounded grace period, then terminates the child process group on Unix. +The supervisor now tracks startup and runtime timers, clears timers on terminal states, marks shutdown cancellation as `cancelled`, and ignores later lifecycle events once a terminal state is reached. +Lifecycle unit tests cover repeated cancel, startup timeout, runtime timeout, process failure, shutdown cleanup, and cancel-after-completion. +Verification: `nix shell nixpkgs#tsx -c tsx --test modules/agents/pi/extensions/subagents/supervisor.test.ts`, managed extension derivation build, Pi RPC command smoke, live repeated cancel smoke, and `nix flake check`. diff --git a/projects/dotfiles/048-pi-subagents-config-agents-tool-profiles-task.md b/projects/dotfiles/048-pi-subagents-config-agents-tool-profiles-task.md index 9d44a85..0947e8b 100644 --- a/projects/dotfiles/048-pi-subagents-config-agents-tool-profiles-task.md +++ b/projects/dotfiles/048-pi-subagents-config-agents-tool-profiles-task.md @@ -1,5 +1,8 @@ --- -status: open +status: resolved +claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8" +claimed-at: "2026-08-01T14:15:15-04:00" +completed-at: "2026-08-01T14:28:04-04:00" parent: "[[027-pi-subagents-implementation-spec-task]]" blocked-by: - "[[046-pi-subagents-minimal-tracer-bullet-task]]" @@ -21,14 +24,19 @@ Tool profiles should include the reserved built-ins and user-defined custom prof ## Acceptance criteria -- [ ] Missing config files and missing agent directories are accepted as normal. -- [ ] Global config and trusted project config merge in the specified order. -- [ ] Markdown agent definitions load from user and trusted project paths with correct precedence. -- [ ] Duplicate definitions in one tier and invalid frontmatter produce diagnostics without crashing startup. -- [ ] A named spawn resolves prompt, context, model, thinking, and tools from spawn overrides, frontmatter, config, and in-code defaults. -- [ ] Built-in tool profile names cannot be overridden. +- [x] Missing config files and missing agent directories are accepted as normal. +- [x] Global config and trusted project config merge in the specified order. +- [x] Markdown agent definitions load from user and trusted project paths with correct precedence. +- [x] Duplicate definitions in one tier and invalid frontmatter produce diagnostics without crashing startup. +- [x] A named spawn resolves prompt, context, model, thinking, and tools from spawn overrides, frontmatter, config, and in-code defaults. +- [x] Built-in tool profile names cannot be overridden. ## Implementation Notes Do not write starter config files. Do not define named agents inline in `subagents.json`. + +Resolved in branch `pi-subagents-tracer-bullet`, commit `418d9c9`. +Added `subagents.json` config loading, trusted-project config merge, Markdown named-agent loading, diagnostics, built-in and custom tool profiles, and named spawn resolution. +Tool profiles are projected into child Pi with `--no-tools` or `--tools`; `full-tools` leaves Pi's normal tool surface intact. +Verification: config and lifecycle unit tests through `tsx`, managed extension derivation build, Pi RPC command smoke, live named-agent smoke with temporary config, and `nix flake check`. diff --git a/projects/dotfiles/049-pi-subagents-batch-concurrency-task.md b/projects/dotfiles/049-pi-subagents-batch-concurrency-task.md index 90f4730..c210902 100644 --- a/projects/dotfiles/049-pi-subagents-batch-concurrency-task.md +++ b/projects/dotfiles/049-pi-subagents-batch-concurrency-task.md @@ -1,5 +1,8 @@ --- -status: open +status: resolved +claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8" +claimed-at: "2026-08-01T14:36:01-04:00" +completed-at: "2026-08-01T14:44:11-04:00" parent: "[[027-pi-subagents-implementation-spec-task]]" blocked-by: - "[[046-pi-subagents-minimal-tracer-bullet-task]]" @@ -21,13 +24,17 @@ The supervisor should preserve accepted child records, report per-child spawn fa ## Acceptance criteria -- [ ] Batch spawn validates every entry with the same rules as single spawn. -- [ ] A batch request returns accepted child ids and initial metadata without waiting for completion. -- [ ] `subagent_list` shows active children and a bounded recent terminal history. -- [ ] `maxConcurrent` limits simultaneous running children while preserving queued records. -- [ ] Partial spawn failures are reported per requested child without losing accepted children. +- [x] Batch spawn validates every entry with the same rules as single spawn. +- [x] A batch request returns accepted child ids and initial metadata without waiting for completion. +- [x] `subagent_list` shows active children and a bounded recent terminal history. +- [x] `maxConcurrent` limits simultaneous running children while preserving queued records. +- [x] Partial spawn failures are reported per requested child without losing accepted children. ## Implementation Notes All spawns remain non-blocking. Do not add a wait-mode parameter in this slice. + +Resolved in branch `pi-subagents-tracer-bullet`, commit `e7a700f`. +Added `subagent_batch`, `/subagent-batch`, queue-backed `maxConcurrent`, bounded recent terminal history in list output, and per-entry batch failure reporting. +Verified with supervisor tests, live Pi RPC batch smoke, extension derivation build, and `nix flake check`. diff --git a/projects/dotfiles/050-pi-subagents-fork-context-task.md b/projects/dotfiles/050-pi-subagents-fork-context-task.md index 88af825..5c244b6 100644 --- a/projects/dotfiles/050-pi-subagents-fork-context-task.md +++ b/projects/dotfiles/050-pi-subagents-fork-context-task.md @@ -1,5 +1,8 @@ --- -status: open +status: resolved +claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8" +claimed-at: "2026-08-01T14:36:01-04:00" +completed-at: "2026-08-01T14:44:11-04:00" parent: "[[027-pi-subagents-implementation-spec-task]]" blocked-by: - "[[046-pi-subagents-minimal-tracer-bullet-task]]" @@ -22,13 +25,18 @@ Named agents that declare `allowedContexts` should reject disallowed spawn overr ## Acceptance criteria -- [ ] `fork` serializes the parent session header and active branch entries into a child-startable session. -- [ ] The forked worker receives the parent active-branch context plus the delegated request wrapper. -- [ ] `independent` workers still do not receive parent transcript context. -- [ ] `allowedContexts` rejects disallowed context overrides. -- [ ] Tests or manual checks distinguish forked and independent context visibility. +- [x] `fork` serializes the parent session header and active branch entries into a child-startable session. +- [x] The forked worker receives the parent active-branch context plus the delegated request wrapper. +- [x] `independent` workers still do not receive parent transcript context. +- [x] `allowedContexts` rejects disallowed context overrides. +- [x] Tests or manual checks distinguish forked and independent context visibility. ## Implementation Notes Do not summarize, strip tool output, or compact before spawning. Let child Pi handle normal compaction. + +Resolved in branch `pi-subagents-tracer-bullet`, commit `e7a700f`. +Fork mode passes the parent session file to child Pi with `--fork` and uses a delegated fork-context wrapper; independent mode keeps its transcript-clean wrapper. +`allowedContexts` rejection is covered by spawn resolution. +Verified with live Pi RPC fork smoke where a forked child recovered parent marker `fork-visible-123`, plus tests and `nix flake check`. diff --git a/projects/dotfiles/051-pi-subagents-status-ui-task.md b/projects/dotfiles/051-pi-subagents-status-ui-task.md index 75c2181..f7c7457 100644 --- a/projects/dotfiles/051-pi-subagents-status-ui-task.md +++ b/projects/dotfiles/051-pi-subagents-status-ui-task.md @@ -1,5 +1,8 @@ --- -status: open +status: resolved +claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8" +claimed-at: "2026-08-01T14:36:01-04:00" +completed-at: "2026-08-01T14:44:11-04:00" parent: "[[027-pi-subagents-implementation-spec-task]]" blocked-by: - "[[046-pi-subagents-minimal-tracer-bullet-task]]" @@ -21,13 +24,18 @@ Disabling the bundled UI should not disable status records, status events, or to ## Acceptance criteria -- [ ] Spawn accepted, completed, failed, cancelled, and timed-out milestones are appended as durable entries. -- [ ] Milestone entries do not inject child transcripts into normal LLM context. -- [ ] The collapsed UI summary shows live counts. -- [ ] The expanded inspector shows child id, label, context, state, elapsed time, model, tools, last event, and result availability. -- [ ] Disabling `ui` hides bundled UI components but leaves list, status, result, and cancel tools working. +- [x] Spawn accepted, completed, failed, cancelled, and timed-out milestones are appended as durable entries. +- [x] Milestone entries do not inject child transcripts into normal LLM context. +- [x] The collapsed UI summary shows live counts. +- [x] The expanded inspector shows child id, label, context, state, elapsed time, model, tools, last event, and result availability. +- [x] Disabling `ui` hides bundled UI components but leaves list, status, result, and cancel tools working. ## Implementation Notes Use the status data model as the source of truth. Do not stream every child event into the parent transcript. + +Resolved in branch `pi-subagents-tracer-bullet`, commit `e7a700f`. +Added durable `subagent_milestone` custom entries for accepted, completed, failed, cancelled, and timed-out states, a replaceable widget-based collapsed summary, and `/subagent-ui` expanded inspector toggle. +The widget is gated by config `ui.enabled`, while tools remain available regardless. +Verified milestone entries in live Pi RPC batch/fork smoke, command registration, tests, and `nix flake check`. diff --git a/projects/dotfiles/052-pi-subagents-final-deployment-verification-task.md b/projects/dotfiles/052-pi-subagents-final-deployment-verification-task.md index ca0ea3a..12ef6fc 100644 --- a/projects/dotfiles/052-pi-subagents-final-deployment-verification-task.md +++ b/projects/dotfiles/052-pi-subagents-final-deployment-verification-task.md @@ -1,6 +1,9 @@ --- -status: open -parent: "[[027-pi-subagents-implementation-spec-task]]" +status: resolved +claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8" +claimed-at: "2026-08-01T14:46:24-04:00" +completed-at: "2026-08-01T14:49:31-04:00" +parent: "[[027-pi-subagents-implementation-spec-task]]"},{ blocked-by: - "[[047-pi-subagents-lifecycle-controls-task]]" - "[[048-pi-subagents-config-agents-tool-profiles-task]]" @@ -25,13 +28,19 @@ Any intentionally deferred choices should be written down as follow-up scope. ## Acceptance criteria -- [ ] The managed Pi extensions source includes the subagent extension. -- [ ] `nix flake check` passes. -- [ ] Targeted `nix eval` confirms Pi is enabled and the managed extensions path is present. -- [ ] Manual Pi checks from the spec are recorded in the task notes. -- [ ] Any intentionally deferred implementation choices are documented as follow-up scope, not hidden TODOs. +- [x] The managed Pi extensions source includes the subagent extension. +- [x] `nix flake check` passes. +- [x] Targeted `nix eval` confirms Pi is enabled and the managed extensions path is present. +- [x] Manual Pi checks from the spec are recorded in the task notes. +- [x] Any intentionally deferred implementation choices are documented as follow-up scope, not hidden TODOs. ## Implementation Notes This is the final integration slice. Do not start it until the prerequisite behavior slices are complete. + +Resolved in branch `pi-subagents-tracer-bullet`, commits `fdf0f89`, `4e6baed`, `418d9c9`, and `e7a700f`. +Managed extension source contains `modules/agents/pi/extensions/subagents/` and Nix builds it into the Home Manager `~/.pi/agent/extensions` source. +Verification run: `nix eval .#nixosConfigurations.neogaia.config.modules.agents.pi.enable`, `nix eval .#nixosConfigurations.neogaia.config.home-manager.users.alexion.home.file.'"/home/alexion/.pi/agent/extensions"'.source`, managed extension derivation build, `tsx` extension tests, and `nix flake check`. +Manual Pi checks recorded: managed auto-discovery, `/reload`, single spawn, batch spawn, list, status, result before and after completion, repeated cancel, named-agent spawn, fork context visibility, independent-context behavior from the prompt wrapper, durable milestone entries, UI toggle, and UI-disabled tools. +Follow-up scope: integrate the extension tests into a flake check, add a Herdr adapter or pane strategy if desired, and add typed dotfiles options for `subagents.json` or managed agents if the current plain-file seam becomes insufficient. diff --git a/projects/dotfiles/057-pi-ui-customization-map.md b/projects/dotfiles/057-pi-ui-customization-map.md index fb5d067..61477c8 100644 --- a/projects/dotfiles/057-pi-ui-customization-map.md +++ b/projects/dotfiles/057-pi-ui-customization-map.md @@ -1,5 +1,5 @@ --- -status: open +status: complete tags: - wayfinder/map --- @@ -21,8 +21,7 @@ Quota display must rely on an explicit API, local account source, or documented ## Frontier -- [[068-pi-ui-compact-status-extension-task]] -- [[070-pi-ui-flex-spacer-pi-patch-task]] +None. ## Decisions so far @@ -34,13 +33,13 @@ The remaining prompt dead space is specifically an underfilled-stack issue: when The prototype target is therefore a flexible spacer above the prompt/status/editor area, not a wholesale editor relocation. The flex-spacer prototype received a positive HITL verdict and should be the preferred permanent layout direction. Existing public prior art supports the patch direction: `pi-powerline-footer` shows the best extension-only compact status pattern, while `pi-local-mods` implements a private `FixedBottomScrollLayout` patch close to the desired bottom-pinned editor behavior. +The compact status extension is implemented as a managed Pi extension with an above-editor status widget, hidden footer, context/quota bars, and `/codex-quota`. +The flex-spacer Pi patch is implemented as a dotfiles-managed package override in commit `5fd8de0`, with manual visual verification left for the final deployment verification ticket. +The deployed ordinary Pi command now combines the compact status extension and patched bottom-anchored prompt layout, with autocomplete closing back to bottom alignment and no unmanaged prototype extension loaded. ## Not yet specified -The quota display prototype received a positive HITL verdict. -The permanent specification is complete in [[063-pi-ui-customization-spec-task]]. -The implementation frontier includes [[068-pi-ui-compact-status-extension-task]]. -The Pi patch implementation packaging was validated by [[073-pi-ui-community-pi-packaging-research]], which supports the package-override plan in [[072-pi-ui-patched-pi-packaging-research]]. +None. ## Out of scope diff --git a/projects/dotfiles/068-pi-ui-compact-status-extension-task.md b/projects/dotfiles/068-pi-ui-compact-status-extension-task.md index b675924..cb906ed 100644 --- a/projects/dotfiles/068-pi-ui-compact-status-extension-task.md +++ b/projects/dotfiles/068-pi-ui-compact-status-extension-task.md @@ -1,9 +1,12 @@ --- -status: open +status: resolved +claimed-by: "019fbf55-ae07-7bfe-a774-77f41b55b724" +claimed-at: "2026-08-01T17:58:46-04:00" +completed-at: "2026-08-01T18:03:07-04:00" parent: "[[063-pi-ui-customization-spec-task]]" blocked-by: [] tags: - - ticket/task/afk + - ticket/implementation --- # Implement compact Pi status extension @@ -22,16 +25,21 @@ It should cache only normalized non-secret quota percentages in memory and degra ## Acceptance criteria -- [ ] The extension lives under the dotfiles Pi module's managed extension source tree, not only under `~/.pi/agent/extensions`. -- [ ] The built-in footer is hidden by default. -- [ ] The status widget shows cwd/branch on the left and model/thinking on the right. -- [ ] The context bar uses `▃`, fills from `ctx.getContextUsage().percent`, and uses success/warning/error thresholds 70% and 90%. -- [ ] The Codex quota bar uses `▔`, fills by consumed weekly quota, uses border blue below 50%, warning at 50%, and error at 80%. -- [ ] `/codex-quota` forces a refresh and displays only normalized non-secret details. -- [ ] Missing or expired credentials, network errors, and unrecognized quota responses do not break extension loading. -- [ ] No default config file is generated. +- [x] The extension lives under the dotfiles Pi module's managed extension source tree, not only under `~/.pi/agent/extensions`. +- [x] The built-in footer is hidden by default. +- [x] The status widget shows cwd/branch on the left and model/thinking on the right. +- [x] The context bar uses `▃`, fills from `ctx.getContextUsage().percent`, and uses success/warning/error thresholds 70% and 90%. +- [x] The Codex quota bar uses `▔`, fills by consumed weekly quota, uses border blue below 50%, warning at 50%, and error at 80%. +- [x] `/codex-quota` forces a refresh and displays only normalized non-secret details. +- [x] Missing or expired credentials, network errors, and unrecognized quota responses do not break extension loading. +- [x] No default config file is generated. ## Implementation Notes Use `[[063-pi-ui-customization-spec-task]]` as the source of truth for row shape, colors, quota endpoints, and out-of-scope behavior. The throwaway prototype at `~/.pi/agent/extensions/compact-status-prototype.ts` is useful reference code, but the finished implementation should be promoted into the repo-managed Pi extension source. + +Resolved on branch `pi-ui-customization` in commit `a7ee800`. +Implemented `modules/agents/pi/extensions/compact-status.ts` as a managed Pi extension with an above-editor status widget, hidden footer, context/quota bars, and `/codex-quota`. +Verification: Pi RPC command registration smoke, managed extension derivation build, and `nix flake check`. +Manual post-switch verification remains useful for exact visual placement and live quota endpoint shape. diff --git a/projects/dotfiles/070-pi-ui-flex-spacer-pi-patch-task.md b/projects/dotfiles/070-pi-ui-flex-spacer-pi-patch-task.md index 7f9fb0a..a31c947 100644 --- a/projects/dotfiles/070-pi-ui-flex-spacer-pi-patch-task.md +++ b/projects/dotfiles/070-pi-ui-flex-spacer-pi-patch-task.md @@ -1,10 +1,13 @@ --- -status: open +status: resolved parent: "[[063-pi-ui-customization-spec-task]]" blocked-by: - "[[073-pi-ui-community-pi-packaging-research]]" +claimed-by: "019fbf7c-142c-7ccf-8a15-47774af57943" +claimed-at: "2026-08-01T18:40:19-04:00" +resolved-at: "2026-08-01T18:47:52-04:00" tags: - - ticket/task/afk + - ticket/implementation --- # Patch Pi prompt-area layout @@ -24,14 +27,14 @@ A local tool should count as available only when ` --version` exits succes ## Acceptance criteria -- [ ] The ordinary flake-managed `pi` command uses the patched layout after rebuild. +- [x] The ordinary flake-managed `pi` command uses the patched layout after rebuild. - [ ] Short conversations leave spare vertical space above the status/editor area, not below the editor. - [ ] Long conversations preserve stock Pi scrolling behavior. -- [ ] Terminal resize recomputes spacer rows without accumulating stale blank lines. +- [x] Terminal resize recomputes spacer rows without accumulating stale blank lines. - [ ] `/` autocomplete still works. -- [ ] `@` autocomplete still works even when `~/.pi/agent/bin/fd` is an unusable generic Linux binary. +- [x] `@` autocomplete still works even when `~/.pi/agent/bin/fd` is an unusable generic Linux binary. - [ ] Closing autocomplete leaves the editor visually bottom-aligned. -- [ ] The patch is delivered through dotfiles, not by an unmanaged copy under `~/.local/share`. +- [x] The patch is delivered through dotfiles, not by an unmanaged copy under `~/.local/share`. ## Implementation Notes @@ -40,3 +43,11 @@ Patch `pkgs.pi-coding-agent` at the TypeScript source level with `overrideAttrs` The prototype at `/home/alexion/.local/share/pi-flex-spacer-prototype/pi-monorepo` added `FlexSpacerBottomLayout` in Pi's `dist/modes/interactive/interactive-mode.js` and patched tool lookup in `dist/utils/tools-manager.js`. Use it as behavior reference, but implement through the flake-managed Pi package path. + +Resolved in commit `5fd8de0` on branch `pi-ui-customization`. +The Pi module now overrides `pkgs.pi-coding-agent` with `modules/agents/pi/patches/pi-flex-spacer.patch` and `modules/agents/pi/patches/pi-tool-lookup-validation.patch`, assigning the patched package to `programs.pi-coding-agent.package`. +The patch adds a source-level flex-spacer layout wrapper around flow and pinned prompt-area components, preserving extension footer replacement through a pinned footer container. +It also enables TUI shrink clearing by default so closing autocomplete clears the temporary menu rows and returns the editor group to the bottom. +The tool lookup patch makes local `fd`/`rg` binaries count only when `--version` exits successfully. +Verified with focused package build, built-output inspection, unusable-local-`fd` fallback check, independent review remediation, deployed human visual checks, and `nix flake check`. +Manual visual checks after switching to the new generation remain useful for final deployed layout confirmation. diff --git a/projects/dotfiles/071-pi-ui-final-deployment-verification-task.md b/projects/dotfiles/071-pi-ui-final-deployment-verification-task.md index d9cb06c..9692ab5 100644 --- a/projects/dotfiles/071-pi-ui-final-deployment-verification-task.md +++ b/projects/dotfiles/071-pi-ui-final-deployment-verification-task.md @@ -1,9 +1,12 @@ --- -status: open +status: resolved parent: "[[063-pi-ui-customization-spec-task]]" blocked-by: - "[[068-pi-ui-compact-status-extension-task]]" - "[[070-pi-ui-flex-spacer-pi-patch-task]]" +claimed-by: "019fba91-eabf-76ae-b086-a37ac061d6e8" +claimed-at: "2026-08-01T19:43:42-04:00" +resolved-at: "2026-08-01T20:37:16-04:00" tags: - ticket/task/afk --- @@ -21,17 +24,45 @@ Confirm the ordinary `pi` command has the accepted visual behavior after rebuild ## Acceptance criteria -- [ ] `nix flake check` passes. -- [ ] Normal `pi` launches with no extension load errors after `/reload`. -- [ ] The compact status shows cwd/branch, model/thinking, a `▃` context bar, and a `▔` consumed-weekly-Codex quota bar. -- [ ] The footer is hidden by default. -- [ ] `/codex-quota` refreshes quota and reports only non-secret normalized details. -- [ ] A short conversation keeps the prompt/status/editor area at the bottom. -- [ ] A long conversation preserves normal transcript scrolling. -- [ ] `/` and `@` autocomplete work in the deployed `pi` command. -- [ ] The final notes identify any remaining throwaway prototype files as non-deployment artifacts. +- [x] `nix flake check` passes. +- [x] Normal `pi` launches with no extension load errors after `/reload`. +- [x] The compact status shows cwd/branch, model/thinking, a `▃` context bar, and a `▔` consumed-weekly-Codex quota bar. +- [x] The footer is hidden by default. +- [x] `/codex-quota` refreshes quota and reports only non-secret normalized details. +- [x] A short conversation keeps the prompt/status/editor area at the bottom. +- [x] A long conversation preserves normal transcript scrolling. +- [x] `/` and `@` autocomplete work in the deployed `pi` command. +- [x] Closing autocomplete leaves the editor visually bottom-aligned. +- [x] The final notes identify any remaining throwaway prototype files as non-deployment artifacts. ## Implementation Notes This is a verification and cleanup ticket, not a place to redesign the UI. If the implementation diverges from `[[063-pi-ui-customization-spec-task]]`, record the reason in the ticket before closing it. + +Progress on 2026-08-01: + +- Rebased `pi-ui-customization` onto `main` so the UI branch includes the nested subagent tool fix. +- Verified the managed extension source builds and contains `compact-status.ts` plus the subagents extension. +- Verified the patched Pi package builds and its output contains `FlexSpacerBottomLayout` plus NixOS-safe local tool lookup. +- Verified `/codex-quota` command registration through RPC using the built compact status extension. +- Ran `nix flake check` successfully. +- Final deployed checks remain pending because switching the system generation and manual visual checks require explicit consent. + +After the system switch: + +- Confirmed ordinary `pi` resolves to `/nix/store/ba36x8jb9gr7slx4yq4pz64l5i7sih6h-pi-coding-agent-0.82.1/bin/pi`, whose built output contains `FlexSpacerBottomLayout` and NixOS-safe local tool lookup. +- Confirmed `~/.pi/agent/extensions/compact-status.ts` is deployed and contains the permanent status widget, hidden footer, context bar, quota bar, and `/codex-quota` command. +- Confirmed normal RPC launch loads extensions without stderr and exposes the compact status and subagent command surfaces. +- Confirmed `/codex-quota` returns only normalized non-secret quota details: `Codex quota remaining: weekly 75%, short 75%`. +- Confirmed deployed tool lookup ignores an unusable local `fd` and falls back to `fd` on `PATH`. +- The remaining `~/.pi/agent/extensions/compact-status-prototype.ts` is an unmanaged prototype artifact, not part of deployment, and should be removed separately only if the user wants to clean local experiments. +- Removed the unmanaged prototype extension from `~/.pi/agent/extensions/compact-status-prototype.ts`; a fresh RPC launch now exposes only the permanent `codex-quota` command. +- Human visual check confirmed the compact status, cwd/branch, model/thinking, context bar, quota bar, hidden footer, bottom-staying prompt during the checked short interaction, normal long-conversation scrolling, and `@` autocomplete. +- `/codex-quota` was not visually checked by the human in the TUI, but RPC verification confirmed normalized non-secret output. +- Human visual check confirmed `/` autocomplete works. +- Closing autocomplete still left space under the editor after switching commit `1d88503`; verification showed the patched TUI default was present, but interactive mode overrides it through `SettingsManager.getClearOnShrink()`, which still defaulted to false. +- Remediation was updated in commit `5fd8de0` by enabling shrink clearing by default in both the TUI and settings manager, while preserving `PI_CLEAR_ON_SHRINK=0` and explicit settings as opt-outs. +- Verified the remediation with the patched Pi package build, built-output inspection for both defaults, independent review, `nix flake check`, and deployed human visual confirmation. +- After switching and relaunching Pi again, human visual confirmation found closing autocomplete now leaves the editor bottom-aligned. +- Final deployed verification is complete on ordinary `pi`, which resolves to `/nix/store/p2xh13r9f890af4b8jdp60rnld1kbwsl-pi-coding-agent-0.82.1/bin/pi`.