pi-chassis 0.8.0 → 0.9.0

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,12 @@ All notable changes to pi-chassis (published under an earlier name up to 0.3.0)
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.9.0] - 2026-11-03
8
+
9
+ ### Changed
10
+
11
+ - Allows pi 1.5: the peer dependency range is now `>=1.2.0 <1.6.0`, and CI tests pi 1.2.0 and 1.5.0. `docs/internals.md` records what was checked on pi 1.5.0.
12
+
7
13
  ## [0.8.0] - 2026-10-30
8
14
 
9
15
  ### Changed
@@ -120,7 +126,8 @@ First public release.
120
126
  - Plain and Nerd Font icon sets (`/chassis icons`).
121
127
  - Sanitizing of untrusted text (file contents, tool output, git and forge output, session names, widget text) before it reaches the terminal.
122
128
 
123
- [Unreleased]: https://github.com/one24-ai/pi-chassis/compare/v0.8.0...HEAD
129
+ [Unreleased]: https://github.com/one24-ai/pi-chassis/compare/v0.9.0...HEAD
130
+ [0.9.0]: https://github.com/one24-ai/pi-chassis/compare/v0.8.0...v0.9.0
124
131
  [0.8.0]: https://github.com/one24-ai/pi-chassis/compare/v0.7.1...v0.8.0
125
132
  [0.7.1]: https://github.com/one24-ai/pi-chassis/compare/v0.7.0...v0.7.1
126
133
  [0.7.0]: https://github.com/one24-ai/pi-chassis/releases/tag/v0.7.0
@@ -4,7 +4,7 @@
4
4
  * Fullscreen mode: pi renders one layout root (a VStack of transcript + input dock). We wrap it in
5
5
  * an HStack with the sidebar as a fixed-width right column, which is what OpenCode looks like.
6
6
  * There is no extension API for this: it relies on the TUI's `layoutRoot` field and
7
- * `setLayoutRoot()` (pi-tui ViewportTUI), verified on pi 1.4.0. If either is missing, or pi
7
+ * `setLayoutRoot()` (pi-tui ViewportTUI), verified on pi 1.4.0 and 1.5.0. If either is missing, or pi
8
8
  * swaps the root back (renderer switch), the guard widget re-wraps it or we fall back.
9
9
  *
10
10
  * Regular mode has no layout root, so the sidebar is a toggleable overlay instead.
@@ -4,7 +4,7 @@
4
4
  * Fullscreen mode: pi renders one layout root (a VStack of transcript + input dock). We wrap it in
5
5
  * an HStack with the sidebar as a fixed-width right column, which is what OpenCode looks like.
6
6
  * There is no extension API for this: it relies on the TUI's `layoutRoot` field and
7
- * `setLayoutRoot()` (pi-tui ViewportTUI), verified on pi 1.4.0. If either is missing, or pi
7
+ * `setLayoutRoot()` (pi-tui ViewportTUI), verified on pi 1.4.0 and 1.5.0. If either is missing, or pi
8
8
  * swaps the root back (renderer switch), the guard widget re-wraps it or we fall back.
9
9
  *
10
10
  * Regular mode has no layout root, so the sidebar is a toggleable overlay instead.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * OpenCode-style transcript styling. pi has no renderer hooks for these, so two prototype patches
3
- * (pi and extensions share one module instance; verified on pi 1.4.0), both undone on uninstall:
3
+ * (pi and extensions share one module instance; verified on pi 1.4.0 and 1.5.0), both undone on uninstall:
4
4
  *
5
5
  * 1. User messages (UserMessageComponent.render): a ┃ bar in the agent colour, then the message
6
6
  * on the panel background with 1 row of padding above and below and 2 columns on the left,
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * OpenCode-style transcript styling. pi has no renderer hooks for these, so two prototype patches
3
- * (pi and extensions share one module instance; verified on pi 1.4.0), both undone on uninstall:
3
+ * (pi and extensions share one module instance; verified on pi 1.4.0 and 1.5.0), both undone on uninstall:
4
4
  *
5
5
  * 1. User messages (UserMessageComponent.render): a ┃ bar in the agent colour, then the message
6
6
  * on the panel background with 1 row of padding above and below and 2 columns on the left,
package/docs/internals.md CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  pi has no extension API for a side panel. In fullscreen mode (`"tuiMode": "fullscreen"`), pi renders one layout root, a vertical stack of transcript plus input. pi-chassis wraps that root in a horizontal stack with the sidebar as a fixed 48-column right column, using pi-tui's `setLayoutRoot()`.
4
4
 
5
- This was last checked on pi 1.4.0. A pi update could change these internals. If that happens, or in regular mode, the sidebar falls back to a pop-up overlay (`ctrl+x b`), and everything else keeps working.
5
+ This was last checked on pi 1.5.0. A pi update could change these internals. If that happens, or in regular mode, the sidebar falls back to a pop-up overlay (`ctrl+x b`), and everything else keeps working.
6
6
 
7
7
  Below 116 columns the split sidebar hides itself. Context, cost and provider usage, status widgets and other extensions' statuses (MCP, LSP, ...) live in the sidebar; whenever it is hidden they show in the footer instead.
8
8
 
9
9
  The split relies on `tui.layoutRoot`, `tui.setLayoutRoot()`, the entries of pi-tui's `HStack` and `VStack` (`basis`, `grow`, `shrink`, `minSize`, `visible`) and the `Symbol.for("@earendil-works/pi-tui/layout-node")` method.
10
10
 
11
- Other unsupported hooks, checked on pi 1.4.0 (seen running unless noted):
11
+ Other unsupported hooks. On pi 1.4.0 each was seen running unless noted. On pi 1.5.0 every member below was compared with 1.4.0 in pi's source and found unchanged, except that `ToolExecutionComponent.prototype.render` now applies pending arguments first (`argsPending`), before chassis reads anything; the sidebar split, prompt bars and tool rows were also seen running:
12
12
 
13
13
  - Prompt bars: patches `UserMessageComponent.prototype.render`. The original is restored on `/chassis off` and on shutdown.
14
14
  - Tool rows: a renderer resolver (`pi.registerToolRenderer`) draws the built-in tools' calls; pi's own tool definitions, settings and active tool set are not touched. Rows from other extensions are compacted by patching `ToolExecutionComponent.prototype.render` (reads `expanded`, `isPartial`, `result`, `contentBox`, `imageComponents`, `toolDefinition`, and the row above's `lastMessage` and `isStreaming`). The compact path for tools without their own shell was read in pi's source, not seen running.
@@ -4,7 +4,7 @@
4
4
  * Fullscreen mode: pi renders one layout root (a VStack of transcript + input dock). We wrap it in
5
5
  * an HStack with the sidebar as a fixed-width right column, which is what OpenCode looks like.
6
6
  * There is no extension API for this: it relies on the TUI's `layoutRoot` field and
7
- * `setLayoutRoot()` (pi-tui ViewportTUI), verified on pi 1.4.0. If either is missing, or pi
7
+ * `setLayoutRoot()` (pi-tui ViewportTUI), verified on pi 1.4.0 and 1.5.0. If either is missing, or pi
8
8
  * swaps the root back (renderer switch), the guard widget re-wraps it or we fall back.
9
9
  *
10
10
  * Regular mode has no layout root, so the sidebar is a toggleable overlay instead.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * OpenCode-style transcript styling. pi has no renderer hooks for these, so two prototype patches
3
- * (pi and extensions share one module instance; verified on pi 1.4.0), both undone on uninstall:
3
+ * (pi and extensions share one module instance; verified on pi 1.4.0 and 1.5.0), both undone on uninstall:
4
4
  *
5
5
  * 1. User messages (UserMessageComponent.render): a ┃ bar in the agent colour, then the message
6
6
  * on the panel background with 1 row of padding above and below and 2 columns on the left,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-chassis",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "A workbench for pi: an interface, git workflows and a widget platform for everyday engineering. Sidebar and home screen, Build/Plan modes, ctrl+x leader keys and a ctrl+p palette, a git diff view, git commands that draft commit messages and pull requests, and a widget and brand API for other packages.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -83,8 +83,8 @@
83
83
  "release": "node scripts/release.mjs"
84
84
  },
85
85
  "peerDependencies": {
86
- "@earendil-works/pi-coding-agent": ">=1.2.0 <1.5.0",
87
- "@earendil-works/pi-tui": ">=1.2.0 <1.5.0"
86
+ "@earendil-works/pi-coding-agent": ">=1.2.0 <1.6.0",
87
+ "@earendil-works/pi-tui": ">=1.2.0 <1.6.0"
88
88
  },
89
89
  "devDependencies": {
90
90
  "@types/node": "24.10.1",