Skip to content

Releases: mistrjirka/PiTTy

v0.5.11

Choose a tag to compare

@github-actions github-actions released this 24 Jul 13:05

PiTTy v0.5.11

PiTTy v0.5.11 makes Codex runout projections follow the realistic week-scale burn rate instead of a single busy hour.

Codex Runout Projection

  • Codex "runs out" ETA now uses the wall-clock multi-day/week average burn rate (idle time included) instead of preferring the last-hour spike whenever recent usage exists. A busy hour no longer collapses the projection into a false panic ETA while the true week pace would still be days away.
  • The last-hour +X%/h delta remains on the sidebar summary line for short-horizon context, but it no longer drives the runout timestamp or the "runs out before reset" warning.

Regression Coverage

  • Added a unit test that a last-hour burst is ignored when projecting runout from the idle-inclusive average rate.

v0.5.10

Choose a tag to compare

@github-actions github-actions released this 23 Jul 15:35

PiTTy v0.5.10

PiTTy v0.5.10 adds a Memory entry to Settings, so the memory browser is reachable on terminals where Ctrl+M can't be distinguished from Enter.

Memory Access from Settings

  • Added a "Memory" entry to Settings (Ctrl+X), so the memory browser (pi-hermes-memory) is reachable without Ctrl+M. Several terminals — notably Konsole without the Kitty keyboard protocol enabled — send Ctrl+M as a plain Enter keystroke, so the shortcut previously looked like it "did nothing" there.
  • Escaping out of Memory when opened from Settings now returns to the Settings root list instead of leaving the dialog stuck open or dropping focus back to the main chat.
  • Updated the in-app /help text and docs (README.md, docs/USAGE.md) to point at Settings > Memory (or /memory) as the reliable fallback when Ctrl+M isn't distinguishable from Enter on a given terminal.

Regression Coverage

  • Added a settingsBackRoute assertion covering the new memory route.

v0.5.9

Choose a tag to compare

@github-actions github-actions released this 23 Jul 15:18

PiTTy v0.5.9

PiTTy v0.5.9 adds a Memory browser for the pi-hermes-memory extension, fixes messages hanging during compaction, and corrects a stale-sample bug in the Codex usage burn-rate calculation.

Memory Browser

  • Added a Memory browser (/memory, or Ctrl+M on terminals that report it distinctly from Enter) for the pi-hermes-memory extension: search across global Memory/User/Failures notes and the current project's memory, and remove individual entries with a confirmation step.
  • Reads and edits the extension's own Markdown files directly (no RPC support exists for this), and refuses to delete an entry if the underlying file changed since it was loaded, to avoid clobbering a concurrent writer.
  • Added pi-hermes-memory to optional-integration detection so the browser can point you at installing it when it's missing.

Compaction Reliability

  • Messages sent while Pi is compacting no longer hang waiting on a request that the agent won't answer until compaction ends. PiTTy now tracks compaction state from compaction_start/compaction_end events, queues any message typed during that window locally, and flushes it automatically once compaction finishes.
  • /compact now warns instead of starting a second overlapping compaction if one is already running.
  • The RPC client no longer misroutes a response that arrives after its own client-side timeout already fired; it's now logged and dropped instead of being resolved against a stale request id.

Codex Usage Tracking

  • Fixed the last-hour usage delta being computed from a stale sample (e.g. after PiTTy was closed for a long time), which could report a misleading burn rate. The delta is now left unset unless a sample from within the last hour is actually available.

Regression Coverage

  • Added unit tests for memory parsing/removal, the compaction queuing state machine, RPC late-response handling, and the Codex usage anchor fix.

v0.5.8

Choose a tag to compare

@github-actions github-actions released this 23 Jul 12:49

PiTTy v0.5.8

PiTTy v0.5.8 adds Codex usage tracking with history-aware burn-rate projections, fixes the compaction timeout false alarm, and includes comprehensive regression coverage.

Codex Usage Tracking

  • The sidebar's Codex rate-limit rows now show remaining percentage alongside used percentage, e.g. 5h: 32% used (68% left, +4.1%/h).
  • Added a persisted local history of Codex usage samples (~/.local/state/pitty/codex-usage-history.json, or under $XDG_STATE_HOME) so consumption speed and reset behavior can be tracked across restarts.
  • Added a last-hour consumption delta, a multi-day average burn rate (once at least ~20h of history is retained), and a projected runout time computed from the current pace.
  • The reset/runout row turns a warning color when the projected runout would land before the window's own reset, so you can see at a glance whether you're on pace to exhaust a window early.
  • Window resets are never counted as "negative consumption": a drop in used percentage (or a new reset timestamp) marks a fresh epoch instead of skewing the rate calculation.

Compaction Timeout Fix

  • /compact no longer surfaces a scary "Timed out waiting for Pi response to compact." error on sessions where compaction legitimately takes longer than the 10-minute client-side timeout. Pi streams compaction_start/compaction_end events independently of the request/response pair, so a client-side ack timeout is now treated as a benign, still-running compaction rather than a failure.

Regression Coverage

  • Added unit tests for Codex usage history persistence, reset-epoch-aware rate/delta/runout calculations, and formatting.

v0.5.7

Choose a tag to compare

@github-actions github-actions released this 23 Jul 11:32

PiTTy v0.5.7

PiTTy v0.5.7 reorders the subagent sidebar by launch time, drops the stale activity timer on finished subagents, adds a todo detail dialog, and fixes Shift+Enter newline insertion and pending-input layout on more terminals.

Subagent sidebar & ordering

  • The subagent list is now ordered by launch time, with the newest run on top, instead of grouping active runs before finished ones.
  • Inactive/finished subagents no longer show a live "time since activity" timer; the row simply shows the state icon and label once the subagent stops.
  • The subagent inspector's header and model/context/thinking line were compacted into single icon-prefixed rows (, , , ), fitting more detail per line.

Todo detail dialog

  • Clicking a todo in the sidebar now opens a detail dialog (Esc to close) instead of only showing a clipped one-line summary.
  • Each todo row is now a single line with a status icon (🟢 active · 🟡 pending · 🔴 blocked · ✔ done), and the panel header summarizes counts as "N pending · N active · N done".

Notifications panel

  • Added tone icons (❌ error · ⚠️ warning · ✅ success · 🔔 info) to notification rows for faster scanning.

Prompt and pending input fixes

  • Shift+Enter now reliably inserts a newline instead of submitting on terminals that report it as a bare linefeed without the Kitty keyboard protocol.
  • The pending input panel keeps a fixed height and clips long queued/steering/follow-up lines to one row each, instead of letting them wrap and push the layout around.
  • Conversation compaction now uses a 10-minute request timeout instead of the default 30 seconds, since summarizing large sessions can legitimately take that long.

Regression coverage

  • Updated sidebar and inspector rendering tests to match the new ordering, icon format, and removed activity timer phrasing.

v0.5.6

Choose a tag to compare

@github-actions github-actions released this 21 Jul 21:59

PiTTy v0.5.6

PiTTy v0.5.6 fixes subagent list placement for parallel spawns, thinking-effort filtering by model capability, the Ctrl+P model selector list height, and prompt Shift+Enter newline insertion with auto-expand.

Subagent ownership for parallel spawns

  • Subagent lists now render under the tool call that actually spawned them, not an earlier unrelated subagent tool call.
  • A two-pass owner algorithm assigns runs by explicit runId/toolCallId first, then falls back to a global nearest-match within a 30-second window, 1:1. A later parallel spawn no longer attaches its children to an earlier subagent call.
  • Runs outside the window, or with no unambiguous closest call, stay hidden instead of attaching to the wrong tool call.

Thinking effort filtered by model capability

  • The Ctrl+X thinking effort selector now shows only the levels the current model supports, using the model's thinkingLevelMap.
  • null entries hide unsupported levels; xhigh and max require an explicit non-null opt-in. A model exposing only high and max (for example GLM) no longer shows minimal and low.

Model selector full-height list

  • The Ctrl+P model selector list now fills the available modal height and keeps the scroll indicator visible when options overflow, instead of using a fixed half-height with no continuation indication.

Prompt Shift+Enter and auto-expand

  • Shift+Enter inserts a newline in the prompt and the prompt auto-expands to the text height within its min/max bounds. The key bindings and auto-grow configuration were already in place; this release documents and validates the behavior.

Regression coverage

  • Added tests for nearest-match ownership: a parallel spawn attaches to the spawning call (not an earlier one), a run outside the 30s window is dropped, and a non-subagent tool call never receives a run.
  • Added visibleThinkingLevels unit tests covering reasoning-disabled, mapless, holey, and empty-map cases.

v0.5.5

Choose a tag to compare

@github-actions github-actions released this 21 Jul 10:51

PiTTy v0.5.5

PiTTy v0.5.5 fixes model selector mouse selection and the Working indicator during thinking and tool calls, plus modal focus capture and overlay focus management for every dialog.

Mouse selection for every selector

  • OpenTUI Select has no built-in mouse handling. Clicking a model row in the model selector now maps the pointer Y coordinate (accounting for scrollOffset in scrolled lists) to the visible option index and selects it immediately.
  • This follows the same pattern as the thinking-level and settings selectors. The session selector and extension dialogs already had a mouse click mapping; the model selector was the only Select without one.
  • The panel overlay and search box share click handling without fighting over focus: clicking the search field keeps the cursor in search, clicking the list selects the clicked row.

Persistent Working indicator

  • The "Working…" indicator now stays visible for the entire agent turn — including while the model is streaming thinking content or calling tools.
  • Previously it was hidden whenever the latest conversation item was a streaming assistant message or a pending/streaming tool call. It is now equivalent to isStreaming so it appears throughout the model's active period and disappears when the agent settles.

Modal focus management

  • Every dialog (model selector, notification detail, extension dialog) now renders a full-screen overlay onMouseDown={event => event.stopPropagation()} that prevents background terminal interaction from leaking through.
  • The searchable-dialog-focus helper now uses setTimeout(focusSearch, 0) instead of queueMicrotask for initial focus, improving reliability on the OpenTUI event loop.

Regression coverage

  • Added a mouse-click test for the model selector: renders the dialog, looks up the target row in the character frame, clicks at its coordinates, and verifies onSelect fires with the correct model.

v0.5.4

Choose a tag to compare

@github-actions github-actions released this 20 Jul 15:28

PiTTy v0.5.4

PiTTy v0.5.4 improves notification investigation, subagent visibility, and recovery from stalled context tools while preserving the fast terminal workflow.

Session-only notification history

  • Every PiTTy toast, including RPC extension notify messages, is retained in an in-memory history for the current session.
  • Full Markdown text remains available after a toast expires, including long command output and diagnostic output.
  • History is intentionally session-only and bounded to 100 records; it is cleared when PiTTy restarts and is never written to disk.
  • New notifications are unread. Opening a notification marks it read, and unread entries stay above read entries with newest-first ordering within each group.

Notification investigation UI

  • A notification section appears below Todos in the right sidebar, with proportional space shared according to the Subagents > Todos > Notifications priority.
  • Every visible panel keeps a header and content-row floor; notifications hide first when a short terminal cannot fit all panel floors.
  • Notification lifecycle tones use semantic border colors, while read rows remain visually quieter.
  • Clicking a notification opens a scrollable detail modal containing the complete text rendered as Markdown. Escape and the close control dismiss the modal without losing session history.

Subagent visibility and rendering

  • The main chat now renders each logical subagent once. Later updates replace the existing entry instead of displaying duplicate copies.
  • Foreground and asynchronous representations of the same subagent are merged, while distinct parallel child indexes remain separate.
  • Completed subagent Markdown is finalized after its first rendered frame, preventing content above live responses from blinking or disappearing during long conversations.
  • Viewport culling is disabled for the live main conversation and subagent inspector transcript, avoiding stale geometry while streaming content changes height.
  • Subagent inspection supports OpenCode-style Ctrl+Down inspection, arrow-key navigation, Ctrl+Left/Right cycling, and Ctrl+Up return-to-chat aliases.

Context-tool and interrupt recovery

  • Pi now forwards abort signals to the context-mode MCP bridge.
  • Aborted or timed-out bridge requests send cancellation notifications, terminate the stuck child, and recover by respawning it for the next request.
  • ctx_search has a bounded 50-second bridge recovery timeout; ctx_execute remains unbounded.
  • Ctrl-C aborts active work with a single-flight guard. A subsequent Ctrl-C while that abort is still pending force-closes the renderer instead of leaving the terminal trapped behind a stalled request.

Regression coverage

  • Added coverage for bounded notification retention and oldest-first eviction, unread/read ordering, panel allocation floors, clickable rows, and full Markdown detail rendering.
  • Added coverage for one-owner subagent rendering, parallel-child identity preservation, Markdown finalization, subagent navigation, target-count hints, bridge recovery, and interrupt decisions.

v0.5.3

Choose a tag to compare

@github-actions github-actions released this 20 Jul 11:38

PiTTy v0.5.3

This historical release body records the important v0.5.3 additions so the published release can be corrected independently of the current changelog.

Rendering stability

  • Fixed Markdown content above a live response intermittently blinking or disappearing in long conversations.
  • Disabled viewport culling only for the live main conversation, avoiding stale geometry while streaming messages change height.
  • Finalized completed Markdown after its first rendered frame while preserving immediate streaming text fallback.

Subagent navigation

  • Added OpenCode-style Ctrl+Down inspection and arrow-key navigation inside the subagent inspector.
  • Added Ctrl+Left/Right cycling and Ctrl+Up return-to-chat aliases.
  • Updated footer, sidebar, and inspector hints to show only controls relevant to the available targets.

Testing

  • Added regression coverage for Markdown finalization, navigation shortcuts, and target-count hints.

v0.5.2

Choose a tag to compare

@github-actions github-actions released this 20 Jul 10:01

Full Changelog: v0.5.1...v0.5.2