Skip to content

fix(claude): finish compaction in ready state - #161

Merged
devswha merged 1 commit into
devswha:mainfrom
Yoonwoo-Ha:fix/claude-compaction-ready
Sep 19, 2026
Merged

devswha merged 1 commit into
devswha:mainfrom
Yoonwoo-Ha:fix/claude-compaction-ready

Conversation

@Yoonwoo-Ha

Copy link
Copy Markdown
Collaborator

Problem

Claude writes /compact completion as a synthetic user summary followed by local-command wrapper records. ChatMux treated the wrapper output as a new user prompt, so an idle compacted session stayed RUN, and rendered the full generated summary directly in the conversation.

Changes

  • classify Claude compact-summary records as waiting_user without generating a reply-completion notification
  • ignore Claude's internal local-command wrapper records during activity detection
  • render compact summaries as a collapsed, localized disclosure
  • defer mounting the summary Markdown until the disclosure is opened
  • cover the activity sequence and collapsed/expanded rendering with regression tests

Verification

  • replayed the observed Claude transcript sequence: waiting_user, terminal outcome none
  • npm run verify
    • server tests: 1,842 passed
    • tmux/PTY tests: 50 passed
    • client tests: 731 passed
    • typecheck, lint, identity, Rust checks, and production build passed

@devswha devswha left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the full diff at head 69dd58c and verified locally on the PR branch: focused tests pass (external-session-activity 20/20, MessageComponent 8/8), CI green, base is current main. Server side classifies isCompactSummary user records as waiting_user without a reply-completion notification and skips local-command wrapper records during activity detection; client renders compact summaries as a collapsed disclosure with the Markdown body mounted only on open; messageTypes.compactSummary added across all 10 locales; regression coverage on both sides. isCompactSummary propagation was already on main (claude-sessions.provider), so this PR only adds classification, rendering, i18n, and tests. No action-boundary or identity changes — display/activity only. Merging.

@devswha
devswha merged commit 0e6ef7b into devswha:main Sep 19, 2026
5 checks passed
devswha added a commit that referenced this pull request Sep 19, 2026
## Summary

Prepares the v1.11.0 release. Version bookkeeping only - no runtime code
changes.

- `package.json` version -> 1.11.0
- both `package-lock.json` version fields -> 1.11.0
- exact `packaging/release/update-compatibility.json` entry for 1.11.0

## Schema generation and rollback

The migration registry is unchanged since v1.9.2 (`git diff v1.9.2 main
-- server/modules/database` is empty). Schema generation stays at 20 and
rollback stays exact, carrying forward every version declared by 1.10.0
plus 1.10.0 itself: 1.8.17, 1.8.18, 1.8.19, 1.9.0, 1.9.1, 1.9.2, 1.10.0.
`npm run release:check-metadata` passes with exactly this declaration.

## Release contents since v1.10.0

- #158 - feat(codex): answer asynchronous Codex questions from ChatMux
- #161 - fix(claude): finish compaction in ready state

Minor bump (1.10.0 -> 1.11.0) because #158 lands a user-facing feature,
matching the 1.9.2 -> 1.10.0 precedent.

## Verification

- `npm run release:check-metadata` passed locally for 1.11.0 (schema
generation 20; 7 rollback-compatible versions)
- package-lock diff touches only the two ChatMux version fields (the
third 1.10.0 match is the shell-quote dependency's own version)
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.

3 participants