@vanillagreen/pi-qol 1.4.1 → 1.4.3
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
|
@@ -10,15 +10,15 @@ Quality-of-life extension for Pi: compact statusline, multiline input, session n
|
|
|
10
10
|
## Highlights
|
|
11
11
|
|
|
12
12
|
- Compact statusline with repo, branch, model, thinking level, and context percent.
|
|
13
|
-
-
|
|
13
|
+
- Newline-insert in the editor (multi-line drafts without auto-submit), with a fallback binding for terminals that can't distinguish the primary key.
|
|
14
14
|
- Sessions auto-name from your first prompt. `/rename` overrides anytime.
|
|
15
|
-
- `/search` browses previous sessions with snippet previews
|
|
15
|
+
- `/search` browses previous sessions with snippet previews; the configured shortcut opens it instantly.
|
|
16
16
|
- `/context` shows a Claude-style context-window breakdown.
|
|
17
17
|
- `/handoff <goal>` drafts a focused prompt for a new session.
|
|
18
18
|
- Permission gate prompts before risky `bash` commands. Default match: `rm -Rf`.
|
|
19
19
|
- Notifications for ready, questions, blocked states, and task completion.
|
|
20
20
|
- Thinking timer next to collapsed `Thinking...` labels.
|
|
21
|
-
- Caveman badge and
|
|
21
|
+
- Caveman badge and a mode-cycling shortcut when `pi-caveman` is loaded.
|
|
22
22
|
- Subagent-name badge in `pi-agents-tmux` child panes.
|
|
23
23
|
|
|
24
24
|
## Install
|
|
@@ -56,7 +56,7 @@ Arguments support autocomplete.
|
|
|
56
56
|
|
|
57
57
|
## Settings
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
Open `/extensions:settings`; settings appear under the **QOL** tab. Names below match the labels shown there.
|
|
60
60
|
|
|
61
61
|
### Statusline
|
|
62
62
|
|
|
@@ -74,8 +74,8 @@ All settings live in the extension manager under **QOL**. Names below match the
|
|
|
74
74
|
|
|
75
75
|
| Setting | What it does |
|
|
76
76
|
| --- | --- |
|
|
77
|
-
|
|
|
78
|
-
| Fallback newline
|
|
77
|
+
| Newline-insert binding | Insert a newline instead of submitting. |
|
|
78
|
+
| Fallback newline binding | Alternate binding for terminals that can't send the primary one. |
|
|
79
79
|
| Style pending queue preview | Highlight Pi's pending-queue preview with a green left bar. |
|
|
80
80
|
| Style image chips | Render `[Image #N]` placeholders as distinct chips. |
|
|
81
81
|
| Show attachment count | Show a status badge when the draft has image placeholders. |
|
|
@@ -112,7 +112,7 @@ Advanced: input cap, title length, output tokens, timeout, custom prompt templat
|
|
|
112
112
|
| Setting | What it does |
|
|
113
113
|
| --- | --- |
|
|
114
114
|
| Enable session search | Register `/search` and the overlay. |
|
|
115
|
-
| Session search shortcut |
|
|
115
|
+
| Session search shortcut | Configurable; set to `none` to disable. |
|
|
116
116
|
| Result limit | Max matching prompts returned. |
|
|
117
117
|
| Visible session rows | Rows shown before scrolling. |
|
|
118
118
|
| Preview snippets | Matching snippets shown on the preview screen. |
|
|
@@ -146,7 +146,7 @@ export function renderSessionSearchContextMessage(message: any, options: any, th
|
|
|
146
146
|
const title = raw.match(/^## Session Search Context:\s*(.+)$/m)?.[1]?.trim() || "session";
|
|
147
147
|
const date = raw.match(/\*\*Date:\*\*\s*([^|\n]+)/)?.[1]?.trim() || "";
|
|
148
148
|
const header = `${theme.fg("customMessageLabel", theme.bold("Session context: "))}${theme.fg("accent", title)}${date ? theme.fg("muted", ` (${date})`) : ""}`;
|
|
149
|
-
if (!options?.expanded) return new Text(`${header}${theme.fg("dim", " ctrl+o expand")}`, 0, 0);
|
|
149
|
+
if (!options?.expanded) return new Text(`${header}${theme.fg("dim", " ctrl+o to expand")}`, 0, 0);
|
|
150
150
|
const body = raw.slice(raw.indexOf("\n") + 1).trim();
|
|
151
151
|
return new Text(body ? `${header}\n\n${body}` : header, 0, 0);
|
|
152
152
|
}
|
|
@@ -34,7 +34,7 @@ function queueSessionSearchCommandAction(ctx: ExtensionContext, action: QolSessi
|
|
|
34
34
|
const id = nextSessionSearchPendingActionId();
|
|
35
35
|
qolSessionSearchPendingActions.set(id, action);
|
|
36
36
|
ctx.ui.setEditorText(`/search:resume-pending ${id}`);
|
|
37
|
-
ctx.ui.notify(`${sessionDisplayName(action.result!)} — press
|
|
37
|
+
ctx.ui.notify(`${sessionDisplayName(action.result!)} — press enter to ${action.type === "fork" ? "fork" : "resume"}`, "info");
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
export async function runSessionSearchResumeOrFork(pi: ExtensionAPI, ctx: ExtensionContext, action: QolSessionPaletteAction): Promise<boolean> {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vanillagreen/pi-qol",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.3",
|
|
4
4
|
"description": "Pi quality-of-life extension: compact statusline/π prompt, reliable multiline input, styled pasted-image chips, session naming/search/context import, handoff, permission prompts, notifications, custom compaction, and a collapsed-thinking timer.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -136,8 +136,8 @@
|
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
138
|
"key": "newlineOnShiftEnter",
|
|
139
|
-
"label": "
|
|
140
|
-
"description": "Intercept distinguishable
|
|
139
|
+
"label": "shift+enter inserts newline",
|
|
140
|
+
"description": "Intercept distinguishable shift+enter/shift+return in the prompt editor and insert a newline instead of submitting.",
|
|
141
141
|
"type": "boolean",
|
|
142
142
|
"default": true,
|
|
143
143
|
"category": "Input",
|
|
@@ -147,7 +147,7 @@
|
|
|
147
147
|
{
|
|
148
148
|
"key": "newlineFallbackKey",
|
|
149
149
|
"label": "Fallback newline key",
|
|
150
|
-
"description": "Alternate newline key for terminals that cannot distinguish
|
|
150
|
+
"description": "Alternate newline key for terminals that cannot distinguish shift+enter. alt+enter is reserved for Pi follow-up messages.",
|
|
151
151
|
"type": "enum",
|
|
152
152
|
"enumValues": [
|
|
153
153
|
"ctrl+j",
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
{
|
|
162
162
|
"key": "pendingQueue.asciiGreen",
|
|
163
163
|
"label": "Style pending queue preview",
|
|
164
|
-
"description": "Render Pi's built-in steering/follow-up queue preview in ANSI green with a heavy left queue bar, while keeping the
|
|
164
|
+
"description": "Render Pi's built-in steering/follow-up queue preview in ANSI green with a heavy left queue bar, while keeping the alt+up restore hint in the theme hint color with a two-space indent.",
|
|
165
165
|
"type": "boolean",
|
|
166
166
|
"default": true,
|
|
167
167
|
"category": "Input",
|
|
@@ -350,7 +350,7 @@
|
|
|
350
350
|
{
|
|
351
351
|
"key": "sessionSearch.shortcutKey",
|
|
352
352
|
"label": "Session search shortcut",
|
|
353
|
-
"description": "Keyboard shortcut to open the session search overlay. Default f2 avoids Pi's built-in
|
|
353
|
+
"description": "Keyboard shortcut to open the session search overlay. Default f2 avoids Pi's built-in ctrl+f and alt+f editor bindings. Set to none to disable.",
|
|
354
354
|
"type": "string",
|
|
355
355
|
"default": "f2",
|
|
356
356
|
"category": "Session Search",
|
|
@@ -842,5 +842,22 @@
|
|
|
842
842
|
"author": "vanillagreen",
|
|
843
843
|
"publishConfig": {
|
|
844
844
|
"access": "public"
|
|
845
|
+
},
|
|
846
|
+
"engines": {
|
|
847
|
+
"node": ">=22.19.0"
|
|
848
|
+
},
|
|
849
|
+
"peerDependenciesMeta": {
|
|
850
|
+
"@earendil-works/pi-agent-core": {
|
|
851
|
+
"optional": true
|
|
852
|
+
},
|
|
853
|
+
"@earendil-works/pi-ai": {
|
|
854
|
+
"optional": true
|
|
855
|
+
},
|
|
856
|
+
"@earendil-works/pi-coding-agent": {
|
|
857
|
+
"optional": true
|
|
858
|
+
},
|
|
859
|
+
"@earendil-works/pi-tui": {
|
|
860
|
+
"optional": true
|
|
861
|
+
}
|
|
845
862
|
}
|
|
846
863
|
}
|