pi-powerline-footer 0.2.14 → 0.2.16

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
@@ -2,6 +2,20 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.2.16] - 2026-01-28
6
+
7
+ ### Fixed
8
+ - **Model and path colors restored** — Fixed color regression from v0.2.13 theme refactor:
9
+ - Model segment now uses original pink (`#d787af`) instead of white/gray (`text`)
10
+ - Path segment now uses original cyan (`#00afaf`) instead of muted gray
11
+
12
+ ## [0.2.15] - 2026-01-27
13
+
14
+ ### Added
15
+ - **Status notifications above editor** — Extension status messages that look like notifications (e.g., `[pi-annotate] Received: CANCEL`) now appear on a separate line above the editor input
16
+ - Notification-style statuses (starting with `[`) appear above editor
17
+ - Compact statuses (e.g., `MCP: 6 servers`) remain in the powerline bar
18
+
5
19
  ## [0.2.14] - 2026-01-26
6
20
 
7
21
  ### Fixed
package/README.md CHANGED
@@ -23,10 +23,10 @@ A powerline-style status bar and welcome header extension for [pi](https://githu
23
23
  ## Installation
24
24
 
25
25
  ```bash
26
- npx pi-powerline-footer
26
+ pi install npm:pi-powerline-footer
27
27
  ```
28
28
 
29
- This copies the extension to `~/.pi/agent/extensions/powerline-footer/`. Restart pi to activate.
29
+ Restart pi to activate.
30
30
 
31
31
  ## Usage
32
32
 
package/index.ts CHANGED
@@ -301,6 +301,7 @@ export default function powerlineFooter(pi: ExtensionAPI) {
301
301
  ctx.ui.setFooter(undefined);
302
302
  ctx.ui.setHeader(undefined);
303
303
  ctx.ui.setWidget("powerline-secondary", undefined);
304
+ ctx.ui.setWidget("powerline-status", undefined);
304
305
  footerDataRef = null;
305
306
  tuiRef = null;
306
307
  // Clear layout cache
@@ -578,7 +579,7 @@ export default function powerlineFooter(pi: ExtensionAPI) {
578
579
 
579
580
  // Set up secondary row as a widget below editor (above sub bar)
580
581
  // Shows overflow segments when top bar is too narrow
581
- ctx.ui.setWidget("powerline-secondary", (tui: any, theme: Theme) => {
582
+ ctx.ui.setWidget("powerline-secondary", (_tui: any, theme: Theme) => {
582
583
  return {
583
584
  dispose() {},
584
585
  invalidate() {},
@@ -601,6 +602,37 @@ export default function powerlineFooter(pi: ExtensionAPI) {
601
602
  },
602
603
  };
603
604
  }, { placement: "belowEditor" });
605
+
606
+ // Set up status notifications widget above editor
607
+ // Shows extension status messages that look like notifications (e.g., "[pi-annotate] Received: CANCEL")
608
+ // Compact statuses (e.g., "MCP: 6 servers") stay in the powerline bar via extension_statuses segment
609
+ ctx.ui.setWidget("powerline-status", () => {
610
+ return {
611
+ dispose() {},
612
+ invalidate() {},
613
+ render(width: number): string[] {
614
+ if (!currentCtx || !footerDataRef) return [];
615
+
616
+ const statuses = footerDataRef.getExtensionStatuses();
617
+ if (!statuses || statuses.size === 0) return [];
618
+
619
+ // Collect notification-style statuses (those starting with "[extensionName]")
620
+ const notifications: string[] = [];
621
+ for (const value of statuses.values()) {
622
+ if (value && value.trimStart().startsWith('[')) {
623
+ // Account for leading space when checking width
624
+ const lineContent = ` ${value}`;
625
+ const contentWidth = visibleWidth(lineContent);
626
+ if (contentWidth <= width) {
627
+ notifications.push(lineContent);
628
+ }
629
+ }
630
+ }
631
+
632
+ return notifications;
633
+ },
634
+ };
635
+ }, { placement: "aboveEditor" });
604
636
  });
605
637
  }
606
638
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-powerline-footer",
3
- "version": "0.2.14",
3
+ "version": "0.2.16",
4
4
  "description": "Powerline-style status bar extension for pi coding agent",
5
5
  "type": "module",
6
6
  "bin": {
package/segments.ts CHANGED
@@ -389,10 +389,13 @@ const extensionStatusesSegment: StatusLineSegment = {
389
389
  const statuses = ctx.extensionStatuses;
390
390
  if (!statuses || statuses.size === 0) return { content: "", visible: false };
391
391
 
392
- // Join all extension statuses with a separator
392
+ // Join compact statuses with a separator
393
+ // Notification-style statuses (starting with "[") are shown above the editor instead
393
394
  const parts: string[] = [];
394
- for (const [_key, value] of statuses) {
395
- if (value) parts.push(value);
395
+ for (const value of statuses.values()) {
396
+ if (value && !value.trimStart().startsWith('[')) {
397
+ parts.push(value);
398
+ }
396
399
  }
397
400
 
398
401
  if (parts.length === 0) return { content: "", visible: false };
package/theme.ts CHANGED
@@ -16,8 +16,8 @@ import type { ColorScheme, ColorValue, SemanticColor } from "./types.js";
16
16
  // Default color scheme (uses pi theme colors)
17
17
  const DEFAULT_COLORS: Required<ColorScheme> = {
18
18
  pi: "accent",
19
- model: "text",
20
- path: "muted",
19
+ model: "#d787af", // Pink/mauve (matching original colors.ts)
20
+ path: "#00afaf", // Teal/cyan (matching original colors.ts)
21
21
  git: "success",
22
22
  gitDirty: "warning",
23
23
  gitClean: "success",