@vanillagreen/pi-qol 1.0.0

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 ADDED
@@ -0,0 +1,104 @@
1
+ # pi-qol
2
+
3
+ ![QOL extension settings panel](https://raw.githubusercontent.com/vanillagreencom/vstack/main/pi-extensions/pi-qol/assets/settings-panel.png)
4
+
5
+ ![Session search popup](https://raw.githubusercontent.com/vanillagreencom/vstack/main/pi-extensions/pi-qol/assets/session-search.png)
6
+ ![/context usage breakdown](https://raw.githubusercontent.com/vanillagreencom/vstack/main/pi-extensions/pi-qol/assets/context-usage.png)
7
+
8
+ Quality-of-life extension for Pi.
9
+
10
+ ## What it provides
11
+
12
+ - Compact statusline and `π` prompt editor: shows repo/project, branch/dirty state, model, thinking level, context window size, and remaining context percent while replacing Pi's default footer/editor chrome.
13
+ - Reliable multiline input: `Shift+Enter` / `Shift+Return` inserts a newline when the terminal reports it distinctly; `ctrl+j` is the default fallback newline key. `Alt+Enter` is reserved for Pi follow-up messages.
14
+ - Compact image placeholders: existing pasted image paths can collapse to `[Image #N]` aliases and are attached on submit.
15
+ - Session naming: `/rename [name]` sets or shows the friendly session name; automatic first-prompt naming is enabled by default.
16
+ - Context usage: `/context` prints an inline Claude-style context-window visualization with estimated Pi/model category breakdowns.
17
+ - Previous-session search: `/search` and optional `F3` overlay search prior sessions, preview snippets, resume, inject summarized context, or start a new session with summarized context.
18
+ - Handoff: `/handoff <goal>` drafts a focused prompt for a new session, preserving the latest compaction summary plus retained branch entries.
19
+ - Optional permission gate: when enabled, prompts before configured `bash` tool command fragments run; default match is `rm -Rf`.
20
+ - Notifications: terminal/tmux/native notifications for ready-for-input, questions, direction needed, task completion, and critical/blocked states.
21
+ - Optional custom compaction and idle compaction; disabled by default so Pi's compaction behavior is unchanged until enabled.
22
+ - Thinking timer next to collapsed `Thinking...` labels; enabled by default and falls back to Pi defaults if internals change.
23
+
24
+ ## Commands
25
+
26
+ | Command | Action |
27
+ | --- | --- |
28
+ | `/qol` | Open the extension-manager settings popup (falls back to inline status when the manager is not installed). |
29
+ | `/qol notify-test` | Send a test notification. |
30
+ | `/qol:rename` | Regenerate the current session name from the first user prompt. |
31
+ | `/qol:rename:full` | Regenerate the session name from the full conversation. |
32
+ | `/rename [name]` | Set or show the current session's friendly name. |
33
+ | `/context` | Show inline context-window usage, model/context limit, and estimated category breakdowns. |
34
+ | `/search [query]` | Open previous-session search, optionally prefilled with a query. |
35
+ | `/search:refresh` | Refresh the session search cache. |
36
+ | `/handoff <goal>` | Draft a focused handoff prompt for a new session. |
37
+
38
+ `/qol` and `/search` arguments support autocomplete.
39
+
40
+ ## Settings
41
+
42
+ Settings are exposed through `pi-extension-manager` under **QOL**.
43
+
44
+ ### Statusline and prompt
45
+
46
+ - `replaceFooter`: hide Pi's default footer while QOL's compact statusline is active; default on.
47
+ - `compactPrompt`: use the compact `π` prompt editor; default on.
48
+ - `showSessionNameTitle`: show the named session above the prompt, or in tmux's pane title/border; default on.
49
+ - `inputBottomPaddingLines`: blank lines below the compact prompt; default `0`.
50
+ - Git display knobs: `gitRefreshTimeoutMs`, `showDirtyMarker`.
51
+
52
+ ### Session auto-rename
53
+
54
+ - `sessionAutoRename.enabled`: automatically name unnamed sessions after the first prompt/agent turn; default on.
55
+ - `sessionAutoRename.model`: naming model (`provider/model`, `current`, or `cheapest`); default `openai-codex/gpt-5.4-mini`.
56
+ - `sessionAutoRename.fallbackModel`: fallback model; default `current`, or `none`/`off` to skip.
57
+ - `sessionAutoRename.fallback`: deterministic fallback when model naming fails: `words`, `truncate`, or `none`.
58
+ - Advanced knobs: `prefix`, `maxInputChars`, `maxNameChars`, `maxTokens`, `timeoutMs`, `prompt`, `notify`, and `debug`.
59
+
60
+ ### Session search
61
+
62
+ - `sessionSearch.enabled`: register `/search` and the overlay.
63
+ - `sessionSearch.shortcutKey`: shortcut to open search; default `f3`, set `none` to disable.
64
+ - `sessionSearch.sortMode`: `relevance` or `recent`.
65
+ - Result/layout knobs: `resultLimit`, `maxVisible`, `messageMaxVisible`, `previewSnippets`, `overlayWidth`, `cacheTtlSeconds`.
66
+ - Summary knobs: `summaryModel`, `summaryMaxTokens`, `summaryInputMaxChars`.
67
+
68
+ Search rows use Pi's `/resume`-style title: explicit session name, otherwise first user prompt, otherwise filename. The session cache is warmed on session start/first use and, by default, kept until `/search:refresh`; set `cacheTtlSeconds` above `0` if you want automatic time-based refreshes.
69
+
70
+ ### Context usage
71
+
72
+ - `enableContextCommand`: register `/context`; default on. The display uses Pi's `ctx.getContextUsage()` for total tokens/context window, then estimates the category split from the current system prompt, active tool definitions, session messages, compact summaries, context files, skills, and custom agents when Pi exposes that structured data.
73
+
74
+ ### Notifications
75
+
76
+ - Master and trigger toggles: `notification.enabled`, `onAgentReady`, `onDirectionNeeded`, `onQuestion`, `onTaskComplete`, `onCritical`.
77
+ - Channels: BEL, native terminal notifications, tmux client TTY writes, tmux messages, optional tmux window marking, and Pi UI notifications.
78
+ - `notification.oscProtocol`: `auto`, `osc777`, `osc99`, or `off`; `auto` uses Kitty OSC 99 when available, otherwise OSC 777.
79
+ - Tuning: `cooldownSeconds`, `title`, `readyMessage`, `bodyMaxChars`, `tmuxMessageDurationMs`, and tmux mark text/duration.
80
+
81
+ Use `/qol notify-test` to verify your terminal/tmux notification path.
82
+
83
+ ### Permission gate
84
+
85
+ - `permissionGate.enabled`: ask before matching `bash` tool calls; default off. When enabled, non-interactive matches are blocked.
86
+ - `permissionGate.commands`: comma-separated literal fragments or `/pattern/flags` regexes; default `rm -Rf`.
87
+ - `permissionGate.previewLines` / `permissionGate.previewChars`: cap the approval prompt preview; long commands show a compact head/tail preview while the full command still runs only if approved.
88
+
89
+ ### Compaction
90
+
91
+ - `compaction.customEnabled`: use QOL custom summaries for Pi compaction events; default off.
92
+ - `compaction.model`: summarizer model; default `google/gemini-2.5-flash`.
93
+ - `compaction.profile`: `concise`, `balanced`, or `exhaustive`.
94
+ - `compaction.remoteEnabled` / `compaction.remoteEndpoint`: call a remote summarizer with `{ systemPrompt, prompt, maxTokens }` and expect `{ summary }`.
95
+ - `compaction.branchSummaryEnabled`: use the same summarizer for requested `/tree` branch summaries.
96
+ - `compaction.idleEnabled` and related thresholds: extension-managed idle compaction trigger.
97
+
98
+ ### Thinking timer
99
+
100
+ - `thinkingTimer.enabled`: show elapsed time next to collapsed `Thinking...` labels when the model emits thinking blocks.
101
+
102
+ ## Notes
103
+
104
+ Pi owns native pending image attachment state and does not expose it to extensions. QOL can attach image paths it collapses itself; native Pi paste/drag attachments remain Pi-owned.
Binary file
Binary file
Binary file