Skip to content

CI: cat gatekeeper time fix (self-check)#3

Open
lemotw wants to merge 2 commits into
mainfrom
fix/cat-e2e-time
Open

CI: cat gatekeeper time fix (self-check)#3
lemotw wants to merge 2 commits into
mainfrom
fix/cat-e2e-time

Conversation

@lemotw

@lemotw lemotw commented Jun 8, 2026

Copy link
Copy Markdown
Owner

Self-check PR to run the fork's CI on fix/cat-e2e-time (branched off feat/compact-button).

Adds page.clock.setFixedTime() to make the cat gatekeeper e2e time-independent (no longer fails during the 23:00–07:00 bedtime window). Includes the /compact feature from feat/compact-button.

lemotw added 2 commits June 8, 2026 13:46
Adds a "Compact context" button to the context-usage popover plus a
composer-scoped Cmd/Ctrl+Shift+K shortcut. Both call a new POST /api/compact
endpoint that runs pi's dedicated `compact` rpc command (session.compact()).

Compaction is NOT a chat prompt: pi's rpc prompt path only expands
extension/skill/template commands, so sending "/compact" as a message would
reach the model as literal text and never compact. The backend adds
BuildCompactCommand, piRPCWorker.Compact, Manager.Compact and handleCompact
(async; broadcasts a reload once compaction completes).

UX:
- "Compacting…" banner above the composer + a status label pinned to
  "compacting" while it runs (guarded against firing while the worker is busy).
- updateContextUsage is now compaction-aware: it mirrors pi's
  estimateContextTokens so the context ring reflects the reduced size after a
  compaction entry (summary + kept entries, chars/4) instead of stale
  pre-compaction usage, switching to the measured value on the next turn.

Tests: vitest (compact endpoint path, banner show/hide, context estimate vs
measured) and Playwright (real compaction marker, banner, no prompt echo) with
a stub pi that implements the compact command.

Closes ygncode#41
The cat gatekeeper's bedtime "sleep" overlay (default 23:00-07:00) is driven by
the live browser Date.now(), so skip-to-break showed the sleepy cat instead of
the break whenever CI ran during that window. Use page.clock.setFixedTime() to
pin a non-bedtime hour (setFixedTime, not install, so app timers keep running).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant