Skip to content

v1.0.24

Choose a tag to compare

@QuangThai QuangThai released this 11 Oct 17:26
· 5 commits to main since this release

Your messages line up with the answers

In the claude-code preset, your messages now start with the prompt's ❯, and their text lines up with the answers below them, as in Claude Code. The welcome card's !! tip now says what it does.

Fixed

  • Inline chrome: your messages didn't line up with the answers. With messages.assistantMarker on (the claude-code preset), an answer starts with ● on Pi's gutter and its text begins two columns later. Pi draws your message itself, with the text on the gutter, so your text started two columns left of the answer's. Pi without the theme has both at the same column; the shift came from the theme's marker.
    • Your messages now start with the prompt's ❯ in the marker column. Their text, wrapped lines included, starts in the same column as the answer's.
    • Pi's band, colors, and prompt zone (OSC 133) are kept. The glyph is the editor's prompt glyph: ❯, > in ASCII mode, or your theme.glyphs.prompt.
    • Without the assistant marker, your messages are untouched.

Changed

  • The !! tip. The welcome card read !! bash, no context, taken from Pi's startup hint. That could be read as a note about context files such as AGENTS.md, and it is fixed text that never looked at them. !!command runs a command and shows its output without sending it to the model; !command includes the output in the conversation. The tip now reads bash, not sent to model, the way Pi's usage guide puts it. The gallery images show the new wording.

How it stays contained

  • The theme decorates Pi's UserMessageComponent.rebuild only when it recognizes the native method, the same check every other decorated surface goes through. It recognizes Pi 0.85 (a band Box around the Markdown), Pi 1.1 (a Markdown that paints its own band), and Pi's bundled build. Anything else keeps Pi's own rendering.
  • It installs only when the assistant marker is on.
  • Pi's lines are rendered two columns narrower and widened again right after their left padding. The inserted cells sit inside the band's background, so every row keeps its full width.

Verification

  • CI: this repository has no configured GitHub Actions workflows, check-runs, or commit-status contexts for the release commit. The local release gates below all passed.
  • npm ci and npm run check: typecheck, 431 unit/integration/golden tests, dependency boundaries, production build, and package smoke.
    • 5 tests are new for the prompt marker. They use Pi 0.85's real component and Pi 1.1's shape rebuilt from pi-tui's Markdown, and they check:
      • the same text column as an answer;
      • hanging wrapped rows;
      • the full-width band and the OSC 133 zone;
      • outputPad 0;
      • Pi's output untouched without markers;
      • installation only alongside the assistant marker.
    • One assertion pins the new !! wording.
    • Each intermediate commit passes npm run check on its own.
  • npm run test:e2e:readonly-tools: 25/25 packed-package CLI/RPC cases on Pi 0.99.1 with pi-hashline-edit-pro 4.5.1.
  • npm publish --dry-run: the expected 7-file npm artifact (151.6 kB packed).
  • Real TUI on Pi 1.1.0 (bundled build), with the Titanium theme and an isolated agent directory. Columns and colors were read back from the terminal buffer.
    • claude-code: the prompt's ❯ sits at column 1, and its text and wrapped row start at column 3, the same column as ● Check the file first.. The band's background runs through the marker cells.
    • default: no marker, and your text and the answer's both start at column 1, as before.
    • The tips row reads !! bash, not sent to model.

Tested on Windows x64 with Node 24.11.1. Linux/macOS runs were not part of this verification.

Install / update

Published on npm. Verified:

  • the registry latest tag, gitHead (the release commit), tarball shasum, and the pi.image gallery URL;
  • a clean install whose files match the release build byte for byte;
  • a real Pi 1.1.0 run of the installed package. In the claude-code and default presets, the transcript renders exactly as the pre-release build did, apart from run timings.
pi install npm:@nguyenquangthai/pi-omp-theme@1.0.24
# For an existing unpinned installation:
pi update npm:@nguyenquangthai/pi-omp-theme