@xzzpig/pi-thinking-collapse0.2.0
Auto-collapse thinking blocks after the model finishes and keep them visible while streaming.
Untested on omp
This is a pi package. No one has reported whether it works on omp yet. If you try it, add your result below.
Reports 0
No reports yet.
Readme
pi-thinking-collapse
Keep Pi's thinking blocks readable while the model is working, then get them out of the way once the answer lands.
- Visible while streaming — thinking content stays expanded during
message_update, so you can watch the model reason. - Auto-collapsed on completion — when the assistant message ends
(
message_end), the thinking block collapses to a single label, keeping the transcript readable without losing the thinking text. ctrl+tstill wins — Pi's global thinking toggle overrides the auto-collapse behavior, and a custom collapsed label set throughsetHiddenThinkingLabelis preserved.- Clicking a block is Pi's own behavior — since Pi 0.85 the renderer wraps
each thinking block in a
MouseRegion, so a click toggles that block's visibility natively. This package used to implement its own click handler; that duplicate was removed in 0.2.0. It registers no mouse handling and has no companion-extension requirement.
Install
pi install npm:@xzzpig/pi-thinking-collapse
How it works
The plugin patches AssistantMessageComponent.prototype (reload-safe, via a
Symbol.for registry): updateContent computes an effective collapse flag per
message — the global hideThinkingBlock flag from ctrl+t / settings wins,
streaming forces expanded, and completion defaults to collapsed. Pi's own
per-run click override (thinkingVisibilityOverrides, keyed by thinking-run
index) is read by the renderer before that flag, so a click on a block is
honored even while the automatic behavior keeps running.
The two layers are independent: this package owns when a block collapses on its own, Pi owns the user's click on a specific block.
Compatibility
pi-tool-display'sThinking:label prefix is a data-level decoration and is orthogonal: it shows when thinking is expanded and is hidden together with the thinking text when collapsed.pi-vibeguardredacts thinking content; collapse state never mutates message data, so the two do not interact.
Development
pnpm --filter @xzzpig/pi-thinking-collapse run typecheck
pnpm --filter @xzzpig/pi-thinking-collapse test