feat(ui): implement refreshed UX for Composer layout

- Promotes refreshed multi-row status area and footer as the default experience.
- Stabilizes Composer row heights to prevent layout 'jitter' during typing and model turns.
- Unifies active hook status and model loading indicators into a single, stable Row 1.
- Refactors settings to use backward-compatible 'Hide' booleans (ui.hideStatusTips, ui.hideStatusWit).
- Removes vestigial context usage bleed-through logic in minimal mode to align with global UX direction.
- Relocates toast notifications to the top status row for improved visibility.
- Updates all CLI UI snapshots and architectural tests to reflect the stabilized layout.
This commit is contained in:
Keith Guerin
2026-03-17 23:03:55 -07:00
parent 4ecb4bb24b
commit d726c194ab
48 changed files with 1716 additions and 1134 deletions

View File

@@ -164,7 +164,7 @@ import { ConsecaSafetyChecker } from '../safety/conseca/conseca.js';
import type { AgentLoopContext } from './agent-loop-context.js';
export interface AccessibilitySettings {
/** @deprecated Use ui.loadingPhrases instead. */
/** @deprecated Use ui.statusHints instead. */
enableLoadingPhrases?: boolean;
screenReader?: boolean;
}

View File

@@ -303,6 +303,7 @@ export class HookEventHandler {
coreEvents.emitHookStart({
hookName: this.getHookName(config),
eventName,
source: config.source,
hookIndex: index + 1,
totalHooks: plan.hookConfigs.length,
});

View File

@@ -88,9 +88,12 @@ export interface HookPayload {
* Payload for the 'hook-start' event.
*/
export interface HookStartPayload extends HookPayload {
/**
* The source of the hook configuration.
*/
source?: string;
/**
* The 1-based index of the current hook in the execution sequence.
* Used for progress indication (e.g. "Hook 1/3").
*/
hookIndex?: number;
/**