killeros 2.0.1 → 2.0.2

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/CHANGELOG.md CHANGED
@@ -4,6 +4,13 @@ All notable changes to KillerOS are documented here.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [2.0.2] - 2026-08-08
8
+
9
+ ### Changed
10
+
11
+ - Replaced the static activity Spark with a 12-frame orange glyph loop at 120 ms per frame.
12
+ - Styled activity verbs orange and added the gray `(esc to interrupt · thinking)` status with bold `esc`.
13
+
7
14
  ## [2.0.1] - 2026-08-08
8
15
 
9
16
  ### Added
package/README.md CHANGED
@@ -31,7 +31,7 @@ pi install git:github.com/KyrosHendrix/pi-KillerOS
31
31
  Pin an install to a release:
32
32
 
33
33
  ```bash
34
- pi install git:github.com/KyrosHendrix/pi-KillerOS@v2.0.1
34
+ pi install git:github.com/KyrosHendrix/pi-KillerOS@v2.0.2
35
35
  ```
36
36
 
37
37
  Add `-l` to either command for a project-only install. Restart Pi after installing.
@@ -40,7 +40,7 @@ Add `-l` to either command for a project-only install. Restart Pi after installi
40
40
 
41
41
  - 52-column Compact startup card with inline version, polished model/provider identity, adjacent `/model`, directory, conditional Git branch, and a shuffled session-stable tip
42
42
  - Cohesive dark theme with coral accents and neutral tool-call containers across pending, success, and error states
43
- - Static coral Spark activity indicator with a shuffled Claude-adjacent verb bank that changes every 2.5 seconds during active work, plus a quiet hidden-thinking label
43
+ - Animated orange 12-frame activity glyph loop at 120 ms per frame, with orange shuffled Claude-adjacent verbs changing every 2.5 seconds, a gray `(esc to interrupt · thinking)` status with bold `esc`, and a quiet hidden-thinking label
44
44
  - Framed multiline editor with Shift+Enter support and live command-blue highlighting for recognized slash command prefixes
45
45
  - Responsive footer with polished model/provider identity, plain-language context, and active goal state remaining; reasoning, Git branch, elapsed time, cost, and path cut down by available width
46
46
  - Automatic model-backed context compaction at 40% remaining; active goals continue after the saved summary
@@ -369,8 +369,17 @@ class PiCodeEditor extends CustomEditor {
369
369
  }
370
370
  }
371
371
 
372
+ const ACTIVITY_FRAMES = [
373
+ "·", "✢", "✱", "✶", "✻", "✽",
374
+ "✽", "✻", "✶", "✱", "✢", "·",
375
+ ] as const;
376
+ const ACTIVITY_FRAME_INTERVAL_MS = 120;
372
377
  const ACTIVITY_WORDS = ["Brewing", "Pondering", "Tinkering", "Wrangling", "Noodling", "Cooking"] as const;
373
378
 
379
+ function formatActivityMessage(word: string, theme: Theme): string {
380
+ return `${theme.fg("accent", `${word}…`)} ${theme.fg("dim", `(${theme.bold("esc")} to interrupt · thinking)`)}`;
381
+ }
382
+
374
383
  export function registerShellUi(pi: ExtensionAPI): void {
375
384
  let activeHeader: PiStartupHeader | undefined;
376
385
  let activityDeck: string[] = [];
@@ -413,7 +422,10 @@ export function registerShellUi(pi: ExtensionAPI): void {
413
422
  return activeHeader;
414
423
  });
415
424
  clearActivityTimer();
416
- ctx.ui.setWorkingIndicator({ frames: [ctx.ui.theme.fg("accent", "✻")] });
425
+ ctx.ui.setWorkingIndicator({
426
+ frames: ACTIVITY_FRAMES.map((frame) => ctx.ui.theme.fg("accent", frame)),
427
+ intervalMs: ACTIVITY_FRAME_INTERVAL_MS,
428
+ });
417
429
  ctx.ui.setHiddenThinkingLabel("└ Thinking…");
418
430
  ctx.ui.setEditorComponent((tui, editorTheme, keybindings) =>
419
431
  new PiCodeEditor(tui, editorTheme, keybindings, ctx.ui.theme, () => availableCommandNames(pi)));
@@ -425,7 +437,7 @@ export function registerShellUi(pi: ExtensionAPI): void {
425
437
  pi.on("agent_start", (_event, ctx) => {
426
438
  if (ctx.mode !== "tui") return;
427
439
  clearActivityTimer();
428
- const updateWorkingWord = (): void => ctx.ui.setWorkingMessage(`${nextActivityWord()}…`);
440
+ const updateWorkingWord = (): void => ctx.ui.setWorkingMessage(formatActivityMessage(nextActivityWord(), ctx.ui.theme));
429
441
  updateWorkingWord();
430
442
  activityTimer = setInterval(updateWorkingWord, 2_500);
431
443
  activityTimer.unref?.();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "killeros",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "description": "A production-hardened TUI and workflow extension for the Pi coding agent.",
5
5
  "type": "module",
6
6
  "keywords": [