An opinionated personal fork of earendil-works/pi, a minimal terminal coding agent. main is upstream plus the changes below, merged in as upstream releases. The upstream README is README.md, unchanged.
Why the fork is set up this way is in DECISIONS.md. Branches, upstream status and the sync workflow are in FORK.md.
Small fixes with no new API, written as upstream proposals.
- HStack double render. Fixed-height stretch layouts skip child measurement, so the transcript renders once per frame.
- Wheel leak. Wheel overscroll in a
containscroll view no longer scrolls the transcript.
Generic hooks that let extensions build UI. Opinions stay in the extensions.
- Editor border widgets.
setWidgetplacements on the editor's border corners, with mouse input. From upstream PR #10602. - Side panels.
"left"and"right"placements with a column width, shown beside the transcript in fullscreen. - Shortcut ids.
registerShortcuttakes an optional id, so users can rebind or disable extension shortcuts. - Focus access.
TUI.getFocusedComponentis public. - Docs fix.
overlayOptionsJSDoc now says a function is evaluated once.
Frame. A bordered, fixed-height floating window that routes mouse input and consumes wheel input.
- Text attributes. Theme tokens accept bold, dim, italic, underline and strikethrough. A
syntaxmap overrides highlight.js scope colors. - Glyphs.
"glyphs"insettings.jsonpicks a preset (unicode,ascii) and overrides individual glyphs, with a row in/settings. - Settings tabs.
/settingsgroups rows into General, Display, Fullscreen, Images and Advanced.
Separate repos that use the hooks above: pi-statusline, pi-outline, pi-leader.
npm install --ignore-scripts
npm run build
./pi-test.sh # run from source
git fetch upstream && git merge upstream/main