@pi-unipi/unipi 3.0.0-alpha.36 → 3.0.0-alpha.37

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.
Files changed (45) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +9 -0
  3. package/package.json +25 -23
  4. package/packages/app-bridge/package.json +2 -2
  5. package/packages/ask-user/package.json +2 -2
  6. package/packages/autocomplete/package.json +1 -1
  7. package/packages/background-tasks/package.json +2 -2
  8. package/packages/btw/package.json +2 -2
  9. package/packages/compactor/package.json +3 -3
  10. package/packages/core/package.json +1 -1
  11. package/packages/core/src/hints/index.ts +2 -1
  12. package/packages/dream/package.json +2 -2
  13. package/packages/footer/package.json +3 -3
  14. package/packages/fusion/package.json +4 -4
  15. package/packages/info-screen/package.json +2 -2
  16. package/packages/input-shortcuts/package.json +2 -2
  17. package/packages/kanboard/package.json +7 -7
  18. package/packages/long-horizon/package.json +4 -2
  19. package/packages/long-horizon/src/progress-chart.ts +348 -0
  20. package/packages/long-horizon/src/progress-mermaid.ts +105 -0
  21. package/packages/long-horizon/src/progress-view.ts +31 -4
  22. package/packages/long-horizon/src/visualize.ts +68 -3
  23. package/packages/mcp/package.json +2 -2
  24. package/packages/memory/package.json +3 -3
  25. package/packages/notify/package.json +2 -2
  26. package/packages/skill-registry/package.json +2 -2
  27. package/packages/subagents/package.json +3 -3
  28. package/packages/unipi/bundled.js +1073 -537
  29. package/packages/updater/package.json +2 -2
  30. package/packages/updater/src/channel.ts +87 -0
  31. package/packages/updater/src/checker.ts +56 -31
  32. package/packages/updater/src/index.ts +2 -1
  33. package/packages/updater/src/installer.ts +10 -5
  34. package/packages/updater/src/remote-changelog.ts +19 -6
  35. package/packages/updater/src/tui/changelog-overlay.ts +4 -8
  36. package/packages/updater/src/tui/update-overlay.ts +1 -1
  37. package/packages/updater/types.ts +4 -0
  38. package/packages/utility/package.json +2 -2
  39. package/packages/utility/src/diagnostics/engine.ts +56 -0
  40. package/packages/watchdog/package.json +3 -3
  41. package/packages/web-api/package.json +2 -2
  42. package/packages/web-api/src/engine/dependencies.ts +116 -9
  43. package/packages/web-api/src/engine/extract.ts +4 -4
  44. package/packages/web-api/src/index.ts +2 -2
  45. package/packages/workflow/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -6,6 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [3.0.0-alpha.37] — 2026-10-11
10
+
11
+ ### Added
12
+ - `/unipi:visualize-progress`: **chart mode.** In terminals that show images (Kitty graphics), the run's steps or swarm are drawn as the same chart the UniPi app shows, above the log, and redrawn live as the run moves. Press `m` to switch between chart and text. Other terminals keep the text view, and the footer says why the chart is off. (UNI-258)
13
+ - `/unipi:doctor` reports whether the Microsoft Visual C++ runtime that web reads need on Windows is installed. (UNI-261)
14
+
15
+ ### Fixed
16
+ - Windows: a missing Visual C++ runtime no longer stops UniPi from loading. Web reads fall back to plain fetch; the README says how to install the runtime. (UNI-261)
17
+ - The updater stays on the release channel you installed from. An alpha install checks for newer alphas, never offers an older version (such as the stable 2.x), installs from the same channel, and shows that channel's changelog. (UNI-262)
18
+
9
19
  ## [3.0.0-alpha.36] — 2026-10-11
10
20
 
11
21
  ### Added
package/README.md CHANGED
@@ -41,6 +41,15 @@ UniPi needs [Pi](https://www.npmjs.com/package/@earendil-works/pi-coding-agent)
41
41
  `0.87.1` or later. This command installs 21 extension packages. Each package
42
42
  also works alone.
43
43
 
44
+ > [!TIP]
45
+ > **Windows:** web reads use a native module that needs the Microsoft Visual
46
+ > C++ 2015-2022 runtime. Most Windows installs have it; slimmed images such as
47
+ > tiny11 do not. Without it UniPi still loads and web reads fall back to plain
48
+ > fetch. To install it, run
49
+ > `winget install Microsoft.VCRedist.2015+.x64` or download
50
+ > [vc_redist.x64.exe](https://aka.ms/vs/17/release/vc_redist.x64.exe).
51
+ > `/unipi:doctor` reports whether it is missing.
52
+
44
53
  <p align="center">
45
54
  <img src="docs/assets/screenshots/simple-memory-glance.png" alt="A UniPi session in simple mode with memory recall, memory save and the glance footer">
46
55
  </p>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/unipi",
3
- "version": "3.0.0-alpha.36",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "All-in-one extension suite for Pi coding agent",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -80,28 +80,30 @@
80
80
  "typebox": "^1.1.38"
81
81
  },
82
82
  "dependencies": {
83
- "@pi-unipi/app-bridge": "3.0.0-alpha.36",
84
- "@pi-unipi/ask-user": "3.0.0-alpha.36",
85
- "@pi-unipi/background-tasks": "3.0.0-alpha.36",
86
- "@pi-unipi/btw": "3.0.0-alpha.36",
87
- "@pi-unipi/command-enchantment": "3.0.0-alpha.36",
88
- "@pi-unipi/compactor": "3.0.0-alpha.36",
89
- "@pi-unipi/core": "3.0.0-alpha.36",
90
- "@pi-unipi/dream": "3.0.0-alpha.36",
91
- "@pi-unipi/footer": "3.0.0-alpha.36",
92
- "@pi-unipi/fusion": "3.0.0-alpha.36",
93
- "@pi-unipi/info-screen": "3.0.0-alpha.36",
94
- "@pi-unipi/input-shortcuts": "3.0.0-alpha.36",
95
- "@pi-unipi/kanboard": "3.0.0-alpha.36",
96
- "@pi-unipi/mcp": "3.0.0-alpha.36",
97
- "@pi-unipi/memory": "3.0.0-alpha.36",
98
- "@pi-unipi/notify": "3.0.0-alpha.36",
99
- "@pi-unipi/skill-registry": "3.0.0-alpha.36",
100
- "@pi-unipi/subagents": "3.0.0-alpha.36",
101
- "@pi-unipi/updater": "3.0.0-alpha.36",
102
- "@pi-unipi/utility": "3.0.0-alpha.36",
103
- "@pi-unipi/web-api": "3.0.0-alpha.36",
104
- "@pi-unipi/workflow": "3.0.0-alpha.36"
83
+ "@pi-unipi/app-bridge": "3.0.0-alpha.37",
84
+ "@pi-unipi/ask-user": "3.0.0-alpha.37",
85
+ "@pi-unipi/background-tasks": "3.0.0-alpha.37",
86
+ "@pi-unipi/btw": "3.0.0-alpha.37",
87
+ "@pi-unipi/command-enchantment": "3.0.0-alpha.37",
88
+ "@pi-unipi/compactor": "3.0.0-alpha.37",
89
+ "@pi-unipi/core": "3.0.0-alpha.37",
90
+ "@pi-unipi/dream": "3.0.0-alpha.37",
91
+ "@pi-unipi/footer": "3.0.0-alpha.37",
92
+ "@pi-unipi/fusion": "3.0.0-alpha.37",
93
+ "@pi-unipi/info-screen": "3.0.0-alpha.37",
94
+ "@pi-unipi/input-shortcuts": "3.0.0-alpha.37",
95
+ "@pi-unipi/kanboard": "3.0.0-alpha.37",
96
+ "@pi-unipi/mcp": "3.0.0-alpha.37",
97
+ "@pi-unipi/memory": "3.0.0-alpha.37",
98
+ "@pi-unipi/notify": "3.0.0-alpha.37",
99
+ "@pi-unipi/skill-registry": "3.0.0-alpha.37",
100
+ "@pi-unipi/subagents": "3.0.0-alpha.37",
101
+ "@pi-unipi/updater": "3.0.0-alpha.37",
102
+ "@pi-unipi/utility": "3.0.0-alpha.37",
103
+ "@pi-unipi/web-api": "3.0.0-alpha.37",
104
+ "@pi-unipi/workflow": "3.0.0-alpha.37",
105
+ "@resvg/resvg-wasm": "^2.6.2",
106
+ "beautiful-mermaid": "^1.1.3"
105
107
  },
106
108
  "devDependencies": {
107
109
  "@earendil-works/pi-agent-core": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/app-bridge",
3
- "version": "3.0.0-alpha.36",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "Live bridge between a pi TUI session and the UniPi phone app — streaming chat, prompts, steering and dialogs from the phone",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -31,7 +31,7 @@
31
31
  "access": "public"
32
32
  },
33
33
  "dependencies": {
34
- "@pi-unipi/core": "3.0.0-alpha.36"
34
+ "@pi-unipi/core": "3.0.0-alpha.37"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/ask-user",
3
- "version": "3.0.0-alpha.36",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "Structured user input tool for Pi coding agent — single-select, multi-select, freeform",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -40,7 +40,7 @@
40
40
  "access": "public"
41
41
  },
42
42
  "dependencies": {
43
- "@pi-unipi/core": "3.0.0-alpha.36"
43
+ "@pi-unipi/core": "3.0.0-alpha.37"
44
44
  },
45
45
  "peerDependencies": {
46
46
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/command-enchantment",
3
- "version": "3.0.0-alpha.36",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "Enhanced TUI autocomplete for /unipi:* commands — colored, sorted, and grouped by package",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/background-tasks",
3
- "version": "3.0.0-alpha.36",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "Background tasks for UniPi — durable shell jobs and delegated background agents with a footer dock",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -10,7 +10,7 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@earendil-works/pi-ai": "^0.87.1",
13
- "@pi-unipi/core": "3.0.0-alpha.36",
13
+ "@pi-unipi/core": "3.0.0-alpha.37",
14
14
  "turndown": "^7.2.4"
15
15
  },
16
16
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/btw",
3
- "version": "3.0.0-alpha.36",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "A pi extension for parallel side conversations with /unipi:btw — part of the Unipi suite",
5
5
  "type": "module",
6
6
  "main": "extensions/btw.ts",
@@ -37,7 +37,7 @@
37
37
  "@earendil-works/pi-tui": "^0.87.1"
38
38
  },
39
39
  "dependencies": {
40
- "@pi-unipi/core": "3.0.0-alpha.36"
40
+ "@pi-unipi/core": "3.0.0-alpha.37"
41
41
  },
42
42
  "pi": {
43
43
  "extensions": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/compactor",
3
- "version": "3.0.0-alpha.36",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "Compaction for Pi — lossless zero-LLM or model summaries, rebuilt from full history, with session recall",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -33,8 +33,8 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@pi-unipi/core": "3.0.0-alpha.36",
37
- "@pi-unipi/info-screen": "3.0.0-alpha.36",
36
+ "@pi-unipi/core": "3.0.0-alpha.37",
37
+ "@pi-unipi/info-screen": "3.0.0-alpha.37",
38
38
  "@earendil-works/pi-agent-core": "^0.87.1"
39
39
  },
40
40
  "peerDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/core",
3
- "version": "3.0.0-alpha.36",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "Shared utilities, event types, and constants for Unipi extension suite",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -12,6 +12,7 @@
12
12
  * - Settings: namespace "hints" (enabled, header, crab, reset)
13
13
  */
14
14
 
15
+ import { fileURLToPath } from "node:url";
15
16
  import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
16
17
  import {
17
18
  encodeKitty,
@@ -617,7 +618,7 @@ export function installHints(pi: ExtensionAPI): void {
617
618
  try {
618
619
  const v = getInstalledPackageVersion(cwd, "@pi-unipi/unipi");
619
620
  if (v !== "0.0.0") return v;
620
- const thisDir = new URL(".", import.meta.url).pathname;
621
+ const thisDir = fileURLToPath(new URL(".", import.meta.url));
621
622
  return getInstalledPackageVersion(thisDir, "@pi-unipi/unipi");
622
623
  } catch {
623
624
  return "0.0.0";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/dream",
3
- "version": "3.0.0-alpha.36",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "A pi extension that dreams: reviews past session struggles in the background, turns repeated false paths into memory lessons, and crafts skills from errors — part of the Unipi suite",
5
5
  "type": "module",
6
6
  "main": "extensions/dream.ts",
@@ -39,7 +39,7 @@
39
39
  "@earendil-works/pi-tui": "^0.87.1"
40
40
  },
41
41
  "dependencies": {
42
- "@pi-unipi/core": "3.0.0-alpha.36"
42
+ "@pi-unipi/core": "3.0.0-alpha.37"
43
43
  },
44
44
  "pi": {
45
45
  "extensions": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/footer",
3
- "version": "3.0.0-alpha.36",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "Persistent status bar for Unipi — subscribes to UNIPI_EVENTS and renders key stats from all unipi packages",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -32,8 +32,8 @@
32
32
  "access": "public"
33
33
  },
34
34
  "dependencies": {
35
- "@pi-unipi/core": "3.0.0-alpha.36",
36
- "@pi-unipi/background-tasks": "3.0.0-alpha.36"
35
+ "@pi-unipi/core": "3.0.0-alpha.37",
36
+ "@pi-unipi/background-tasks": "3.0.0-alpha.37"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/fusion",
3
- "version": "3.0.0-alpha.36",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "Devin-style model picker, fusion presets (lead + sidekick), and Local Fusion runtime for UniPi",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -32,9 +32,9 @@
32
32
  "access": "public"
33
33
  },
34
34
  "dependencies": {
35
- "@pi-unipi/core": "3.0.0-alpha.36",
36
- "@pi-unipi/subagents": "3.0.0-alpha.36",
37
- "@pi-unipi/utility": "3.0.0-alpha.36"
35
+ "@pi-unipi/core": "3.0.0-alpha.37",
36
+ "@pi-unipi/subagents": "3.0.0-alpha.37",
37
+ "@pi-unipi/utility": "3.0.0-alpha.37"
38
38
  },
39
39
  "peerDependencies": {
40
40
  "@earendil-works/pi-ai": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/info-screen",
3
- "version": "3.0.0-alpha.36",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "Unicrab startup splash and the /unipi:info dashboard — this session, context, usage, compaction savings",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -33,7 +33,7 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@pi-unipi/core": "3.0.0-alpha.36"
36
+ "@pi-unipi/core": "3.0.0-alpha.37"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/input-shortcuts",
3
- "version": "3.0.0-alpha.36",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "Keyboard shortcuts for stash/restore, undo/redo, clipboard, and thinking toggle — chord-based overlay system",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -33,7 +33,7 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@pi-unipi/core": "3.0.0-alpha.36"
36
+ "@pi-unipi/core": "3.0.0-alpha.37"
37
37
  },
38
38
  "peerDependencies": {
39
39
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/kanboard",
3
- "version": "3.0.0-alpha.36",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "Kanboard v3 — deferred-work board: CLI/daemon bridge, task runner and skill",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -31,7 +31,7 @@
31
31
  "access": "public"
32
32
  },
33
33
  "dependencies": {
34
- "@pi-unipi/core": "3.0.0-alpha.36"
34
+ "@pi-unipi/core": "3.0.0-alpha.37"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@earendil-works/pi-coding-agent": "^0.87.1",
@@ -48,10 +48,10 @@
48
48
  "themes": []
49
49
  },
50
50
  "optionalDependencies": {
51
- "@pi-unipi/kanboard-linux-x64": "3.0.0-alpha.36",
52
- "@pi-unipi/kanboard-linux-arm64": "3.0.0-alpha.36",
53
- "@pi-unipi/kanboard-darwin-x64": "3.0.0-alpha.36",
54
- "@pi-unipi/kanboard-darwin-arm64": "3.0.0-alpha.36",
55
- "@pi-unipi/kanboard-win32-x64": "3.0.0-alpha.36"
51
+ "@pi-unipi/kanboard-linux-x64": "3.0.0-alpha.37",
52
+ "@pi-unipi/kanboard-linux-arm64": "3.0.0-alpha.37",
53
+ "@pi-unipi/kanboard-darwin-x64": "3.0.0-alpha.37",
54
+ "@pi-unipi/kanboard-darwin-arm64": "3.0.0-alpha.37",
55
+ "@pi-unipi/kanboard-win32-x64": "3.0.0-alpha.37"
56
56
  }
57
57
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/long-horizon",
3
- "version": "3.0.0-alpha.36",
3
+ "version": "3.0.0-alpha.37",
4
4
  "description": "Long-horizon execution for Pi — mode-gated /goal /ralph /swarm /graph orchestration with a TypeSafe prompt judge",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -37,7 +37,9 @@
37
37
  "access": "public"
38
38
  },
39
39
  "dependencies": {
40
- "@pi-unipi/core": "3.0.0-alpha.36"
40
+ "@pi-unipi/core": "3.0.0-alpha.37",
41
+ "@resvg/resvg-wasm": "^2.6.2",
42
+ "beautiful-mermaid": "^1.1.3"
41
43
  },
42
44
  "peerDependencies": {
43
45
  "@earendil-works/pi-coding-agent": "^0.87.1",