pi-soly 2.3.2 → 2.3.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-soly",
3
- "version": "2.3.2",
3
+ "version": "2.3.3",
4
4
  "description": "Workflow + project management for pi-coding-agent. Plans, state, MANDATORY rules, self-review, multi-question picker. One npm install, zero config. LLM drives the workflow inline via the soly_workflow tool — no external subagent plugin.",
5
5
  "type": "module",
6
6
  "main": "index.ts",
package/visual/chrome.ts CHANGED
@@ -95,7 +95,7 @@ export function createChrome(getConfig: () => ChromeConfig): Chrome {
95
95
  },
96
96
  workingWidth(),
97
97
  );
98
- try { working.ui.setWorkingMessage(message); } catch { /* session may have ended */ }
98
+ try { working.ui.setWorkingMessage(message + (data.recentEvent ? `\n ${data.recentEventLevel === "error" ? "└─ ✗" : data.recentEventLevel === "warning" ? "└─ ⚠" : "└─"} ${data.recentEvent}` : "")); } catch { /* session may have ended */ }
99
99
  };
100
100
 
101
101
  const clearWorking = (): void => {
@@ -107,6 +107,9 @@ export function createChrome(getConfig: () => ChromeConfig): Chrome {
107
107
  emit(text: string, level: "info" | "warning" | "error" = "info"): void {
108
108
  data.recentEvent = text;
109
109
  data.recentEventLevel = level;
110
+ // Force the working message to re-render so the sub-line appears
111
+ // immediately, even mid-turn.
112
+ if (working) renderWorking();
110
113
  try { tui?.requestRender(); } catch { /* not mounted yet */ }
111
114
  },
112
115
 
package/visual/footer.ts CHANGED
@@ -124,24 +124,6 @@ export class SolyFooter implements Component {
124
124
  }
125
125
 
126
126
  render(width: number): string[] {
127
- const out: string[] = [buildFooterLine(this.data, this.fd, width, { ascii: this.getAscii(), styler: themeStyler(this.theme) })];
128
- const event = this.data.recentEvent;
129
- if (event) {
130
- const styler = themeStyler(this.theme);
131
- const level = this.data.recentEventLevel;
132
- let glyph = "└─";
133
- let styled: string;
134
- if (level === "error") {
135
- glyph = "└─ ✗";
136
- styled = styler.fg("error", `${glyph} ${event}`);
137
- } else if (level === "warning") {
138
- glyph = "└─ ⚠";
139
- styled = styler.fg("warning", `${glyph} ${event}`);
140
- } else {
141
- styled = styler.dim(`${glyph} ${event}`);
142
- }
143
- out.push(" " + styled);
144
- }
145
- return out;
127
+ return [buildFooterLine(this.data, this.fd, width, { ascii: this.getAscii(), styler: themeStyler(this.theme) })];
146
128
  }
147
129
  }