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 +14 -0
- package/README.md +2 -2
- package/index.ts +33 -1
- package/package.json +1 -1
- package/segments.ts +6 -3
- package/theme.ts +2 -2
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
|
-
|
|
26
|
+
pi install npm:pi-powerline-footer
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
|
|
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", (
|
|
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
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
|
|
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
|
|
395
|
-
if (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: "
|
|
20
|
-
path: "
|
|
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",
|