Repository navigation
v1.0.25
The prompt marker, fixed at the root
This release fixes two problems with the 1.0.24 prompt marker in the claude-code preset.
Fixed
- A message that opened with a link had its
❯on the second row.- Cause: the theme's text check in the messages module read an OSC escape sequence as running to the next BEL. Pi closes its OSC 8 hyperlinks with ST (
ESC \), so a link swallowed the rest of its row, the row read as blank, and the marker went to the next row. - The same misread kept the
messages.assistantPrefixgutter off an answer that opens with a link. This predates 1.0.24; the new marker made it visible. - OSC sequences now end at BEL or ST. Other parts of the theme already read them that way.
- Cause: the theme's text check in the messages module read an OSC escape sequence as running to the next BEL. Pi closes its OSC 8 hyperlinks with ST (
- The prompt's band didn't line up with the answers'
●. In 1.0.24 Pi's band still ran edge to edge, with the❯one column inside it. Claude Code's band starts in the marker column, and now this one does too:- The band starts under the answers'
●and stops one column short of the right edge. - The
❯fills the band's first cell, and the text starts in the same column as the answers' text.
- The band starts under the answers'
Kept
- Pi's blank band rows above and below the text are kept. This is the one visible difference from Claude Code, whose band covers only the text rows.
- Without the assistant marker, your messages are untouched.
How it stays contained
- If any band row lacks Pi's shape (background escape, padding, text), the whole message keeps Pi's own rendering. A partly marked block would mix widths, so the theme never draws one.
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 ciandnpm run check: typecheck, 433 unit/integration/golden tests, dependency boundaries, production build, and package smoke.- New regression tests feed the exact link row Pi 1.1 writes (OSC 8 closed with ST) to the prompt marker and to the
assistantPrefixgutter. - With the ST handling removed, exactly those two tests fail.
- The layout tests check that every band row is painted from column 1 to one column short of the right edge, with the edge columns left plain.
- The fix commit passes
npm run checkon its own.
- New regression tests feed the exact link row Pi 1.1 writes (OSC 8 closed with ST) to the prompt marker and to the
npm run test:e2e:readonly-tools: 25/25 packed-package CLI/RPC cases on Pi 0.99.1 withpi-hashline-edit-pro4.5.1.npm publish --dry-run: the expected 7-file npm artifact (152.0 kB packed).- Real TUI on Pi 1.1.0 (bundled build), with the Titanium theme and an isolated agent directory. The prompt typed was
https://github.com/… tôi đang cần…. Cell backgrounds were read back from the terminal buffer:claude-code: every band row is painted from column 1 to column 98 of 100, and columns 0 and 99 are plain. The❯sits at column 1 on the link row, with the answers'●also at column 1. The text and its wrapped row start at column 3, like the answers' text.default: the band runs from column 0 to 99 with no marker, as before.
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
latesttag,gitHead(the release commit), and tarball shasum; - a clean install whose files match the release build byte for byte;
- a real Pi 1.1.0 run of the installed package with the same link-first prompt. In the
claude-codeanddefaultpresets, it renders exactly as the pre-release build did, apart from run timings.
pi install npm:@nguyenquangthai/pi-omp-theme@1.0.25
# For an existing unpinned installation:
pi update npm:@nguyenquangthai/pi-omp-theme