You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- feat: add direct path input and keyboard/button navigation to the working-directory picker
- feat: support rooted Windows drive paths for terminal creation and cwd changes
- test: cover picker wiring, cache revisions, responsive styling, and Windows path resolution
- docs: document direct path entry and Windows drive syntax
Copy file name to clipboardExpand all lines: pi-package-webui/DEVELOPMENT.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -257,7 +257,7 @@ Compact mode keeps live output lightweight, coalesces sustained live DOM/scroll
257
257
- A side-panel **Git** section mirrors the repositories represented by every open terminal tab/group. Repository cards are shown directly—without session-name parent disclosures—and always use the Git-root or cwd basename as their title. One repository can be expanded at a time. First/stale expansion refreshes local status after a five-minute cache window, while live filesystem updates use a debounced server watcher and SSE invalidation to refresh visible repositories without periodic Git polling or an automatic network `git fetch`. Its compact Changes tree groups conflicted, staged, modified, and untracked paths with additions/deletions; right-click a repository, folder, or file (or press Shift+F10/the Context Menu key) for View Diff, refresh, stage/unstage, and confirmed discard/delete actions. History lists the latest 30 commits and opens bounded read-only commit diffs.
258
258
- Persistent context-window meter with manual compact and auto-compaction controls near the composer; side-panel thinking changes made while a tab is busy are queued for the next prompt.
259
259
- Side-panel theme picker backed by optional `@firstpick/pi-themes-bundle` themes plus Pi-native project/global custom themes. **Customize…** provides all 51 required color tokens, variables, optional `thinkingMax`/export colors, synchronized advanced JSON, valid-only live preview, scope badges, and explicit target-bound overwrite confirmation.
260
-
- Per-tab cwd changes, a clickable footer cwd picker, directory creation/search in the picker, saved path fast picks, server-persisted fast picks, and restart-safe restoration of open tabs. When the optional stats and git-footer companions are loaded, clicking the footer **PI** token metric dispatches `/calibrate` in the background and refreshes the metric after the isolated calibration sample is recorded.
260
+
- Per-tab cwd changes, a clickable footer cwd picker, direct path entry including rooted Windows drive paths, directory creation/search in the picker, saved path fast picks, server-persisted fast picks, and restart-safe restoration of open tabs. When the optional stats and git-footer companions are loaded, clicking the footer **PI** token metric dispatches `/calibrate` in the background and refreshes the metric after the isolated calibration sample is recorded.
261
261
- Detected app runner dropdown for the active tab cwd, including Cargo, Bun, npm/npx/pnpm, Python/uv, Go/Golang, Zig, C/C++, Docker Compose, root/dev/scripts shell scripts, and other common project runners with live output pinned at the top of the terminal. Stream chunks pass through a terminal-line reducer: LF/CRLF commit scrollback, bare CR replaces the current live line, backspace edits that line, and ANSI sequences remain intact for the browser's safe SGR renderer. This is line-oriented terminal behavior rather than a full VT100 cursor grid. Running app runners expose line-oriented stdin in the widget for interactive scripts. Projects can add browseable custom runners in `.pi-webui-runners.json` with a command (default `./`) plus a relative path to the file to run. The same dialog also configures project discovery paths: project-relative directories that are scanned one level deep (no subdirectories) for `.sh`, `.bash`, `.zsh`, `.fish`, and `.py` files plus extensionless files with a bash/sh, zsh, fish, or Python shebang. Python candidates use `uv run` and/or the available `python3`/`python` interpreter. Discovered scripts extend the built-in root, `dev/`, `scripts/`, and `dev/scripts/` detection and run from the resolved project root.
262
262
- Extension-launched Guided Git workflow for existing repos and new repos with persistent model/reasoning preferences, review-first staging, an optional manual staged repository-review gate from `aur-review`, generated or typed commit messages, explicit push/PR confirmation, and optional PR worktrees. `/git-guided-workflow` emits a transient tab-scoped activation request that the browser validates and consumes before generic status rendering; a named prompt-only direct-launch fallback remains temporarily available only when that command is absent. The HTTP server authoritatively rejects the exact command and fallback admission while the tab is streaming, compacting, has pending messages, or already has a pending Guided Git launch, bypassing generic compaction queueing. A browser-generated UUID is stored in one short-lived server record and added only to the trusted live event envelope; the canonical four-field extension payload remains unchanged, and only the browser holding the matching one-shot permit can consume the event. When the review extension is loaded/enabled, both `git add .` and accepting the current staged set send `/aur-review start --scope staged --origin guided-git` to the same tab. Only its matching approval advances to message generation. The browser and server recheck the approved domain-separated staged-content hash before message generation, commit, and PR-worktree transfer; drift, missing hashes, or hash-check errors return to Stage and require a new review. A decline returns to staging and rejects an unchanged declined staged hash until corrected content is restaged. Guided Git never stages, commits, or pushes remediation automatically. The extension remains the decision authority; direct API callers are not granted an approval by this browser workflow.
263
263
- Browser support for Pi extension UI prompts, widgets, status updates, `/btw` side-question output widgets with optional context transfer/live steering, browser notifications when a tab needs an extension UI response, and an optional side-panel toggle for agent-done notifications.
Copy file name to clipboardExpand all lines: pi-package-webui/README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -59,7 +59,7 @@ Check the server at any time with:
59
59
### Your first session
60
60
61
61
1. Start the Web UI with `/webui-start`.
62
-
2. Confirm the working directory in the footer or choose another project.
62
+
2. Confirm the working directory in the footer or choose another project. You can paste or type a full path in the picker; on Windows, use a rooted drive path such as `C:/` or `D:/project`.
63
63
3. Select a model and thinking effort.
64
64
4. Enter a prompt, attach context if needed, and follow the live response. The prompt grows to a bounded height, then scrolls vertically so every line stays reachable.
65
65
5. Open the Control Deck for sessions, Git, app runners, themes, updates, and optional features. Under **Controls → Interface**, choose **Top bar** or **Sidebar** for terminal tabs, then choose **Right**, **Left**, or **Both** for the Control Deck. In **Sidebar**, **Both** is unavailable; choosing **Right** or **Left** swaps the Control Deck and terminal/tabs rails across the chat.
Copy file name to clipboardExpand all lines: pi-package-webui/TECHNICAL.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -89,6 +89,8 @@ A short interruption is possible during restart; zero downtime is not promised.
89
89
90
90
## Session continuity
91
91
92
+
The working-directory picker accepts a direct path for first, new, and split terminals and for cwd changes. On Windows, enter a rooted drive path such as `C:/` or `D:/project` to switch drives. Web UI loads and validates that directory before it can be selected; an invalid or unavailable path remains in the field so you can correct it.
93
+
92
94
When tabs span multiple working directories, a directory with one tab stays a normal, non-dropdown tab. Hover over it—or focus controls within it—to reveal **+ Tab** directly below, matching the placement used by grouped terminal menus without repeating the current tab. Directories with multiple tabs continue to use the grouped terminal menu.
93
95
94
96
Restarting only the Web UI normally keeps managed Pi tabs, working folders, saved sessions, and active work connected to the replacement server.
assert.match(technical,/##Normalandcompactoutput[\s\S]*?select\*\*Compact\*\*[\s\S]*?`compact-v1`/,"technical reference should document Compact mode with the stable identifier");
56
56
assert.match(development,/###CodexsubscriptionFastmode[\s\S]*?service_tier:"priority"[\s\S]*?1\.5×faster[\s\S]*?2×Standardcredits[\s\S]*?2\.5×/,"development guide should document Fast-mode integration and cost semantics");
57
57
// Intent preserved: browser-asset changes must advance the coherent cache tuple.
58
-
assert.match(serviceWorker,/pi-webui-pwa-v139/,"PWA cache identity should be bumped for changed browser assets");
59
-
assert.match(html,/data-app-src="\/app\.js\?v=172"/,"browser module URL should be cache-busted for Fast-mode wiring");
58
+
assert.match(serviceWorker,/pi-webui-pwa-v140/,"PWA cache identity should be bumped for changed browser assets");
59
+
assert.match(html,/data-app-src="\/app\.js\?v=173"/,"browser module URL should be cache-busted for Fast-mode wiring");
assert.match(app,/event\.key===COMPOSER_ACTION_ORDER_STORAGE_KEY\)restoreComposerActionOrder\(\)[\s\S]*event\.key===COMPOSER_ACTION_LAYOUT_STORAGE_KEY\)restoreComposerActionSlotLayout\(\)/,"other tabs should apply persisted composer order and sparse-layout changes");
58
58
assert.match(app,/initializeComposerActionOrdering\(\);[\s\S]*restoreSidePanelSectionOrder\(\);/,"composer ordering should initialize during guarded app startup");
59
59
60
-
assert.match(html,/styles\.css\?v=142/,"changed composer styles should advance the stylesheet revision");
61
-
assert.match(html,/app\.js\?v=172/,"changed composer behavior should advance the app revision");
62
-
assert.match(serviceWorker,/constCACHE_NAME="pi-webui-pwa-v139"/,"changed browser assets should advance the PWA cache identity");
60
+
assert.match(html,/styles\.css\?v=143/,"changed composer styles should advance the stylesheet revision");
61
+
assert.match(html,/app\.js\?v=173/,"changed composer behavior should advance the app revision");
62
+
assert.match(serviceWorker,/constCACHE_NAME="pi-webui-pwa-v140"/,"changed browser assets should advance the PWA cache identity");
0 commit comments