From 74ff40703e8d2cc38b36eab42ee44cfd0fb1e021 Mon Sep 17 00:00:00 2001 From: Gerome-Elassaad Date: Mon, 15 Dec 2025 16:46:36 +1100 Subject: [PATCH 1/4] feat: add three new UI enhancement setting toggles - Add liveActionConsoleStore (default: true) - Add diffApprovalStore (default: false) - Add visualContextIndicatorStore (default: true) - Add corresponding update functions for persistence --- app/lib/stores/settings.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/lib/stores/settings.ts b/app/lib/stores/settings.ts index a31c49a9..390d2b5b 100644 --- a/app/lib/stores/settings.ts +++ b/app/lib/stores/settings.ts @@ -131,6 +131,9 @@ const SETTINGS_KEYS = { EVENT_LOGS: 'isEventLogsEnabled', PROMPT_ID: 'promptId', DEVELOPER_MODE: 'isDeveloperMode', + LIVE_ACTION_CONSOLE: 'liveActionConsoleEnabled', + DIFF_APPROVAL: 'diffApprovalEnabled', + VISUAL_CONTEXT_INDICATOR: 'visualContextIndicatorEnabled', } as const; // Initialize settings from localStorage or defaults @@ -160,6 +163,9 @@ const getInitialSettings = () => { eventLogs: getStoredBoolean(SETTINGS_KEYS.EVENT_LOGS, true), promptId: isBrowser ? localStorage.getItem(SETTINGS_KEYS.PROMPT_ID) || 'default' : 'default', developerMode: getStoredBoolean(SETTINGS_KEYS.DEVELOPER_MODE, false), + liveActionConsole: getStoredBoolean(SETTINGS_KEYS.LIVE_ACTION_CONSOLE, true), + diffApproval: getStoredBoolean(SETTINGS_KEYS.DIFF_APPROVAL, false), + visualContextIndicator: getStoredBoolean(SETTINGS_KEYS.VISUAL_CONTEXT_INDICATOR, true), }; }; @@ -171,6 +177,9 @@ export const autoSelectStarterTemplate = atom(initialSettings.autoSelec export const enableContextOptimizationStore = atom(initialSettings.contextOptimization); export const isEventLogsEnabled = atom(initialSettings.eventLogs); export const promptStore = atom(initialSettings.promptId); +export const liveActionConsoleStore = atom(initialSettings.liveActionConsole); +export const diffApprovalStore = atom(initialSettings.diffApproval); +export const visualContextIndicatorStore = atom(initialSettings.visualContextIndicator); // Helper functions to update settings with persistence export const updateLatestBranch = (enabled: boolean) => { @@ -198,6 +207,21 @@ export const updatePromptId = (id: string) => { localStorage.setItem(SETTINGS_KEYS.PROMPT_ID, id); }; +export const updateLiveActionConsole = (enabled: boolean) => { + liveActionConsoleStore.set(enabled); + localStorage.setItem(SETTINGS_KEYS.LIVE_ACTION_CONSOLE, JSON.stringify(enabled)); +}; + +export const updateDiffApproval = (enabled: boolean) => { + diffApprovalStore.set(enabled); + localStorage.setItem(SETTINGS_KEYS.DIFF_APPROVAL, JSON.stringify(enabled)); +}; + +export const updateVisualContextIndicator = (enabled: boolean) => { + visualContextIndicatorStore.set(enabled); + localStorage.setItem(SETTINGS_KEYS.VISUAL_CONTEXT_INDICATOR, JSON.stringify(enabled)); +}; + // Initialize tab configuration from localStorage or defaults const getInitialTabConfiguration = (): TabWindowConfig => { const defaultConfig: TabWindowConfig = { From a65c1e4a2564a673103a342409669ba392be93be Mon Sep 17 00:00:00 2001 From: Gerome-Elassaad Date: Mon, 15 Dec 2025 16:47:39 +1100 Subject: [PATCH 2/4] feat: extend ActionAlert with live streaming support - Add isStreaming boolean field - Add streamingOutput string field - Add progress number field for determinate progress bars --- app/types/actions.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/types/actions.ts b/app/types/actions.ts index 0d54aa38..a2494dd6 100644 --- a/app/types/actions.ts +++ b/app/types/actions.ts @@ -46,6 +46,9 @@ export interface ActionAlert { timestamp?: number; command?: string; exitCode?: number; + isStreaming?: boolean; + streamingOutput?: string; + progress?: number; } export interface SupabaseAlert { From f157b91eed04a1f3d222edadf2d36018a90dedb5 Mon Sep 17 00:00:00 2001 From: Gerome-Elassaad Date: Mon, 15 Dec 2025 16:48:35 +1100 Subject: [PATCH 3/4] feat: add awaiting-approval status to ActionStatus type - Enables diff approval workflow to mark actions pending user review --- app/lib/runtime/action-runner.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/runtime/action-runner.ts b/app/lib/runtime/action-runner.ts index b7857de1..40178748 100644 --- a/app/lib/runtime/action-runner.ts +++ b/app/lib/runtime/action-runner.ts @@ -10,7 +10,7 @@ import { validateCode } from './code-validator'; const logger = createScopedLogger('ActionRunner'); -export type ActionStatus = 'pending' | 'running' | 'complete' | 'aborted' | 'failed'; +export type ActionStatus = 'pending' | 'running' | 'complete' | 'aborted' | 'failed' | 'awaiting-approval'; export type BaseActionState = BoltAction & { status: Exclude; From 0d2dfa4812bf2ba1f58e86c2d595d36d36b88bca Mon Sep 17 00:00:00 2001 From: Gerome-Elassaad Date: Mon, 15 Dec 2025 16:51:24 +1100 Subject: [PATCH 4/4] feat: extend ContextAnnotation with file categorization - Add FileCategory type for file classification - Add optional categories field to codeContext - Add optional relevanceScores field for ranking - Add optional selectionReason field for explanation --- app/types/context.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/types/context.ts b/app/types/context.ts index 00b72ac2..4373d3f3 100644 --- a/app/types/context.ts +++ b/app/types/context.ts @@ -1,7 +1,12 @@ +export type FileCategory = 'component' | 'config' | 'style' | 'test' | 'api' | 'util' | 'other'; + export type ContextAnnotation = | { type: 'codeContext'; files: string[]; + categories?: Record; + relevanceScores?: Record; + selectionReason?: string; } | { type: 'chatSummary';