Commit graph

23 commits

Author SHA1 Message Date
ChiGao
70396d1276
feat: optimize compact mode UX — shortcuts, settings sync, and safety (#3100)
* feat: optimize compact mode UX — shortcuts, settings sync, and safety improvements

- Add Ctrl+O to keyboard shortcuts list (?) and /help command
- Sync compact mode toggle from Settings dialog with CompactModeContext
- Protect tool approval prompts from being hidden in compact mode
  (MainContent forces live rendering during WaitingForConfirmation)
- Remove snapshot freezing on toggle — treat as persistent preference,
  not temporary peek (differs from Claude Code's session-scoped model)
- Add compact mode tip to startup Tips rotation for non-intrusive discovery
- Remove compact mode indicator from footer to reduce UI clutter
- Add competitive analysis design doc (EN + ZH) comparing with Claude Code
- Update user docs (settings.md) and i18n translations (en/zh/ru/pt)

Relates to #3047, #2767, #2770

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* refactor: remove frozenSnapshot dead code and Chinese design doc

- Remove frozenSnapshot state, useEffect, and all related logic from
  AppContainer, MainContent, CompactModeContext, and test files
- Simplify MainContent to always render live pendingHistoryItems
- Delete compact-mode-design-zh.md (redundant Chinese translation)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: address PR review feedback for compact mode optimization

- Add refreshStatic() call after setCompactMode in SettingsDialog
  so already-rendered Static history updates immediately
- Fix outdated column split comment in KeyboardShortcuts (5+4+4)
- Update design doc: remove all frozenSnapshot references, renumber
  optimization recommendations, fix file reference descriptions
- Add missing i18n keys for de.js and ja.js locales
- Add test for SettingsDialog compact mode sync with CompactModeContext

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: prevent subagent confirmation from being hidden in compact mode

hasConfirmingTool only checks ToolCallStatus.Confirming, but subagent
approvals arrive via resultDisplay.pendingConfirmation while the tool
status remains Executing. Add hasSubagentPendingConfirmation to the
showCompact guard so tool groups with pending subagent confirmations
are always force-expanded.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: force show subagent confirmation result in compact mode

The previous fix (47ee03c) correctly force-expanded the tool group
wrapper when a subagent had pending confirmation, but each inner
ToolMessage still hid its resultDisplay due to compactMode check,
which hid the AgentExecutionDisplay containing the inline confirmation
UI.

Add isAgentWithPendingConfirmation to forceShowResult conditions so
the inner AgentExecutionDisplay is rendered even in compact mode.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(compact-mode): merge consecutive tool groups across hidden items

In compact mode, sequential tool calls across multiple LLM turns each
produced a separate bordered box, defeating the "compact" intent. The
model typically emits a `gemini_thought` between consecutive tool calls,
which is hidden in compact mode — so visually the boxes look adjacent,
but in `history` they are separated by hidden items.

This commit adds render-time merging of consecutive tool_group history
items, where "consecutive" allows hidden-in-compact items
(`gemini_thought`, `gemini_thought_content`) between them.

Key pieces:
- New `mergeCompactToolGroups` utility that merges adjacent mergeable
  tool_groups, skipping hidden items between them. Force-expand
  conditions (Confirming/Error tools, subagent pending confirmation,
  user-initiated, focused embedded shell) preserve group boundaries so
  authorization prompts, errors, and shell focus stay visible.
- `MainContent.tsx` applies the merger only when `compactMode === true`
  (verbose mode is unchanged) and calls `refreshStatic()` when a merge
  consolidates items, because Ink's `<Static>` is append-only and
  cannot replace already-committed terminal content.
- `CompactToolGroupDisplay.tsx` shows a `× N` count when a merged
  group contains more than one tool, matching the existing single-turn
  multi-tool display style.
- 19 unit tests covering empty/single/multiple groups, hidden-item
  skipping (the 8-tool real-world scenario), force-expand boundaries,
  mixed tool types, and complex sequences.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: 秦奇 <gary.gq@alibaba-inc.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 09:29:24 +08:00
LaZzyMan
0eee42fa6a fix: correct schema field name for context.loadFromIncludeDirectories
The schema incorrectly defined the field as 'loadMemoryFromIncludeDirectories'
while the migration map and documentation specified 'loadFromIncludeDirectories'.
This caused user configurations to be ignored.

Changes:
- Rename schema field from loadMemoryFromIncludeDirectories to loadFromIncludeDirectories
- Update all references in config loading and UI components
- Update test cases to reflect the correct field name

Fixes #1603
2026-01-26 15:09:36 +08:00
tanzhenxin
b91878200c (chore)fix: test fails on Windows CI 2026-01-20 19:01:24 +08:00
tanzhenxin
fd6c7364e8 (chore)fix: test fails on Windows CI 2026-01-20 17:55:36 +08:00
tanzhenxin
4ae8584c81 feat(cli): support LLM output language configuration in Settings Dialog 2026-01-20 17:00:19 +08:00
tanzhenxin
046559408b Merge branch 'main' into feat/cli-welcome-screen 2026-01-19 20:28:48 +08:00
tanzhenxin
8b5f198e3c chore: clean up orphaned bfsFileSearch code and discoveryMaxDirs setting 2026-01-19 14:10:42 +08:00
tanzhenxin
c87197d420 Redesign settings dialog with curated list and view-switching UI 2026-01-18 21:56:33 +08:00
tanzhenxin
b804b1f48a feat: Redesign CLI welcome screen and improve visual consistency 2026-01-16 11:48:31 +08:00
tanzhenxin
e9036daa8d fix failed unit tests 2025-12-13 21:14:05 +08:00
tanzhenxin
07069f00d1
feat: remove prompt completion feature (#1076) 2025-11-20 14:36:51 +08:00
Mingholy
d0e76c76a8
refactor(auth): save authType after successfully authenticated (#1036) 2025-11-19 11:21:46 +08:00
tanzhenxin
eb95c131be
Sync upstream Gemini-CLI v0.8.2 (#838) 2025-10-23 09:27:04 +08:00
Mingholy
d3476a2d47 fix: lint errors 2025-09-16 20:19:44 +08:00
Mingholy
f599cda7d2 fix: replace branding keywords to avoid ambiguity 2025-09-16 19:57:33 +08:00
Gal Zahavi
f22263c9e8
refactor: refactor settings to a nested structure (#7244) 2025-08-28 01:39:45 +00:00
Billy Biggs
04953d60c1
Introduce system defaults (vs system overrides) (#6724) 2025-08-25 04:21:22 +00:00
Jacob Richman
29699274bb
feat(settings) support editing string settings. (#6732) 2025-08-21 23:43:56 +00:00
shrutip90
ba5309c405
Force restart on trust level change to reload settings (#6713) 2025-08-21 07:38:12 +00:00
Ali Al Jufairi
92bb4624c4
feat(settings): enhance settings management with generic setter and display hel… (#6202)
Co-authored-by: Jacob Richman <jacob314@gmail.com>
2025-08-19 02:28:45 +00:00
Jacob Richman
bd5e49c5ff
fix(input) Resolve cases where escape was broken (#6304) 2025-08-15 17:54:00 +00:00
Jacob Richman
2690123af0
Fix flaky test for SettingsDialog. (#6294) 2025-08-15 06:04:48 +00:00
Ali Al Jufairi
8a9a927544
feat(ui): add /settings command and UI panel (#4738)
Co-authored-by: Jacob Richman <jacob314@gmail.com>
2025-08-10 00:04:52 +00:00