Repository navigation
v1.0.23
One side margin, and a calmer welcome card
Everything the theme draws now sits on the same one-column margin that Pi uses. The welcome card is redesigned to match.
Changed
- Side margin. Pi keeps one column clear on each side of the transcript. Its
outputPadsetting controls this for messages and tool output, and itsWorking...row and prompt sit one column in. The theme had set that padding to zero for tool boxes, inline blocks, and markers, and it drew the status row and the!bash block from the edge. As a result, its rows started at column 0 while Pi's started at column 1.- Transcript blocks now follow
outputPadon both sides. This covers the inline●markers and⎿rows, tool boxes in every chrome, custom message blocks, and the!bash block. It includes the edit tool, which Pi renders without padding. - The status row and the welcome card keep one column on each side, like Pi's working row and prompt.
- The
Working...spinner is Pi's own row. When the theme's editor is in place, Pi draws it one column in. It now lines up with everything else instead of looking one column off. - The editor frame and rules still run edge to edge, as Pi's do, and clicks map as before.
- Transcript blocks now follow
- Welcome card.
- It stops growing at 100 columns and sits on the same one-column margin.
- There is now one blank row above it; before, there were two above and three below.
- Its frame uses the theme's quiet border color.
- Both columns open and close with a blank row, and the title lines up with the tips. An inset rule separates Tips, Tool providers, and Recent sessions.
- Tips fit on one row.
- Tool providers list core first, then the others by tool count. Each row shows the tool count and as many tool names as fit, with
+Nfor the rest. - With more than four providers, the last row reads
+N moreand names the remaining providers. Before, they were dropped without notice. - Provider names drop the npm scope and the pinned version or git ref:
npm:@scope/pi-teams@0.1.6shows aspi-teams. - Long session titles are cut to fit, and their ages share one right-aligned column.
- The title reads "Welcome back!" only when there is a recent session. The top border reads
Pi v<version>. - The card keeps a fixed height, so it never forces Pi to replay the screen.
- Gallery. The README welcome image and the gallery preview, which is also the pi.dev package image, now show the new card.
Not covered
- Messages you type, and Pi's
[Extensions]startup listing (shown whenquietStartupis off), are drawn by Pi and keep Pi's layout.
How it stays contained
- The change is presentation only.
- The theme no longer overrides Pi's padding with zero. It reads
outputPadand applies it. - Every tool golden section is byte-identical to 1.0.22.
- 18 message golden sections changed only by the margin: 9 inline-marker sections and 9 user-bash sections. They have the same words, re-wrapped for the right-hand column.
- The theme no longer overrides Pi's padding with zero. It reads
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 checkpassed: typecheck, 426 unit/integration/golden tests, dependency boundaries, production build, and package smoke.- 11 tests are new: 8 for the welcome card and 3 for the side margin (status row,
!bash block in every chrome, and the edit tool in every chrome). - Each intermediate commit passes
npm run checkon its own.
- 11 tests are new: 8 for the welcome card and 3 for the side margin (status row,
npm run test:e2e:readonly-tools: 25/25 packed-package CLI/RPC cases passed on Pi 0.99.1 withpi-hashline-edit-pro4.5.1.npm publish --dry-run: the expected 7-file npm artifact (150.5 kB packed).- Real TUI on Pi 1.1.0, with the Titanium theme and an isolated agent directory. Margins were read back from the terminal buffer.
- Transcript: the
claude-code,default, and light chrome at 80, 100, and 160 columns. Every theme-drawn row starts at column 1 and leaves at least one column on the right. This includes theWorking...row, the status row, and the!echo hiblock. Only the editor frame touches the edges. - Welcome card: at 64 columns it falls back to the compact header. At 80 and 100 it keeps one column on each side. At 140 it stops at 100 columns.
- One measurement artifact: at 160 columns, the harness terminal (xterm.js, Unicode 6 widths) counts 📁 as one cell and leaves a stale cell at the row's end. Pi measures that row at 152–154 of the 159 columns available.
- Transcript: the
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), tarball shasum, and thepi.imagegallery 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-codeanddefaultpresets:- the welcome card matches the pre-release build exactly;
- the transcript margins match apart from run timings, with every theme-drawn row starting at column 1.
pi install npm:@nguyenquangthai/pi-omp-theme@1.0.23
# For an existing unpinned installation:
pi update npm:@nguyenquangthai/pi-omp-theme