Commit 50f1437
authored
fix: refine chat navigation and goal reliability (#186)
## Related Issue
No linked issue. These are maintainer-directed UI and goal reliability
fixes.
## Problem
The conversation outline was difficult to scan and use with a keyboard.
Thinking controls could be hidden inside a long model menu, and the
output copy-path action blended into its card.
Separately, a running goal could repeatedly cancel automatic context
compaction. The goal continuation driver did not know that compaction
was active, so it could start more turns instead of waiting for
compaction to finish.
## What changed
- Show user prompts as a connected timeline beside the sidebar, with
roving keyboard focus and active-item visibility.
- Separate model selection from thinking-effort selection in the
composer, move the prompt-anchor toggle to Lab, and make output
copy-path actions visually distinct.
- Pause active goals when automatic compaction starts without aborting
the live compaction task.
- Resume the same goal only after compaction succeeds, while preserving
manual pause/cancel, budget, restart, replay, and duplicate-launch
safeguards in both engines.
- Show the compaction pause reason through the existing TUI goal status
panel, update the in-app design-system reference, and keep the shipped
web bundle synchronized.
## Verification
- `pnpm --filter @pymodel/agent-core test` — 4,171 passed; 3 expected
failures; 30 skipped; 1 todo.
- `pnpm --filter @pymodel/agent-core-v2 test` — 5,661 passed.
- `pnpm exec vitest run
apps/pythinker-code/test/tui/components/messages/goal-markers.test.ts` —
10 passed.
- `tsc` and `tsgo` passed for `agent-core` and `agent-core-v2`; v2
import-boundary checks passed.
- `pnpm --filter @pymodel/pythinker-web test` — 984 passed on the UI
commit.
- `pnpm lint` — 0 errors; existing warnings only.
- `pnpm run check:web` — 670 entries; source fingerprint `0350a3766f66`.
- `pnpm exec changeset status --since origin/main` — one patch release
for `@pymodel/pythinker-code`.
- Independent identifier and scope audits — no findings.
## Checklist
- [x] I have read the
[CONTRIBUTING](https://github.com/PyModel/pythinker-code/blob/main/CONTRIBUTING.md)
document.
- [x] No related issue is required for these maintainer-directed fixes.
- [x] I have added tests that prove the fixes work.
- [x] Ran `gen-changesets`; this PR includes four approved patch
changesets.
- [x] No separate guide update is needed; compaction recovery is
automatic and its pause reason is visible in the TUI.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added a dedicated thinking-effort control in the chat composer,
separate from model selection.
* Redesigned chat prompt anchors as a keyboard-navigable timeline beside
the sidebar.
* Improved copy-path action visibility with a secondary button style and
copy icon.
* Added automatic pausing and resuming of active goals around context
compaction.
* **Bug Fixes**
* Improved goal handling when compaction fails, is interrupted, or
exceeds limits.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->1 parent 283020c commit 50f1437
127 files changed
Lines changed: 2710 additions & 1146 deletions
File tree
- .changeset
- apps
- pythinker-code
- dist-web
- assets
- test/tui/components/messages
- pythinker-web
- src
- components
- chat
- settings
- i18n/locales/en
- views
- test
- packages
- agent-core-v2
- src/features/goal
- test
- agent/fullCompaction
- features/goal
- agent-core
- src/agent
- compaction
- goal
- injection
- turn
- test
- agent
- compaction
- injection
- tools
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | | - | |
| 2 | + | |
3 | 3 | | |
4 | 4 | | |
Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 0 additions & 1 deletion
This file was deleted.
0 commit comments