@janvitos/pi-plan-build 0.1.32 → 0.1.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -19,7 +19,7 @@ A global [Pi coding agent](https://github.com/badlogic/pi-mono) extension that a
19
19
  - **Switch to Build and implement here**
20
20
  - **Start fresh and implement**
21
21
  - **Stay in Plan mode**
22
- - **Experimental:** In fullscreen TUI, valid checklist plans also offer **Implement step by step**: a passive, non-overlapping docked right panel keeps the plan visible while natural-language prompts gate steps and return completed work for review. This feature is still under active development.
22
+ - **Experimental:** In fullscreen TUI, valid checklist plans also offer **Implement step by step**: a passive, non-overlapping docked right panel keeps the plan visible while natural-language prompts gate steps and return completed work for review. The panel is visual-only and never captures keyboard input. This feature is still under active development.
23
23
  - Staying in Plan mode—or pressing Escape in the approval dialog—produces a durable acknowledgement and stops the run until the user responds.
24
24
  - Mode state survives reloads, resumes, and forks.
25
25
  - When Pi recreates the custom editor, the latest 100 user prompts from the active session branch are restored for Up/Down history navigation.
@@ -73,8 +73,9 @@ The agent may also enter Plan mode with `plan_enter` when planning or investigat
73
73
  When planning is complete, `plan_exit` displays the entire persisted plan and asks whether to:
74
74
 
75
75
  1. implement in the current session;
76
- 2. start a clean linked implementation session; or
77
- 3. stay in Plan mode.
76
+ 2. start a clean linked implementation session;
77
+ 3. stay in Plan mode; or
78
+ 4. **experimentally implement step by step** in fullscreen TUI when the plan contains a valid checklist.
78
79
 
79
80
  Selecting **Start fresh and implement** stops the current run and automatically dispatches `/build-fresh`. Pi 0.84.2 or newer is required for extension command dispatch from an injected user message. The command creates a linked child session, copies the approved plan to its canonical plan file, preserves the model and thinking level selected for the action, switches it to Build, and starts implementation without transferring the planning conversation.
80
81
 
@@ -88,9 +89,9 @@ Both actions leave Plan mode active, stop the agent, and wait for the next user
88
89
 
89
90
  > **Experimental feature:** Step-by-step execution is still being developed. Expect UI and workflow changes, and please report issues or unexpected behavior.
90
91
 
91
- When Pi uses `"tuiMode": "fullscreen"` and the saved plan contains top-level `- [ ]` items under `## Implementation Steps`, `plan_exit` also offers **Implement step by step**. This is opt-in per plan; it does not replace either one-shot implementation option.
92
+ When Pi uses `"tuiMode": "fullscreen"` and the saved plan contains top-level `- [ ]` items under `## Implementation Steps`, `plan_exit` offers the additional **Implement step by step** approval action. This is opt-in per plan; it does not replace either one-shot implementation option or **Stay in Plan mode**.
92
93
 
93
- The passive 72-column right panel reserves terminal columns, so the transcript and editor reflow instead of being covered. Long step instructions wrap across aligned continuation rows rather than being clipped. It never accepts focus or keyboard input and collapses below 132 terminal columns. Control the workflow entirely through natural-language prompts, for example:
94
+ The passive 64-column right panel reserves terminal columns, so the transcript and editor reflow instead of being covered. Long step instructions wrap across aligned continuation rows rather than being clipped. It never accepts focus or keyboard input and collapses below 132 terminal columns. The panel is a visual status aid only; all control happens through ordinary prompts. The agent interprets intent contextually, so these are examples rather than required commands:
94
95
 
95
96
  - “Implement the next step” or “Start step 2.”
96
97
  - “Step 1 is complete,” “I verified that one,” or “I already handled this.”
@@ -99,7 +100,7 @@ The passive 72-column right panel reserves terminal columns, so the transcript a
99
100
  - “Pause the plan,” “hide the plan,” or “show the plan.”
100
101
  - “Cancel this plan” at any point to end step-by-step execution immediately.
101
102
 
102
- The extension exposes these actions to the agent through `plan_step_control`; project mutations remain blocked until the user clearly approves a ready step or explicitly indicates that it is already complete. The agent interprets intent contextually rather than requiring exact phrases, while the extension validates every resulting state transition. Cancelling removes the panel and execution guards immediately, restores the full-width layout, and preserves the saved plan file for reference. The agent implements only that step, calls `plan_step_complete`, and waits for the user's next prompt. Accepting a result makes the next step ready but never starts it automatically. Progress, revisions, summaries, and panel visibility survive reload/resume. If such a session is opened in regular mode, progress is retained but cannot advance until fullscreen mode is restored; no overlay fallback is used.
103
+ The extension exposes these actions to the agent through `plan_step_control`; project mutations remain blocked until the user clearly approves a ready step or explicitly indicates that it is already complete. A ready step may be marked complete without implementation when the user says they already handled or verified it. A reviewed implementation may be accepted, while ambiguous feedback prompts clarification. The agent interprets intent contextually rather than requiring exact phrases, while the extension validates every resulting state transition. Step tool results identify the affected step, for example `Step 2: complete`, rather than presenting a plan-wide completion label. Cancelling removes the panel and execution guards immediately, restores the full-width layout, and preserves the saved plan file for reference. The agent implements only that step, calls `plan_step_complete`, and waits for the user's next prompt. Accepting a result makes the next step ready but never starts it automatically. Progress, revisions, summaries, and panel visibility survive reload/resume. If such a session is opened in regular mode, progress is retained but cannot advance until fullscreen mode is restored; no overlay fallback is used.
103
104
 
104
105
  Enable fullscreen in `~/.pi/agent/settings.json` and restart Pi:
105
106
 
package/index.ts CHANGED
@@ -68,7 +68,7 @@ const MODE_NOTICE_ENTRY_TYPE = "pi-plan-build-notice";
68
68
  const LEGACY_MODE_NOTICE_ENTRY_TYPE = "opencode-mode-notice";
69
69
  const STATUS_KEY = "pi-plan-build-mode";
70
70
  const PLAN_STEP_CHOICE = "Implement step by step";
71
- const PANEL_WIDTH = 72;
71
+ const PANEL_WIDTH = 64;
72
72
  const PANEL_MIN_TERMINAL_WIDTH = 132;
73
73
  const MANAGED_TOOLS = new Set(["question", "plan_enter", "plan_exit", "plan_step_control", "plan_step_complete"]);
74
74
  const MODE_ADDED_TOOLS = new Set([...MANAGED_TOOLS, "edit", "write"]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@janvitos/pi-plan-build",
3
- "version": "0.1.32",
3
+ "version": "0.1.33",
4
4
  "description": "Plan safely, approve explicitly, then implement here or in a clean session.",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/plan-panel.ts CHANGED
@@ -53,6 +53,7 @@ export class PlanPanel implements Component {
53
53
  lines.push(pad(`${prefix}${wrapped[0] ?? ""}`));
54
54
  const continuationIndent = " ".repeat(visibleWidth(prefix));
55
55
  for (const continuation of wrapped.slice(1)) lines.push(pad(`${continuationIndent}${continuation}`));
56
+ if (index < this.state.steps.length - 1) lines.push(pad());
56
57
  }
57
58
  const current = currentIndex >= 0 ? this.state.steps[currentIndex] : undefined;
58
59
  if (current) {