@vanillagreen/pi-qol 2.3.4 → 2.4.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 CHANGED
@@ -51,14 +51,14 @@ Open `/extensions:settings`; settings appear under the **QOL** tab. Project sett
51
51
  - `enabled`: package toggle for everything below.
52
52
  - Statusline and editor: `statusline.enabled`, `statusline.showProvider`, `statusline.showAccount`, `replaceFooter`, `compactPrompt`, `showSessionNameTitle`, `showSessionNameWindow`, `inputBottomPaddingLines`, `gitRefreshTimeoutMs`, `showDirtyMarker`, `newlineOnShiftEnter`, `newlineFallbackKey`, `pendingQueue.asciiGreen`, `showImageChips`, `showAttachmentCountInStatus`.
53
53
  - Commands: `enableSessionNameCommand`, `enableHandoffCommand`, `enableScheduleCommand`, `enableContextCommand`, `handoffReviewPrompt`.
54
- - Session naming: `sessionAutoRename.*` (model, fallback model, deterministic fallback, prefix, prompt, limits, notify, debug).
54
+ - Session naming: `sessionAutoRename.*` (model, fallback model, deterministic fallback, prefix, prompt, limits, notify, debug). `sessionAutoRename.maxTokens` also counts the naming model's reasoning tokens: with `gpt-5.4-mini` naming 40 issue-sized first messages, 22 got a title at 96 and 29 at 128, the default. `sessionAutoRename.maxNameChars` stays 80 because no title in those runs was longer than 36 characters, so 70 and 80 give the same names.
55
55
  - Session search: `sessionSearch.*` (shortcut, result and row limits, snippets, overlay width, cache TTL, summary model and limits).
56
56
  - Rate limits: `rateLimitAutoResume.*`.
57
57
  - Permission gate: `permissionGate.enabled`, `permissionGate.commands` (comma-separated literal fragments or `/regex/flags`), `permissionGate.previewLines`, `permissionGate.previewChars`.
58
58
  - Notifications: `notification.*` (triggers, channels, tmux options, protocol, cooldown, title and body).
59
- - Compaction and budget guard: `compaction.*` (custom summaries, model, profile, remote endpoint, branch summaries, idle trigger, budget guard thresholds, chunk input cap, handoff artifact, transcript-risk budget).
59
+ - Compaction and budget guard: `compaction.*` (custom summaries, model, profile, remote endpoint, branch summaries, idle trigger, budget guard thresholds, chunk input cap, handoff artifact, transcript-risk budget). `compaction.maxTokens` stays 8192, the cap on the budget-guard, custom and branch summaries. The fleet value considered was 10192, but no comparison was possible: the fleet's settings, Pi's `compaction.enabled` false with `compaction.customEnabled` and `compaction.branchSummaryEnabled` off, run none of these summaries.
60
60
  - Pi's own `compaction.enabled` (the top-level `compaction` object in the same settings files, not a QOL key) turns off every automatic compaction: when it is `false`, neither the budget guard nor the idle trigger starts one, and `/qol` reports both as disabled by that key. A manual `/compact` still runs. While it is `true` or absent, both keep the defaults and thresholds above: the budget guard on at `compaction.budgetPercent` 85, the idle trigger off until `compaction.idleEnabled` is set.
61
- - Thinking: `thinkingLabel.text`, `thinkingTimer.enabled`, `workingIndicator.mode` (`static` if the animated indicator flashes).
61
+ - Thinking: `thinkingLabel.text`, `thinkingTimer.enabled`, `workingIndicator.mode`. `workingIndicator.mode` defaults to `static`, a dot with no animation timer; `animated` restores Pi's spinner. In a scripted 100-second streaming session on Pi 1.0.1, `animated` drew 2050 and 2080 frames with 4.9 s of CPU, and `static` 867 and 873 frames with 3.2 to 3.4 s. `thinkingTimer.enabled` stays on because turning it off in the same session changed neither the frames (2056 and 2066) nor the CPU (4.8 to 4.9 s).
62
62
 
63
63
  **Show model provider** displays a readable provider name before the model, such as `Copilot / GPT 6 Astra`. It is on by default; changes apply on the next render without reloading. Disabling the QOL statusline leaves Pi's standalone working indicator in place.
64
64
 
@@ -92,7 +92,7 @@ export const DEFAULT_AUTO_RENAME_MODEL = "openai-codex/gpt-5.4-mini";
92
92
  export const DEFAULT_AUTO_RENAME_FALLBACK_MODEL = "current";
93
93
  export const DEFAULT_AUTO_RENAME_INPUT_CHARS = 2000;
94
94
  export const DEFAULT_AUTO_RENAME_NAME_CHARS = 80;
95
- export const DEFAULT_AUTO_RENAME_MAX_TOKENS = 96;
95
+ export const DEFAULT_AUTO_RENAME_MAX_TOKENS = 128;
96
96
  export const DEFAULT_AUTO_RENAME_TIMEOUT_MS = 12_000;
97
97
  export const DEFAULT_INPUT_BOTTOM_PADDING_LINES = 0;
98
98
 
package/extensions/qol.ts CHANGED
@@ -226,12 +226,12 @@ export default function qol(pi: ExtensionAPI): void {
226
226
  thinkingTimerStore.enabled = !!ctx?.hasUI && settingBoolean("thinkingTimer.enabled", true, ctx?.cwd);
227
227
  };
228
228
 
229
- // Pi's Loader starts no animation timer for a single-frame indicator.
230
- // Keep static mode available for terminals where frequent redraws flash,
231
- // whether the indicator is embedded in QOL or in Pi's standalone row.
229
+ // Pi's Loader starts no animation timer for a single-frame indicator, so
230
+ // static mode, the default, draws no frames of its own whether the
231
+ // indicator is embedded in QOL or in Pi's standalone row.
232
232
  const applyWorkingIndicatorMode = (ctx: ExtensionContext): void => {
233
233
  if (!ctx.hasUI) return;
234
- const mode = settingString("workingIndicator.mode", "animated", ctx.cwd);
234
+ const mode = settingString("workingIndicator.mode", "static", ctx.cwd);
235
235
  if (mode === "static") {
236
236
  ctx.ui.setWorkingVisible(true);
237
237
  ctx.ui.setWorkingIndicator({ frames: [ctx.ui.theme.fg("accent", "●")] });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vanillagreen/pi-qol",
3
- "version": "2.3.4",
3
+ "version": "2.4.0",
4
4
  "description": "Pi quality-of-life extension: compact statusline/π prompt, reliable multiline input, styled pasted-image chips, session naming/search/context import, scheduled prompts, handoff, permission prompts, notifications, custom compaction, and a collapsed-thinking timer.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -310,9 +310,9 @@
310
310
  {
311
311
  "key": "sessionAutoRename.maxTokens",
312
312
  "label": "Auto-rename output tokens",
313
- "description": "Maximum output tokens requested from the naming model.",
313
+ "description": "Maximum output tokens requested from the naming model, reasoning tokens included.",
314
314
  "type": "number",
315
- "default": 96,
315
+ "default": 128,
316
316
  "category": "Session Auto-Rename",
317
317
  "apply": "live"
318
318
  },
@@ -966,13 +966,13 @@
966
966
  {
967
967
  "key": "workingIndicator.mode",
968
968
  "label": "Working indicator mode",
969
- "description": "Control Pi's built-in streaming spinner. The default animated spinner ticks every 80ms; in terminals where rendered content overflows the viewport (chat scrolled past the top, /tree open, etc.) each tick can trigger a pi-tui full-screen redraw and visible flash. Use 'static' for a single non-animating dot that keeps the working indicator visible without the 80ms timer. It appears before the project name when the QOL statusline is enabled, or in Pi's working row otherwise.",
969
+ "description": "Control Pi's built-in streaming spinner. The default 'static' shows a single non-animating dot that keeps the working indicator visible without a timer. 'animated' restores Pi's spinner, which ticks every 80ms; in terminals where rendered content overflows the viewport (chat scrolled past the top, /tree open, etc.) each tick can trigger a pi-tui full-screen redraw and visible flash. It appears before the project name when the QOL statusline is enabled, or in Pi's working row otherwise.",
970
970
  "type": "enum",
971
971
  "enumValues": [
972
972
  "animated",
973
973
  "static"
974
974
  ],
975
- "default": "animated",
975
+ "default": "static",
976
976
  "category": "Thinking",
977
977
  "apply": "reload",
978
978
  "requiresReload": true