Repository navigation
Releases: lmilojevicc/pi-zentui
Release list
v0.34.0
What's Changed
Other changes
- feat: render compatible replacements of builtin tools like the builtin by @lmilojevicc in #217
- chore: release v0.34.0 by @lmilojevicc in #218
Full Changelog: v0.33.0...v0.34.0
v0.33.0
What's Changed
Other changes
- feat: add semantic bash command highlighting by @lmilojevicc in #213
- chore: release v0.33.0 by @lmilojevicc in #215
Full Changelog: v0.32.0...v0.33.0
v0.32.0
What's Changed
Other changes
- fix: honor extension status off under the starship footer by @lmilojevicc in #209
- feat: add configurable editor and message rail glyphs by @lmilojevicc in #210
- perf: use explicit ts import specifiers for faster jiti loading by @lmilojevicc in #211
- chore: release v0.32.0 by @lmilojevicc in #212
Full Changelog: v0.31.2...v0.32.0
v0.31.2
What's Changed
Other changes
- perf: stop rebuilding the tool display row key on every frame by @lmilojevicc in #203
- chore: release v0.31.2 by @lmilojevicc in #204
Full Changelog: v0.31.1...v0.31.2
v0.31.1
Requirements
Unchanged from v0.31.0: Pi 1.0.0 or newer and OMP 18.4.10 or newer.
Highlights
- Thinking (Experimental) survives long traces — Rail and Tree no longer drop to native thinking when a trace exceeds the old caps or a single label is over-long. Parsing is now line-incremental, so work per streamed update stays bounded however long the run gets: measured over a 120K-character trace, ~0.3 ms per update for Tree and ~1.0–1.5 ms for Rail, against 15–22 ms for Pi's own full-block render. Over-long prose labels are shortened instead of invalidating the run, and the step cap now trims what is shown (Rail: first 4 plus latest 28, with a
… N steps omittedrow) rather than disabling the renderer. #200 - No more Rail/Tree flicker — a chunk that finished a step label and opened a code fence in the same frame used to fall back to native thinking for that frame and snap back on the next one. The last shown label may now finish streaming, and labels arriving with the fence are accepted unless they contain an image. A chunk that splits an SGR sequence at the open line's end is likewise no longer treated as an unsafe update. #201
- Tool display does less work when repainting unchanged cards — validated text layouts are cached per component and width, with invalidation on text, safety-budget, background, padding and explicit invalidation. Measured 22.1% → 9.0% of one core during input-triggered redraws with 80 completed cards. #197
- User messages stay stable in fullscreen — single-row messages emitted their terminal prompt markers after the text, where Pi's fullscreen renderer does not strip them. This affected every short
compactmessage. Markers are now emitted at the row start, matching Pi's native message. #198 - Codex quota for official OpenAI sign-in — the 5-hour and weekly figures are now read passively from
x-codex-*response headers when the active model is the officialopenaiprovider onhttps://api.openai.com/v1, through Pi's publicafter_provider_responseevent. Zentui never reads or forwards theopenaicredential and starts no auth lookup or network request for it. Legacyopenai-codexpolling is unchanged. #199
Fixes
- Background Git probes, tool rendering and other behaviour unchanged.
- Dev dependency bumps. #193
Not claimed fixed
- #195 remains open. The marker leak above is proven and fixed on a real Pi 1.2.0 fullscreen terminal, but the reporter's iTerm2 symptoms (detached bubble, invisible message) were not reproduced directly. Reporter confirmation is welcome.
- #194 quota is header-derived and was not verified against a live
openaisign-in account. Ifapi.openai.comdoes not send these headers, nothing is displayed; no values are fabricated, and windows are dropped rather than guessed when their length header is absent.
Full Changelog: v0.31.0...v0.31.1
v0.31.0
Breaking compatibility change
Pi 1.0.0 or newer is now required. Pi 0.x support and its CI compatibility lanes have been retired in #192. Upgrade Pi before installing this release; remain on Zentui v0.30.0 if you still need Pi 0.x.
Oh My Pi requirements are unchanged: OMP 18.4.10 or newer.
Tool display needs Pi's public renderer API, verified on Pi 1.0.3. Pi 1.0.0 remains supported for the other components and preserves native tool rendering when that API is unavailable.
Highlights
- Native Tool display — independently opt-in rendering for tool calls and results, with presets, output modes, and split/unified diff controls. No pi-tool-display runtime dependency or config bridge. #176
- Syntax-highlighted Bash commands — active-theme syntax colors without changing command text, wrapping, progress, output, or card layout.
- Expandable MCP calls —
server/tool [arguments]keeps the payload visible; Ctrl+O reveals output under its ownoutput:label. Existing extension renderers, including FFF, retain ownership unless explicitly overridden. - Readable write/search results — historical writes without a preimage show supplied content under neutral
↳ written; search output gets a clear separator. No fabricated before-content or extra disk reads. - New README gallery — complete Maple Mono/Catppuccin examples for MCP collapsed/expanded, read, write, diff, and search/Bash.
Defaults and fixes
- Unsaved component color-source choices now default to Terminal. Minimalist's unsaved layout defaults are refined; fresh installs still select Opencode, and explicit saved choices/templates are preserved. #186
- Working line defaults to enabled with Border placement, elapsed time, and Tokens/s. Explicit opt-outs and Above placement are preserved; Thinking (Experimental) stays disabled by default. #186
- Background Git probes use
GIT_OPTIONAL_LOCKS=0to avoid unnecessary index-lock contention. #188 - Added cursor-focus compatibility regression coverage and extension-isolation guidance. #187 is tests/docs only; the associated personal cursor-extension fix is not shipped as Zentui runtime code.
Enabling Tool display
Tool display remains disabled by default. Enable it through /zentui tool-display or configure the component independently:
{
"components": {
"toolDisplay": {
"enabled": true,
"style": "balanced"
}
}
}Bash renderer takeover and exact-name custom/MCP overrides retain their separate ownership consent. Enabling Tool display does not enable or restyle other Zentui components. Output-mode and safety limits remain configurable; only presentation changes, not tool execution or schemas.
See the Tool display guide and configuration reference.
Full changelog: v0.30.0...v0.31.0
v0.30.0
Highlights
- Live and completed token rates — optional Working-line TPS holds the last observed rate through tools and pauses, and participates in the full Classic/KITT animation. Pi editor/footer metadata shows retained completed-call averages. #182
- GitHub PR and CI metadata —
$pr_number,$pr_urland$cican be placed in supported editor/footer templates. Lookups are asynchronous, demand-controlled and qualified by repository/branch/head identity; stale results do not claim passing CI. #182 - Individual custom-value colors — sparse publisher-key overrides for Editor and Footer, with independent Edit/Reset controls. #182
- Configurable turn summaries — customize the final line through
components.workingLine.turnSummaryFormatandcolors.turnSummary. New summaries snapshot their format/color and include average TPS when trustworthy timing and final usage are available. #183 - Conditional separators —
$join_sep/${join_sep}join only populated fields in Minimalist, Opencode variants and Starship templates, avoiding dangling separators. #179 - Cache-hit color control — Minimalist's built-in Cache label and
$cache_hituse the EditorcacheHitrole, falling back to normal context styling. #180
Configuration notes
Working-line TPS is opt-in. Existing editor/footer templates are not rewritten; add only the variables you want. Existing ci publisher aliases retain their meaning.
Example turn-summary customization:
{
"components": {
"workingLine": {
"turnSummary": true,
"turnSummaryFormat": "Turn took $turn_duration$join_sep(thought for $thought_duration)$join_sep(↑$input_tokens ↓$output_tokens)$join_sep$token_rate",
"colors": { "turnSummary": "bright-black" }
}
}
}Summary changes apply to new entries; older saved summaries retain their previous appearance. Unknown averages—including aborted calls without trustworthy final usage—are omitted rather than invented. Completed averages include observed request wait/client preparation and exclude tool execution; live estimates are marked ~ and are not exact backend inference speed.
See the configuration reference for placement, styling and host-specific semantics.
Known issue
The Herdr pane/app focus-loss border-placement report #181 is tracked separately and is not fixed in this release.
Full changelog: v0.29.3...v0.30.0
v0.29.3
What's Changed
Other changes
- fix: restore working line borders through editor wrappers by @lmilojevicc in #173
- fix(user-message): support Pi 1.0 direct-Markdown UserMessageComponent shape by @sebvln in #172
- chore: release v0.29.3 by @lmilojevicc in #174
New Contributors
Full Changelog: v0.29.2...v0.29.3
v0.29.2
What's Changed
Other changes
- perf: reduce long-session rendering overhead by @lmilojevicc in #167
- chore: release v0.29.2 by @lmilojevicc in #170
Full Changelog: v0.29.1...v0.29.2
v0.29.1
What's Changed
Other changes
- fix: keep session cost when a wrapped editor hides the footer by @lmilojevicc in #164
- fix: keep editor data consumers live with a wrapped editor by @lmilojevicc in #165
- chore: release v0.29.1 by @lmilojevicc in #166
Full Changelog: v0.29.0...v0.29.1