@anthodev/pi-tools-style 0.1.3 → 0.1.4

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 (2) hide show
  1. package/README.md +31 -4
  2. package/package.json +5 -5
package/README.md CHANGED
@@ -25,7 +25,7 @@ Built-in tools, MCP integrations, AFT, and third-party extensions keep control o
25
25
 
26
26
  ## Installation
27
27
 
28
- The current release targets Pi `0.84.x` and requires Node.js 22 or newer.2
28
+ This checkout targets Pi `1.0.x`, verified with `1.0.0`, and requires Node.js `>=22.19.0`.
29
29
 
30
30
  To install it, use the following command:
31
31
 
@@ -135,7 +135,7 @@ Borders resolve their color from the active Pi theme on every render. Switching
135
135
 
136
136
  ## How it works
137
137
 
138
- Pi `0.84.x` does not expose public render middleware around `ToolExecutionComponent` and `BashExecutionComponent`. `pi-tools-style` therefore installs a narrow wrapper around their existing `render()` methods.
138
+ Pi `1.0.x` does not expose public, composable render middleware covering both tools and direct shell commands. `pi-tools-style` therefore installs a narrow wrapper around the existing `render()` methods of `ToolExecutionComponent` and `BashExecutionComponent`.
139
139
 
140
140
  The wrapper asks the previous renderer to draw at the frame's inner width, removes only paired outer horizontal rules, and then adds ANSI-aware chrome. It does not call `pi.registerTool()`, replace tool definitions, or intercept execution.
141
141
 
@@ -143,12 +143,13 @@ Configuration and animation state live behind `Symbol.for()` keys. Reloading upd
143
143
 
144
144
  ## Compatibility and limits
145
145
 
146
- - Pi `0.84.x` is the supported target. Private TUI internals may change in later releases.
146
+ - Pi `1.0.x` is the supported target, verified with `1.0.0` in both `fullscreen` and `regular` TUI modes. Pi `0.84.x` is no longer a supported target. Private TUI internals may change in later releases.
147
147
  - The render wrapper is necessarily unsupported until Pi exposes public, composable render middleware.
148
148
  - Kitty, iTerm2, and Sixel image output remains unboxed by design.
149
149
  - Slash commands remain outside the current scope because their transcript output has no uniform component.
150
150
  - Another extension can replace this wrapper if it overwrites component rendering without composing with the previous renderer.
151
151
  - Unsupported renderer shapes fail open rather than affecting tool execution.
152
+ - Frame characters remain selectable text and are included in copied output. Excluding decorative cells would require Pi/TUI integration for fullscreen selection; no portable exclusion path has been identified for native terminal selection in regular mode.
152
153
 
153
154
  ## Development
154
155
 
@@ -160,10 +161,36 @@ npm run check
160
161
  npm pack --dry-run --json
161
162
  ```
162
163
 
163
- `npm run check` runs TypeScript validation and the Vitest suite. Tests cover frame width, ANSI output, terminal images, native and AFT rule removal, category colors, icon modes, persisted settings, spinner lifecycle, real `ToolExecutionComponent` integration, render composition, reload idempotence, fail-open behavior, and the no-`registerTool()` contract.
164
+ `npm run check` runs TypeScript validation and the Vitest suite. Tests cover frame width, ANSI output, terminal images, native and AFT rule removal, category colors, icon modes, persisted settings, spinner lifecycle, real `ToolExecutionComponent` and `BashExecutionComponent` integration, third-party renderer composition, decorator toggling and reinstallation, reload idempotence, fail-open behavior, and the no-`registerTool()` contract.
165
+
166
+ Release-note tests cover exact version sections, Markdown fences and whitespace, duplicate or missing sections, tagged Git snapshots, annotated and lightweight tags, and CLI failure paths.
164
167
 
165
168
  `--legacy-peer-deps` avoids an npm 10.9.8 Arborist failure observed while resolving the development peer dependency graph.
166
169
 
170
+ ## Releases
171
+
172
+ Releases are triggered only by stable `vX.Y.Z` tag pushes. `.github/workflows/publish.yml` validates the tagged commit on Node.js `22.19.0` and `24.x`, packages one npm tarball, publishes it to npm, then creates the GitHub release with that tarball and `SHA256SUMS` as assets.
173
+
174
+ `CHANGELOG.md` is the source of release notes. CI extracts the exact version section from the tagged commit, not the working tree, and preserves its summary, lists, links, and Markdown. Invalid tags, mismatched revisions, or missing, empty, or duplicate sections fail before publication. CI neither generates notes from commit subjects nor edits the changelog.
175
+
176
+ To prepare a release:
177
+
178
+ 1. Update `package.json` and regenerate `package-lock.json`. Move the release entries from `Unreleased` into a dated `## [X.Y.Z] - YYYY-MM-DD` section, preserving verified commit or PR references and the full changelog comparison link.
179
+ 2. Run `PI_CODING_AGENT_DIR="$(mktemp -d)" npm run check` and `npm run pack:check`.
180
+ 3. Seal and push the release-preparation commit on `develop`. With jj, use the sealed commit's explicit SHA, never an empty working-copy `@`.
181
+ 4. Set `VERSION` to the prepared package version and `RELEASE_SHA` to that commit's full SHA, then validate the notes before pushing the tag:
182
+
183
+ ```bash
184
+ jj tag set "v${VERSION}" -r "$RELEASE_SHA"
185
+ notes="$(mktemp)"
186
+ node scripts/generate-release-notes.ts "v${VERSION}" "$RELEASE_SHA" "$notes"
187
+ jj git push --tag "v${VERSION}"
188
+ ```
189
+
190
+ The workflow requires the tag to match the package and lockfile versions and to belong to `develop`. npm publication uses OIDC Trusted Publishing on a GitHub-hosted runner with the protected `npm` environment. Keep the `publish.yml` filename and environment aligned with the trusted publisher configuration. Concurrent release tags are serialized.
191
+
192
+ Publication is not an idempotent update. An already-published npm version or existing GitHub release makes a rerun fail. npm publication precedes GitHub release creation, so a failure in the latter can leave the package already published. Do not move a published tag or delete a release to make a rerun succeed.
193
+
167
194
  ## License
168
195
 
169
196
  MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anthodev/pi-tools-style",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "Presentation-only boxes for Pi tool calls and shell commands",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -40,12 +40,12 @@
40
40
  "access": "public"
41
41
  },
42
42
  "peerDependencies": {
43
- "@earendil-works/pi-coding-agent": "0.84.x",
44
- "@earendil-works/pi-tui": "0.84.x"
43
+ "@earendil-works/pi-coding-agent": "1.0.x",
44
+ "@earendil-works/pi-tui": "1.0.x"
45
45
  },
46
46
  "devDependencies": {
47
- "@earendil-works/pi-coding-agent": "0.84.1",
48
- "@earendil-works/pi-tui": "0.84.1",
47
+ "@earendil-works/pi-coding-agent": "1.0.0",
48
+ "@earendil-works/pi-tui": "1.0.0",
49
49
  "@types/node": "24.12.0",
50
50
  "typescript": "5.9.3",
51
51
  "vitest": "4.1.9"