From 32d7afc08e46b0d008c700f534ffca02dd326820 Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Wed, 24 Jun 2026 12:54:50 -0700 Subject: [PATCH 001/426] =?UTF-8?q?[claude/vc-workflow]=20feat(assistive):?= =?UTF-8?q?=20Collapsible=20Tool=20Evidence=20=E2=80=94=20friendly=20tool?= =?UTF-8?q?=20names,=20compact=20one-line=20evidence?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stop rendering raw MCP tool calls as paired "Tool call started/finished: mcp__brave-search__brave_web_search" chat cards that swamp the conversation. apply_agent_ui_event now maps the raw wire name to a human-readable label (friendly_tool_name), shows transient activity in the status pill only ("Searching web…"), and emits a single compact evidence line on completion ("Web search completed · 10 results"). Raw name + full summary go to the debug log — raw tool output is debug, not chat. Pure mapping/format helpers are unit-tested (friendly names, status copy, evidence line). Authored-By: claude session_id: 14fa846e-bf98-4d35-b96c-ed95fd7c5968 date: 2026-06-24T12:54:50 PDT runtime: headless Co-Authored-By: Claude Opus 4.8 (1M context) --- app/controller/helpers.rs | 152 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 145 insertions(+), 7 deletions(-) diff --git a/app/controller/helpers.rs b/app/controller/helpers.rs index c6248ff4..e92102fe 100644 --- a/app/controller/helpers.rs +++ b/app/controller/helpers.rs @@ -429,6 +429,87 @@ async fn stream_final_text_to_chat_locally(text: &str) { } } +/// Title-case a `snake_case` / `kebab-case` identifier into readable words. +/// `brave_web_search` -> `Brave Web Search`. +fn prettify_identifier(s: &str) -> String { + let cleaned = s.replace(['_', '-'], " "); + let mut out = String::with_capacity(cleaned.len()); + for (i, word) in cleaned.split_whitespace().enumerate() { + if i > 0 { + out.push(' '); + } + let mut chars = word.chars(); + if let Some(first) = chars.next() { + out.extend(first.to_uppercase()); + out.push_str(chars.as_str()); + } + } + if out.is_empty() { s.to_string() } else { out } +} + +/// Map a raw tool identifier (often `mcp____`) to a concise, +/// human-readable label for the conversation timeline. +/// +/// Collapsible Tool Evidence: raw MCP wire names like +/// `mcp__brave-search__brave_web_search` are transport noise in a conversation — +/// the user wants to read "Web search", not the addressing scheme. This is a pure +/// function so the mapping is unit-testable without a running UI. +pub(crate) fn friendly_tool_name(raw: &str) -> String { + match raw { + "mcp__brave-search__brave_web_search" | "brave_web_search" => return "Web search".into(), + "mcp__brave-search__brave_local_search" | "brave_local_search" => { + return "Local search".into(); + } + "mcp__brave-search__brave_news_search" | "brave_news_search" => { + return "News search".into(); + } + "mcp__brave-search__brave_image_search" | "brave_image_search" => { + return "Image search".into(); + } + "mcp__brave-search__brave_video_search" | "brave_video_search" => { + return "Video search".into(); + } + "mcp__brave-search__brave_summarizer" | "brave_summarizer" => return "Summarize".into(), + _ => {} + } + if let Some(rest) = raw.strip_prefix("mcp__") { + let mut parts = rest.splitn(2, "__"); + let server = parts.next().unwrap_or(""); + let tool = parts.next().unwrap_or(server); + let tool_pretty = prettify_identifier(tool); + if server.is_empty() || tool == server { + return tool_pretty; + } + return format!("{tool_pretty} · {}", prettify_identifier(server)); + } + prettify_identifier(raw) +} + +/// Status-pill copy while a tool is running. Conversation timeline stays for +/// conversation; transient activity lives in the status pill. +pub(crate) fn tool_running_status(friendly: &str) -> String { + let lower = friendly.to_lowercase(); + if lower.contains("web search") { + "Searching web…".to_string() + } else if lower.contains("search") { + "Searching…".to_string() + } else { + format!("Running {friendly}…") + } +} + +/// Compact one-line evidence entry for a completed tool call. Replaces the old +/// pair of raw "Tool call started/finished: mcp__…" cards with a single readable +/// line. The full raw name + summary still goes to the debug log. +pub(crate) fn tool_evidence_line(friendly: &str, summary: &str) -> String { + let summary = summary.trim(); + if summary.is_empty() { + format!("{friendly} completed") + } else { + format!("{friendly} completed · {summary}") + } +} + async fn apply_agent_ui_event(event: AgentUiEvent, overlay_state: &mut AgentUiOverlayState) { match event { AgentUiEvent::TextDelta(delta) => { @@ -461,15 +542,22 @@ async fn apply_agent_ui_event(event: AgentUiEvent, overlay_state: &mut AgentUiOv crate::ui::voice_chat::append_voice_chat_reasoning_delta(&delta); } AgentUiEvent::ToolExecuting { name, .. } => { - crate::ui::voice_chat::update_voice_chat_status(&format!("Tool running: {name}")); - crate::ui::voice_chat::add_voice_chat_system_message(&format!( - "Tool call started: {name}" - )); + // Collapsible Tool Evidence: no per-start chat card. The status pill + // communicates activity; the timeline stays for conversation. The raw + // wire name is debug-only. + let friendly = friendly_tool_name(&name); + debug!("Tool executing: {name} -> {friendly}"); + crate::ui::voice_chat::update_voice_chat_status(&tool_running_status(&friendly)); } AgentUiEvent::ToolResult { name, summary, .. } => { - crate::ui::voice_chat::update_voice_chat_status("Thinking... (70%)"); - crate::ui::voice_chat::add_voice_chat_system_message(&format!( - "Tool call finished: {name} ({summary})" + // One compact, human-readable evidence line per completed call instead + // of the raw "Tool call finished: mcp__…" card. Raw name + full summary + // are kept in the debug log (raw tool output is debug, not chat). + let friendly = friendly_tool_name(&name); + debug!("Tool result: {name} -> {friendly} | raw summary: {summary}"); + crate::ui::voice_chat::update_voice_chat_status("Thinking…"); + crate::ui::voice_chat::add_voice_chat_system_message(&tool_evidence_line( + &friendly, &summary, )); } AgentUiEvent::Done => {} @@ -1094,6 +1182,56 @@ mod tests { assert_eq!(chunks.concat(), "Zażółć gęślą jaźń"); } + // ── Collapsible Tool Evidence: friendly tool-name mapping ─────────────── + + #[test] + fn friendly_tool_name_maps_known_brave_tools() { + assert_eq!( + friendly_tool_name("mcp__brave-search__brave_web_search"), + "Web search" + ); + assert_eq!(friendly_tool_name("brave_web_search"), "Web search"); + assert_eq!( + friendly_tool_name("mcp__brave-search__brave_news_search"), + "News search" + ); + } + + #[test] + fn friendly_tool_name_prettifies_unknown_mcp_tools() { + // Unknown mcp__server__tool falls back to " · " — never the + // raw wire name in the conversation timeline. + assert_eq!( + friendly_tool_name("mcp__github__create_issue"), + "Create Issue · Github" + ); + // Bare snake_case identifier is title-cased. + assert_eq!(friendly_tool_name("read_file"), "Read File"); + // The raw mcp__ wire form must never survive verbatim. + assert!(!friendly_tool_name("mcp__github__create_issue").contains("mcp__")); + } + + #[test] + fn tool_running_status_is_human_readable() { + assert_eq!(tool_running_status("Web search"), "Searching web…"); + assert_eq!(tool_running_status("Local search"), "Searching…"); + assert_eq!( + tool_running_status("Create Issue · Github"), + "Running Create Issue · Github…" + ); + } + + #[test] + fn tool_evidence_line_is_compact() { + assert_eq!( + tool_evidence_line("Web search", "10 results"), + "Web search completed · 10 results" + ); + assert_eq!(tool_evidence_line("Summarize", ""), "Summarize completed"); + // No raw transport noise leaks into the evidence line. + assert!(!tool_evidence_line("Web search", "10 results").contains("mcp__")); + } + struct NoopTestProvider; #[async_trait] From b1413b1cac66b289c997d300203f482d99fc2bd5 Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Wed, 24 Jun 2026 12:55:09 -0700 Subject: [PATCH 002/426] =?UTF-8?q?[claude/vc-workflow]=20feat(theme):=20L?= =?UTF-8?q?ight=20Mode=20Semantic=20Contrast=20=E2=80=94=20deterministic?= =?UTF-8?q?=20token=20foundation=20+=20WCAG=20proof?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a contrast token module with the operator's canonical Light/Dark palettes. The existing ui_colors surfaces are vibrancy-derived (controlBackgroundColor over a HUDWindow material that reads dark regardless of appearance) — in Light Mode the conversation body goes dark while labelColor stays near-black, the reported low-contrast bug. These tokens are deterministic and appearance-resolved (is_dark_appearance reads NSApplication.effectiveAppearance): blur/vibrancy never decides text contrast. Tokens are plain hex data, so the acceptance contract is proven by pure WCAG unit tests (primary/secondary/input text >= 4.5:1, muted/placeholder/toolbar icons >= 3:1, light-is-light/dark-is-dark) with no running UI. AppKit view wiring is intentionally NOT done here — it needs visual GUI verification and is specced as a follow-up in the workflow report. Authored-By: claude session_id: 14fa846e-bf98-4d35-b96c-ed95fd7c5968 date: 2026-06-24T12:55:09 PDT runtime: headless Co-Authored-By: Claude Opus 4.8 (1M context) --- app/ui/shared/helpers/mod.rs | 327 +++++++++++++++++++++++++++++++++++ pico.save | 87 ---------- 2 files changed, 327 insertions(+), 87 deletions(-) delete mode 100644 pico.save diff --git a/app/ui/shared/helpers/mod.rs b/app/ui/shared/helpers/mod.rs index b70eee3d..3fc0e89a 100644 --- a/app/ui/shared/helpers/mod.rs +++ b/app/ui/shared/helpers/mod.rs @@ -417,6 +417,333 @@ pub mod ui_colors { } } +// ============================================================================ +// Light Mode Semantic Contrast +// ============================================================================ +// +// The existing `ui_colors` surfaces are vibrancy-derived (controlBackgroundColor +// + alpha over a HUDWindow material). That material reads *dark regardless of the +// system appearance*, so in Light Mode the conversation body is dark while +// `labelColor` is near-black → dark text on a dark surface (the reported bug). +// +// This module provides DETERMINISTIC, appearance-resolved tokens for text-bearing +// regions: blur/vibrancy must never decide text contrast. Tokens are plain data +// (hex), so the WCAG contrast contract is proven by pure unit tests without a +// running UI. The NSColor accessors are thin wrappers that pick the palette from +// the live `NSAppearance`. + +pub mod contrast { + use super::Id; + use super::color_rgba; + use objc::runtime::Class; + use objc::{msg_send, sel, sel_impl}; + + /// One semantic color: 24-bit RGB plus an alpha (for surfaces meant to sit on + /// `window_background`). Text tokens are fully opaque (`alpha == 1.0`). + #[derive(Clone, Copy, Debug)] + pub struct Token { + pub rgb: u32, + pub alpha: f64, + } + + impl Token { + const fn opaque(rgb: u32) -> Self { + Token { rgb, alpha: 1.0 } + } + const fn with_alpha(rgb: u32, alpha: f64) -> Self { + Token { rgb, alpha } + } + /// Split into linear-space-free sRGB components in 0.0..=1.0. + pub fn srgb(self) -> (f64, f64, f64) { + let r = ((self.rgb >> 16) & 0xFF) as f64 / 255.0; + let g = ((self.rgb >> 8) & 0xFF) as f64 / 255.0; + let b = (self.rgb & 0xFF) as f64 / 255.0; + (r, g, b) + } + } + + /// The full deterministic palette for one appearance. + #[derive(Clone, Copy, Debug)] + pub struct Palette { + pub window_background: Token, + pub conversation_surface: Token, + pub message_surface: Token, + pub message_border: Token, + pub primary_text: Token, + pub secondary_text: Token, + pub muted_text: Token, + pub input_background: Token, + pub input_border: Token, + pub input_text: Token, + pub placeholder_text: Token, + pub toolbar_background: Token, + pub toolbar_icon: Token, + pub toolbar_icon_muted: Token, + pub accent_purple: Token, + pub accent_warm: Token, + } + + /// Light Mode: light readable surfaces, dark text. Values are the operator's + /// canonical token table. + pub const LIGHT: Palette = Palette { + window_background: Token::opaque(0xF6F3EE), + conversation_surface: Token::with_alpha(0xFFFFFF, 0.902), // #FFFFFFE6 + message_surface: Token::opaque(0xFFFFFF), + message_border: Token::opaque(0xD8D2C8), + primary_text: Token::opaque(0x1C1B18), + secondary_text: Token::opaque(0x5F5A52), + muted_text: Token::opaque(0x7A746C), + input_background: Token::with_alpha(0xFFFFFF, 0.949), // #FFFFFFF2 + input_border: Token::opaque(0xD0CBC2), + input_text: Token::opaque(0x1C1B18), + placeholder_text: Token::opaque(0x756F67), + toolbar_background: Token::with_alpha(0xF3EFE8, 0.902), // #F3EFE8E6 + toolbar_icon: Token::opaque(0x38342F), + toolbar_icon_muted: Token::opaque(0x6E675F), + accent_purple: Token::opaque(0x9B4DAD), + accent_warm: Token::opaque(0xC96F4A), + }; + + /// Dark Mode: dark readable surfaces, light text. + pub const DARK: Palette = Palette { + window_background: Token::opaque(0x191919), + conversation_surface: Token::with_alpha(0x202020, 0.949), // #202020F2 + message_surface: Token::opaque(0x252525), + message_border: Token::opaque(0x3A3A3A), + primary_text: Token::opaque(0xF3F0EA), + secondary_text: Token::opaque(0xC8C1B8), + muted_text: Token::opaque(0x918A82), + input_background: Token::opaque(0x2B2B2B), + input_border: Token::opaque(0x444444), + input_text: Token::opaque(0xF3F0EA), + placeholder_text: Token::opaque(0xAAA39B), + toolbar_background: Token::with_alpha(0x202020, 0.902), // #202020E6 + toolbar_icon: Token::opaque(0xD8D3CC), + toolbar_icon_muted: Token::opaque(0x8E8880), + accent_purple: Token::opaque(0xD26BE8), + accent_warm: Token::opaque(0xE08A64), + }; + + /// Is the application currently rendering in a Dark appearance? + /// + /// Reads `NSApplication.effectiveAppearance.name` and checks for "Dark" + /// (covers `NSAppearanceNameDarkAqua` and the vibrant-dark variants). Falls + /// back to Light when AppKit is unavailable (e.g. headless test process). + pub fn is_dark_appearance() -> bool { + unsafe { + let Some(app_cls) = Class::get("NSApplication") else { + return false; + }; + let app: Id = msg_send![app_cls, sharedApplication]; + if app.is_null() { + return false; + } + let appearance: Id = msg_send![app, effectiveAppearance]; + if appearance.is_null() { + return false; + } + let name: Id = msg_send![appearance, name]; + if name.is_null() { + return false; + } + let utf8: *const std::os::raw::c_char = msg_send![name, UTF8String]; + if utf8.is_null() { + return false; + } + std::ffi::CStr::from_ptr(utf8) + .to_string_lossy() + .contains("Dark") + } + } + + /// The palette resolved against the live system appearance. + pub fn palette() -> Palette { + if is_dark_appearance() { DARK } else { LIGHT } + } + + fn ns_color(token: Token) -> Id { + let (r, g, b) = token.srgb(); + color_rgba(r, g, b, token.alpha) + } + + // Deterministic NSColor accessors for text-bearing regions. These do NOT + // depend on vibrancy — they are exact, appearance-resolved colors. + pub fn primary_text() -> Id { + ns_color(palette().primary_text) + } + pub fn secondary_text() -> Id { + ns_color(palette().secondary_text) + } + pub fn muted_text() -> Id { + ns_color(palette().muted_text) + } + pub fn conversation_surface() -> Id { + ns_color(palette().conversation_surface) + } + pub fn message_surface() -> Id { + ns_color(palette().message_surface) + } + pub fn message_border() -> Id { + ns_color(palette().message_border) + } + pub fn input_background() -> Id { + ns_color(palette().input_background) + } + pub fn input_border() -> Id { + ns_color(palette().input_border) + } + pub fn input_text() -> Id { + ns_color(palette().input_text) + } + pub fn placeholder_text() -> Id { + ns_color(palette().placeholder_text) + } + pub fn toolbar_icon() -> Id { + ns_color(palette().toolbar_icon) + } + pub fn toolbar_icon_muted() -> Id { + ns_color(palette().toolbar_icon_muted) + } + + // ── WCAG contrast math (pure; the proof that the tokens are readable) ────── + + fn linearize(c: f64) -> f64 { + if c <= 0.03928 { + c / 12.92 + } else { + ((c + 0.055) / 1.055).powf(2.4) + } + } + + fn relative_luminance((r, g, b): (f64, f64, f64)) -> f64 { + 0.2126 * linearize(r) + 0.7152 * linearize(g) + 0.0722 * linearize(b) + } + + /// Composite a (possibly translucent) token over an opaque background. + pub fn composite_over(fg: Token, bg: Token) -> (f64, f64, f64) { + let (fr, fg_, fb) = fg.srgb(); + let (br, bg_, bb) = bg.srgb(); + let a = fg.alpha; + ( + fr * a + br * (1.0 - a), + fg_ * a + bg_ * (1.0 - a), + fb * a + bb * (1.0 - a), + ) + } + + /// WCAG 2.x contrast ratio between two opaque sRGB colors (1.0..=21.0). + pub fn contrast_ratio(fg: (f64, f64, f64), bg: (f64, f64, f64)) -> f64 { + let l1 = relative_luminance(fg); + let l2 = relative_luminance(bg); + let (hi, lo) = if l1 >= l2 { (l1, l2) } else { (l2, l1) }; + (hi + 0.05) / (lo + 0.05) + } + + /// Contrast of an opaque text token placed on a surface token that is itself + /// composited over `window_background`. + pub fn text_on_surface(text: Token, surface: Token, window: Token) -> f64 { + let surface_rgb = composite_over(surface, window); + contrast_ratio(text.srgb(), surface_rgb) + } + + #[cfg(test)] + mod tests { + use super::*; + + // Acceptance contract (operator): + // primary / secondary / input text >= 4.5:1 + // muted / placeholder / toolbar icon >= 3:1 + fn assert_palette_contrast(p: Palette, label: &str) { + let win = p.window_background; + + let primary = text_on_surface(p.primary_text, p.conversation_surface, win); + assert!( + primary >= 4.5, + "{label}: primary text on conversation surface = {primary:.2}:1 (< 4.5)" + ); + + let primary_msg = text_on_surface(p.primary_text, p.message_surface, win); + assert!( + primary_msg >= 4.5, + "{label}: primary text on message surface = {primary_msg:.2}:1 (< 4.5)" + ); + + let secondary = text_on_surface(p.secondary_text, p.message_surface, win); + assert!( + secondary >= 4.5, + "{label}: secondary text on message surface = {secondary:.2}:1 (< 4.5)" + ); + + let input = text_on_surface(p.input_text, p.input_background, win); + assert!( + input >= 4.5, + "{label}: input text on input background = {input:.2}:1 (< 4.5)" + ); + + let muted = text_on_surface(p.muted_text, p.message_surface, win); + assert!( + muted >= 3.0, + "{label}: muted text on message surface = {muted:.2}:1 (< 3.0)" + ); + + let placeholder = text_on_surface(p.placeholder_text, p.input_background, win); + assert!( + placeholder >= 3.0, + "{label}: placeholder on input background = {placeholder:.2}:1 (< 3.0)" + ); + + let icon = text_on_surface(p.toolbar_icon, p.toolbar_background, win); + assert!( + icon >= 3.0, + "{label}: toolbar icon on toolbar background = {icon:.2}:1 (< 3.0)" + ); + + let icon_muted = text_on_surface(p.toolbar_icon_muted, p.toolbar_background, win); + assert!( + icon_muted >= 3.0, + "{label}: muted toolbar icon on toolbar background = {icon_muted:.2}:1 (< 3.0)" + ); + } + + #[test] + fn light_palette_meets_wcag_contract() { + assert_palette_contrast(LIGHT, "Light"); + } + + #[test] + fn dark_palette_meets_wcag_contract() { + assert_palette_contrast(DARK, "Dark"); + } + + #[test] + fn light_is_light_dark_is_dark() { + // The whole point: Light Mode uses a light surface + dark text; + // Dark Mode the inverse. Guard against accidentally swapping tables. + let light_surface = relative_luminance(LIGHT.message_surface.srgb()); + let light_text = relative_luminance(LIGHT.primary_text.srgb()); + assert!( + light_surface > light_text, + "Light Mode surface must be lighter than its text" + ); + + let dark_surface = relative_luminance(DARK.message_surface.srgb()); + let dark_text = relative_luminance(DARK.primary_text.srgb()); + assert!( + dark_text > dark_surface, + "Dark Mode text must be lighter than its surface" + ); + } + + #[test] + fn contrast_ratio_extremes_are_correct() { + let white = (1.0, 1.0, 1.0); + let black = (0.0, 0.0, 0.0); + assert!((contrast_ratio(white, black) - 21.0).abs() < 0.01); + assert!((contrast_ratio(white, white) - 1.0).abs() < 0.0001); + } + } +} + /// Apply Tafla surface treatment to a CALayer: corner radius + optional border. /// Shadows off by default — Tafla is flat pane, not bubble soup. /// diff --git a/pico.save b/pico.save deleted file mode 100644 index dda07e08..00000000 --- a/pico.save +++ /dev/null @@ -1,87 +0,0 @@ -Jesteś agentem „Codex” w trybie **read mode + plan mode**. Funkcjonalności, o których mowa, **już są wpisane w aplikację**, ale nie wszystkie są poprawnie „spięte” (integracja/przepływy). Masz wyjaśnić **dlaczego pewnych rzeczy nie spinamy** (albo czemu nie warto ich spinać „po staremu”) oraz podać **plan dalszych kroków**, żeby dopiąć minimalny zestaw funkcji znany z poprzedniej wersji — **bez tworzenia duplikatów i bez legacy structów**. - -## 1) Opis zadania (z transkryptu) -- Zidentyfikuj minimalne funkcjonalności, które były w poprzedniej wersji i powinny działać teraz. -- Sprawdź, które z nich są już obecne w kodzie, ale nie są połączone (UI ↔ backend ↔ kernel/serwisy). -- Wyjaśnij, dlaczego **nie spinamy** niektórych rzeczy (np. bo są duplikatem, bo istnieje nowy moduł robiący to samo, bo stary przepływ był błędny, bo powoduje legacy). -- Przygotuj plan działań (kolejność kroków/PR) żeby dopiąć MVP funkcji **bez duplikacji** i bez utrwalania starych struktur danych. - -## 2) Kontekst wstępny -- Projekt jest w trakcie iteracyjnego porządkowania: są stare ścieżki/duplikacje. -- Priorytet: „single source of truth”, brak dublowania logiki, brak przepisywania pod legacy. -- Celem jest spięcie minimalnych funkcji, a nie rekonstrukcja poprzedniej architektury. - ---- - -## 3) Actionable TODO (checklista) - -### Zbadaj kod -- [ ] Wypisz listę „minimalnych funkcjonalności” (MVP) na podstawie poprzedniej wersji: ekrany/komendy/flow. -- [ ] Dla każdej funkcji sprawdź w aktualnym kodzie: - - gdzie jest logika (moduł/serwis), - - gdzie jest wywołanie (UI/command/router), - - gdzie jest brakujące ogniwo (np. brak rejestracji command, brak eventu, brak wstrzyknięcia zależności). -- [ ] Zidentyfikuj obecne moduły, które już realizują te funkcje i mogą być „źródłem prawdy”. -- [ ] Znajdź legacy structy / stare DTO / stare eventy, które kuszą, żeby ich użyć ponownie. -- [ ] Zmapuj duplikacje: jeśli istnieją dwie ścieżki do tego samego celu, opisz je i wskaż, która powinna zostać. - -### Przeprowadź implementację (TYLKO PLAN – bez kodu w tym zadaniu) -- [ ] Dla każdej funkcji MVP zaproponuj **jedną** docelową ścieżkę integracji (konkret: jakie moduły, jakie API/commands, jakie typy danych). -- [ ] Ustal zasady „nie spinamy X, bo…”: - - bo to dubluje nowy moduł, - - bo prowadzi do legacy structów, - - bo nowy kontrakt jest inny i trzeba adapter, nie rewire. -- [ ] Zaproponuj plan kolejnych PR-ów: - 1) doprecyzowanie kontraktów (typy/DTO) i usunięcie nieużywanych struktur, - 2) spięcie 1. funkcji end-to-end, - 3) spięcie kolejnych funkcji, każda osobnym PR, - 4) usunięcie duplikatów i dead code po każdym etapie. -- [ ] Zaproponuj minimalny mechanizm kompatybilności, jeśli trzeba (adaptery), ale bez utrwalania legacy. - -### Sprawdź integralność (format, lint) -- [ ] Określ komendy format/lint (wg stacku) i dodaj jako „definition of done” dla PR-ów. -- [ ] W planie uwzględnij czyszczenie importów, nieużywanego kodu, dead feature flags. - -### Testy (jeśli brak to obowiązkowo napisz) -- [ ] Dla każdej funkcji MVP zaproponuj co najmniej jeden test integracyjny/e2e potwierdzający spięcie end-to-end. -- [ ] Dodaj testy kontraktowe dla granic modułów (żeby nie wróciła duplikacja). -- [ ] Zaproponuj testy regresji tam, gdzie usuwamy starą ścieżkę. - ---- - -## 4) Expected deliverables -1) **Raport „dlaczego nie spinamy X”**: lista decyzji z uzasadnieniem (duplikacja/legacy/błędny przepływ). -2) **Mapa funkcji MVP**: tabela (Funkcja → gdzie jest logika → gdzie brakuje integracji → docelowa ścieżka). -3) **Plan PR-ów**: kolejność, kryteria „done”, jakie pliki/obszary dotykamy. -4) **Plan testów**: co testujemy i jak uruchamiamy. - ---- - -## 5) Report expectation -- Konkretne ścieżki w repo i nazwy modułów. -- Jasne wskazanie „single source of truth”. -- Zero przenoszenia starych struktur danych, jeśli są zbędne — zamiast tego adapter lub nowy kontrakt. - ---- - -## Appendix: tooling + zasady anty–technical debt -**Tooling:** -- `rg` do znajdowania punktów integracji -- `loctree` (jeśli dostępne) do mapy katalogów -- Rust: `cargo fmt`, `cargo clippy`, `cargo test` -- TS: `eslint`, `prettier`, `pnpm test` (jeśli dotyczy) - -**Zasady anty–technical debt:** -- Nie dokładamy nowej warstwy „na stare” tylko dlatego, że kiedyś działało. -- Jedna funkcja = jedno źródło prawdy; reszta to wywołania/adaptory. -- Po spięciu funkcji usuń starą ścieżkę i martwe struktury. -- Brak „tymczasowych” duplikatów bez planu usunięcia. - ---- - -**Call to action:** -Przeanalizuj aktualny kod, wskaż które funkcje MVP są już obecne i gdzie brakuje spięcia, wyjaśnij które rewire są zbędne i przygotuj plan dopięcia MVP bez duplikatów i legacy structów. - -======================= -**„Duplikat w kodzie to jak drugi pacjent z tą samą kartą — niby szybciej, a potem nikt nie wie, który wynik jest prawdziwy (งಠ_ಠ)ง”** -======================= From 030e075fc054d53370277498501781824d5037b9 Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Wed, 24 Jun 2026 14:18:29 -0700 Subject: [PATCH 003/426] [claude/vc-workflow] fix(lexicon): deterministic protected-term preservation across STT + LLM pipeline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Custom-dictionary preservation regressed: proper nouns were corrupted in dictation (Loctree -> Luxury, malformed product/tool names). Root cause was twofold — (1) the protected vocabulary had no acoustic-homophone coverage and most operator/tool/agent names were absent from the builtin lexicon, and (2) the AI formatting/assistive pass consumed lexicon'd text but its OUTPUT was never re-run through the lexicon, so the LLM could silently rewrite proper nouns with no deterministic guard after it. Repair (smallest safe, central — repairs the existing mechanism, no parallel system): - assets/protected_terms.jsonl: curated proper-noun source (CodeScribe, VetCoders, Vibecrafted, AICX, MCP, GitHub, Loctree, Fn Shift, Living Intent Queue, Assistive Talk Anytime, Collapsible Tool Evidence, Light Mode Semantic Contrast, Claude, Codex, ...). Loaded via a case-normalizing loader so "aicx" -> "AICX" works; hand-vetted so ordinary words (rust/rest/diesel) are never capitalized. - assets/programming.jsonl: loctree entry canonicalized to brand "Loctree" and given acoustic homophones (luxury, luxery, lux tree) for the reported bug. - stream_postprocess.rs: store protected canonicals; expose pub apply_lexicon() (deterministic, idempotent) and protected_terms_lost() for downstream guards. - ai_formatting.rs: re-apply the lexicon to accepted LLM output (formatting + assistive) so the AI pass can no longer silently corrupt operator vocabulary. - qube_report.rs: quality-loop check flags protected terms present pre-AI but lost post-AI, surfacing technical-name corruption to the operator. - Regression tests: Loctree-not-Luxury, brand casing (CodeScribe/AICX/MCP/ GitHub), multiword phrases (Fn Shift/Living Intent Queue/Assistive Talk Anytime), no-overcorrection of ordinary language, protected_terms_lost, and apply_lexicon idempotency. Gates: cargo fmt --check, cargo check --workspace, cargo clippy -p codescribe-core -- -D warnings, cargo test stream_postprocess (22) + ai_formatting (9) — all green. Authored-By: claude session_id: 24879cce-e545-4219-8e05-5958e372e7d7 date: 2026-06-24T14:18:07 PDT runtime: headless --- assets/programming.jsonl | 2 +- assets/protected_terms.jsonl | 21 +++ core/llm/ai_formatting.rs | 8 +- core/pipeline/stream_postprocess.rs | 248 +++++++++++++++++++++++++++- core/quality/qube_report.rs | 14 ++ 5 files changed, 289 insertions(+), 4 deletions(-) create mode 100644 assets/protected_terms.jsonl diff --git a/assets/programming.jsonl b/assets/programming.jsonl index b6a0cf9a..bd0043a4 100644 --- a/assets/programming.jsonl +++ b/assets/programming.jsonl @@ -73,7 +73,7 @@ {"term": "idempotent", "mispronunciations": ["ajdempotent", "idem potent", "idem potent"], "category": "net"} {"term": "jq", "mispronunciations": ["dżej ku", "jot ku", "dżej kiu"], "category": "cmd"} {"term": "latency", "mispronunciations": ["lejten si", "lejten sji", "lej ten si"], "category": "net"} -{"term": "loctree", "mispronunciations": ["log tree", "log three", "log 3", "log3", "loc tree", "lock tree", "locktree", "lock three", "logTree", "logtri", "locktri", "loktree", "loktri", "eloksy", "e loksy", "eloksji", "lock3", "LOCK3", "lok 3"], "category": "tools"} +{"term": "Loctree", "mispronunciations": ["loctree", "log tree", "log three", "log 3", "log3", "loc tree", "lock tree", "locktree", "lock three", "logTree", "logtri", "locktri", "loktree", "loktri", "eloksy", "e loksy", "eloksji", "lock3", "LOCK3", "lok 3", "luxury", "luxery", "luxujri", "lux tree", "luxe tree", "lakszeri", "lukstri"], "category": "tools"} {"term": "merge", "mispronunciations": ["merdż", "merdżu"], "category": "git"} {"term": "mlx_embeddings", "mispronunciations": ["em el eks embeddings", "mlx embeddings", "emeliks embeddings"], "category": "ai"} {"term": "multipart/form-data", "mispronunciations": ["multi part form data", "multi part formdejta", "multipart form data"], "category": "net"} diff --git a/assets/protected_terms.jsonl b/assets/protected_terms.jsonl new file mode 100644 index 00000000..5d5c7bf8 --- /dev/null +++ b/assets/protected_terms.jsonl @@ -0,0 +1,21 @@ +{"term": "Loctree", "mispronunciations": ["loctree", "loktree", "luxury", "luxery", "lux tree"], "category": "protected"} +{"term": "CodeScribe", "mispronunciations": ["code scribe", "codescribe", "Codescribe", "codeScribe", "kod scribe", "kod skrajb", "kodeskrajb", "kod-scribe"], "category": "protected"} +{"term": "VetCoders", "mispronunciations": ["vet coders", "vetcoders", "Vetcoders", "vet koders", "wetkoders", "vetkoderzy"], "category": "protected"} +{"term": "Vibecrafted", "mispronunciations": ["vibe crafted", "vibecrafted", "vibekrafted", "wibe krafted", "vajbkrafted", "wajbkrafted"], "category": "protected"} +{"term": "AICX", "mispronunciations": ["a i c x", "aicx", "Aicx", "ai cx", "ai-cx", "a-i-c-x", "ajsiks", "ej aj si eks"], "category": "protected"} +{"term": "MCP", "mispronunciations": ["m c p", "mcp", "Mcp", "m-c-p", "em see pee", "em si pi"], "category": "protected"} +{"term": "GitHub", "mispronunciations": ["git hub", "github", "Github", "git-hub", "githab", "git hab"], "category": "protected"} +{"term": "Brave Search", "mispronunciations": ["brave search", "brave serch", "brejw search", "brave-search"], "category": "protected"} +{"term": "Responses API", "mispronunciations": ["responses api", "response api", "responses a p i", "responses ej pi aj"], "category": "protected"} +{"term": "Fn Shift", "mispronunciations": ["fn shift", "fun shift", "fan shift", "effen shift", "ef en shift", "f n shift"], "category": "protected"} +{"term": "Living Intent Queue", "mispronunciations": ["living intent queue", "living intent kju", "livingintent queue", "living intent kju"], "category": "protected"} +{"term": "Assistive Talk Anytime", "mispronunciations": ["assistive talk anytime", "asistive talk anytime", "assistive talk any time", "assistiv talk anytime"], "category": "protected"} +{"term": "Collapsible Tool Evidence", "mispronunciations": ["collapsible tool evidence", "collapsable tool evidence", "collapsible tool evidens"], "category": "protected"} +{"term": "Light Mode Semantic Contrast", "mispronunciations": ["light mode semantic contrast", "light-mode semantic contrast", "light mode semantik contrast"], "category": "protected"} +{"term": "Emil", "mispronunciations": ["emil", "emyl", "emiel"], "category": "protected"} +{"term": "Emilio", "mispronunciations": ["emilio", "emiljo", "emilijo"], "category": "protected"} +{"term": "Claude", "mispronunciations": ["claude", "klod", "klałd", "kload", "klat", "klołd"], "category": "protected"} +{"term": "Codex", "mispronunciations": ["kodeks", "kodex", "codeks", "codex'a", "codeksu"], "category": "protected"} +{"term": "Grok", "mispronunciations": ["grock", "grok ej aj", "grok ai"], "category": "protected"} +{"term": "Gemini", "mispronunciations": ["gemini", "Gemini ej aj", "dżemini", "dzemini", "dżeminaj"], "category": "protected"} +{"term": "Whisper", "mispronunciations": ["łisper", "łysper", "uisper", "łispr"], "category": "protected"} diff --git a/core/llm/ai_formatting.rs b/core/llm/ai_formatting.rs index 8d107570..ce2eaebc 100644 --- a/core/llm/ai_formatting.rs +++ b/core/llm/ai_formatting.rs @@ -1020,7 +1020,13 @@ pub async fn format_text_with_status_channels( }; if let Some(output) = result_opt { - let formatted = output.assistant_text; + // Deterministic protected-vocabulary pass AFTER the LLM. The model can + // silently corrupt proper nouns ("Loctree" -> "Luxury") or drop + // operator/tool/agent names while rewriting prose; re-applying the + // lexicon restores any registered mispronunciation to its canonical + // form. Safe + idempotent: it only rewrites known variants, never + // ordinary language. Applies to both formatting and assistive modes. + let formatted = crate::stream_postprocess::apply_lexicon(&output.assistant_text); let reasoning_text = output.reasoning_text; // Detect AI refusal responses (OpenAI content policy) diff --git a/core/pipeline/stream_postprocess.rs b/core/pipeline/stream_postprocess.rs index 0aad358b..837ed748 100644 --- a/core/pipeline/stream_postprocess.rs +++ b/core/pipeline/stream_postprocess.rs @@ -16,6 +16,13 @@ const BUILTIN_LEXICONS: &[(&str, &str)] = &[( include_str!("../../assets/programming.jsonl"), )]; const SEED_JSONL: &str = include_str!("../../assets/seed.jsonl"); +/// Curated proper-noun / operator-vocabulary lexicon. Unlike the generic +/// programming/seed sources, entries here are case-normalizing: a variant that +/// differs from the canonical only by casing (e.g. "aicx" -> "AICX") still +/// produces a rewrite rule. The list is hand-vetted so capitalization is always +/// correct for these terms — generic English words (rust, rest, diesel) are NOT +/// in this file, so they never get capitalized. +const PROTECTED_TERMS_JSONL: &str = include_str!("../../assets/protected_terms.jsonl"); const DEFAULT_SIMILARITY_THRESHOLD: f32 = 0.93; const DEFAULT_NOVELTY_THRESHOLD: f32 = 0.12; @@ -87,6 +94,10 @@ struct Lexicon { custom_rules: Vec, custom_path: PathBuf, custom_mtime: Option, + /// Canonical forms of curated protected terms (proper nouns, operator + /// vocabulary). Used by `protected_terms_lost` to flag when an LLM or other + /// downstream pass silently drops or mutates a protected term. + protected_canonicals: Vec, } static GLOBAL_LEXICON: LazyLock> = LazyLock::new(|| { @@ -114,6 +125,16 @@ impl Lexicon { let seed_count = load_seed_jsonl(SEED_JSONL, "seed", &mut builtin_rules); let seed_ms = t_seed.elapsed().as_millis(); + // Protected terms load LAST among builtin sources so their brand casing + // wins over any generic earlier rule that produced a lower-cased form. + let mut protected_canonicals = Vec::new(); + let protected_count = load_protected_jsonl( + PROTECTED_TERMS_JSONL, + "protected", + &mut builtin_rules, + &mut protected_canonicals, + ); + let custom_path = Config::config_dir().join("lexicon.custom.jsonl"); let custom_mtime = fs::metadata(&custom_path) .ok() @@ -131,13 +152,15 @@ impl Lexicon { if total > 0 { info!( - "Loaded {} lexicon rules in {}ms (legacy={} in {}ms, seed={} in {}ms, custom={} in {}ms, custom_path={})", + "Loaded {} lexicon rules in {}ms (legacy={} in {}ms, seed={} in {}ms, protected={} terms={}, custom={} in {}ms, custom_path={})", total, total_ms, legacy_count, legacy_ms, seed_count, seed_ms, + protected_count, + protected_canonicals.len(), custom_count, custom_ms, custom_path.display(), @@ -154,6 +177,7 @@ impl Lexicon { custom_rules, custom_path, custom_mtime, + protected_canonicals, } } @@ -224,6 +248,51 @@ fn apply_global_lexicon(text: &str) -> String { lexicon.apply(text) } +/// Deterministically apply the global lexicon (builtin + seed + protected + +/// custom) to `text`, hot-reloading the custom file if it changed. +/// +/// This is the single deterministic protected-vocabulary pass. It is safe to run +/// at any layer (it only rewrites registered mispronunciations to their +/// canonical form) and is idempotent for canonical output. Use it to re-assert +/// operator vocabulary AFTER a non-deterministic stage such as an LLM +/// formatting/assistive pass, which can otherwise silently corrupt proper nouns +/// (e.g. "Loctree" -> "Luxury"). +pub fn apply_lexicon(text: &str) -> String { + maybe_reload_global_lexicon(); + apply_global_lexicon(text) +} + +/// Whole-word, case-insensitive containment check for a (possibly multi-word) +/// term. Mirrors the lexicon's own matching: internal whitespace is treated +/// flexibly so "Fn Shift" matches across variable spacing. +fn contains_term_ci(haystack: &str, term: &str) -> bool { + build_word_regex(term) + .map(|re| re.is_match(haystack)) + .unwrap_or(false) +} + +/// Report curated protected terms that were present in `before` but are missing +/// from `after` — i.e. silently dropped or mutated by a downstream stage +/// (typically an LLM formatting/assistive pass). Returns canonical forms in a +/// stable, deduplicated order so the quality loop and operator can see exactly +/// which operator vocabulary was lost. +pub fn protected_terms_lost(before: &str, after: &str) -> Vec { + let canonicals = { + let lexicon = GLOBAL_LEXICON + .read() + .expect("global lexicon read lock poisoned"); + lexicon.protected_canonicals.clone() + }; + + let mut lost = Vec::new(); + for term in canonicals { + if contains_term_ci(before, &term) && !contains_term_ci(after, &term) { + lost.push(term); + } + } + lost +} + fn load_legacy_jsonl(source: &str, label: &str, rules: &mut Vec) -> usize { let mut added = 0usize; for (idx, line) in source.lines().enumerate() { @@ -270,6 +339,69 @@ fn load_legacy_jsonl(source: &str, label: &str, rules: &mut Vec) -> added } +/// Load curated protected-term entries (legacy `term`+`mispronunciations` shape). +/// +/// Differs from [`load_legacy_jsonl`] in two deliberate ways: +/// 1. A variant is skipped only when it is *exactly* equal to the canonical, so +/// case-only variants ("aicx" -> "AICX") still produce a normalization rule. +/// This is safe ONLY because the source file is hand-vetted to proper nouns. +/// 2. Each canonical is recorded in `canonicals` so the quality loop can detect +/// when a protected term is lost downstream (e.g. by an LLM rewrite). +fn load_protected_jsonl( + source: &str, + label: &str, + rules: &mut Vec, + canonicals: &mut Vec, +) -> usize { + let mut added = 0usize; + for (idx, line) in source.lines().enumerate() { + let line = line.trim(); + if line.is_empty() { + continue; + } + + let entry: LegacyEntry = match serde_json::from_str(line) { + Ok(entry) => entry, + Err(e) => { + warn!( + "Protected lexicon line {} ({}) failed to parse: {}", + idx + 1, + label, + e + ); + continue; + } + }; + + if !canonicals.iter().any(|c| c == &entry.term) { + canonicals.push(entry.term.clone()); + } + + let mut all_mis = entry.mispronunciations; + if let Some(extras) = entry.extras { + all_mis.extend(extras.mispronunciations); + } + + for mis in all_mis.iter() { + // Skip only exact duplicates; case-only differences are intentional + // normalization rules (the whole point of this curated source). + if mis == &entry.term { + continue; + } + + if let Some(pattern) = build_word_regex(mis) { + rules.push(LexiconRule { + pattern, + replacement: entry.term.clone(), + }); + added += 1; + } + } + } + + added +} + fn load_seed_jsonl(source: &str, label: &str, rules: &mut Vec) -> usize { let mut added = 0usize; for (idx, line) in source.lines().enumerate() { @@ -723,7 +855,7 @@ mod tests { assert_eq!( output, - "Bede nagrywal cos o loctree i nagrywanie o loctree." + "Bede nagrywal cos o Loctree i nagrywanie o Loctree." ); } @@ -787,6 +919,7 @@ mod tests { custom_mtime: std::fs::metadata(&custom_path) .ok() .and_then(|m| m.modified().ok()), + protected_canonicals: Vec::new(), }; // No rules yet @@ -828,6 +961,7 @@ mod tests { custom_rules: Vec::new(), custom_path: custom_path.clone(), custom_mtime: None, // Force initial load + protected_canonicals: Vec::new(), }; // First reload loads the rule @@ -864,6 +998,7 @@ mod tests { custom_mtime: std::fs::metadata(&custom_path) .ok() .and_then(|m| m.modified().ok()), + protected_canonicals: Vec::new(), }; // Write custom rule @@ -955,4 +1090,113 @@ mod tests { lexicon.rule_count() ); } + + /// Build a hermetic builtin-only lexicon (programming + seed + protected), + /// with NO operator custom file, so protected-term regression assertions are + /// deterministic regardless of the host's ~/.codescribe/lexicon.custom.jsonl. + fn builtin_only_lexicon() -> Lexicon { + let mut rules = Vec::new(); + for (label, source) in BUILTIN_LEXICONS { + load_legacy_jsonl(source, label, &mut rules); + } + load_seed_jsonl(SEED_JSONL, "seed", &mut rules); + let mut canonicals = Vec::new(); + load_protected_jsonl( + PROTECTED_TERMS_JSONL, + "protected", + &mut rules, + &mut canonicals, + ); + Lexicon { + builtin_rules: rules, + custom_rules: Vec::new(), + custom_path: PathBuf::from("/nonexistent/lexicon.custom.jsonl"), + custom_mtime: None, + protected_canonicals: canonicals, + } + } + + #[test] + fn test_protected_terms_loctree_not_luxury() { + let lex = builtin_only_lexicon(); + // The reported regression: Whisper/LLM emits the acoustic homophone + // "Luxury" for the product name. The lexicon must restore "Loctree". + assert_eq!( + lex.apply("Odpalam luxury na repo"), + "Odpalam Loctree na repo" + ); + assert_eq!(lex.apply("locktree i loktree"), "Loctree i Loctree"); + // Canonical already correct stays correct. + assert_eq!(lex.apply("Loctree daje sight"), "Loctree daje sight"); + } + + #[test] + fn test_protected_terms_preserve_brand_casing() { + let lex = builtin_only_lexicon(); + assert_eq!(lex.apply("vibe crafted"), "Vibecrafted"); + assert_eq!(lex.apply("code scribe"), "CodeScribe"); + assert_eq!(lex.apply("vet coders"), "VetCoders"); + // Case-only normalization (curated protected source only). + assert_eq!(lex.apply("mam aicx w repo"), "mam AICX w repo"); + assert_eq!(lex.apply("przez mcp"), "przez MCP"); + assert_eq!(lex.apply("a i c x"), "AICX"); + assert_eq!(lex.apply("m c p"), "MCP"); + assert_eq!(lex.apply("github"), "GitHub"); + assert_eq!(lex.apply("git hub"), "GitHub"); + } + + #[test] + fn test_protected_terms_multiword_phrases() { + let lex = builtin_only_lexicon(); + assert_eq!(lex.apply("fn shift"), "Fn Shift"); + assert_eq!(lex.apply("fun shift"), "Fn Shift"); + assert_eq!(lex.apply("living intent queue"), "Living Intent Queue"); + assert_eq!( + lex.apply("assistive talk anytime"), + "Assistive Talk Anytime" + ); + // Already-correct phrases are preserved verbatim. + assert_eq!( + lex.apply("Collapsible Tool Evidence"), + "Collapsible Tool Evidence" + ); + } + + #[test] + fn test_protected_terms_do_not_overcorrect_ordinary_language() { + let lex = builtin_only_lexicon(); + // "rest", "harmony", "diesel" exist as case-only variants in + // programming.jsonl but the legacy loader skips case-equal variants, so + // ordinary English/Polish must pass through untouched. + let sentence = "I need some rest in harmony near the diesel engine"; + assert_eq!(lex.apply(sentence), sentence); + let pl = "To jest zwykłe zdanie bez żadnych nazw własnych"; + assert_eq!(lex.apply(pl), pl); + } + + #[test] + fn test_protected_terms_lost_detects_corruption() { + // Uses the GLOBAL lexicon; builtin protected canonicals (Loctree, + // CodeScribe, MCP, ...) are always present regardless of custom file. + let lost = protected_terms_lost("I run Loctree through MCP", "I run Luxury through MCP"); + assert_eq!(lost, vec!["Loctree".to_string()]); + + // Nothing lost when the term survives. + let none = protected_terms_lost("CodeScribe is great", "CodeScribe is wonderful"); + assert!(none.is_empty()); + } + + #[test] + fn test_apply_lexicon_is_idempotent_on_canonical() { + // Re-applying after an LLM pass must reach a fixed point (no oscillation / + // corruption). Uses the GLOBAL lexicon, so we only assert robustness + // properties that an operator custom file cannot flip: the pass converges + // and Loctree/AICX/MCP (which no builtin/operator rule downgrades) survive. + let once = apply_lexicon("Loctree, AICX and MCP keep working"); + let twice = apply_lexicon(&once); + assert_eq!(once, twice, "lexicon apply must be idempotent on canonical"); + assert!(once.contains("Loctree")); + assert!(once.contains("AICX")); + assert!(once.contains("MCP")); + } } diff --git a/core/quality/qube_report.rs b/core/quality/qube_report.rs index e94076e4..745d9c4c 100644 --- a/core/quality/qube_report.rs +++ b/core/quality/qube_report.rs @@ -525,6 +525,20 @@ async fn process_pair( None }; + // Protected-vocabulary audit: flag operator/tool/agent names that survived + // the post-lexicon transcript but were dropped or mutated by the AI pass. + // This makes technical-name corruption visible to the operator instead of + // silently shipping "plausible prose" that lost the intended terms. + if let (Some(post_text), Some(ai_text)) = (post.as_deref(), ai_formatted.as_deref()) { + let lost = crate::stream_postprocess::protected_terms_lost(post_text, ai_text); + if !lost.is_empty() { + errors.push(format!( + "Protected terms lost in AI formatting: {}", + lost.join(", ") + )); + } + } + let cloud = cloud_jobs.take_for(&id, &mut errors).await; let metrics_reference = match config.metrics_reference { From e6c43d611e70d7167d19259194e0f8fa8e0ae33e Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Wed, 24 Jun 2026 14:30:09 -0700 Subject: [PATCH 004/426] [claude/vc-workflow] feat(lexicon): normalize Polish operator/command vocab to code tokens MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Whisper's final-pass mangled spoken Polish UI commands — the reported goblin "schowku" -> "schopku". Add a curated operator/command vocabulary lexicon that normalizes spoken Polish UI-command phrases and their phonetic mis-hears to the canonical code token the codebase actually uses. Canonicals confirmed real and high-frequency via `loct occurrences`: clipboard=230, transcript=389, paste=168, agent=171, prompt=110, selection=82, frontmost=33, screenshot=14. - assets/operator_vocabulary.jsonl: 8 commands, seed format; variants written the way Polish actually sounds through Whisper (schowku->schofku->schopku, screenshot->skrinszot, frontmost->frontmołst, clipboard->klipbord), all collapsing to an invariant English code token (sidesteps Polish inflection). - stream_postprocess.rs: loaded via load_seed_jsonl (rules-only) so these common words never enter protected_canonicals / the loss-detection gate; operator= telemetry; wired into the builtin_only_lexicon test helper. - test_polish_ui_command_phrase_preservation: the reported goblin + command coverage + an ordinary-text no-overcorrection guard. Variants are phonetically reasoned — no live Whisper-observed store exists yet; the loct-occurrences induction loop is the follow-up for ground-truth variants. --- assets/operator_vocabulary.jsonl | 8 ++++++ core/pipeline/stream_postprocess.rs | 40 ++++++++++++++++++++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 assets/operator_vocabulary.jsonl diff --git a/assets/operator_vocabulary.jsonl b/assets/operator_vocabulary.jsonl new file mode 100644 index 00000000..22f558e7 --- /dev/null +++ b/assets/operator_vocabulary.jsonl @@ -0,0 +1,8 @@ +{"id": "op-clipboard", "canonical": "clipboard", "semantic_type": "ui_command", "register": "operator", "language": "pl", "normalization": {"enabled": true, "input_variants": ["schowek", "schowku", "schowka", "schofku", "schofka", "schopku", "schopka", "s howek", "klipbord", "klip bord", "klipboard"], "whole_word_only": true, "case_sensitive": false}} +{"id": "op-selection", "canonical": "selection", "semantic_type": "ui_command", "register": "operator", "language": "pl", "normalization": {"enabled": true, "input_variants": ["zaznaczenie", "zaznaczenia", "zaznaczeniu", "zaznaczeniem", "selekszyn", "selekszon"], "whole_word_only": true, "case_sensitive": false}} +{"id": "op-paste", "canonical": "paste", "semantic_type": "ui_command", "register": "operator", "language": "pl", "normalization": {"enabled": true, "input_variants": ["wklej", "wkleić", "wklejone", "fklej", "f klej", "fkleić", "pejst"], "whole_word_only": true, "case_sensitive": false}} +{"id": "op-screenshot", "canonical": "screenshot", "semantic_type": "ui_command", "register": "operator", "language": "pl", "normalization": {"enabled": true, "input_variants": ["skrinszot", "skrin szot", "skrinszota", "zrzut ekranu", "zżut ekranu", "z żut ekranu"], "whole_word_only": true, "case_sensitive": false}} +{"id": "op-transcript", "canonical": "transcript", "semantic_type": "ui_command", "register": "operator", "language": "pl", "normalization": {"enabled": true, "input_variants": ["transkrypt", "transkryptu", "transkrypcie", "transkrypcja", "trans skrypt", "transkript"], "whole_word_only": true, "case_sensitive": false}} +{"id": "op-frontmost", "canonical": "frontmost", "semantic_type": "ui_command", "register": "operator", "language": "pl", "normalization": {"enabled": true, "input_variants": ["frontmołst", "front mołst", "front most", "frontmoust"], "whole_word_only": true, "case_sensitive": false}} +{"id": "op-prompt", "canonical": "prompt", "semantic_type": "ui_command", "register": "operator", "language": "pl", "normalization": {"enabled": true, "input_variants": ["prompta", "promptem", "prompcie", "promt"], "whole_word_only": true, "case_sensitive": false}} +{"id": "op-agent", "canonical": "agent", "semantic_type": "ui_command", "register": "operator", "language": "pl", "normalization": {"enabled": true, "input_variants": ["agenta", "agentem", "agentowi", "ejdżent", "ejdzent"], "whole_word_only": true, "case_sensitive": false}} diff --git a/core/pipeline/stream_postprocess.rs b/core/pipeline/stream_postprocess.rs index 837ed748..8da008fd 100644 --- a/core/pipeline/stream_postprocess.rs +++ b/core/pipeline/stream_postprocess.rs @@ -16,6 +16,14 @@ const BUILTIN_LEXICONS: &[(&str, &str)] = &[( include_str!("../../assets/programming.jsonl"), )]; const SEED_JSONL: &str = include_str!("../../assets/seed.jsonl"); +/// Curated operator/command vocabulary. Spoken Polish UI-command phrases and +/// their Whisper mis-hears normalize to the canonical *code token* the codebase +/// actually uses (e.g. "schowek"/"schowku"/"schowka"/"schopku" -> "clipboard"). +/// Loaded rules-only via `load_seed_jsonl` (seed format gives whole-word + +/// case control), so these common words never enter `protected_canonicals` and +/// never trip the downstream loss-detection gate. Canonicals were confirmed +/// real and high-frequency via `loct occurrences` before being chosen. +const OPERATOR_VOCAB_JSONL: &str = include_str!("../../assets/operator_vocabulary.jsonl"); /// Curated proper-noun / operator-vocabulary lexicon. Unlike the generic /// programming/seed sources, entries here are case-normalizing: a variant that /// differs from the canonical only by casing (e.g. "aicx" -> "AICX") still @@ -125,6 +133,11 @@ impl Lexicon { let seed_count = load_seed_jsonl(SEED_JSONL, "seed", &mut builtin_rules); let seed_ms = t_seed.elapsed().as_millis(); + // Operator/command vocabulary: spoken Polish UI commands + their + // mis-hears normalize to the canonical code token. Seed format (rules + // only) keeps these common words out of `protected_canonicals`. + let operator_count = load_seed_jsonl(OPERATOR_VOCAB_JSONL, "operator", &mut builtin_rules); + // Protected terms load LAST among builtin sources so their brand casing // wins over any generic earlier rule that produced a lower-cased form. let mut protected_canonicals = Vec::new(); @@ -152,13 +165,14 @@ impl Lexicon { if total > 0 { info!( - "Loaded {} lexicon rules in {}ms (legacy={} in {}ms, seed={} in {}ms, protected={} terms={}, custom={} in {}ms, custom_path={})", + "Loaded {} lexicon rules in {}ms (legacy={} in {}ms, seed={} in {}ms, operator={}, protected={} terms={}, custom={} in {}ms, custom_path={})", total, total_ms, legacy_count, legacy_ms, seed_count, seed_ms, + operator_count, protected_count, protected_canonicals.len(), custom_count, @@ -1100,6 +1114,7 @@ mod tests { load_legacy_jsonl(source, label, &mut rules); } load_seed_jsonl(SEED_JSONL, "seed", &mut rules); + load_seed_jsonl(OPERATOR_VOCAB_JSONL, "operator", &mut rules); let mut canonicals = Vec::new(); load_protected_jsonl( PROTECTED_TERMS_JSONL, @@ -1174,6 +1189,29 @@ mod tests { assert_eq!(lex.apply(pl), pl); } + #[test] + fn test_polish_ui_command_phrase_preservation() { + // Regression class: Polish UI command phrases (and their Whisper + // mis-hears) must normalize to the canonical code token, never leak the + // garbage mutant. The reported goblin: "schowku" -> "schopku". + let lex = builtin_only_lexicon(); + // The reported mutant and the whole "schowek" inflection family collapse + // to the invariant code token (clipboard never inflects in Polish). + assert_eq!(lex.apply("wrzuć do schopku"), "wrzuć do clipboard"); + assert_eq!(lex.apply("otwórz schowek"), "otwórz clipboard"); + assert_eq!(lex.apply("wrzuć do schowka"), "wrzuć do clipboard"); + assert_eq!(lex.apply("zajrzyj do schowku"), "zajrzyj do clipboard"); + // Other operator commands normalize to their code token. + assert_eq!(lex.apply("zrób skrinszot"), "zrób screenshot"); + assert_eq!(lex.apply("zrób zrzut ekranu"), "zrób screenshot"); + assert_eq!(lex.apply("wklej to"), "paste to"); + assert_eq!(lex.apply("pokaż zaznaczenie"), "pokaż selection"); + assert_eq!(lex.apply("zapisz transkrypt"), "zapisz transcript"); + // Ordinary text without command vocabulary is untouched. + let plain = "To jest zwykłe zdanie o kotach i psach"; + assert_eq!(lex.apply(plain), plain); + } + #[test] fn test_protected_terms_lost_detects_corruption() { // Uses the GLOBAL lexicon; builtin protected canonicals (Loctree, From c4c4127631d43dd16fcb1b3c9063a55285ae00fe Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Wed, 24 Jun 2026 15:34:38 -0700 Subject: [PATCH 005/426] =?UTF-8?q?[claude/vc-justdo]=20feat(assistive):?= =?UTF-8?q?=20Talk=20Anytime=20=E2=80=94=20accept=20assistive=20hotkey=20w?= =?UTF-8?q?hile=20agent=20streams?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Open the agent-send hotkey gate for assistive "Talk Anytime" input. While a previously-dispatched agent turn streams in the background (State::Idle, mic free), should_block_hotkey_during_agent_send no longer ignores assistive start events — the new voice intent reaches the recording path and is captured into the existing pending-follow-up buffer (should_capture_pending_followup → get_or_create_pending_followup_index) instead of being dropped. Discriminator is precise: only assistive start events pass; raw dictation starts stay blocked (no barging a live turn), and the gate acts only at Idle so the State::Busy audio/transcription pipeline stays fully protected — no two audio pipelines run concurrently. The predicate is now pure (in-flight flag passed in) and unit-tested over the full matrix. The hold/toggle dictation path keeps State::Busy across its awaited agent turn (serial_lock held), so extending Talk Anytime there needs the agent send detached — documented as the follow-up, not cut blind in a headless run. Authored-By: claude session_id: 3947aa7d-e205-4f49-bb90-dd27562c5494 date: 2026-06-24T15:34:38 PDT runtime: interactive --- app/controller/mod.rs | 53 ++++++++++++++++++-- app/controller/tests.rs | 108 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 151 insertions(+), 10 deletions(-) diff --git a/app/controller/mod.rs b/app/controller/mod.rs index 3d9d5f96..72fd3d07 100644 --- a/app/controller/mod.rs +++ b/app/controller/mod.rs @@ -650,10 +650,39 @@ fn is_hotkey_start_event(event: &HotkeyInput) -> bool { ) } -fn should_block_hotkey_during_agent_send(current_state: State, event: &HotkeyInput) -> bool { +/// An assistive *start* hotkey — FN+Shift hold-down, an assistive toggle press, +/// or any start event flagged `assistive` (Chat / Selection / assistive toggle). +/// These are the "Talk Anytime" inputs the user fires to add a new voice intent +/// while Emil/the agent is still answering. +fn is_assistive_start_event(event: &HotkeyInput) -> bool { + is_hotkey_start_event(event) && event.assistive +} + +/// Block a *new* hotkey start while a previously-dispatched agent turn is still +/// streaming. This fires only at `State::Idle` — the controller has already +/// returned the mic/transcription pipeline; the agent is answering in the +/// background (a detached `tokio::spawn`, see `setup_voice_chat_send_callback`). +/// +/// Exception — **Assistive Talk Anytime**: assistive start events are allowed +/// through so the user can record a *new* voice intent while the agent answers. +/// The resulting utterance is captured into the existing pending-follow-up +/// buffer (`should_capture_pending_followup` → `get_or_create_pending_followup_index`), +/// not dropped — the living intent grows instead of being ignored. Non-assistive +/// (raw) dictation starts stay blocked: barging a raw transcript into a live +/// agent turn is never wanted, and blocking preserves the single-pipeline +/// guarantee for the dictation path. +/// +/// `agent_send_in_flight` is passed in (rather than read from the global) so the +/// decision is a pure function and unit-testable without touching shared state. +fn should_block_hotkey_during_agent_send( + current_state: State, + event: &HotkeyInput, + agent_send_in_flight: bool, +) -> bool { current_state == State::Idle + && agent_send_in_flight && is_hotkey_start_event(event) - && helpers::is_agent_send_in_flight() + && !is_assistive_start_event(event) } fn present_agent_send_hotkey_block() { @@ -1824,7 +1853,11 @@ impl RecordingController { current_state ); - if should_block_hotkey_during_agent_send(current_state, &event) { + if should_block_hotkey_during_agent_send( + current_state, + &event, + helpers::is_agent_send_in_flight(), + ) { present_agent_send_hotkey_block(); return Ok(()); } @@ -1967,7 +2000,19 @@ impl RecordingController { ); } - // Ignore all hotkeys when busy + // Ignore all hotkeys when busy. `State::Busy` covers the active audio + // pipeline: recorder drain → transcription → (for the hold/toggle + // dictation path) the final assistive agent turn, which is awaited while + // `serial_lock` is held. Letting a second start through here would race a + // live audio/transcription pipeline, so it stays blocked unconditionally + // (acceptance: "non-assistive busy/audio/transcription paths remain + // protected; do not run two audio pipelines concurrently"). + // + // Assistive "Talk Anytime" is handled one gate up, at the `Idle` agent- + // send gate (`should_block_hotkey_during_agent_send`): once a turn is + // dispatched in the background the controller returns to `Idle` and the + // mic is free, which is the only state where overlapping a new recording + // is safe. if current_state == State::Busy { info!("App busy; ignoring hotkey event"); return Ok(()); diff --git a/app/controller/tests.rs b/app/controller/tests.rs index 44c85a30..2c10bfe0 100644 --- a/app/controller/tests.rs +++ b/app/controller/tests.rs @@ -523,21 +523,26 @@ fn test_toggle_stop_event_preserves_active_session_identity() { #[tokio::test] #[serial] -async fn test_agent_send_in_flight_blocks_new_hotkey_starts() { +async fn test_agent_send_in_flight_blocks_nonassistive_hotkey_starts() { + // Contract (preserved): a *raw* dictation start fired while a background + // agent turn is still streaming stays blocked — barging a raw transcript + // into a live agent turn is never wanted, and it preserves the single audio + // pipeline. The block lands before the mode-flag section, so the controller + // stays Idle with default flags. let controller = RecordingController::new(); helpers::set_agent_send_in_flight_for_test(true); - let selection_hold = HotkeyInput { + let raw_hold = HotkeyInput { key_type: HotkeyType::Hold, action: HotkeyAction::Down, - assistive: true, - hold_mode: HoldMode::Selection, - force_raw: false, + assistive: false, + hold_mode: HoldMode::Raw, + force_raw: true, force_ai: false, }; controller - .handle_hotkey_event(selection_hold) + .handle_hotkey_event(raw_hold) .await .expect("agent-busy hotkey block should be non-fatal"); @@ -547,6 +552,97 @@ async fn test_agent_send_in_flight_blocks_new_hotkey_starts() { helpers::set_agent_send_in_flight_for_test(false); } +/// Assistive Talk Anytime — the agent-send gate decision is a pure function of +/// (state, event, in-flight flag). These assertions pin the new contract +/// without spawning the heavy async recording machinery. +#[test] +fn test_assistive_talk_anytime_gate_predicate() { + let assistive_chat_hold = HotkeyInput { + key_type: HotkeyType::Hold, + action: HotkeyAction::Down, + assistive: true, + hold_mode: HoldMode::Chat, + force_raw: false, + force_ai: false, + }; + let raw_hold = HotkeyInput { + key_type: HotkeyType::Hold, + action: HotkeyAction::Down, + assistive: false, + hold_mode: HoldMode::Raw, + force_raw: true, + force_ai: false, + }; + let assistive_toggle = HotkeyInput { + key_type: HotkeyType::Toggle, + action: HotkeyAction::Press, + assistive: true, + hold_mode: HoldMode::Raw, + force_raw: false, + force_ai: false, + }; + let release = HotkeyInput { + key_type: HotkeyType::Hold, + action: HotkeyAction::Up, + assistive: true, + hold_mode: HoldMode::Chat, + force_raw: false, + force_ai: false, + }; + + // Classifier: only *start* events flagged assistive are Talk-Anytime starts. + assert!(is_assistive_start_event(&assistive_chat_hold)); + assert!(is_assistive_start_event(&assistive_toggle)); + assert!(!is_assistive_start_event(&raw_hold)); // raw start is not assistive + assert!(!is_assistive_start_event(&release)); // a release is not a start + + // Talk Anytime: an assistive start is ALLOWED through while the agent + // answers in the background (Idle + in-flight) — it must reach the recording + // path so its utterance flows into the pending-follow-up buffer. + assert!( + !should_block_hotkey_during_agent_send(State::Idle, &assistive_chat_hold, true), + "FN+Shift Talk Anytime must not be ignored while an agent turn streams" + ); + assert!( + !should_block_hotkey_during_agent_send(State::Idle, &assistive_toggle, true), + "assistive toggle Talk Anytime must not be ignored while an agent turn streams" + ); + + // Protected: a raw dictation start stays blocked during a streaming turn. + assert!( + should_block_hotkey_during_agent_send(State::Idle, &raw_hold, true), + "raw dictation must not barge a live agent turn" + ); + + // No agent in flight → nothing is gated (normal idle dictation works). + assert!(!should_block_hotkey_during_agent_send( + State::Idle, + &raw_hold, + false + )); + assert!(!should_block_hotkey_during_agent_send( + State::Idle, + &assistive_chat_hold, + false + )); + + // Non-start events (key release) are never blocked by this gate, so a hold + // release can always cancel/finish even mid-turn. + assert!(!should_block_hotkey_during_agent_send( + State::Idle, + &release, + true + )); + + // The gate only acts at Idle: while audio/transcription holds State::Busy the + // separate Busy guard owns the decision (this gate stays out of its way). + assert!(!should_block_hotkey_during_agent_send( + State::Busy, + &raw_hold, + true + )); +} + fn make_final_pass_verdict( text: &str, speech_pct: f32, From c705e5a048bbc66ebf93155765945fa5ebfd07dd Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Thu, 25 Jun 2026 15:48:07 -0700 Subject: [PATCH 006/426] [claude/vc-workflow] feat(assistive): group tool calls into one Tool Activity block per turn MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tool results were pushed as standalone System cards, so with several tools per assistant turn they interleaved with the streaming answer — the reader had to reconstruct execution order. Now every tool event of one turn folds into a single, collapsible Tool Activity evidence block, rendered separate from the assistant answer (which stays one uninterrupted bubble). - core: AgentUiEvent::ToolResult carries is_error (the failure signal already computed in session.rs but dropped at the event boundary); summarize_tool_result now surfaces the real error reason (e.g. "empty index") instead of a generic "N error result(s)" so failed lines read compactly. - app: new pure, unit-tested tool_activity module (ToolStatus / ToolActivityEntry / ToolActivityGroup) owns grouping + summary rendering. New ChatRole::ToolActivity + per-turn state (active_tool_activity_index + tool_activity_groups keyed by message index, mirroring message_render_modes). One block per turn; the open pointer resets when the assistant message finalizes or errors, and is cleared on new-chat / teardown. Block is expanded by default (header + compact per-tool lines), click toggles to header-only. Raw mcp__ wire names never reach the timeline; raw payloads stay in the debug log. Tests: 10 pure grouping tests (incl. operator regression sequence), 3 state-level accumulation/rendering tests, updated missing-tool session test for the new is_error field. fmt+clippy(-D warnings) clean; voice_chat 66, core agent 36 green. Authored-By: claude session_id: 79190759-87f8-4ebb-bf61-715aac30001b date: 2026-06-25T15:42:00 CEST runtime: terminal --- app/controller/helpers.rs | 53 ++-- app/ui/voice_chat/api/export.rs | 1 + app/ui/voice_chat/api/lifecycle.rs | 3 + app/ui/voice_chat/api/messages.rs | 156 +++++++++++- app/ui/voice_chat/api/mod.rs | 1 + app/ui/voice_chat/api/send.rs | 4 + app/ui/voice_chat/api/tests.rs | 209 ++++++++++++++++ app/ui/voice_chat/mod.rs | 14 +- app/ui/voice_chat/state.rs | 15 ++ app/ui/voice_chat/tool_activity.rs | 378 +++++++++++++++++++++++++++++ core/agent/event.rs | 4 + core/agent/session.rs | 46 +++- 12 files changed, 831 insertions(+), 53 deletions(-) create mode 100644 app/ui/voice_chat/tool_activity.rs diff --git a/app/controller/helpers.rs b/app/controller/helpers.rs index e92102fe..e7df455b 100644 --- a/app/controller/helpers.rs +++ b/app/controller/helpers.rs @@ -498,18 +498,6 @@ pub(crate) fn tool_running_status(friendly: &str) -> String { } } -/// Compact one-line evidence entry for a completed tool call. Replaces the old -/// pair of raw "Tool call started/finished: mcp__…" cards with a single readable -/// line. The full raw name + summary still goes to the debug log. -pub(crate) fn tool_evidence_line(friendly: &str, summary: &str) -> String { - let summary = summary.trim(); - if summary.is_empty() { - format!("{friendly} completed") - } else { - format!("{friendly} completed · {summary}") - } -} - async fn apply_agent_ui_event(event: AgentUiEvent, overlay_state: &mut AgentUiOverlayState) { match event { AgentUiEvent::TextDelta(delta) => { @@ -541,24 +529,32 @@ async fn apply_agent_ui_event(event: AgentUiEvent, overlay_state: &mut AgentUiOv // (this is what left the overlay silent). Reuses the proven append path. crate::ui::voice_chat::append_voice_chat_reasoning_delta(&delta); } - AgentUiEvent::ToolExecuting { name, .. } => { - // Collapsible Tool Evidence: no per-start chat card. The status pill - // communicates activity; the timeline stays for conversation. The raw + AgentUiEvent::ToolExecuting { name, id } => { + // Grouped Tool Activity: no per-start chat card. The status pill + // communicates live activity; the timeline stays for conversation. + // The tool is folded into this turn's single evidence block. The raw // wire name is debug-only. let friendly = friendly_tool_name(&name); debug!("Tool executing: {name} -> {friendly}"); crate::ui::voice_chat::update_voice_chat_status(&tool_running_status(&friendly)); + crate::ui::voice_chat::record_tool_executing(&name, &friendly, &id); } - AgentUiEvent::ToolResult { name, summary, .. } => { - // One compact, human-readable evidence line per completed call instead - // of the raw "Tool call finished: mcp__…" card. Raw name + full summary - // are kept in the debug log (raw tool output is debug, not chat). + AgentUiEvent::ToolResult { + name, + id, + summary, + is_error, + } => { + // Fold the completed/failed call into this turn's grouped evidence + // block instead of pushing a standalone System card between answer + // chunks. Raw name + full summary stay in the debug log (raw tool + // output is debug, not chat). let friendly = friendly_tool_name(&name); - debug!("Tool result: {name} -> {friendly} | raw summary: {summary}"); + debug!( + "Tool result: {name} -> {friendly} | is_error={is_error} | raw summary: {summary}" + ); crate::ui::voice_chat::update_voice_chat_status("Thinking…"); - crate::ui::voice_chat::add_voice_chat_system_message(&tool_evidence_line( - &friendly, &summary, - )); + crate::ui::voice_chat::record_tool_result(&name, &friendly, &id, &summary, is_error); } AgentUiEvent::Done => {} AgentUiEvent::Error(message) => { @@ -1221,17 +1217,6 @@ mod tests { ); } - #[test] - fn tool_evidence_line_is_compact() { - assert_eq!( - tool_evidence_line("Web search", "10 results"), - "Web search completed · 10 results" - ); - assert_eq!(tool_evidence_line("Summarize", ""), "Summarize completed"); - // No raw transport noise leaks into the evidence line. - assert!(!tool_evidence_line("Web search", "10 results").contains("mcp__")); - } - struct NoopTestProvider; #[async_trait] diff --git a/app/ui/voice_chat/api/export.rs b/app/ui/voice_chat/api/export.rs index 3e8eac80..2938033f 100644 --- a/app/ui/voice_chat/api/export.rs +++ b/app/ui/voice_chat/api/export.rs @@ -67,6 +67,7 @@ pub fn chat_markdown_from_messages(messages: &[ChatMessage], assistant_only: boo ChatRole::Assistant => "Assistant", ChatRole::System => "System", ChatRole::Reasoning => "Reasoning", + ChatRole::ToolActivity => "Tool activity", }; out.push_str(&format!("## {}\n\n", role)); out.push_str(msg.text.trim_end()); diff --git a/app/ui/voice_chat/api/lifecycle.rs b/app/ui/voice_chat/api/lifecycle.rs index 94862501..13075f17 100644 --- a/app/ui/voice_chat/api/lifecycle.rs +++ b/app/ui/voice_chat/api/lifecycle.rs @@ -197,6 +197,9 @@ pub fn clear_overlay_state(state: &mut VoiceChatOverlayState) { state.active_user_stream_index = None; state.active_assistant_stream_index = None; state.active_reasoning_stream_index = None; + // Close any open tool-activity turn; the block messages persist with the + // transcript and re-render from their groups (keyed by message index). + state.active_tool_activity_index = None; state.is_sending = false; state.scroll_pinned = true; state.manual_draft.clear(); diff --git a/app/ui/voice_chat/api/messages.rs b/app/ui/voice_chat/api/messages.rs index cc5cdcec..382ed5be 100644 --- a/app/ui/voice_chat/api/messages.rs +++ b/app/ui/voice_chat/api/messages.rs @@ -89,6 +89,7 @@ fn add_voice_chat_error_message_impl(text: &str) { state.active_assistant_stream_index = None; state.active_reasoning_stream_index = None; clear_agent_thinking_state(&mut state); + close_tool_activity_turn(&mut state); let mode = message_mode_label(&state); state.messages.push(ChatMessage { role: ChatRole::System, @@ -130,6 +131,140 @@ fn add_voice_chat_system_message_impl(text: &str) { update_chat_view_with_state(&mut state, true); } +/// Record a "tool started" event into the current assistant turn's grouped Tool +/// Activity block. +/// +/// Grouped Tool Activity: tool calls belong to the turn, not between the words. +/// Instead of pushing a standalone card per tool, every tool event of one turn +/// folds into a single evidence block so the assistant answer streams as one +/// uninterrupted message. `raw_name` is debug-only; `display_name` is the +/// human-readable label shown in the timeline. +pub fn record_tool_executing(raw_name: &str, display_name: &str, id: &str) { + let raw = raw_name.to_string(); + let display = display_name.to_string(); + let id = id.to_string(); + Queue::main().exec_async(move || { + run_when_overlay_unlocked(move || record_tool_executing_impl(&raw, &display, &id)); + }); +} + +fn record_tool_executing_impl(raw_name: &str, display_name: &str, id: &str) { + let mut state = OVERLAY_STATE.lock().unwrap_or_else(|e| e.into_inner()); + ensure_agent_tab_visible(&mut state); + let idx = ensure_tool_activity_block(&mut state); + if let Some(group) = state.tool_activity_groups.get_mut(&idx) { + group.mark_running(id, raw_name, display_name); + } + refresh_tool_activity_message(&mut state, idx); + update_chat_view_with_state(&mut state, true); +} + +/// Record a "tool completed/failed" event into the current turn's grouped Tool +/// Activity block. `summary` is the compact result text (or failure reason); +/// `is_error` flips the entry to a compact `· failed · ` line. The full +/// payload stays in the debug log, never in the conversation timeline. +pub fn record_tool_result( + raw_name: &str, + display_name: &str, + id: &str, + summary: &str, + is_error: bool, +) { + let raw = raw_name.to_string(); + let display = display_name.to_string(); + let id = id.to_string(); + let summary = summary.to_string(); + Queue::main().exec_async(move || { + run_when_overlay_unlocked(move || { + record_tool_result_impl(&raw, &display, &id, &summary, is_error) + }); + }); +} + +fn record_tool_result_impl( + raw_name: &str, + display_name: &str, + id: &str, + summary: &str, + is_error: bool, +) { + let mut state = OVERLAY_STATE.lock().unwrap_or_else(|e| e.into_inner()); + ensure_agent_tab_visible(&mut state); + let idx = ensure_tool_activity_block(&mut state); + if let Some(group) = state.tool_activity_groups.get_mut(&idx) { + group.mark_result(id, raw_name, display_name, summary, is_error); + } + refresh_tool_activity_message(&mut state, idx); + update_chat_view_with_state(&mut state, true); +} + +/// Return the current turn's Tool Activity message index, creating the block (a +/// single `ToolActivity` message + its empty group) if this turn has none yet. +/// +/// One block per turn: `active_tool_activity_index` is reset to `None` when the +/// assistant message finalizes, so the next turn's first tool event opens a new +/// block. The block is a separate message from the assistant answer, so folding +/// tools into it never splits the streamed answer. +pub fn ensure_tool_activity_block(state: &mut VoiceChatOverlayState) -> usize { + if let Some(idx) = state.active_tool_activity_index + && state + .messages + .get(idx) + .map(|msg| msg.role == ChatRole::ToolActivity) + .unwrap_or(false) + { + return idx; + } + + let mode = message_mode_label(state); + state.messages.push(ChatMessage { + role: ChatRole::ToolActivity, + text: String::new(), + is_streaming: false, + // Expanded by default: the per-tool lines are already compact, and + // failures stay visible without a click. Clicking collapses to header. + is_collapsed: false, + is_error: false, + timestamp: SystemTime::now(), + mode: Some(mode), + is_pending_followup: false, + }); + let idx = state.messages.len() - 1; + state + .tool_activity_groups + .insert(idx, ToolActivityGroup::default()); + state.active_tool_activity_index = Some(idx); + idx +} + +/// Recompute a Tool Activity block's cached `text` from its group, honoring the +/// block's collapsed state. The group is the source of truth; `text` is the +/// rendered cache the bubble layer reads. +pub fn refresh_tool_activity_message(state: &mut VoiceChatOverlayState, idx: usize) { + let collapsed = state + .messages + .get(idx) + .map(|msg| msg.is_collapsed) + .unwrap_or(false); + let Some(text) = state + .tool_activity_groups + .get(&idx) + .map(|group| group.render(collapsed)) + else { + return; + }; + if let Some(msg) = state.messages.get_mut(idx) { + msg.text = text; + } +} + +/// Close the current turn's Tool Activity block. The block message + its group +/// stay in the log (rendered as finished); only the "open" pointer resets so the +/// next assistant turn starts a fresh block. +pub fn close_tool_activity_turn(state: &mut VoiceChatOverlayState) { + state.active_tool_activity_index = None; +} + /// Add a user message to the chat pub fn add_voice_chat_user_message(text: &str) { let text_owned = text.to_string(); @@ -234,6 +369,13 @@ pub fn handle_message_bubble_click_from_recognizer(sender: Id) { message.is_collapsed = !message.is_collapsed; update_chat_view_with_state(&mut state, false); } + ChatRole::ToolActivity => { + // Toggle compact header-only ↔ expanded per-tool lines, then + // re-render the cached block text from its group. + message.is_collapsed = !message.is_collapsed; + refresh_tool_activity_message(&mut state, index); + update_chat_view_with_state(&mut state, false); + } ChatRole::Assistant if !message.text.is_empty() => { let text = message.text.clone(); drop(state); @@ -560,7 +702,7 @@ pub fn message_render_role(message: &ChatMessage) -> BubbleRole { match message.role { ChatRole::User => BubbleRole::User, ChatRole::Assistant => BubbleRole::Assistant, - ChatRole::System | ChatRole::Reasoning => BubbleRole::System, + ChatRole::System | ChatRole::Reasoning | ChatRole::ToolActivity => BubbleRole::System, } } @@ -603,6 +745,7 @@ pub fn message_role_label(role: ChatRole) -> &'static str { ChatRole::Assistant => "Assistant", ChatRole::System => "System", ChatRole::Reasoning => "Reasoning", + ChatRole::ToolActivity => "Tool activity", } } @@ -973,6 +1116,7 @@ pub fn finalize_assistant_message_impl(text: &str, is_error: bool) { msg.is_error = is_error; } clear_agent_thinking_state(&mut state); + close_tool_activity_turn(&mut state); state.is_sending = false; update_chat_view_with_state(&mut state, true); update_send_button_with_state(&mut state); @@ -992,6 +1136,7 @@ pub fn finalize_assistant_message_state_only_impl(is_error: bool) { last.is_error = is_error; } clear_agent_thinking_state(&mut state); + close_tool_activity_turn(&mut state); state.is_sending = false; update_chat_view_with_state(&mut state, true); update_send_button_with_state(&mut state); @@ -1073,7 +1218,7 @@ pub fn active_stream_index_mut( ChatRole::User => Some(&mut state.active_user_stream_index), ChatRole::Assistant => Some(&mut state.active_assistant_stream_index), ChatRole::Reasoning => Some(&mut state.active_reasoning_stream_index), - ChatRole::System => None, + ChatRole::System | ChatRole::ToolActivity => None, } } @@ -1082,7 +1227,7 @@ pub fn active_stream_index(state: &VoiceChatOverlayState, role: ChatRole) -> Opt ChatRole::User => state.active_user_stream_index, ChatRole::Assistant => state.active_assistant_stream_index, ChatRole::Reasoning => state.active_reasoning_stream_index, - ChatRole::System => None, + ChatRole::System | ChatRole::ToolActivity => None, } } @@ -1226,7 +1371,10 @@ pub fn update_chat_view_with_state(state: &mut VoiceChatOverlayState, scroll_to_ copy_action_target: state.action_handler.map(|p| p as Id), measure_cache: Some(measure_cache_ptr), }); - if matches!(message_role, ChatRole::Assistant | ChatRole::Reasoning) { + if matches!( + message_role, + ChatRole::Assistant | ChatRole::Reasoning | ChatRole::ToolActivity + ) { attach_message_bubble_click_recognizer(state, bubble, index); } stack_view_add(container, bubble); diff --git a/app/ui/voice_chat/api/mod.rs b/app/ui/voice_chat/api/mod.rs index cfe76b4f..df62bc7a 100644 --- a/app/ui/voice_chat/api/mod.rs +++ b/app/ui/voice_chat/api/mod.rs @@ -26,6 +26,7 @@ use super::state::{ ChatMessage, ChatRole, ConversationModeState, DrawerEntry, DrawerEntrySource, OVERLAY_STATE, SEND_CALLBACK, Tab, TranscriptionMode, VoiceChatOverlayState, }; +use super::tool_activity::ToolActivityGroup; use crate::ui::shared::status::{UiStatus, status_from_detail}; use crate::ui_helpers::{ BubbleConfig, BubbleMeasureCache, BubbleRole, LabelConfig, NSEdgeInsets, RenderMode, diff --git a/app/ui/voice_chat/api/send.rs b/app/ui/voice_chat/api/send.rs index 5b9f290f..db609f5f 100644 --- a/app/ui/voice_chat/api/send.rs +++ b/app/ui/voice_chat/api/send.rs @@ -131,6 +131,10 @@ pub fn clear_voice_chat_text_impl() { state.active_user_stream_index = None; state.active_assistant_stream_index = None; state.active_reasoning_stream_index = None; + // Grouped tool evidence is keyed by message index; a cleared transcript + // must drop it so stale indices never alias fresh messages. + state.active_tool_activity_index = None; + state.tool_activity_groups.clear(); state.manual_draft.clear(); state.prompt_history_cursor = None; state.is_sending = false; diff --git a/app/ui/voice_chat/api/tests.rs b/app/ui/voice_chat/api/tests.rs index cf673c9c..ffd4f79a 100644 --- a/app/ui/voice_chat/api/tests.rs +++ b/app/ui/voice_chat/api/tests.rs @@ -1230,3 +1230,212 @@ fn assistive_followup_edit_moves_pending_text_to_draft_without_send() { let mut cb = SEND_CALLBACK.lock().unwrap_or_else(|e| e.into_inner()); *cb = None; } + +// ── Grouped Tool Activity ──────────────────────────────────────────────── +// State-level accumulation + summary rendering. Exercises the pure grouping +// helpers (`ensure_tool_activity_block` / `refresh_tool_activity_message` / +// `close_tool_activity_turn`) directly on a windowless state, so no AppKit +// view build runs — the assertion is purely on the message model. + +fn push_chat_message( + state: &mut VoiceChatOverlayState, + role: ChatRole, + text: &str, + streaming: bool, +) { + state.messages.push(ChatMessage { + role, + text: text.to_string(), + is_streaming: streaming, + is_collapsed: false, + is_error: false, + timestamp: SystemTime::now(), + mode: Some("AI".to_string()), + is_pending_followup: false, + }); +} + +fn feed_tool_running(state: &mut VoiceChatOverlayState, id: &str, raw: &str, display: &str) { + let idx = ensure_tool_activity_block(state); + state + .tool_activity_groups + .get_mut(&idx) + .expect("group exists for the open block") + .mark_running(id, raw, display); + refresh_tool_activity_message(state, idx); +} + +fn feed_tool_result( + state: &mut VoiceChatOverlayState, + id: &str, + raw: &str, + display: &str, + summary: &str, + is_error: bool, +) { + let idx = ensure_tool_activity_block(state); + state + .tool_activity_groups + .get_mut(&idx) + .expect("group exists for the open block") + .mark_result(id, raw, display, summary, is_error); + refresh_tool_activity_message(state, idx); +} + +#[test] +fn turn_with_three_tools_renders_one_grouped_block() { + // Operator regression sequence. Assistant text chunks (1 & 5) and tool + // events (2,3,4,6,7,8) interleave on the wire; the model must produce ONE + // assistant message and ONE tool-activity block — never per-tool cards. + let mut state = VoiceChatOverlayState::default(); + push_chat_message(&mut state, ChatRole::User, "Co tam?", false); + // 1. assistant answer starts (single streaming bubble for the whole turn) + push_chat_message( + &mut state, + ChatRole::Assistant, + "Sprawdzam… Wynik jest taki…", + true, + ); + + // 2-3. brave search start + result + feed_tool_running( + &mut state, + "c1", + "mcp__brave-search__brave_web_search", + "Web search", + ); + feed_tool_result( + &mut state, + "c1", + "mcp__brave-search__brave_web_search", + "Web search", + "10 results", + false, + ); + // 4. loctree start (result arrives later, after more assistant text) + feed_tool_running( + &mut state, + "c2", + "mcp__loctree-mcp__context", + "Loctree context", + ); + // 7. aicx start + feed_tool_running( + &mut state, + "c3", + "mcp__aicx-mcp__aicx_intents", + "AICX intents", + ); + // 6. loctree result + feed_tool_result( + &mut state, + "c2", + "mcp__loctree-mcp__context", + "Loctree context", + "", + false, + ); + // 8. aicx failed + feed_tool_result( + &mut state, + "c3", + "mcp__aicx-mcp__aicx_intents", + "AICX intents", + "empty index", + true, + ); + + // Exactly one tool-activity block for the turn. + let blocks: Vec<&ChatMessage> = state + .messages + .iter() + .filter(|m| m.role == ChatRole::ToolActivity) + .collect(); + assert_eq!(blocks.len(), 1, "all turn tools collapse into one block"); + assert_eq!( + blocks[0].text, + "Tool activity · 3 calls · 1 failed\n\ + - Web search · completed · 10 results\n\ + - Loctree context · completed\n\ + - AICX intents · failed · empty index" + ); + + // The assistant answer stays a single, uninterrupted message. + let assistant_count = state + .messages + .iter() + .filter(|m| m.role == ChatRole::Assistant) + .count(); + assert_eq!(assistant_count, 1, "answer is not split by tool cards"); + + // No raw MCP wire name leaks into the primary timeline. + assert!( + state.messages.iter().all(|m| !m.text.contains("mcp__")), + "raw MCP names must never reach the timeline" + ); +} + +#[test] +fn block_is_reused_within_a_turn_and_reopened_next_turn() { + let mut state = VoiceChatOverlayState::default(); + + feed_tool_running( + &mut state, + "a", + "mcp__loctree-mcp__find", + "Loctree occurrences/find", + ); + let first_idx = state + .active_tool_activity_index + .expect("first turn opened a block"); + // Same turn: a second tool reuses the same block index. + feed_tool_running(&mut state, "b", "read_clipboard", "Clipboard read"); + assert_eq!(state.active_tool_activity_index, Some(first_idx)); + assert_eq!( + state + .messages + .iter() + .filter(|m| m.role == ChatRole::ToolActivity) + .count(), + 1 + ); + + // Turn boundary: assistant finalized → pointer closes. + close_tool_activity_turn(&mut state); + assert_eq!(state.active_tool_activity_index, None); + + // Next turn's first tool opens a brand-new block. + feed_tool_running(&mut state, "c", "take_screenshot", "Screenshot"); + assert_ne!(state.active_tool_activity_index, Some(first_idx)); + assert_eq!( + state + .messages + .iter() + .filter(|m| m.role == ChatRole::ToolActivity) + .count(), + 2, + "each turn renders its own block" + ); +} + +#[test] +fn collapse_toggle_rerenders_block_header_only() { + let mut state = VoiceChatOverlayState::default(); + feed_tool_result( + &mut state, + "a", + "mcp__loctree-mcp__context", + "Loctree context", + "", + false, + ); + let idx = state.active_tool_activity_index.expect("block open"); + + // Expanded by default: header + lines. + assert!(state.messages[idx].text.contains('\n')); + + // Collapse → header only. + state.messages[idx].is_collapsed = true; + refresh_tool_activity_message(&mut state, idx); + assert_eq!(state.messages[idx].text, "Tool activity · 1 call completed"); +} diff --git a/app/ui/voice_chat/mod.rs b/app/ui/voice_chat/mod.rs index 25d11892..7792e172 100644 --- a/app/ui/voice_chat/mod.rs +++ b/app/ui/voice_chat/mod.rs @@ -8,6 +8,7 @@ mod api; mod handlers; mod state; +pub(crate) mod tool_activity; // Re-export public API pub use api::{ @@ -17,12 +18,13 @@ pub use api::{ commit_last_user_message, commit_pending_followup_message, dispatch_voice_chat_send, edit_pending_followup_message, filter_drawer, finalize_voice_chat_assistant_message, finalize_voice_chat_user_message, handoff_transcript_to_chat, hide_voice_chat_overlay, - is_auto_send_enabled, is_conversation_active, is_voice_chat_overlay_visible, refresh_drawer, - reset_voice_chat_activity, send_voice_chat_draft, set_voice_chat_agent_thinking, - set_voice_chat_runtime_degraded, set_voice_chat_send_callback, set_voice_chat_sending, - set_voice_chat_target_app, set_voice_chat_text, set_voice_chat_user_text, show_agent_tab, - show_drawer_tab, update_conversation_state, update_drawer_after_save, - update_voice_chat_context_summary, update_voice_chat_status, + is_auto_send_enabled, is_conversation_active, is_voice_chat_overlay_visible, + record_tool_executing, record_tool_result, refresh_drawer, reset_voice_chat_activity, + send_voice_chat_draft, set_voice_chat_agent_thinking, set_voice_chat_runtime_degraded, + set_voice_chat_send_callback, set_voice_chat_sending, set_voice_chat_target_app, + set_voice_chat_text, set_voice_chat_user_text, show_agent_tab, show_drawer_tab, + update_conversation_state, update_drawer_after_save, update_voice_chat_context_summary, + update_voice_chat_status, }; pub use state::{ConversationModeState, VoiceChatOverlayConfig}; diff --git a/app/ui/voice_chat/state.rs b/app/ui/voice_chat/state.rs index e1f3e191..2eb30aba 100644 --- a/app/ui/voice_chat/state.rs +++ b/app/ui/voice_chat/state.rs @@ -9,6 +9,7 @@ use std::time::{Instant, SystemTime}; use codescribe_core::attachment::Attachment; +use super::tool_activity::ToolActivityGroup; use crate::ui::shared::status::UiStatus; use crate::ui_helpers::{BubbleMeasureCache, RenderMode}; @@ -45,6 +46,10 @@ pub enum ChatRole { /// Live reasoning summary streamed from the agent (its own lane, rendered /// as a collapsible "thinking" entry — NOT mixed into the assistant text). Reasoning, + /// Grouped tool evidence for one assistant turn (its own lane, rendered as a + /// single compact/collapsible block — NEVER interleaved between answer + /// chunks). Backed by a [`ToolActivityGroup`] keyed by message index. + ToolActivity, } /// A single chat message @@ -187,6 +192,14 @@ pub struct VoiceChatOverlayState { pub active_assistant_stream_index: Option, /// Active streaming reasoning-summary message index (if any). pub active_reasoning_stream_index: Option, + /// Message index of the current assistant turn's grouped tool-activity block + /// (if one is open). `None` between turns — the next tool event opens a fresh + /// block so each turn renders exactly one evidence block. + pub active_tool_activity_index: Option, + /// Grouped tool evidence per turn, keyed by the `ToolActivity` message index + /// (parallel to `message_render_modes`). The block message's `text` is a + /// rendered cache of its group; the group is the source of truth. + pub tool_activity_groups: HashMap, pub manual_draft: String, /// Manual prompts sent from the Agent input, newest at the end. pub prompt_history: Vec, @@ -281,6 +294,8 @@ impl Default for VoiceChatOverlayState { active_user_stream_index: None, active_assistant_stream_index: None, active_reasoning_stream_index: None, + active_tool_activity_index: None, + tool_activity_groups: HashMap::new(), manual_draft: String::new(), prompt_history: Vec::new(), prompt_history_cursor: None, diff --git a/app/ui/voice_chat/tool_activity.rs b/app/ui/voice_chat/tool_activity.rs new file mode 100644 index 00000000..d64fa985 --- /dev/null +++ b/app/ui/voice_chat/tool_activity.rs @@ -0,0 +1,378 @@ +//! Grouped Tool Activity model for the Assistive conversation timeline. +//! +//! Product rule: the primary timeline is for **conversation**. Tool calls are +//! **evidence/activity**, raw tool output is **debug**. An assistant answer must +//! never be interrupted by individual tool-call log cards. +//! +//! Before this module, each completed tool emitted its own `System` chat bubble +//! (`tool_evidence_line`). With several tools per turn those single cards +//! interleaved with the streaming assistant answer, forcing the reader to +//! mentally reconstruct execution order. Here we accumulate every tool event of +//! one assistant turn into a single [`ToolActivityGroup`] and render it as one +//! compact block, separate from the assistant answer. +//! +//! This module is intentionally pure (no AppKit, no global state): the grouping +//! and summary rendering are unit-testable without a running UI. The voice-chat +//! state layer owns one group per assistant turn and feeds it raw events; the +//! rendered string is what the timeline shows. + +/// Lifecycle of a single tool call within a turn. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum ToolStatus { + /// Dispatched, result not yet received. + Running, + /// Finished with a usable result. + Completed, + /// Finished in error. + Failed, +} + +impl ToolStatus { + fn word(self) -> &'static str { + match self { + ToolStatus::Running => "running", + ToolStatus::Completed => "completed", + ToolStatus::Failed => "failed", + } + } +} + +/// One tool call's evidence within a turn. `raw_name` is the transport wire name +/// (`mcp__server__tool`) kept only for debug/telemetry; `display_name` is the +/// human-readable label shown in the timeline. +#[derive(Debug, Clone)] +pub struct ToolActivityEntry { + pub id: String, + pub display_name: String, + pub raw_name: String, + pub status: ToolStatus, + /// Short result summary for a completed call (already truncated upstream). + pub summary: String, + /// Error reason for a failed call (compact; full payload stays in the log). + pub error: String, + /// Optional structured result count when the upstream summary exposes one. + pub result_count: Option, +} + +/// Maximum characters for a per-entry suffix so the block stays compact and no +/// raw payload / stack dump leaks into the conversation timeline. +const ENTRY_SUFFIX_MAX_CHARS: usize = 80; + +fn clamp_suffix(text: &str) -> String { + let trimmed = text.trim(); + if trimmed.chars().count() <= ENTRY_SUFFIX_MAX_CHARS { + return trimmed.to_string(); + } + let clipped: String = trimmed + .chars() + .take(ENTRY_SUFFIX_MAX_CHARS.saturating_sub(1)) + .collect(); + format!("{}…", clipped.trim_end()) +} + +impl ToolActivityEntry { + /// One compact line, e.g. `Web search · completed · 10 results` or + /// `AICX intents · failed · empty index`. Never contains the raw wire name. + pub fn line(&self) -> String { + let mut line = format!("{} · {}", self.display_name, self.status.word()); + let suffix = match self.status { + ToolStatus::Completed => { + if let Some(count) = self.result_count { + let noun = if count == 1 { "result" } else { "results" }; + format!("{count} {noun}") + } else { + clamp_suffix(&self.summary) + } + } + ToolStatus::Failed => clamp_suffix(&self.error), + ToolStatus::Running => String::new(), + }; + if !suffix.is_empty() { + line.push_str(" · "); + line.push_str(&suffix); + } + line + } +} + +/// All tool evidence for one assistant turn. Owned per-turn by the voice-chat +/// state; rendered once as a single timeline block. +#[derive(Debug, Clone, Default)] +pub struct ToolActivityGroup { + pub entries: Vec, +} + +impl ToolActivityGroup { + /// Record a tool that just started. Idempotent on `id`: a repeated start for + /// the same call updates its labels but keeps its place. + pub fn mark_running(&mut self, id: &str, raw_name: &str, display_name: &str) { + if let Some(entry) = self.entries.iter_mut().find(|e| e.id == id) { + entry.raw_name = raw_name.to_string(); + entry.display_name = display_name.to_string(); + return; + } + self.entries.push(ToolActivityEntry { + id: id.to_string(), + display_name: display_name.to_string(), + raw_name: raw_name.to_string(), + status: ToolStatus::Running, + summary: String::new(), + error: String::new(), + result_count: None, + }); + } + + /// Record a tool result. Matches the running entry by `id`; if no start was + /// seen (events can be dropped/coalesced) it inserts a finished entry so the + /// evidence is never lost. + pub fn mark_result( + &mut self, + id: &str, + raw_name: &str, + display_name: &str, + summary: &str, + is_error: bool, + ) { + let status = if is_error { + ToolStatus::Failed + } else { + ToolStatus::Completed + }; + let summary_owned = summary.trim().to_string(); + if let Some(entry) = self.entries.iter_mut().find(|e| e.id == id) { + entry.raw_name = raw_name.to_string(); + entry.display_name = display_name.to_string(); + entry.status = status; + if is_error { + entry.error = summary_owned; + } else { + entry.summary = summary_owned; + } + return; + } + self.entries.push(ToolActivityEntry { + id: id.to_string(), + display_name: display_name.to_string(), + raw_name: raw_name.to_string(), + status, + summary: if is_error { + String::new() + } else { + summary_owned.clone() + }, + error: if is_error { + summary_owned + } else { + String::new() + }, + result_count: None, + }); + } + + fn counts(&self) -> (usize, usize, usize) { + let mut completed = 0; + let mut failed = 0; + let mut running = 0; + for entry in &self.entries { + match entry.status { + ToolStatus::Completed => completed += 1, + ToolStatus::Failed => failed += 1, + ToolStatus::Running => running += 1, + } + } + (completed, failed, running) + } + + /// One-line header summarizing the whole turn's tool activity, e.g. + /// `Tool activity · 3 calls completed`, `Tool activity · 3 calls · 1 failed`, + /// or `Tool activity · 2 calls · 1 running`. Failures are always visible here + /// even when the block is collapsed. + pub fn compact_header(&self) -> String { + let total = self.entries.len(); + if total == 0 { + return "Tool activity".to_string(); + } + let noun = if total == 1 { "call" } else { "calls" }; + let (_, failed, running) = self.counts(); + + if running == total { + return format!("Tool activity · {total} {noun} running"); + } + + let mut header = format!("Tool activity · {total} {noun}"); + if running > 0 { + header.push_str(&format!(" · {running} running")); + } + if failed > 0 { + header.push_str(&format!(" · {failed} failed")); + } + if running == 0 && failed == 0 { + // Clean turn: read as "3 calls completed". + header.push_str(" completed"); + } + header + } + + /// Render the block for the timeline. Collapsed → header only (failures still + /// counted in the header). Expanded (default) → header + one compact line per + /// tool. Raw payloads are never included — they stay in the debug log. + pub fn render(&self, collapsed: bool) -> String { + let header = self.compact_header(); + if collapsed || self.entries.is_empty() { + return header; + } + let mut out = header; + for entry in &self.entries { + out.push('\n'); + out.push_str("- "); + out.push_str(&entry.line()); + } + out + } +} + +#[cfg(test)] +mod tests { + use super::*; + + fn group_from_regression() -> ToolActivityGroup { + // Mirrors the operator's regression event sequence (interleaved with + // assistant text chunks, which this module never sees): + // ToolExecuting brave -> ToolResult brave (10 results) + // ToolExecuting loctree -> ToolResult loctree + // ToolExecuting aicx -> ToolResult failed (empty index) + let mut group = ToolActivityGroup::default(); + group.mark_running("c1", "mcp__brave-search__brave_web_search", "Web search"); + group.mark_result( + "c1", + "mcp__brave-search__brave_web_search", + "Web search", + "10 results", + false, + ); + group.mark_running("c2", "mcp__loctree-mcp__context", "Loctree context"); + group.mark_running("c3", "mcp__aicx-mcp__aicx_intents", "AICX intents"); + group.mark_result( + "c2", + "mcp__loctree-mcp__context", + "Loctree context", + "", + false, + ); + group.mark_result( + "c3", + "mcp__aicx-mcp__aicx_intents", + "AICX intents", + "empty index", + true, + ); + group + } + + #[test] + fn groups_all_turn_tools_into_one_block() { + let group = group_from_regression(); + assert_eq!( + group.entries.len(), + 3, + "three calls collapse into one group" + ); + } + + #[test] + fn header_surfaces_failures_compactly() { + let group = group_from_regression(); + // 2 completed + 1 failed → failure visible in the header. + assert_eq!(group.compact_header(), "Tool activity · 3 calls · 1 failed"); + } + + #[test] + fn header_reads_completed_when_clean() { + let mut group = ToolActivityGroup::default(); + group.mark_result( + "a", + "mcp__loctree-mcp__context", + "Loctree context", + "", + false, + ); + group.mark_result("b", "read_clipboard", "Clipboard read", "ok", false); + assert_eq!(group.compact_header(), "Tool activity · 2 calls completed"); + } + + #[test] + fn header_reports_running_progress() { + let mut group = ToolActivityGroup::default(); + group.mark_running("a", "mcp__brave-search__brave_web_search", "Web search"); + assert_eq!(group.compact_header(), "Tool activity · 1 call running"); + group.mark_running("b", "mcp__loctree-mcp__context", "Loctree context"); + group.mark_result( + "a", + "mcp__brave-search__brave_web_search", + "Web search", + "10 results", + false, + ); + assert_eq!( + group.compact_header(), + "Tool activity · 2 calls · 1 running" + ); + } + + #[test] + fn expanded_render_lists_each_tool_readably() { + let group = group_from_regression(); + let expected = "Tool activity · 3 calls · 1 failed\n\ + - Web search · completed · 10 results\n\ + - Loctree context · completed\n\ + - AICX intents · failed · empty index"; + assert_eq!(group.render(false), expected); + } + + #[test] + fn collapsed_render_is_header_only() { + let group = group_from_regression(); + assert_eq!(group.render(true), "Tool activity · 3 calls · 1 failed"); + } + + #[test] + fn raw_wire_names_never_leak_into_rendered_block() { + let group = group_from_regression(); + let rendered = group.render(false); + assert!( + !rendered.contains("mcp__"), + "raw MCP names must not reach the timeline" + ); + } + + #[test] + fn result_for_unseen_start_is_still_recorded() { + // A ToolResult with no prior ToolExecuting (dropped/coalesced start) + // must still produce evidence rather than vanish. + let mut group = ToolActivityGroup::default(); + group.mark_result("z", "take_screenshot", "Screenshot", "saved", false); + assert_eq!(group.entries.len(), 1); + assert_eq!(group.entries[0].status, ToolStatus::Completed); + } + + #[test] + fn duplicate_start_does_not_duplicate_entry() { + let mut group = ToolActivityGroup::default(); + group.mark_running("c1", "mcp__loctree-mcp__find", "Loctree occurrences/find"); + group.mark_running("c1", "mcp__loctree-mcp__find", "Loctree occurrences/find"); + assert_eq!(group.entries.len(), 1); + } + + #[test] + fn long_failure_suffix_is_clamped_not_a_stack_dump() { + let mut group = ToolActivityGroup::default(); + let huge = "panic at line 42: ".repeat(40); + group.mark_result("c1", "mcp__x__y", "Tool", &huge, true); + let line = group.entries[0].line(); + assert!( + line.chars().count() < 120, + "failed line must stay compact: {line}" + ); + assert!(line.ends_with('…'), "clamped suffix is elided"); + } +} diff --git a/core/agent/event.rs b/core/agent/event.rs index b8473163..cf8e6a63 100644 --- a/core/agent/event.rs +++ b/core/agent/event.rs @@ -47,6 +47,10 @@ pub enum AgentUiEvent { name: String, id: String, summary: String, + /// True when the tool dispatch returned an error result. Carried so the + /// UI can render a failed tool compactly (`· failed · `) without + /// string-sniffing the summary. The reason already lives in `summary`. + is_error: bool, }, Done, Error(String), diff --git a/core/agent/session.rs b/core/agent/session.rs index b0e08e08..c1356a61 100644 --- a/core/agent/session.rs +++ b/core/agent/session.rs @@ -414,6 +414,7 @@ impl AgentSession { name: tool_name, id: call_id, summary, + is_error, }, ) .await; @@ -465,6 +466,7 @@ fn summarize_tool_result(outputs: &[ToolResultContent]) -> String { const SUMMARY_MAX_CHARS: usize = 120; let mut first_text: Option = None; + let mut first_error: Option = None; let mut image_count = 0usize; let mut error_count = 0usize; @@ -476,7 +478,12 @@ fn summarize_tool_result(outputs: &[ToolResultContent]) -> String { } } ToolResultContent::Image { .. } | ToolResultContent::ImageAsset(_) => image_count += 1, - ToolResultContent::Error(_) => error_count += 1, + ToolResultContent::Error(message) => { + error_count += 1; + if first_error.is_none() { + first_error = Some(message.trim().to_string()); + } + } } } @@ -491,8 +498,14 @@ fn summarize_tool_result(outputs: &[ToolResultContent]) -> String { return format!("{image_count} image result(s)"); } - if error_count > 0 { - return format!("{error_count} error result(s)"); + // Surface the real failure reason (e.g. "empty index") so the grouped Tool + // Activity block can show it compactly. Fall back to a count when the error + // carries no message. The full payload still goes to the debug log. + if let Some(error) = first_error { + if error.is_empty() { + return format!("{error_count} error result(s)"); + } + return truncate_summary(&error, SUMMARY_MAX_CHARS); } "No tool output".to_string() @@ -1006,13 +1019,28 @@ mod tests { }), "expected ToolExecuting event, got {ui_events:?}" ); + let tool_result_event = ui_events + .iter() + .find_map(|event| match event { + AgentUiEvent::ToolResult { + name, + id, + summary, + is_error, + } => Some((name.clone(), id.clone(), summary.clone(), *is_error)), + _ => None, + }) + .expect("expected a ToolResult UI event"); + assert_eq!(tool_result_event.0, "missing_tool"); + assert_eq!(tool_result_event.1, "call_missing"); + assert!( + tool_result_event.3, + "missing tool dispatch must flag the UI event as an error, got {ui_events:?}" + ); assert!( - ui_events.contains(&AgentUiEvent::ToolResult { - name: "missing_tool".to_string(), - id: "call_missing".to_string(), - summary: "1 error result(s)".to_string(), - }), - "expected ToolResult fallback summary, got {ui_events:?}" + tool_result_event.2.contains("not registered"), + "expected the failure reason to reach the UI summary, got {:?}", + tool_result_event.2 ); assert!( ui_events From 60bc6798c7f3e9eeb9d964214dcb9acb04ed5d12 Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Thu, 25 Jun 2026 16:02:32 -0700 Subject: [PATCH 007/426] [claude/vc-workflow] feat(assistive): honor operator tool-label table in friendly_tool_name The grouped Tool Activity block (commit c705e5a) already folds every tool event of an assistant turn into one evidence card and keeps the assistant answer one uninterrupted bubble. But the raw->label mapping only special-cased the brave-search family; every other surface fell into the generic mcp__ prefix-strip + prettify fallback, which reads reversed and noisy: mcp__loctree-mcp__context -> "Context . Loctree mcp" (wanted "Loctree context") mcp__aicx-mcp__aicx_intents -> "Aicx Intents . Aicx mcp" (wanted "AICX intents") read_clipboard -> "Read Clipboard" (wanted "Clipboard read") The operator's regression "Expected UI" labels ("Loctree context", "AICX intents") therefore only held in the pure-module test, which hardcodes display_name on input -- the live controller path never produced them. Pin the operator's explicit table in friendly_tool_name (the single mapping hub, on the ToolExecuting/ToolResult event boundary): loctree context/find, aicx intents, vibecrafted observe, and the native clipboard/screenshot/audio tools. Unknown mcp__ tools keep the generic prettify fallback (github etc.), so no raw wire name ever reaches the timeline. Tests: friendly_tool_name_honors_operator_label_table (8 entries) + regression_sequence_raw_names_produce_expected_runtime_labels (proves the brave/loctree/aicx raw names map to the exact grouped-block labels at runtime, not just in the hardcoded pure-module fixture). fmt + clippy(-D warnings) clean; 3 friendly + 1 regression + 10 tool_activity grouping tests green. Authored-By: claude session_id: 9c4efcf7-4338-4a46-aa19-b52cd46a02c3 date: 2026-06-25T16:01:48 PDT runtime: terminal --- app/controller/helpers.rs | 63 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/app/controller/helpers.rs b/app/controller/helpers.rs index e7df455b..17eb5194 100644 --- a/app/controller/helpers.rs +++ b/app/controller/helpers.rs @@ -470,6 +470,19 @@ pub(crate) fn friendly_tool_name(raw: &str) -> String { return "Video search".into(); } "mcp__brave-search__brave_summarizer" | "brave_summarizer" => return "Summarize".into(), + // Structural / intent / fleet MCP surfaces the operator named explicitly: + // the generic `mcp__` fallback would read "Context · Loctree mcp", which is + // both reversed and noisy. Pin the exact human labels here. + "mcp__loctree-mcp__context" => return "Loctree context".into(), + "mcp__loctree-mcp__find" => return "Loctree occurrences/find".into(), + "mcp__aicx-mcp__aicx_intents" => return "AICX intents".into(), + "mcp__vibecrafted-mcp__vc_run_observe" => return "Vibecrafted observe".into(), + // Native (non-mcp) tools: the bare snake_case prettifies to a reversed, + // verbose label ("Read Clipboard"); the operator wants noun-first copy. + "read_clipboard" => return "Clipboard read".into(), + "write_clipboard" => return "Clipboard write".into(), + "take_screenshot" => return "Screenshot".into(), + "transcribe_audio" => return "Audio transcription".into(), _ => {} } if let Some(rest) = raw.strip_prefix("mcp__") { @@ -1207,6 +1220,56 @@ mod tests { assert!(!friendly_tool_name("mcp__github__create_issue").contains("mcp__")); } + #[test] + fn friendly_tool_name_honors_operator_label_table() { + // The operator's explicit raw→label table. Before this mapping these all + // fell into the generic `mcp__` / prettify fallback and read reversed or + // noisy (e.g. "Context · Loctree mcp", "Read Clipboard"). + assert_eq!( + friendly_tool_name("mcp__loctree-mcp__context"), + "Loctree context" + ); + assert_eq!( + friendly_tool_name("mcp__loctree-mcp__find"), + "Loctree occurrences/find" + ); + assert_eq!( + friendly_tool_name("mcp__aicx-mcp__aicx_intents"), + "AICX intents" + ); + assert_eq!( + friendly_tool_name("mcp__vibecrafted-mcp__vc_run_observe"), + "Vibecrafted observe" + ); + assert_eq!(friendly_tool_name("read_clipboard"), "Clipboard read"); + assert_eq!(friendly_tool_name("write_clipboard"), "Clipboard write"); + assert_eq!(friendly_tool_name("take_screenshot"), "Screenshot"); + assert_eq!( + friendly_tool_name("transcribe_audio"), + "Audio transcription" + ); + } + + #[test] + fn regression_sequence_raw_names_produce_expected_runtime_labels() { + // Operator regression scenario: the grouped block must show exactly these + // labels at runtime — not just in the pure-module test that hardcodes the + // display_name. This proves the controller maps the raw wire names the same + // way the timeline expects. + assert_eq!( + friendly_tool_name("mcp__brave-search__brave_web_search"), + "Web search" + ); + assert_eq!( + friendly_tool_name("mcp__loctree-mcp__context"), + "Loctree context" + ); + assert_eq!( + friendly_tool_name("mcp__aicx-mcp__aicx_intents"), + "AICX intents" + ); + } + #[test] fn tool_running_status_is_human_readable() { assert_eq!(tool_running_status("Web search"), "Searching web…"); From 1ee7a2e0d8c2b8c0339ab8a1f95fa265e319577d Mon Sep 17 00:00:00 2001 From: m-szymanska Date: Thu, 25 Jun 2026 20:26:53 -0700 Subject: [PATCH 008/426] fix(attachments): deliver images as real vision input on agent path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The agent send path called `session.send(text, Vec::new(), ...)`, so image attachments reached the model only as text file paths under the `ATTACHMENTS (image paths)` marker — never as vision input. The legacy fallback (`ai_formatting`) already parsed the marker and encoded base64, so images "worked" only when the request fell back to legacy. Fix: the agent path now strips the marker and loads each listed image into an `ImageAttachment` via a shared `core::attachment` contract, so `AgentSession::send` emits real `input_image` blocks. Clipboard, drag&drop and file-picker are source-agnostic and all go through this path identically. - core/attachment.rs: canonical marker parsing + MIME + image loading (`parse_image_attachment_block`, `image_media_type`, `load_image_for_vision`, `MAX_VISION_IMAGE_BYTES`) with unit tests. - core/llm/ai_formatting.rs: legacy path delegates to the same contract (DRY). - app/ui/voice_chat/api/send.rs: only claim "will be sent as vision input" for vision-supported images within the size cap; oversized/unsupported get an honest message and are not listed. - app/controller/helpers.rs: load images on the agent path, log forwarded count, surface dropped images to the user instead of silently dropping. - docs/architecture/attachment-vision-pipeline.md: developer note. Verified e2e: model describes screenshot contents via both clipboard and file-picker; logs show "forwarding N image(s) as vision input" on the agent path with no legacy fallback. Co-Authored-By: Claude Opus 4.8 (1M context) --- app/controller/helpers.rs | 145 +++++++++++++- app/ui/voice_chat/api/send.rs | 25 ++- core/attachment.rs | 182 ++++++++++++++++++ core/llm/ai_formatting.rs | 85 +------- .../attachment-vision-pipeline.md | 53 +++++ 5 files changed, 400 insertions(+), 90 deletions(-) create mode 100644 docs/architecture/attachment-vision-pipeline.md diff --git a/app/controller/helpers.rs b/app/controller/helpers.rs index c6248ff4..c1ec8c4d 100644 --- a/app/controller/helpers.rs +++ b/app/controller/helpers.rs @@ -8,13 +8,13 @@ use std::sync::Mutex as StdMutex; use std::sync::OnceLock; use std::sync::atomic::{AtomicBool, AtomicU64, AtomicUsize, Ordering}; use tokio::sync::{Mutex as TokioMutex, RwLock, mpsc}; -use tracing::{debug, warn}; +use tracing::{debug, info, warn}; use crate::config::{Config, default_assistive_model}; use anyhow::{Context, Result}; use codescribe_core::agent::{ - AgentSession, AgentUiEvent, ContentBlock, Message, Role, StreamOptions, Thread, ThreadMessage, - ThreadStore, ToolRegistry, + AgentSession, AgentUiEvent, ContentBlock, ImageAttachment, Message, Role, StreamOptions, + Thread, ThreadMessage, ThreadStore, ToolRegistry, }; use serde_json::json; @@ -680,6 +680,70 @@ fn agent_send_error_is_transient(error: &anyhow::Error) -> bool { .any(|pattern| message.contains(pattern)) } +/// Maximum number of image attachments forwarded to the model per message. +/// Matches the legacy (`ai_formatting`) cap so both send paths behave alike. +const MAX_AGENT_VISION_IMAGES: usize = 4; + +/// Split an outgoing payload into its visible text and the loaded image +/// attachments referenced by the `ATTACHMENTS (image paths)` marker. +/// +/// This is the fix for the attachment pipeline: the voice-chat send path appends +/// image paths to the payload as *text* (`build_attachments_block`). Without this +/// step the agent path forwarded them as plain text and the model never received +/// real vision input. Here we strip the marker block from the text and load each +/// image as bytes so `AgentSession::send` can emit proper `input_image` blocks. +/// +/// Returns `(cleaned_text, loaded_images, dropped_names)`. `dropped_names` lists +/// images that could not be forwarded (missing/unreadable/too large) so the +/// caller can surface a visible attachment error instead of silently continuing. +fn build_image_attachments_from_text(text: &str) -> (String, Vec, Vec) { + let (cleaned, mut paths) = codescribe_core::attachment::parse_image_attachment_block(text); + + if paths.is_empty() { + return (cleaned, Vec::new(), Vec::new()); + } + + let mut dropped: Vec = Vec::new(); + + if paths.len() > MAX_AGENT_VISION_IMAGES { + for extra in &paths[MAX_AGENT_VISION_IMAGES..] { + dropped.push(file_label(extra)); + } + warn!( + "Too many image attachments ({}); forwarding first {} as vision input", + paths.len(), + MAX_AGENT_VISION_IMAGES + ); + paths.truncate(MAX_AGENT_VISION_IMAGES); + } + + let mut attachments = Vec::with_capacity(paths.len()); + for path in &paths { + match codescribe_core::attachment::load_image_for_vision( + path, + codescribe_core::attachment::MAX_VISION_IMAGE_BYTES, + ) { + Some((data, media_type)) => attachments.push(ImageAttachment { data, media_type }), + None => { + warn!( + "Dropping image attachment (unsupported, unreadable, or too large): {}", + path.display() + ); + dropped.push(file_label(path)); + } + } + } + + (cleaned, attachments, dropped) +} + +/// Short, user-facing label for an attachment path (file name, path fallback). +fn file_label(path: &std::path::Path) -> String { + path.file_name() + .map(|n| n.to_string_lossy().to_string()) + .unwrap_or_else(|| path.to_string_lossy().to_string()) +} + async fn run_agent_send_path( runtime_state: &mut AgentRuntimeState, runtime_generation: u64, @@ -706,7 +770,22 @@ async fn run_agent_send_path( let send_result = { let (session, ui_rx) = (&mut runtime.session, &mut runtime.ui_rx); - let send_future = session.send(text, Vec::new(), &stream_options); + let (user_text, image_attachments, dropped_images) = + build_image_attachments_from_text(&text); + if !image_attachments.is_empty() { + info!( + "Agent send: forwarding {} image(s) as vision input", + image_attachments.len() + ); + } + if !dropped_images.is_empty() { + crate::ui::voice_chat::add_voice_chat_system_message(&format!( + "⚠️ Could not attach {} image(s) as vision input: {}", + dropped_images.len(), + dropped_images.join(", ") + )); + } + let send_future = session.send(user_text, image_attachments, &stream_options); tokio::pin!(send_future); let result = loop { @@ -1644,4 +1723,62 @@ mod tests { assert!(runtime_state.runtime_degraded); assert!(runtime_state.runtime.is_none()); } + + #[test] + fn test_build_image_attachments_passthrough_without_marker() { + let text = "plain message, no attachments"; + let (cleaned, images, dropped) = build_image_attachments_from_text(text); + assert_eq!(cleaned, text); + assert!(images.is_empty()); + assert!(dropped.is_empty()); + } + + #[test] + fn test_build_image_attachments_loads_real_image_and_reports_dropped() { + let dir = std::env::temp_dir().join(format!("cs_helpers_vision_{}", std::process::id())); + let _ = std::fs::create_dir_all(&dir); + let img = dir.join("shot.png"); + std::fs::write(&img, b"\x89PNG\r\n\x1a\nfake").unwrap(); + let missing = dir.join("gone.png"); + + let text = format!( + "describe these\n\n---\nATTACHMENTS (image paths)\n- {}\n- {}\n", + img.display(), + missing.display() + ); + let (cleaned, images, dropped) = build_image_attachments_from_text(&text); + + // Marker block and raw paths are gone from the model-visible text. + assert!(!cleaned.contains("ATTACHMENTS (image paths)")); + assert!(!cleaned.contains(&img.display().to_string())); + assert!(cleaned.contains("describe these")); + + // Only the readable image becomes a real vision attachment; the missing + // one is reported as dropped (visible error), never forwarded as text. + assert_eq!(images.len(), 1); + assert_eq!(images[0].media_type, "image/png"); + assert!(!images[0].data.is_empty()); + assert_eq!(dropped, vec!["gone.png".to_string()]); + + let _ = std::fs::remove_dir_all(&dir); + } + + #[test] + fn test_build_image_attachments_caps_and_reports_overflow() { + let dir = std::env::temp_dir().join(format!("cs_helpers_cap_{}", std::process::id())); + let _ = std::fs::create_dir_all(&dir); + let mut lines = String::from("multi\n\nATTACHMENTS (image paths)\n"); + for i in 0..(MAX_AGENT_VISION_IMAGES + 2) { + let p = dir.join(format!("img{i}.png")); + std::fs::write(&p, b"\x89PNG\r\n\x1a\nfake").unwrap(); + lines.push_str(&format!("- {}\n", p.display())); + } + let (_cleaned, images, dropped) = build_image_attachments_from_text(&lines); + + // Cap honored, overflow surfaced (not silently dropped). + assert_eq!(images.len(), MAX_AGENT_VISION_IMAGES); + assert_eq!(dropped.len(), 2); + + let _ = std::fs::remove_dir_all(&dir); + } } diff --git a/app/ui/voice_chat/api/send.rs b/app/ui/voice_chat/api/send.rs index 5b9f290f..0e6cd820 100644 --- a/app/ui/voice_chat/api/send.rs +++ b/app/ui/voice_chat/api/send.rs @@ -1098,15 +1098,24 @@ Tools (optional): `brew install poppler ocrmypdf tesseract-lang`.)\n", let _ = (&mut f).take(MAX_FILE_BYTES as u64).read_to_end(&mut buf); let Ok(mut s) = String::from_utf8(buf) else { - let is_image = matches!( - ext.as_str(), - "png" | "jpg" | "jpeg" | "webp" | "gif" | "bmp" | "tif" | "tiff" - ); - if is_image { - out.push_str("(image detected; will be sent as vision input)\n"); - image_paths.push(display.to_string()); + // Only claim "will be sent as vision input" for images the model can + // actually receive: a vision-supported format within the byte cap. + // Anything else gets an honest message and is NOT added to the image + // paths list, so the agent send path never sees an unsendable image. + if codescribe_core::attachment::image_media_type(path).is_some() { + let size = std::fs::metadata(path).map(|m| m.len()).unwrap_or(0); + if size > codescribe_core::attachment::MAX_VISION_IMAGE_BYTES { + out.push_str(&format!( + "(image too large for vision input: {} bytes > {} max; not sent)\n", + size, + codescribe_core::attachment::MAX_VISION_IMAGE_BYTES + )); + } else { + out.push_str("(image detected; will be sent as vision input)\n"); + image_paths.push(display.to_string()); + } } else { - out.push_str("(skipped: not UTF-8 text)\n"); + out.push_str("(skipped: unsupported image format or not UTF-8 text)\n"); } continue; }; diff --git a/core/attachment.rs b/core/attachment.rs index 72dd6b07..e1c00d5f 100644 --- a/core/attachment.rs +++ b/core/attachment.rs @@ -194,6 +194,118 @@ fn kind_from_extension(path: &Path) -> AttachmentKind { } } +// ═══════════════════════════════════════════════════════════ +// Vision attachment parsing (shared by agent + legacy send paths) +// ═══════════════════════════════════════════════════════════ + +/// Marker line emitted by `build_attachments_block` that introduces the list of +/// image file paths appended to a chat payload as text. +pub const IMAGE_PATHS_MARKER: &str = "ATTACHMENTS (image paths)"; + +/// Default per-image byte cap honored when loading images for vision input. +pub const MAX_VISION_IMAGE_BYTES: u64 = 8 * 1024 * 1024; + +/// MIME media type for a vision-supported image, inferred from extension. +/// +/// Returns `None` for extensions the model APIs do not accept as image input +/// (e.g. `svg`, `heic`, `raw`), even though [`AttachmentKind::Image`] classifies +/// them as images for UI purposes. +pub fn image_media_type(path: &Path) -> Option<&'static str> { + let ext = path + .extension() + .and_then(|e| e.to_str()) + .map(|e| e.to_ascii_lowercase()) + .unwrap_or_default(); + match ext.as_str() { + "png" => Some("image/png"), + "jpg" | "jpeg" => Some("image/jpeg"), + "webp" => Some("image/webp"), + "gif" => Some("image/gif"), + "bmp" => Some("image/bmp"), + "tif" | "tiff" => Some("image/tiff"), + _ => None, + } +} + +/// Split a chat payload into its visible text and the image paths listed under +/// the `ATTACHMENTS (image paths)` marker appended by `build_attachments_block`. +/// +/// The marker block (and a dangling `---`/`—` separator directly above it) is +/// removed from the returned text so the model never sees raw file paths where a +/// real vision input belongs. The original payload is returned verbatim in +/// `.0` when no marker is present, so non-attachment messages pass through +/// unchanged. +pub fn parse_image_attachment_block(text: &str) -> (String, Vec) { + let mut out_lines: Vec = Vec::new(); + let mut image_paths: Vec = Vec::new(); + let mut in_block = false; + + for line in text.lines() { + let trimmed = line.trim(); + + if trimmed == IMAGE_PATHS_MARKER { + // Drop a preceding separator if present to avoid leaving a dangling "---". + if out_lines + .last() + .is_some_and(|l| l.trim() == "---" || l.trim() == "—") + { + out_lines.pop(); + } + in_block = true; + continue; + } + + if in_block { + if trimmed.is_empty() { + in_block = false; + continue; + } + if let Some(rest) = trimmed.strip_prefix("- ") { + let p = rest.trim(); + if !p.is_empty() { + image_paths.push(PathBuf::from(p)); + } + continue; + } + // Unexpected line → end block, keep the line. + in_block = false; + out_lines.push(line.to_string()); + continue; + } + + out_lines.push(line.to_string()); + } + + (out_lines.join("\n"), image_paths) +} + +/// Load an image file as `(bytes, media_type)` for vision input. +/// +/// Returns `None` (with a warning) when the extension is not a vision-supported +/// image, the file is unreadable, or it exceeds `max_bytes`. +pub fn load_image_for_vision(path: &Path, max_bytes: u64) -> Option<(Vec, String)> { + let media_type = image_media_type(path)?; + + let meta = std::fs::metadata(path).ok()?; + if meta.len() > max_bytes { + warn!( + "Skipping image attachment (too large, {} bytes > {} max): {}", + meta.len(), + max_bytes, + path.display() + ); + return None; + } + + match std::fs::read(path) { + Ok(bytes) => Some((bytes, media_type.to_string())), + Err(e) => { + warn!("Failed to read image attachment {}: {}", path.display(), e); + None + } + } +} + // ═══════════════════════════════════════════════════════════ // Attachment Store // ═══════════════════════════════════════════════════════════ @@ -449,6 +561,76 @@ mod tests { assert_eq!(sanitize_filename(&many_dots), "abc.txt"); } + #[test] + fn test_image_media_type() { + assert_eq!(image_media_type(Path::new("a.png")), Some("image/png")); + assert_eq!(image_media_type(Path::new("a.JPG")), Some("image/jpeg")); + assert_eq!(image_media_type(Path::new("a.jpeg")), Some("image/jpeg")); + assert_eq!(image_media_type(Path::new("a.webp")), Some("image/webp")); + assert_eq!(image_media_type(Path::new("a.tiff")), Some("image/tiff")); + // Not accepted as vision input despite being "images" for the UI. + assert_eq!(image_media_type(Path::new("a.svg")), None); + assert_eq!(image_media_type(Path::new("a.heic")), None); + assert_eq!(image_media_type(Path::new("a.txt")), None); + assert_eq!(image_media_type(Path::new("noext")), None); + } + + #[test] + fn test_parse_image_attachment_block_passthrough() { + // No marker → text returned unchanged, no paths. + let text = "just a normal message\nwith two lines"; + let (cleaned, paths) = parse_image_attachment_block(text); + assert_eq!(cleaned, text); + assert!(paths.is_empty()); + } + + #[test] + fn test_parse_image_attachment_block_extracts_paths() { + let text = "Look at these\n\n---\nATTACHMENTS (image paths)\n- /tmp/a.png\n- /tmp/b.jpg\n"; + let (cleaned, paths) = parse_image_attachment_block(text); + assert_eq!( + paths, + vec![PathBuf::from("/tmp/a.png"), PathBuf::from("/tmp/b.jpg")] + ); + // The marker block and the dangling separator are stripped. + assert!(!cleaned.contains(IMAGE_PATHS_MARKER)); + assert!(!cleaned.contains("/tmp/a.png")); + assert!(cleaned.contains("Look at these")); + assert!(!cleaned.trim_end().ends_with("---")); + } + + #[test] + fn test_parse_image_attachment_block_stops_at_blank_line() { + let text = "msg\nATTACHMENTS (image paths)\n- /tmp/a.png\n\ntrailing text kept"; + let (cleaned, paths) = parse_image_attachment_block(text); + assert_eq!(paths, vec![PathBuf::from("/tmp/a.png")]); + assert!(cleaned.contains("trailing text kept")); + } + + #[test] + fn test_load_image_for_vision_rejects_oversize_and_nonimage() { + let dir = std::env::temp_dir().join(format!("cs_vision_test_{}", std::process::id())); + let _ = std::fs::create_dir_all(&dir); + + let png = dir.join("small.png"); + std::fs::write(&png, b"\x89PNG\r\n\x1a\nfake").unwrap(); + let loaded = load_image_for_vision(&png, MAX_VISION_IMAGE_BYTES); + assert!(loaded.is_some()); + let (bytes, mt) = loaded.unwrap(); + assert_eq!(mt, "image/png"); + assert!(!bytes.is_empty()); + + // Oversize → rejected. + assert!(load_image_for_vision(&png, 2).is_none()); + + // Non-vision extension → rejected even if file exists. + let txt = dir.join("note.txt"); + std::fs::write(&txt, b"hello").unwrap(); + assert!(load_image_for_vision(&txt, MAX_VISION_IMAGE_BYTES).is_none()); + + let _ = std::fs::remove_dir_all(&dir); + } + #[test] fn test_paths_extraction() { let attachments = vec![ diff --git a/core/llm/ai_formatting.rs b/core/llm/ai_formatting.rs index 8d107570..107768fc 100644 --- a/core/llm/ai_formatting.rs +++ b/core/llm/ai_formatting.rs @@ -22,7 +22,6 @@ use anyhow::{Context, Result}; use reqwest::Client; use serde::{Deserialize, Serialize}; use std::env; -use std::path::PathBuf; use std::sync::{Arc, OnceLock, RwLock}; use std::time::Duration; use tracing::{debug, info, trace, warn}; @@ -448,84 +447,13 @@ enum InputContent { Image { image_url: String }, } -fn image_mime_from_path(path: &std::path::Path) -> Option<&'static str> { - let ext = path - .extension() - .map(|e| e.to_string_lossy().to_ascii_lowercase()) - .unwrap_or_default(); - match ext.as_str() { - "png" => Some("image/png"), - "jpg" | "jpeg" => Some("image/jpeg"), - "webp" => Some("image/webp"), - "gif" => Some("image/gif"), - "bmp" => Some("image/bmp"), - "tif" | "tiff" => Some("image/tiff"), - _ => None, - } -} - -fn strip_image_attachments(user_message: &str) -> (String, Vec) { - let mut out_lines: Vec = Vec::new(); - let mut image_paths: Vec = Vec::new(); - let mut in_block = false; - - for line in user_message.lines() { - let trimmed = line.trim(); - - if trimmed == "ATTACHMENTS (image paths)" { - // Drop a preceding separator if present to avoid leaving a dangling "---". - if out_lines - .last() - .is_some_and(|l| l.trim() == "---" || l.trim() == "—") - { - out_lines.pop(); - } - in_block = true; - continue; - } - - if in_block { - if trimmed.is_empty() { - in_block = false; - continue; - } - if let Some(rest) = trimmed.strip_prefix("- ") { - let p = rest.trim(); - if !p.is_empty() { - image_paths.push(PathBuf::from(p)); - } - continue; - } - // Unexpected line → end block, keep the line. - in_block = false; - out_lines.push(line.to_string()); - continue; - } - - out_lines.push(line.to_string()); - } - - (out_lines.join("\n"), image_paths) -} - -fn encode_image_as_data_url(path: &PathBuf) -> Option { +fn encode_image_as_data_url(path: &std::path::Path) -> Option { use base64::{Engine, engine::general_purpose::STANDARD as BASE64}; - const MAX_IMAGE_BYTES: u64 = 8 * 1024 * 1024; // 8MB per image - - let mime = image_mime_from_path(path)?; - - let meta = std::fs::metadata(path).ok()?; - if meta.len() > MAX_IMAGE_BYTES { - warn!( - "Skipping image attachment (too large, {} bytes): {}", - meta.len(), - path.display() - ); - return None; - } - - let bytes = std::fs::read(path).ok()?; + // Marker parsing, MIME mapping and the size cap are shared with the agent + // send path via `crate::attachment` so both routes honor one contract. + let (bytes, mime) = + crate::attachment::load_image_for_vision(path, crate::attachment::MAX_VISION_IMAGE_BYTES)?; let b64 = BASE64.encode(bytes); Some(format!("data:{mime};base64,{b64}")) } @@ -533,7 +461,8 @@ fn encode_image_as_data_url(path: &PathBuf) -> Option { fn build_responses_user_content(user_message: &str) -> Vec { const MAX_IMAGES: usize = 4; - let (mut cleaned, mut image_paths) = strip_image_attachments(user_message); + let (mut cleaned, mut image_paths) = + crate::attachment::parse_image_attachment_block(user_message); if image_paths.len() > MAX_IMAGES { warn!( "Too many image attachments ({}); keeping first {}", diff --git a/docs/architecture/attachment-vision-pipeline.md b/docs/architecture/attachment-vision-pipeline.md new file mode 100644 index 00000000..35dec6b0 --- /dev/null +++ b/docs/architecture/attachment-vision-pipeline.md @@ -0,0 +1,53 @@ +# Attachment & vision input pipeline + +How image attachments travel from the chat UI to the model as real vision input. + +## Internal representation + +- UI attachments are `codescribe_core::attachment::Attachment` (path + kind + + source + display name). Clipboard, drag&drop and file-picker all produce the + same `Attachment` and land in `VoiceChatOverlayState::attachments` — the send + path is **source-agnostic**. +- The model-facing message is `codescribe_core::agent::Message` with a + `Vec`. Images are `ContentBlock::Image { data, media_type }` + (raw bytes + MIME), converted to provider JSON in + `app/agent/openai_provider.rs` as an `input_image` data URI. + +## Flow + +1. On send, `build_attachments_block` (`app/ui/voice_chat/api/send.rs`) inlines + text files and appends image **paths** under the + `ATTACHMENTS (image paths)` marker. It only lists an image (and only then + claims "will be sent as vision input") when the file is a vision-supported + format within `attachment::MAX_VISION_IMAGE_BYTES`. Oversized / unsupported + images get an honest message and are **not** listed. +2. The payload is a single `String` (the send callback is `Fn(String)`). +3. Agent path: `run_agent_send_path` (`app/controller/helpers.rs`) calls + `build_image_attachments_from_text`, which strips the marker block from the + text and loads each listed image into an `ImageAttachment` via + `attachment::load_image_for_vision`. These go to `AgentSession::send` as real + image blocks. Images that fail to load are reported to the user (not silently + dropped) and the cap is `MAX_AGENT_VISION_IMAGES`. +4. Legacy path: `ai_formatting::build_responses_user_content` uses the same + `attachment::parse_image_attachment_block` + `load_image_for_vision` contract, + so both routes behave identically. + +## Image support / capability + +The assistive backend is assumed to be vision-capable (OpenAI Responses +`input_image`). There is no per-model capability probe — if a future text-only +backend is introduced, gate image forwarding here and surface a clear +"backend does not support image analysis" message instead of attaching. + +## Marker contract (single source of truth) + +`core/attachment.rs` owns the marker constant and parsing: +`IMAGE_PATHS_MARKER`, `parse_image_attachment_block`, `image_media_type`, +`load_image_for_vision`, `MAX_VISION_IMAGE_BYTES`. Both send paths depend on it; +change the marker in one place only. + +## Adding another image-capable provider + +Implement `AgentProvider::build_image_block` for the provider (see +`openai_provider.rs`) to emit its native image block; the rest of the pipeline +(`ContentBlock::Image`) is provider-agnostic. From 0043ab461efe5d2b2d20091c0d125a4822072b30 Mon Sep 17 00:00:00 2001 From: m-szymanska Date: Thu, 25 Jun 2026 20:41:01 -0700 Subject: [PATCH 009/426] feat(attachments): auto-clear after send with re-attach previous Attachments stayed in the input chip strip after sending; only a fingerprint prevented resending the identical set. Adding another image then resent the whole accumulated set, so a follow-up "send 1 image" silently shipped the earlier one too. Now a successful send clears the chip strip and stashes the sent set in `last_sent_attachments`. The attach menu gains "Re-attach previous (N)" so the user can resend the same files without re-picking them. Co-Authored-By: Claude Opus 4.8 (1M context) --- app/ui/voice_chat/api/send.rs | 19 +++++++++++ app/ui/voice_chat/handlers/attachments.rs | 25 ++++++++++++++ app/ui/voice_chat/handlers/classes.rs | 4 +++ app/ui/voice_chat/handlers/menus.rs | 41 ++++++++++++++++------- app/ui/voice_chat/state.rs | 4 +++ 5 files changed, 80 insertions(+), 13 deletions(-) diff --git a/app/ui/voice_chat/api/send.rs b/app/ui/voice_chat/api/send.rs index 0e6cd820..c03a091b 100644 --- a/app/ui/voice_chat/api/send.rs +++ b/app/ui/voice_chat/api/send.rs @@ -153,6 +153,21 @@ pub fn clear_voice_chat_text_impl() { update_attach_button_ui(btn_ptr, 0, Vec::new()); } +/// After a send consumes the current attachments, clear them from the input bar +/// but stash a copy in `last_sent_attachments` so the user can re-attach them via +/// the attach menu instead of re-picking each file. +fn clear_attachments_after_send_locked(state: &mut VoiceChatOverlayState) { + if state.attachments.is_empty() { + return; + } + state.last_sent_attachments = state.attachments.clone(); + state.attachments.clear(); + state.attachments_last_sent = None; + let btn_ptr = state.agent_attach_button; + render_attachment_chips_locked(state); + update_attach_button_ui(btn_ptr, 0, Vec::new()); +} + /// Send the draft message (called from handlers) pub fn send_draft_message_impl() { let callback = { @@ -195,6 +210,8 @@ pub fn send_draft_message_impl() { mode: Some(mode), is_pending_followup: false, }); + // Sent once: clear the chip strip, keep a copy for re-attach. + clear_attachments_after_send_locked(&mut state); } push_prompt_history_locked(&mut state, &draft); follow_latest_after_manual_send_locked(&mut state); @@ -277,6 +294,8 @@ pub fn commit_last_user_message_impl() { mode: Some(mode), is_pending_followup: false, }); + // Sent once: clear the chip strip, keep a copy for re-attach. + clear_attachments_after_send_locked(&mut state); } state.is_sending = true; update_chat_view_with_state(&mut state, true); diff --git a/app/ui/voice_chat/handlers/attachments.rs b/app/ui/voice_chat/handlers/attachments.rs index 025f676a..faca731d 100644 --- a/app/ui/voice_chat/handlers/attachments.rs +++ b/app/ui/voice_chat/handlers/attachments.rs @@ -252,6 +252,31 @@ pub extern "C" fn on_attach_clear(_this: &Object, _cmd: Sel, _sender: Id) { }; update_attach_button_ui(btn_ptr, count, names); } + +/// Restore the attachments cleared by the previous send so the user can resend +/// them without re-picking each file. Duplicates (same path) are skipped. +pub extern "C" fn on_attach_reattach(_this: &Object, _cmd: Sel, _sender: Id) { + let (btn_ptr, count, names) = { + let mut state = OVERLAY_STATE.lock().unwrap_or_else(|e| e.into_inner()); + if state.last_sent_attachments.is_empty() { + return; + } + for attachment in state.last_sent_attachments.clone() { + if !state.attachments.iter().any(|a| a.path == attachment.path) { + state.attachments.push(attachment); + } + } + state.attachments_last_sent = None; + render_attachment_chips(&mut state); + let names: Vec = state + .attachments + .iter() + .map(|a| a.display_name.clone()) + .collect(); + (state.agent_attach_button, state.attachments.len(), names) + }; + update_attach_button_ui(btn_ptr, count, names); +} // ═══════════════════════════════════════════════════════════ // Attachment Chip Handlers // ═══════════════════════════════════════════════════════════ diff --git a/app/ui/voice_chat/handlers/classes.rs b/app/ui/voice_chat/handlers/classes.rs index 1322e062..41f19f23 100644 --- a/app/ui/voice_chat/handlers/classes.rs +++ b/app/ui/voice_chat/handlers/classes.rs @@ -117,6 +117,10 @@ pub fn action_handler_class() -> *const Class { sel!(onAttachClear:), on_attach_clear as extern "C" fn(&Object, Sel, Id), ); + decl.add_method( + sel!(onAttachReattach:), + on_attach_reattach as extern "C" fn(&Object, Sel, Id), + ); decl.add_method( sel!(onTabDrawer:), on_tab_drawer as extern "C" fn(&Object, Sel, Id), diff --git a/app/ui/voice_chat/handlers/menus.rs b/app/ui/voice_chat/handlers/menus.rs index c6c76034..ddefbd1d 100644 --- a/app/ui/voice_chat/handlers/menus.rs +++ b/app/ui/voice_chat/handlers/menus.rs @@ -44,24 +44,39 @@ pub extern "C" fn on_attach_menu(this: &Object, _cmd: Sel, sender: Id) { let _: () = msg_send![url, setTarget: target]; let _: () = msg_send![menu, addItem: url]; - let count = { + let (count, reattach_count) = { let state = OVERLAY_STATE.lock().unwrap_or_else(|e| e.into_inner()); - state.attachments.len() + (state.attachments.len(), state.last_sent_attachments.len()) }; - if count > 0 { + if count > 0 || reattach_count > 0 { let sep: Id = msg_send![ns_menu_item, separatorItem]; let _: () = msg_send![menu, addItem: sep]; - let clear_title = format!("Clear attachments ({})", count); - let clear: Id = msg_send![ns_menu_item, alloc]; - let clear: Id = msg_send![ - clear, - initWithTitle: ns_string(&clear_title) - action: sel!(onAttachClear:) - keyEquivalent: ns_string("") - ]; - let _: () = msg_send![clear, setTarget: target]; - let _: () = msg_send![menu, addItem: clear]; + if reattach_count > 0 { + let reattach_title = format!("Re-attach previous ({})", reattach_count); + let reattach: Id = msg_send![ns_menu_item, alloc]; + let reattach: Id = msg_send![ + reattach, + initWithTitle: ns_string(&reattach_title) + action: sel!(onAttachReattach:) + keyEquivalent: ns_string("") + ]; + let _: () = msg_send![reattach, setTarget: target]; + let _: () = msg_send![menu, addItem: reattach]; + } + + if count > 0 { + let clear_title = format!("Clear attachments ({})", count); + let clear: Id = msg_send![ns_menu_item, alloc]; + let clear: Id = msg_send![ + clear, + initWithTitle: ns_string(&clear_title) + action: sel!(onAttachClear:) + keyEquivalent: ns_string("") + ]; + let _: () = msg_send![clear, setTarget: target]; + let _: () = msg_send![menu, addItem: clear]; + } } // Pop up anchored at the button. diff --git a/app/ui/voice_chat/state.rs b/app/ui/voice_chat/state.rs index e1f3e191..efedd6e4 100644 --- a/app/ui/voice_chat/state.rs +++ b/app/ui/voice_chat/state.rs @@ -171,6 +171,9 @@ pub struct VoiceChatOverlayState { pub attachments: Vec, /// Fingerprint of the last attachment set sent to the assistant. pub attachments_last_sent: Option, + /// Attachments cleared from the input after the most recent send, kept so the + /// user can re-attach them ("Re-attach previous") instead of re-picking. + pub last_sent_attachments: Vec, /// Chip strip scroll view (horizontal list of attachment chips above input bar). pub attachment_chip_strip: Option, @@ -274,6 +277,7 @@ impl Default for VoiceChatOverlayState { agent_latest_button: None, attachments: Vec::new(), attachments_last_sent: None, + last_sent_attachments: Vec::new(), attachment_chip_strip: None, active_tab: Tab::Drawer, pending_tab: None, From 3ff39f805397fbf1629b05822386fcb1180dc039 Mon Sep 17 00:00:00 2001 From: m-szymanska Date: Thu, 25 Jun 2026 20:41:16 -0700 Subject: [PATCH 010/426] fix(ui): guard bubble text against CoreText main-thread spin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A pasted/streamed payload with a very long unbroken run (a 12.7k-char base64 line) froze the app: `NSTextFieldCell cellSizeForBounds:` → `CTLineCreateWithAttributedString` spun in OpenType shaping on the main thread. `cap_bubble_display_text` now caps total length and injects breaks into runs longer than `MAX_UNBROKEN_RUN`, so the typesetter wraps instead of spinning. Applied in both the render (`bubble_text_for_message`) and measure (`display_text_for_message`) paths. Normal messages pass through unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) --- app/ui/voice_chat/api/messages.rs | 115 ++++++++++++++++++++++++++++-- 1 file changed, 111 insertions(+), 4 deletions(-) diff --git a/app/ui/voice_chat/api/messages.rs b/app/ui/voice_chat/api/messages.rs index cc5cdcec..58380ee3 100644 --- a/app/ui/voice_chat/api/messages.rs +++ b/app/ui/voice_chat/api/messages.rs @@ -532,8 +532,70 @@ pub fn finalize_streaming_reasoning(state: &mut VoiceChatOverlayState) { state.active_reasoning_stream_index = None; } +/// Hard cap on characters rendered/measured per bubble. A backstop against +/// pathological payloads (e.g. a pasted base64 blob) freezing the UI. +const MAX_BUBBLE_DISPLAY_CHARS: usize = 20_000; + +/// Longest run of non-whitespace characters allowed before we inject a break. +/// CoreText's OpenType shaping (`CTLineCreateWithAttributedString`) spins on the +/// main thread for very long unbroken runs (a 12.7k-char base64 line hung the +/// app), so we break them so the typesetter can wrap instead. +const MAX_UNBROKEN_RUN: usize = 200; + +fn has_long_unbroken_run(text: &str, max_run: usize) -> bool { + let mut run = 0usize; + for ch in text.chars() { + if ch.is_whitespace() { + run = 0; + } else { + run += 1; + if run > max_run { + return true; + } + } + } + false +} + +fn break_long_runs(text: &str, max_run: usize) -> String { + let mut out = String::with_capacity(text.len() + text.len() / max_run.max(1) + 1); + let mut run = 0usize; + for ch in text.chars() { + if ch.is_whitespace() { + run = 0; + out.push(ch); + } else { + if run >= max_run { + out.push('\n'); + run = 0; + } + out.push(ch); + run += 1; + } + } + out +} + +/// Make any bubble text safe to render: cap total length and break unbroken runs +/// so CoreText never spins on the main thread. Normal messages pass through +/// unchanged. +pub fn cap_bubble_display_text(text: &str) -> String { + let capped = if text.chars().count() > MAX_BUBBLE_DISPLAY_CHARS { + let mut t: String = text.chars().take(MAX_BUBBLE_DISPLAY_CHARS).collect(); + t.push_str("\n… (truncated for display; full text preserved in the thread)"); + t + } else { + text.to_string() + }; + if has_long_unbroken_run(&capped, MAX_UNBROKEN_RUN) { + break_long_runs(&capped, MAX_UNBROKEN_RUN) + } else { + capped + } +} + pub fn display_text_for_message(message: &ChatMessage) -> String { - if message.role == ChatRole::Reasoning && message.is_collapsed { + let raw = if message.role == ChatRole::Reasoning && message.is_collapsed { reasoning_summary_header(message) } else if message.is_streaming && message.text.is_empty() { "• • •".to_string() @@ -541,15 +603,17 @@ pub fn display_text_for_message(message: &ChatMessage) -> String { format!("{} …", message.text) } else { message.text.clone() - } + }; + cap_bubble_display_text(&raw) } pub fn bubble_text_for_message(message: &ChatMessage) -> String { - if message.role == ChatRole::Reasoning && message.is_collapsed { + let raw = if message.role == ChatRole::Reasoning && message.is_collapsed { reasoning_summary_header(message) } else { message.text.clone() - } + }; + cap_bubble_display_text(&raw) } pub fn bubble_streaming_for_message(message: &ChatMessage) -> bool { @@ -1265,3 +1329,46 @@ pub fn update_chat_view_with_state(state: &mut VoiceChatOverlayState, scroll_to_ } } } + +#[cfg(test)] +mod bubble_display_tests { + use super::{ + MAX_BUBBLE_DISPLAY_CHARS, MAX_UNBROKEN_RUN, break_long_runs, cap_bubble_display_text, + has_long_unbroken_run, + }; + + #[test] + fn normal_text_passes_through_unchanged() { + let text = "A normal multi-line message.\nSecond line with spaces."; + assert_eq!(cap_bubble_display_text(text), text); + } + + #[test] + fn detects_and_breaks_long_unbroken_run() { + // Simulates a pasted base64 blob: one very long run with no whitespace. + let blob = "a".repeat(12_776); + assert!(has_long_unbroken_run(&blob, MAX_UNBROKEN_RUN)); + + let broken = break_long_runs(&blob, MAX_UNBROKEN_RUN); + // No remaining run exceeds the cap → CoreText can wrap instead of spinning. + assert!(!has_long_unbroken_run(&broken, MAX_UNBROKEN_RUN)); + // Content preserved (only newlines injected). + assert_eq!(broken.chars().filter(|c| *c == 'a').count(), 12_776); + } + + #[test] + fn caps_total_length() { + let huge = "x".repeat(MAX_BUBBLE_DISPLAY_CHARS * 2); + let capped = cap_bubble_display_text(&huge); + assert!(capped.contains("truncated for display")); + // Capped well below the original length. + assert!(capped.chars().count() < MAX_BUBBLE_DISPLAY_CHARS + 4_000); + } + + #[test] + fn whitespace_resets_run_counter() { + // Many short words separated by spaces must not be flagged. + let text = "word ".repeat(5_000); + assert!(!has_long_unbroken_run(&text, MAX_UNBROKEN_RUN)); + } +} From f3653273f024167c76857c082b165ee04ecbce93 Mon Sep 17 00:00:00 2001 From: m-szymanska Date: Thu, 25 Jun 2026 23:08:53 -0700 Subject: [PATCH 011/426] fix(attachments): raise per-message image cap from 4 to 16 The cap of 4 (inherited from legacy formatting) dropped the 5th image when comparing several variants (e.g. 5 wireframes), surfacing an honest "could not attach" notice but still leaving the image out. Vision-capable backends accept far more and each image is already size-capped individually, so raise the per-message cap to 16 on both the agent and legacy send paths. Co-Authored-By: Claude Opus 4.8 (1M context) --- app/controller/helpers.rs | 6 ++++-- core/llm/ai_formatting.rs | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/controller/helpers.rs b/app/controller/helpers.rs index c1ec8c4d..2dee23ed 100644 --- a/app/controller/helpers.rs +++ b/app/controller/helpers.rs @@ -681,8 +681,10 @@ fn agent_send_error_is_transient(error: &anyhow::Error) -> bool { } /// Maximum number of image attachments forwarded to the model per message. -/// Matches the legacy (`ai_formatting`) cap so both send paths behave alike. -const MAX_AGENT_VISION_IMAGES: usize = 4; +/// Kept in sync with the legacy (`ai_formatting`) cap so both send paths behave +/// alike. Sized for real multi-image use (e.g. comparing several wireframes); +/// vision-capable backends accept far more, images are size-capped individually. +const MAX_AGENT_VISION_IMAGES: usize = 16; /// Split an outgoing payload into its visible text and the loaded image /// attachments referenced by the `ATTACHMENTS (image paths)` marker. diff --git a/core/llm/ai_formatting.rs b/core/llm/ai_formatting.rs index 107768fc..a30c1640 100644 --- a/core/llm/ai_formatting.rs +++ b/core/llm/ai_formatting.rs @@ -459,7 +459,8 @@ fn encode_image_as_data_url(path: &std::path::Path) -> Option { } fn build_responses_user_content(user_message: &str) -> Vec { - const MAX_IMAGES: usize = 4; + // Kept in sync with `MAX_AGENT_VISION_IMAGES` in the agent send path. + const MAX_IMAGES: usize = 16; let (mut cleaned, mut image_paths) = crate::attachment::parse_image_attachment_block(user_message); From 02f3d55fdb2a842c5c14eb4e8b8977b1c6badb06 Mon Sep 17 00:00:00 2001 From: m-szymanska Date: Thu, 25 Jun 2026 23:21:14 -0700 Subject: [PATCH 012/426] fix(attachments): don't send empty image blocks (thread restore 400) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After restoring a thread, images come back with empty bytes — the thread store persists them with `data_omitted` (no base64). On the next send the provider emitted `data:image/png;base64,` with no payload, and the API rejected the whole request: "empty base64-encoded bytes" (HTTP 400), blocking the conversation. Two guards: - core/attachment.rs: `load_image_for_vision` rejects 0-byte files. - openai_provider.rs `build_input_items`: skip `ContentBlock::Image` with empty data (restored-from-history) instead of emitting an empty image_url. Fresh attachments are unaffected; restored conversations no longer 400 (images from prior turns are simply not re-sent, since their bytes aren't persisted). Co-Authored-By: Claude Opus 4.8 (1M context) --- app/agent/openai_provider.rs | 12 +++++++++++- core/attachment.rs | 13 +++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/agent/openai_provider.rs b/app/agent/openai_provider.rs index e67307f8..dd3f957a 100644 --- a/app/agent/openai_provider.rs +++ b/app/agent/openai_provider.rs @@ -9,7 +9,7 @@ use reqwest::Client; use serde::Serialize; use serde_json::{Value, json}; use tokio::sync::{Mutex, mpsc}; -use tracing::info; +use tracing::{info, warn}; use codescribe_core::agent::{ AgentEvent, AgentProvider, ContentBlock, ImageAsset, Message, Role, StreamOptions, @@ -376,6 +376,16 @@ fn build_input_items(messages: &[Message]) -> Result> { } } ContentBlock::Image { data, media_type } => { + // Images restored from the thread store carry no bytes + // (persisted with `data_omitted`). Emitting an empty data URL + // makes the provider reject the whole request + // ("empty base64-encoded bytes"), so skip empty images. + if data.is_empty() { + warn!( + "Skipping image content block with no bytes (likely restored from history)" + ); + continue; + } content.push(json!({ "type": "input_image", "image_url": to_data_uri(data, media_type) diff --git a/core/attachment.rs b/core/attachment.rs index e1c00d5f..dfb92299 100644 --- a/core/attachment.rs +++ b/core/attachment.rs @@ -298,6 +298,13 @@ pub fn load_image_for_vision(path: &Path, max_bytes: u64) -> Option<(Vec, St } match std::fs::read(path) { + Ok(bytes) if bytes.is_empty() => { + // An empty/zero-byte file would encode to an empty base64 string, + // which providers reject ("empty base64-encoded bytes") and which + // fails the whole request. Drop it instead. + warn!("Skipping image attachment (empty file): {}", path.display()); + None + } Ok(bytes) => Some((bytes, media_type.to_string())), Err(e) => { warn!("Failed to read image attachment {}: {}", path.display(), e); @@ -628,6 +635,12 @@ mod tests { std::fs::write(&txt, b"hello").unwrap(); assert!(load_image_for_vision(&txt, MAX_VISION_IMAGE_BYTES).is_none()); + // Empty (0-byte) image → rejected: an empty base64 payload would make + // the provider reject the whole request. + let empty = dir.join("empty.png"); + std::fs::write(&empty, b"").unwrap(); + assert!(load_image_for_vision(&empty, MAX_VISION_IMAGE_BYTES).is_none()); + let _ = std::fs::remove_dir_all(&dir); } From 306e076fc800aaaf3fdbc7d608ad2cb201ae0902 Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Fri, 26 Jun 2026 10:45:27 -0700 Subject: [PATCH 013/426] [claude/vc-justdo] feat(assistive): Evidence Summary as default tool-activity block MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per assistant turn the Tool Activity block now defaults to a semantic Evidence Summary that answers what the assistant checked, which sources were involved, the key result, and whether anything failed — instead of a mechanical per-call list. The technical per-tool list becomes the layer-2 detail view, reached by clicking the block; raw payloads stay debug-only. The summary is deterministic (no LLM): calls are grouped by SOURCE (the system behind the wire name, so two Loctree calls read as one "Loctree" row), real result text/counts are echoed, failures surface as warnings, and a single Key finding verdict is extracted. Raw mcp__ wire names never reach either rendered view. - core engine in tool_activity.rs: source_label/source_detail/ evidence_key_finding + ToolActivityGroup::evidence_summary (pure, unit-tested). friendly_tool_name label table (60bc679) left untouched. - refresh_tool_activity_message renders evidence_summary by default and the technical render() on expand (is_collapsed flips the two layers). - 7 new summary tests + reframed two state-level tests to the new default; existing pure grouping/render/header tests unchanged and green. Verified: cargo fmt --all --check clean; cargo clippy -p codescribe --all-targets -D warnings clean; cargo check --workspace clean; tool_activity (17) + voice_chat::api::tests (48) all pass. Authored-By: claude session_id: f12fdb12-6ed7-4560-b718-fab763657c8a date: 2026-06-26T10:52:00 CEST runtime: interactive --- app/ui/voice_chat/api/messages.rs | 32 ++- app/ui/voice_chat/api/tests.rs | 44 +++- app/ui/voice_chat/tool_activity.rs | 395 +++++++++++++++++++++++++++++ 3 files changed, 454 insertions(+), 17 deletions(-) diff --git a/app/ui/voice_chat/api/messages.rs b/app/ui/voice_chat/api/messages.rs index 382ed5be..5e4c36bf 100644 --- a/app/ui/voice_chat/api/messages.rs +++ b/app/ui/voice_chat/api/messages.rs @@ -221,8 +221,9 @@ pub fn ensure_tool_activity_block(state: &mut VoiceChatOverlayState) -> usize { role: ChatRole::ToolActivity, text: String::new(), is_streaming: false, - // Expanded by default: the per-tool lines are already compact, and - // failures stay visible without a click. Clicking collapses to header. + // Evidence Summary by default (`is_collapsed = false`): the operator sees + // what was checked and what mattered, with failures surfaced as warnings. + // Clicking expands to the technical per-tool list. is_collapsed: false, is_error: false, timestamp: SystemTime::now(), @@ -237,20 +238,27 @@ pub fn ensure_tool_activity_block(state: &mut VoiceChatOverlayState) -> usize { idx } -/// Recompute a Tool Activity block's cached `text` from its group, honoring the -/// block's collapsed state. The group is the source of truth; `text` is the -/// rendered cache the bubble layer reads. +/// Recompute a Tool Activity block's cached `text` from its group. The group is +/// the source of truth; `text` is the rendered cache the bubble layer reads. +/// +/// Layering: the **default** primary block is the semantic Evidence Summary +/// (`What I checked · …` — what was checked, which sources, the key result, +/// failures). Clicking the block (`is_collapsed = true`) expands it to the +/// **technical** per-tool list (`render`). The raw tool payload stays in the +/// debug log and never reaches either view. pub fn refresh_tool_activity_message(state: &mut VoiceChatOverlayState, idx: usize) { - let collapsed = state + let show_technical_details = state .messages .get(idx) .map(|msg| msg.is_collapsed) .unwrap_or(false); - let Some(text) = state - .tool_activity_groups - .get(&idx) - .map(|group| group.render(collapsed)) - else { + let Some(text) = state.tool_activity_groups.get(&idx).map(|group| { + if show_technical_details { + group.render(false) + } else { + group.evidence_summary() + } + }) else { return; }; if let Some(msg) = state.messages.get_mut(idx) { @@ -370,7 +378,7 @@ pub fn handle_message_bubble_click_from_recognizer(sender: Id) { update_chat_view_with_state(&mut state, false); } ChatRole::ToolActivity => { - // Toggle compact header-only ↔ expanded per-tool lines, then + // Toggle Evidence Summary (default) ↔ technical per-tool list, then // re-render the cached block text from its group. message.is_collapsed = !message.is_collapsed; refresh_tool_activity_message(&mut state, index); diff --git a/app/ui/voice_chat/api/tests.rs b/app/ui/voice_chat/api/tests.rs index ffd4f79a..2010817b 100644 --- a/app/ui/voice_chat/api/tests.rs +++ b/app/ui/voice_chat/api/tests.rs @@ -1352,8 +1352,28 @@ fn turn_with_three_tools_renders_one_grouped_block() { .filter(|m| m.role == ChatRole::ToolActivity) .collect(); assert_eq!(blocks.len(), 1, "all turn tools collapse into one block"); + // Default primary view is the semantic Evidence Summary: what was checked, + // which sources, the key result, with failures surfaced as warnings. assert_eq!( blocks[0].text, + "What I checked · 3 tools · 1 warning\n\ + - Web search: 10 results.\n\ + - Loctree: scanned code surfaces.\n\ + - AICX: failed — empty index.\n\ + Key finding: AICX check failed: empty index." + ); + + // Expanding the block (a click flips `is_collapsed`) reveals the technical + // per-tool list as the layer-2 detail view. + let block_idx = state + .messages + .iter() + .position(|m| m.role == ChatRole::ToolActivity) + .expect("one tool-activity block"); + state.messages[block_idx].is_collapsed = true; + refresh_tool_activity_message(&mut state, block_idx); + assert_eq!( + state.messages[block_idx].text, "Tool activity · 3 calls · 1 failed\n\ - Web search · completed · 10 results\n\ - Loctree context · completed\n\ @@ -1419,7 +1439,7 @@ fn block_is_reused_within_a_turn_and_reopened_next_turn() { } #[test] -fn collapse_toggle_rerenders_block_header_only() { +fn toggle_switches_between_evidence_summary_and_technical_list() { let mut state = VoiceChatOverlayState::default(); feed_tool_result( &mut state, @@ -1431,11 +1451,25 @@ fn collapse_toggle_rerenders_block_header_only() { ); let idx = state.active_tool_activity_index.expect("block open"); - // Expanded by default: header + lines. - assert!(state.messages[idx].text.contains('\n')); + // Default: the Evidence Summary is the primary view. + assert_eq!( + state.messages[idx].text, + "What I checked · 1 tool\n- Loctree: scanned code surfaces." + ); - // Collapse → header only. + // Click → technical per-tool list. state.messages[idx].is_collapsed = true; refresh_tool_activity_message(&mut state, idx); - assert_eq!(state.messages[idx].text, "Tool activity · 1 call completed"); + assert_eq!( + state.messages[idx].text, + "Tool activity · 1 call completed\n- Loctree context · completed" + ); + + // Click again → back to the Evidence Summary. + state.messages[idx].is_collapsed = false; + refresh_tool_activity_message(&mut state, idx); + assert_eq!( + state.messages[idx].text, + "What I checked · 1 tool\n- Loctree: scanned code surfaces." + ); } diff --git a/app/ui/voice_chat/tool_activity.rs b/app/ui/voice_chat/tool_activity.rs index d64fa985..a6ebb0c8 100644 --- a/app/ui/voice_chat/tool_activity.rs +++ b/app/ui/voice_chat/tool_activity.rs @@ -229,6 +229,257 @@ impl ToolActivityGroup { } out } + + /// Roll the turn's entries up by **source** (the system behind the wire + /// name), preserving first-seen order. Two Loctree calls become one + /// `Loctree` row; counts and the richest result text are folded in. + fn source_summaries(&self) -> Vec { + let mut out: Vec = Vec::new(); + for entry in &self.entries { + let source = source_label(&entry.raw_name, &entry.display_name); + let slot = match out.iter_mut().find(|s| s.source == source) { + Some(slot) => slot, + None => { + out.push(SourceSummary { + source, + completed: 0, + failed: 0, + running: 0, + best_count: None, + best_summary: String::new(), + first_error: String::new(), + }); + out.last_mut().expect("just pushed a source slot") + } + }; + match entry.status { + ToolStatus::Completed => { + slot.completed += 1; + if let Some(count) = entry.result_count { + slot.best_count = Some(slot.best_count.map_or(count, |c| c.max(count))); + } + let summary = entry.summary.trim(); + if summary.chars().count() > slot.best_summary.chars().count() { + slot.best_summary = summary.to_string(); + } + } + ToolStatus::Failed => { + slot.failed += 1; + let error = entry.error.trim(); + if slot.first_error.is_empty() && !error.is_empty() { + slot.first_error = error.to_string(); + } + } + ToolStatus::Running => slot.running += 1, + } + } + out + } + + /// The default operator-facing evidence block for one assistant turn. + /// + /// `What I checked · N tools[ · M warning(s)]`, then one compact line per + /// source (`- Source: detail.`), then a `Key finding:` verdict when one can + /// be extracted. Deterministic and self-contained — it echoes the results it + /// already has, never fabricates prose, and never lets a raw `mcp__` wire + /// name reach the rendered text. This is layer 3 of the product layering + /// (raw payload = debug, technical list = [`render`], summary = default). + pub fn evidence_summary(&self) -> String { + let summaries = self.source_summaries(); + if summaries.is_empty() { + return "What I checked".to_string(); + } + let tools = summaries.len(); + let warnings: usize = summaries.iter().map(|s| s.failed).sum(); + let tool_noun = if tools == 1 { "tool" } else { "tools" }; + let mut header = format!("What I checked · {tools} {tool_noun}"); + if warnings > 0 { + let warn_noun = if warnings == 1 { "warning" } else { "warnings" }; + header.push_str(&format!(" · {warnings} {warn_noun}")); + } + let mut out = header; + for summary in &summaries { + out.push('\n'); + out.push_str(&format!( + "- {}: {}", + summary.source, + finish_clause(&source_detail(summary)) + )); + } + if let Some(key) = evidence_key_finding(&summaries) { + out.push('\n'); + out.push_str(&format!("Key finding: {key}")); + } + out + } +} + +// ---- Evidence Summary helpers (deterministic, no LLM) ------------------------- +// +// The summary groups calls by SOURCE — the system behind the wire name — so it +// answers "which sources did I consult", not "how many wire calls fired". These +// are pure, module-local, and unit-testable. Kept separate from +// `friendly_tool_name` (controller/helpers.rs): that table yields the *specific* +// per-call label ("Loctree context"); this yields the *coarse* system heading +// ("Loctree"). Different granularity, not a duplicate path. + +/// One source's rolled-up evidence within a turn. +#[derive(Debug, Clone)] +struct SourceSummary { + source: String, + completed: usize, + failed: usize, + running: usize, + best_count: Option, + best_summary: String, + first_error: String, +} + +/// Coarse source/system a tool call belongs to. Keyed on the wire `raw_name` +/// (the stable system identity); `display_name` is the fallback for native +/// tools that have no `mcp__server__tool` shape. Never emits a raw `mcp__` name. +fn source_label(raw_name: &str, display_name: &str) -> String { + if let Some(rest) = raw_name.strip_prefix("mcp__") { + let server = rest.split("__").next().unwrap_or(""); + return match server { + "brave-search" => "Web search".to_string(), + "loctree-mcp" => "Loctree".to_string(), + "aicx-mcp" => "AICX".to_string(), + "vibecrafted-mcp" => "Vibecrafted".to_string(), + "" => fallback_source(display_name), + other => prettify_source(other), + }; + } + match raw_name { + "read_clipboard" | "write_clipboard" => "Clipboard".to_string(), + "take_screenshot" => "Screenshot".to_string(), + "transcribe_audio" => "Audio".to_string(), + _ => fallback_source(display_name), + } +} + +/// Use the already-friendly display name when no source mapping applies, so the +/// line still reads cleanly instead of falling back to a wire token. +fn fallback_source(display_name: &str) -> String { + let trimmed = display_name.trim(); + if trimmed.is_empty() { + "Tool".to_string() + } else { + trimmed.to_string() + } +} + +/// Prettify an unknown MCP server segment (`some-server` → `Some server`) so the +/// summary stays readable without leaking the `mcp__` addressing scheme. +fn prettify_source(server: &str) -> String { + let cleaned: String = server + .chars() + .map(|c| if c == '-' || c == '_' { ' ' } else { c }) + .collect(); + let mut chars = cleaned.trim().chars(); + match chars.next() { + Some(first) => first.to_uppercase().collect::() + chars.as_str(), + None => "Tool".to_string(), + } +} + +/// Default action verb for a source when a completed call left no result text, +/// so the line reads as an action ("Loctree: scanned code surfaces") rather than +/// a bare "completed". +fn source_action(source: &str) -> &'static str { + match source { + "Web search" => "searched the web", + "Loctree" => "scanned code surfaces", + "AICX" => "checked intent history", + "Vibecrafted" => "verified run status", + "Clipboard" => "read the clipboard", + "Screenshot" => "captured the screen", + "Audio" => "transcribed audio", + _ => "checked", + } +} + +/// Compact result phrase for one source line. Leads with a failure when the +/// source only failed; otherwise leads with the real result (count or richest +/// summary, or the action verb) and appends running/warning counts. +fn source_detail(summary: &SourceSummary) -> String { + if summary.failed > 0 && summary.completed == 0 && summary.running == 0 { + return if summary.first_error.is_empty() { + "failed".to_string() + } else { + format!("failed — {}", clamp_suffix(&summary.first_error)) + }; + } + + let mut detail = if let Some(count) = summary.best_count { + count_phrase(count) + } else if !summary.best_summary.is_empty() { + clamp_suffix(&summary.best_summary) + } else { + source_action(&summary.source).to_string() + }; + if summary.running > 0 { + detail.push_str(&format!(" · {} running", summary.running)); + } + if summary.failed > 0 { + let noun = if summary.failed == 1 { + "warning" + } else { + "warnings" + }; + detail.push_str(&format!(" · {} {noun}", summary.failed)); + } + detail +} + +/// `N result` / `N results`. +fn count_phrase(count: usize) -> String { + let noun = if count == 1 { "result" } else { "results" }; + format!("{count} {noun}") +} + +/// Deterministic single-line verdict: failures dominate; otherwise echo the most +/// informative completed result. `None` when there is nothing notable to report. +fn evidence_key_finding(summaries: &[SourceSummary]) -> Option { + if let Some(failed) = summaries.iter().find(|s| s.failed > 0) { + return Some(if failed.first_error.is_empty() { + format!("{} check failed.", failed.source) + } else { + format!( + "{} check failed: {}", + failed.source, + finish_clause(&clamp_suffix(&failed.first_error)) + ) + }); + } + + let richest = summaries + .iter() + .filter(|s| !s.best_summary.is_empty() || s.best_count.is_some()) + .max_by_key(|s| s.best_summary.chars().count())?; + let detail = if richest.best_summary.is_empty() { + match richest.best_count { + Some(count) => count_phrase(count), + None => return None, + } + } else { + clamp_suffix(&richest.best_summary) + }; + Some(format!("{} — {}", richest.source, finish_clause(&detail))) +} + +/// Append a sentence period unless the clause already ends in terminal +/// punctuation (including the ellipsis a clamp may add). +fn finish_clause(text: &str) -> String { + let trimmed = text.trim_end(); + if trimmed.is_empty() { + return String::new(); + } + if trimmed.ends_with(['.', '!', '?', '…']) { + trimmed.to_string() + } else { + format!("{trimmed}.") + } } #[cfg(test)] @@ -375,4 +626,148 @@ mod tests { ); assert!(line.ends_with('…'), "clamped suffix is elided"); } + + // ---- Evidence Summary (default operator-facing block) ---------------- + + #[test] + fn evidence_summary_has_semantic_heading_and_one_line_per_source() { + let group = group_from_regression(); + let expected = "What I checked · 3 tools · 1 warning\n\ + - Web search: 10 results.\n\ + - Loctree: scanned code surfaces.\n\ + - AICX: failed — empty index.\n\ + Key finding: AICX check failed: empty index."; + assert_eq!(group.evidence_summary(), expected); + } + + #[test] + fn evidence_summary_collapses_repeat_calls_to_one_source() { + // Two Loctree calls in a turn must read as ONE "Loctree" source, not two + // rows — the summary answers "which sources", not "how many wire calls". + let mut group = ToolActivityGroup::default(); + group.mark_result( + "c1", + "mcp__loctree-mcp__context", + "Loctree context", + "scanned voice_chat", + false, + ); + group.mark_result( + "c2", + "mcp__loctree-mcp__find", + "Loctree occurrences/find", + "clipboard 230 occurrences, schowek 4 occurrences", + false, + ); + let summary = group.evidence_summary(); + assert_eq!( + summary, + "What I checked · 1 tool\n\ + - Loctree: clipboard 230 occurrences, schowek 4 occurrences.\n\ + Key finding: Loctree — clipboard 230 occurrences, schowek 4 occurrences." + ); + assert_eq!( + summary.matches("- Loctree:").count(), + 1, + "two Loctree calls fold into one source line" + ); + } + + #[test] + fn evidence_summary_regression_scenario_three_distinct_sources() { + // The operator's suggested regression event sequence. + let mut group = ToolActivityGroup::default(); + group.mark_running("c1", "mcp__brave-search__brave_web_search", "Web search"); + group.mark_result( + "c1", + "mcp__brave-search__brave_web_search", + "Web search", + "10 results", + false, + ); + group.mark_running("c2", "mcp__loctree-mcp__find", "Loctree occurrences/find"); + group.mark_result( + "c2", + "mcp__loctree-mcp__find", + "Loctree occurrences/find", + "clipboard 230 occurrences, schowek 4 occurrences", + false, + ); + group.mark_running( + "c3", + "mcp__vibecrafted-mcp__vc_run_observe", + "Vibecrafted observe", + ); + group.mark_result( + "c3", + "mcp__vibecrafted-mcp__vc_run_observe", + "Vibecrafted observe", + "run completed", + false, + ); + assert_eq!( + group.evidence_summary(), + "What I checked · 3 tools\n\ + - Web search: 10 results.\n\ + - Loctree: clipboard 230 occurrences, schowek 4 occurrences.\n\ + - Vibecrafted: run completed.\n\ + Key finding: Loctree — clipboard 230 occurrences, schowek 4 occurrences." + ); + } + + #[test] + fn evidence_summary_singular_nouns_for_one_tool_one_warning() { + let mut group = ToolActivityGroup::default(); + group.mark_result( + "c1", + "mcp__aicx-mcp__aicx_intents", + "AICX intents", + "boom", + true, + ); + assert_eq!( + group.evidence_summary(), + "What I checked · 1 tool · 1 warning\n\ + - AICX: failed — boom.\n\ + Key finding: AICX check failed: boom." + ); + } + + #[test] + fn evidence_summary_never_leaks_raw_wire_names() { + let group = group_from_regression(); + assert!( + !group.evidence_summary().contains("mcp__"), + "raw MCP names must never reach the evidence summary" + ); + } + + #[test] + fn evidence_summary_failed_line_is_clamped_not_a_stack_dump() { + let mut group = ToolActivityGroup::default(); + let huge = "panic at line 42: ".repeat(40); + group.mark_result("c1", "mcp__x__y", "Tool", &huge, true); + let summary = group.evidence_summary(); + for line in summary.lines() { + assert!( + line.chars().count() < 160, + "no line may become a stack dump: {line}" + ); + } + } + + #[test] + fn evidence_summary_unknown_server_prettifies_without_wire_scheme() { + let mut group = ToolActivityGroup::default(); + group.mark_result( + "c1", + "mcp__some-other-server__do_thing", + "Do thing · Some other server", + "ok", + false, + ); + let summary = group.evidence_summary(); + assert!(summary.contains("- Some other server: ok.")); + assert!(!summary.contains("mcp__")); + } } From 864c3f8e960eeaf67724fd8f97953a135e1a6d0b Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Fri, 26 Jun 2026 16:10:03 -0700 Subject: [PATCH 014/426] [claude/vc-justdo] feat(onboarding): persist first-run mode choice MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds the W1-C1 data model + persistence for the first-run operating lane (Basic / Agentic) without any readiness UI yet. - New OnboardingModeChoice enum in onboarding/state.rs mirroring LanguageChoice: Basic is #[default] so a fresh install never lands in the agentic lane by accident; value()/from_value() give a stable settings token with unknown values decoding back to the safe Basic lane. - Persisted in the same style as existing onboarding preferences: a new UserSettings.onboarding_mode field wired through to_v2/from_v2 (SystemV2), set_string("ONBOARDING_MODE"), and PROMOTED_SETTINGS_KEYS — so it survives the flat<->SettingsV2 round-trip and cannot ghost. - initial_onboarding_mode_choice() seeds OnboardingState at window build (load path); save_onboarding_mode() persists on completion in finish_onboarding (save path). Both have real callers, no dead code. - Additive Option field with skip_serializing_if: existing settings.json and setup_done markers are untouched and load unchanged. - Tests: config-layer round-trip + system-section placement (ghosting guard), default-is-None; onboarding-layer default-is-Basic, persisted-Agentic round-trip, and token round-trip with unknown-token fallback. Gates green: fmt, cargo check --workspace, clippy --workspace --all-targets -D warnings. Authored-By: claude session_id: 2db53e33-c286-4709-9579-b828f3f2e36a date: 2026-06-26T16:09:42 PDT runtime: claude --- app/ui/onboarding/actions.rs | 23 ++++++++++++++++ app/ui/onboarding/state.rs | 52 ++++++++++++++++++++++++++++++++++++ app/ui/onboarding/tests.rs | 47 +++++++++++++++++++++++++++++++- app/ui/onboarding/window.rs | 3 ++- core/config/settings.rs | 43 +++++++++++++++++++++++++++++ 5 files changed, 166 insertions(+), 2 deletions(-) diff --git a/app/ui/onboarding/actions.rs b/app/ui/onboarding/actions.rs index ae64da3d..65445316 100644 --- a/app/ui/onboarding/actions.rs +++ b/app/ui/onboarding/actions.rs @@ -464,8 +464,31 @@ fn save_hotkey_mode() { info!("Onboarding: hotkey mode set to {}", mode.label()); } +/// Persist the selected first-run operating lane (Basic / Agentic) into +/// settings.json, mirroring [`save_language_choice`]. No wizard step mutates +/// the lane yet, so a completed onboarding records the safe Basic default; a +/// later readiness-UI cut will set `state.onboarding_mode` before finish. +fn save_onboarding_mode() { + let mode = { + let state = ONBOARDING_STATE.lock().unwrap_or_else(|e| e.into_inner()); + state.onboarding_mode + }; + + let mut settings = UserSettings::load(); + settings.onboarding_mode = Some(mode.value().to_string()); + if let Err(e) = settings.save() { + warn!( + "Onboarding: failed to persist onboarding mode {}: {e}", + mode.value() + ); + } + + info!("Onboarding: mode set to {}", mode.label()); +} + pub(super) fn finish_onboarding(completed: bool) { if completed { + save_onboarding_mode(); reconcile_runtime_after_onboarding_completion(); mark_onboarding_done(); } diff --git a/app/ui/onboarding/state.rs b/app/ui/onboarding/state.rs index ffffe042..776636b4 100644 --- a/app/ui/onboarding/state.rs +++ b/app/ui/onboarding/state.rs @@ -50,6 +50,47 @@ impl HotkeyModeChoice { } } +/// First-run operating lane the user picks during onboarding. +/// +/// `Basic` keeps CodeScribe a plain dictation tool; `Agentic` opts into the +/// dictation-driven orchestration runtime (which a later cut gates on the +/// Vibecrafted + MCP substrate). `Basic` is the safe default so a fresh +/// install never lands in the agentic lane by accident. +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] +pub(super) enum OnboardingModeChoice { + #[default] + Basic, + Agentic, +} + +impl OnboardingModeChoice { + pub(super) fn label(self) -> &'static str { + match self { + Self::Basic => "Basic", + Self::Agentic => "Agentic", + } + } + + /// Stable token persisted in settings.json. Kept distinct from [`label`] + /// so display copy can change without breaking persisted values. + pub(super) fn value(self) -> &'static str { + match self { + Self::Basic => "basic", + Self::Agentic => "agentic", + } + } + + /// Decode a persisted token. Unknown values fall back to `Basic` — the + /// safe default — so a corrupt or forward-version setting can never force + /// the agentic lane. + pub(super) fn from_value(value: &str) -> Self { + match value { + "agentic" => Self::Agentic, + _ => Self::Basic, + } + } +} + #[derive(Clone, Copy, Default)] pub(super) struct UiRefs { pub(super) sidebar_step_labels: [Option; TOTAL_STEPS], @@ -84,6 +125,7 @@ pub(super) struct OnboardingState { pub(super) step_index: usize, pub(super) language: LanguageChoice, pub(super) hotkey_mode: HotkeyModeChoice, + pub(super) onboarding_mode: OnboardingModeChoice, pub(super) requested_permissions: [bool; 5], pub(super) permission_states: [PermissionUiStatus; 5], pub(super) scheduled_auto_advance_step: Option, @@ -102,6 +144,7 @@ impl Default for OnboardingState { step_index: 0, language: LanguageChoice::default(), hotkey_mode: HotkeyModeChoice::default(), + onboarding_mode: OnboardingModeChoice::default(), requested_permissions: [false; 5], permission_states: [PermissionUiStatus::NotDetermined; 5], scheduled_auto_advance_step: None, @@ -159,3 +202,12 @@ pub(super) fn initial_hotkey_choice() -> HotkeyModeChoice { (false, false) => HotkeyModeChoice::Both, } } + +pub(super) fn initial_onboarding_mode_choice() -> OnboardingModeChoice { + let settings = UserSettings::load(); + settings + .onboarding_mode + .as_deref() + .map(OnboardingModeChoice::from_value) + .unwrap_or_default() +} diff --git a/app/ui/onboarding/tests.rs b/app/ui/onboarding/tests.rs index e421330d..877b8c88 100644 --- a/app/ui/onboarding/tests.rs +++ b/app/ui/onboarding/tests.rs @@ -1,7 +1,7 @@ use serial_test::serial; use tempfile::TempDir; -use crate::config::Config; +use crate::config::{Config, UserSettings}; use crate::os::permissions::PermissionStatus; use super::permission_flow::{ @@ -13,6 +13,7 @@ use super::session::{ setup_done_refresh_target, }; use super::should_show_onboarding; +use super::state::{OnboardingModeChoice, initial_onboarding_mode_choice}; use super::steps::{PermissionKind, PermissionRecoveryStrategy, WizardStep, step_for_index}; fn setup_test_env() -> TempDir { @@ -54,6 +55,50 @@ fn onboarding_progress_round_trips_for_resume() { assert_eq!(load_onboarding_progress(), 3); } +#[test] +#[serial] +fn onboarding_mode_defaults_to_basic_on_fresh_install() { + let _tmp = setup_test_env(); + assert_eq!( + initial_onboarding_mode_choice(), + OnboardingModeChoice::Basic + ); +} + +#[test] +#[serial] +fn onboarding_mode_round_trips_persisted_agentic_choice() { + let _tmp = setup_test_env(); + + let settings = UserSettings { + onboarding_mode: Some(OnboardingModeChoice::Agentic.value().to_string()), + ..Default::default() + }; + settings.save().expect("persist agentic onboarding mode"); + + assert_eq!( + initial_onboarding_mode_choice(), + OnboardingModeChoice::Agentic + ); +} + +#[test] +fn onboarding_mode_value_round_trips_through_token() { + assert_eq!( + OnboardingModeChoice::from_value(OnboardingModeChoice::Basic.value()), + OnboardingModeChoice::Basic + ); + assert_eq!( + OnboardingModeChoice::from_value(OnboardingModeChoice::Agentic.value()), + OnboardingModeChoice::Agentic + ); + // Unknown / forward-version tokens fall back to the safe Basic lane. + assert_eq!( + OnboardingModeChoice::from_value("orchestrator-9000"), + OnboardingModeChoice::Basic + ); +} + fn assert_resume_permission(step: Option, expected: PermissionKind) { assert_eq!( step.map(step_for_index), diff --git a/app/ui/onboarding/window.rs b/app/ui/onboarding/window.rs index 89bc3e58..0c32677e 100644 --- a/app/ui/onboarding/window.rs +++ b/app/ui/onboarding/window.rs @@ -23,7 +23,7 @@ use super::render::render_current_step; use super::session::{load_onboarding_progress, release_onboarding_lock, save_onboarding_progress}; use super::state::{ ONBOARDING_STATE, OnboardingState, UiRefs, initial_hotkey_choice, initial_language_choice, - mode_api_key_configured, + initial_onboarding_mode_choice, mode_api_key_configured, }; use super::steps::TOTAL_STEPS; use super::widgets::{configure_label, create_radio_button, system_secondary_color}; @@ -167,6 +167,7 @@ fn show_onboarding_wizard_impl() -> bool { step_index: resume_step, language: initial_language_choice(), hotkey_mode: initial_hotkey_choice(), + onboarding_mode: initial_onboarding_mode_choice(), requested_permissions: [false; 5], permission_states: [super::permission_flow::PermissionUiStatus::NotDetermined; 5], scheduled_auto_advance_step: None, diff --git a/core/config/settings.rs b/core/config/settings.rs index d1eae505..d8f4c092 100644 --- a/core/config/settings.rs +++ b/core/config/settings.rs @@ -82,6 +82,10 @@ pub struct UserSettings { pub qube_daemon_autostart: Option, #[serde(skip_serializing_if = "Option::is_none")] pub agent_enter_sends: Option, + /// First-run operating lane chosen during onboarding ("basic" | "agentic"). + /// `None` means "not yet chosen" — callers treat that as the safe Basic lane. + #[serde(skip_serializing_if = "Option::is_none")] + pub onboarding_mode: Option, // ── Voice Lab survivors (user-facing UX knobs) ── #[serde(skip_serializing_if = "Option::is_none")] @@ -278,6 +282,8 @@ struct SystemV2 { start_at_login: Option, #[serde(skip_serializing_if = "Option::is_none")] qube_daemon_autostart: Option, + #[serde(skip_serializing_if = "Option::is_none")] + onboarding_mode: Option, } /// Canonical list of env keys that route to `settings.json` (not `.env`). @@ -325,6 +331,7 @@ pub const PROMOTED_SETTINGS_KEYS: &[&str] = &[ "START_AT_LOGIN", "QUBE_DAEMON_AUTOSTART", "AGENT_ENTER_SENDS", + "ONBOARDING_MODE", // Voice Lab survivors "CODESCRIBE_BUFFER_DELAY_MS", "CODESCRIBE_TYPING_CPS", @@ -410,6 +417,7 @@ impl UserSettings { system: Some(SystemV2 { start_at_login: self.start_at_login, qube_daemon_autostart: self.qube_daemon_autostart, + onboarding_mode: self.onboarding_mode.clone(), }), } } @@ -527,6 +535,7 @@ impl UserSettings { quick_notes_save_only: v2.features.as_ref().and_then(|f| f.quick_notes_save_only), start_at_login: v2.system.as_ref().and_then(|s| s.start_at_login), qube_daemon_autostart: v2.system.as_ref().and_then(|s| s.qube_daemon_autostart), + onboarding_mode: v2.system.as_ref().and_then(|s| s.onboarding_mode.clone()), agent_enter_sends: v2.interaction.as_ref().and_then(|i| i.agent_enter_sends), buffer_delay_ms: v2 .speech @@ -793,6 +802,7 @@ impl UserSettings { "AUDIO_INPUT_DEVICE" => self.audio_input_device = Some(value.to_owned()), "SOUND_NAME" => self.sound_name = Some(value.to_owned()), "WHISPER_MODEL" => self.whisper_model = Some(value.to_owned()), + "ONBOARDING_MODE" => self.onboarding_mode = Some(value.to_owned()), other => { warn!("Unknown string setting key: {other}"); return; @@ -1043,6 +1053,39 @@ mod tests { ); } + #[test] + #[serial] + fn test_onboarding_mode_persists_in_v2_system_section() { + // Ghosting guard (W1-C1): onboarding_mode must survive the flat -> + // SettingsV2 -> flat round-trip and land in the V2 `system` section. + let _tmp = setup_isolated_data_dir(); + let mut settings = UserSettings::default(); + settings.set_string("ONBOARDING_MODE", "agentic"); + + let loaded = UserSettings::load(); + assert_eq!(loaded.onboarding_mode.as_deref(), Some("agentic")); + + let path = UserSettings::settings_path(); + let persisted: serde_json::Value = + serde_json::from_str(&fs::read_to_string(path).expect("read persisted settings")) + .expect("parse persisted settings"); + assert_eq!( + persisted + .get("system") + .and_then(|v| v.get("onboarding_mode")) + .and_then(|v| v.as_str()), + Some("agentic") + ); + } + + #[test] + #[serial] + fn test_onboarding_mode_defaults_to_none_when_unset() { + let _tmp = setup_isolated_data_dir(); + let settings = UserSettings::default(); + assert_eq!(settings.onboarding_mode, None); + } + #[test] #[serial] fn test_mode_binding_updates_canonical_contract_only() { From 968d4c11209687521394567113eecbcad618eaa0 Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Fri, 26 Jun 2026 16:20:28 -0700 Subject: [PATCH 015/426] [claude/vc-justdo] feat(onboarding): classify agentic runtime readiness MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit W1-C2: adds a mode-aware readiness probe for the Agentic operating lane without disturbing Basic's neutral/optional MCP contract. - New probe_agentic_readiness()/_at() in app/agent/tools/mcp.rs returns an AgenticReadinessReport with a hard ready/not-ready verdict plus one row per prerequisite: Vibecrafted runtime, AICX MCP, Loctree MCP, PRView integration. Reuses McpStatusRow/McpRowTone + the existing runtime-discovery cache — no parallel tone system, no new config parser. - Prereq classification is honest and actionable: not_configured / disabled / failed are blocking (Bad); configured-but-not-yet-discovered is non-blocking (Warn); discovered is Good. Missing mcp.json in Agentic is NOT neutral (that is Basic's contract) — it classifies every prereq as not configured. - PRView: loctree literal scan (356 files) found zero `prview` occurrences anywhere in the repo. We refuse to invent a binary name — classify_prview reports `missing — no PRView MCP server or local command found` and only honours a user-wired server whose name contains "prview". Its absence is surfaced but never fakes-green or blocks core readiness. - Vibecrafted runtime is proven via the `vibecrafted-mcp` server name (verified repo truth: controller/helpers.rs:479, voice_chat/tool_activity.rs:348); a deeper CLI/binary handshake is out of this cut's scope. - Real caller wired: engine_tab.rs build_mcp_section appends the readiness rows only when the persisted onboarding_mode token == "agentic" (unknown/absent decodes to the safe Basic lane). No dead code. - Tests cover the acceptance matrix: Basic-missing-neutral vs Agentic-missing- not-ready contrast, every-prereq-not-configured, configured AICX/Loctree recognized, disabled blocks, PRView missing classified explicitly, parse error not-ready. 12/12 mcp tests green; fmt + cargo check --workspace + clippy --workspace --all-targets -D warnings clean. Authored-By: claude session_id: 3033edc9-6635-494a-bb74-0191533d03af date: 2026-06-26T16:20:11 PDT runtime: claude --- app/agent/tools/mcp.rs | 411 +++++++++++++++++++++++++++++++++- app/ui/settings/engine_tab.rs | 46 +++- 2 files changed, 449 insertions(+), 8 deletions(-) diff --git a/app/agent/tools/mcp.rs b/app/agent/tools/mcp.rs index fb6f3dde..5b1bb492 100644 --- a/app/agent/tools/mcp.rs +++ b/app/agent/tools/mcp.rs @@ -173,6 +173,254 @@ fn probe_mcp_status_at(path: &Path) -> McpStatusReport { } } +/// One Agentic prerequisite the readiness probe classifies, paired with the MCP +/// server name that satisfies it. +/// +/// Repo truth (loctree literal scan, 2026-06-26): these three server names are +/// the only first-party agentic surfaces referenced anywhere in CodeScribe +/// (`app/controller/helpers.rs`, `app/ui/voice_chat/tool_activity.rs`). PRView +/// is deliberately absent here — it has no known MCP server name or local +/// command in repo truth and is handled separately by `classify_prview`. +const AGENTIC_PREREQS: &[(&str, &str)] = &[ + ("Vibecrafted runtime:", "vibecrafted-mcp"), + ("AICX MCP:", "aicx-mcp"), + ("Loctree MCP:", "loctree-mcp"), +]; + +/// Mode-aware readiness verdict for the Agentic operating lane. +/// +/// Distinct from [`McpStatusReport`] (the Basic-mode config probe) so the two +/// lanes can never bleed into each other: Basic stays neutral/optional, Agentic +/// gets a hard ready/not-ready verdict. Reuses [`McpStatusRow`]/[`McpRowTone`] +/// so there is no parallel tone system. +pub struct AgenticReadinessReport { + pub config_path_display: String, + ready: bool, + rows: Vec, +} + +impl AgenticReadinessReport { + pub fn summary_rows(&self) -> &[McpStatusRow] { + &self.rows + } + + /// `true` only when every gating prerequisite (Vibecrafted / AICX / Loctree) + /// is non-blocking. PRView's missing integration is surfaced but never flips + /// this to `false` on its own — otherwise Agentic could never be ready. + pub fn is_ready(&self) -> bool { + self.ready + } +} + +/// Classify one gating prerequisite against config + cached runtime discovery. +/// +/// Returns the display row and whether the prerequisite is *blocking* (i.e. it +/// flips overall readiness to not-ready). The value strings carry a stable +/// keyword (`not configured` / `disabled` / `failed` / `ready` / `configured`) +/// plus an actionable hint, mirroring the honesty of [`probe_mcp_status_at`]. +fn classify_prereq( + label: &str, + server_name: &str, + config: &McpConfigFile, + runtime: &BTreeMap, +) -> (McpStatusRow, bool) { + let configured = config.servers.get(server_name); + let (value, tone, blocking) = match (configured, runtime.get(server_name)) { + // Not present in mcp.json at all — the substrate for this prereq is absent. + (None, _) => ( + format!("not configured — add \"{server_name}\" to ~/.codescribe/mcp.json"), + McpRowTone::Bad, + true, + ), + // Real discovery succeeded — tools are live. + (Some(_), Some(ServerRuntime::Tools(count))) => ( + format!("ready — {count} tool(s) live"), + McpRowTone::Good, + false, + ), + // Configured but discovery failed: surface the concrete reason. + (Some(_), Some(ServerRuntime::Failed(reason))) => { + (format!("failed: {reason}"), McpRowTone::Bad, true) + } + // Present in config but disabled (either via cache or the `enabled` flag): + // a disabled prerequisite blocks the agentic lane. + (Some(cfg), runtime_state) => { + let enabled = cfg.enabled.unwrap_or(true); + if matches!(runtime_state, Some(ServerRuntime::Disabled)) || !enabled { + ( + format!("disabled — set \"enabled\": true for \"{server_name}\""), + McpRowTone::Bad, + true, + ) + } else { + // Config is correct; the agent runtime simply has not run discovery + // yet. Not blocking — the substrate is present. + ( + "configured — agent not started yet".to_string(), + McpRowTone::Warn, + false, + ) + } + } + }; + ( + McpStatusRow { + label: label.to_string(), + value, + tone, + }, + blocking, + ) +} + +/// Classify PRView readiness. +/// +/// Repo truth (loctree literal scan, 2026-06-26): there is NO `prview` MCP +/// server name and no local prview command anywhere in CodeScribe. We refuse to +/// invent a binary name. If a user has manually wired a server whose name +/// contains "prview" we honour that real config; otherwise we report the exact +/// evidence — missing integration — and never fake green readiness. +fn classify_prview( + config: &McpConfigFile, + runtime: &BTreeMap, +) -> McpStatusRow { + let detected = config + .servers + .keys() + .find(|name| name.to_ascii_lowercase().contains("prview")); + match detected { + Some(name) => { + let (value, tone) = match runtime.get(name) { + Some(ServerRuntime::Tools(count)) => ( + format!("ready — {count} tool(s) live (via \"{name}\")"), + McpRowTone::Good, + ), + Some(ServerRuntime::Failed(reason)) => { + (format!("failed: {reason}"), McpRowTone::Bad) + } + Some(ServerRuntime::Disabled) => { + (format!("disabled — \"{name}\""), McpRowTone::Warn) + } + None => ( + format!("configured — agent not started yet (via \"{name}\")"), + McpRowTone::Warn, + ), + }; + McpStatusRow { + label: "PRView integration:".to_string(), + value, + tone, + } + } + None => McpStatusRow { + label: "PRView integration:".to_string(), + // `missing_prview_integration`: no MCP server, no local command. + value: "missing — no PRView MCP server or local command found".to_string(), + tone: McpRowTone::Warn, + }, + } +} + +/// Agentic-lane readiness probe: classifies the agentic substrate prerequisites +/// (Vibecrafted runtime, AICX MCP, Loctree MCP, PRView integration). +/// +/// Only meaningful when the user chose the Agentic operating lane. Basic mode +/// must keep calling [`probe_mcp_status`] so a missing `mcp.json` stays a +/// neutral/optional state rather than a hard not-ready verdict. +pub fn probe_agentic_readiness() -> AgenticReadinessReport { + let path = match codescribe_core::mcp::default_mcp_config_path() { + Ok(path) => path, + Err(error) => { + return AgenticReadinessReport { + config_path_display: "unavailable".to_string(), + ready: false, + rows: vec![McpStatusRow { + label: "Agentic readiness:".to_string(), + value: format!("not ready — config path unavailable: {error}"), + tone: McpRowTone::Bad, + }], + }; + } + }; + probe_agentic_readiness_at(&path) +} + +fn probe_agentic_readiness_at(path: &Path) -> AgenticReadinessReport { + let config_path_display = path.display().to_string(); + + // Missing config in the Agentic lane is NOT neutral (that is Basic's + // contract): the substrate is simply absent, so classify against an empty + // config and every prereq reports "not configured" → not ready. + let config = if !path.exists() { + McpConfigFile { + servers: Default::default(), + } + } else { + match McpConfigFile::load(path) { + Ok(config) => config, + Err(error) => { + return AgenticReadinessReport { + config_path_display, + ready: false, + rows: vec![ + McpStatusRow { + label: "Agentic readiness:".to_string(), + value: "not ready — config error".to_string(), + tone: McpRowTone::Bad, + }, + McpStatusRow { + label: "Config error:".to_string(), + value: anyhow_root_cause(&error), + tone: McpRowTone::Bad, + }, + ], + }; + } + } + }; + + let runtime = runtime_cache() + .lock() + .unwrap_or_else(|poison| poison.into_inner()) + .clone(); + + let mut prereq_rows = Vec::with_capacity(AGENTIC_PREREQS.len() + 1); + let mut blocking = 0usize; + for (label, server_name) in AGENTIC_PREREQS { + let (row, is_blocking) = classify_prereq(label, server_name, &config, &runtime); + if is_blocking { + blocking += 1; + } + prereq_rows.push(row); + } + prereq_rows.push(classify_prview(&config, &runtime)); + + let ready = blocking == 0; + let verdict = if ready { + McpStatusRow { + label: "Agentic readiness:".to_string(), + value: "ready — core substrate present (PRView integration unavailable)".to_string(), + tone: McpRowTone::Good, + } + } else { + McpStatusRow { + label: "Agentic readiness:".to_string(), + value: format!("not ready — {blocking} prerequisite(s) missing"), + tone: McpRowTone::Bad, + } + }; + + let mut rows = Vec::with_capacity(prereq_rows.len() + 1); + rows.push(verdict); + rows.extend(prereq_rows); + + AgenticReadinessReport { + config_path_display, + ready, + rows, + } +} + pub fn register(registry: &mut ToolRegistry) { let path = match codescribe_core::mcp::default_mcp_config_path() { Ok(path) => path, @@ -374,7 +622,8 @@ mod tests { use serde_json::json; use super::{ - McpRowTone, probe_mcp_status_at, public_tool_name, register_mcp_tools_from_config_path, + McpRowTone, probe_agentic_readiness_at, probe_mcp_status_at, public_tool_name, + register_mcp_tools_from_config_path, }; #[test] @@ -507,4 +756,164 @@ mod tests { fn repo_root() -> PathBuf { PathBuf::from(env!("CARGO_MANIFEST_DIR")) } + + // --- Agentic readiness probe (W1-C2) ------------------------------------- + // + // These exercise `probe_agentic_readiness_at` with real prereq server names + // (`vibecrafted-mcp` / `aicx-mcp` / `loctree-mcp`). The global runtime cache + // is never populated for those names by any other test, so the readiness + // probe sees them as "configured, agent not started" — the deterministic, + // ordering-safe baseline. + + fn find_row<'a>( + report: &'a super::AgenticReadinessReport, + label: &str, + ) -> &'a super::McpStatusRow { + report + .summary_rows() + .iter() + .find(|row| row.label == label) + .unwrap_or_else(|| panic!("row '{label}' present")) + } + + #[test] + fn basic_probe_stays_neutral_while_agentic_is_not_ready_for_missing_config() { + // Same nonexistent path, two lanes: Basic must remain optional/neutral, + // Agentic must report a hard not-ready verdict. + let temp = tempfile::tempdir().expect("temp dir"); + let path = temp.path().join("mcp.json"); // never created + + let basic = probe_mcp_status_at(&path); + assert_eq!(basic.summary_rows().len(), 1); + assert_eq!(basic.summary_rows()[0].tone, McpRowTone::Neutral); + + let agentic = probe_agentic_readiness_at(&path); + assert!( + !agentic.is_ready(), + "agentic must not be ready without config" + ); + let verdict = find_row(&agentic, "Agentic readiness:"); + assert_eq!(verdict.tone, McpRowTone::Bad); + assert!( + verdict.value.contains("not ready"), + "got: {}", + verdict.value + ); + } + + #[test] + fn agentic_missing_config_classifies_every_prereq_as_not_configured() { + let temp = tempfile::tempdir().expect("temp dir"); + let path = temp.path().join("mcp.json"); // never created + + let report = probe_agentic_readiness_at(&path); + assert!(!report.is_ready()); + for label in ["Vibecrafted runtime:", "AICX MCP:", "Loctree MCP:"] { + let row = find_row(&report, label); + assert_eq!(row.tone, McpRowTone::Bad, "{label} should block"); + assert!( + row.value.contains("not configured"), + "{label} got: {}", + row.value + ); + } + } + + #[test] + fn agentic_recognizes_configured_aicx_and_loctree() { + let temp = tempfile::tempdir().expect("temp dir"); + let path = temp.path().join("mcp.json"); + let config = json!({ + "mcpServers": { + "vibecrafted-mcp": { "command": "vibecrafted-mcp", "enabled": true }, + "aicx-mcp": { "command": "aicx-mcp", "enabled": true }, + "loctree-mcp": { "command": "loctree-mcp", "enabled": true } + } + }); + fs::write(&path, config.to_string()).expect("write config"); + + let report = probe_agentic_readiness_at(&path); + // All three prereqs are configured + enabled (no runtime discovery yet), + // so none block: the core substrate is recognized as present. + assert!( + report.is_ready(), + "configured substrate should be ready: {:?}", + report + .summary_rows() + .iter() + .map(|r| format!("{}={}", r.label, r.value)) + .collect::>() + ); + for label in ["AICX MCP:", "Loctree MCP:"] { + let row = find_row(&report, label); + assert_eq!(row.tone, McpRowTone::Warn); + assert!( + row.value.contains("configured"), + "{label} got: {}", + row.value + ); + } + } + + #[test] + fn agentic_disabled_prereq_blocks_readiness() { + let temp = tempfile::tempdir().expect("temp dir"); + let path = temp.path().join("mcp.json"); + let config = json!({ + "mcpServers": { + "vibecrafted-mcp": { "command": "vibecrafted-mcp", "enabled": true }, + "aicx-mcp": { "command": "aicx-mcp", "enabled": false }, + "loctree-mcp": { "command": "loctree-mcp", "enabled": true } + } + }); + fs::write(&path, config.to_string()).expect("write config"); + + let report = probe_agentic_readiness_at(&path); + assert!(!report.is_ready(), "a disabled prereq must block readiness"); + let row = find_row(&report, "AICX MCP:"); + assert_eq!(row.tone, McpRowTone::Bad); + assert!(row.value.contains("disabled"), "got: {}", row.value); + } + + #[test] + fn agentic_prview_classified_missing_when_no_known_integration() { + let temp = tempfile::tempdir().expect("temp dir"); + let path = temp.path().join("mcp.json"); + // Full agentic substrate present, but no PRView surface anywhere. + let config = json!({ + "mcpServers": { + "vibecrafted-mcp": { "command": "vibecrafted-mcp", "enabled": true }, + "aicx-mcp": { "command": "aicx-mcp", "enabled": true }, + "loctree-mcp": { "command": "loctree-mcp", "enabled": true } + } + }); + fs::write(&path, config.to_string()).expect("write config"); + + let report = probe_agentic_readiness_at(&path); + let row = find_row(&report, "PRView integration:"); + assert!( + row.value.contains("missing") && row.value.contains("PRView"), + "PRView must be explicitly classified as missing, got: {}", + row.value + ); + // PRView's missing integration must NOT, on its own, block readiness — + // otherwise Agentic could never be ready. + assert!( + report.is_ready(), + "missing PRView alone should not block core readiness" + ); + } + + #[test] + fn agentic_parse_error_is_not_ready_with_concrete_reason() { + let temp = tempfile::tempdir().expect("temp dir"); + let path = temp.path().join("mcp.json"); + fs::write(&path, "{ not valid json").expect("write garbage"); + + let report = probe_agentic_readiness_at(&path); + assert!(!report.is_ready()); + let row = find_row(&report, "Config error:"); + assert_eq!(row.tone, McpRowTone::Bad); + assert!(!row.value.is_empty()); + } } diff --git a/app/ui/settings/engine_tab.rs b/app/ui/settings/engine_tab.rs index acf14952..6a23057d 100644 --- a/app/ui/settings/engine_tab.rs +++ b/app/ui/settings/engine_tab.rs @@ -398,14 +398,46 @@ fn build_mcp_section(container: Id, y: &mut f64, pad: f64, content_w: f64) { secondary, ); + let tone_color = |tone: McpRowTone| match tone { + McpRowTone::Good => ui_colors::status_granted(), + McpRowTone::Warn => ui_colors::status_warning(), + McpRowTone::Bad => ui_colors::bubble_error_text(), + McpRowTone::Neutral => secondary, + }; + for row in status.summary_rows() { - let color = match row.tone { - McpRowTone::Good => ui_colors::status_granted(), - McpRowTone::Warn => ui_colors::status_warning(), - McpRowTone::Bad => ui_colors::bubble_error_text(), - McpRowTone::Neutral => secondary, - }; - add_engine_metric_row(container, y, pad, content_w, &row.label, &row.value, color); + add_engine_metric_row( + container, + y, + pad, + content_w, + &row.label, + &row.value, + tone_color(row.tone), + ); + } + + // Agentic lane adds a stricter readiness verdict (Vibecrafted / AICX / + // Loctree / PRView). Basic mode keeps the neutral config probe above and + // never sees this block. The persisted token is the source of truth; an + // unknown/absent value decodes to the safe Basic lane. + let agentic = crate::config::UserSettings::load() + .onboarding_mode + .as_deref() + == Some("agentic"); + if agentic { + let readiness = crate::agent::tools::mcp::probe_agentic_readiness(); + for row in readiness.summary_rows() { + add_engine_metric_row( + container, + y, + pad, + content_w, + &row.label, + &row.value, + tone_color(row.tone), + ); + } } // SAFETY: Settings AppKit main-thread build path. From de4960ea928db274a7184ded50c36ea7da973258 Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Fri, 26 Jun 2026 16:28:26 -0700 Subject: [PATCH 016/426] [claude/vc-justdo] fix(onboarding): require PRView for agentic readiness MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit W1-C2b — correct W1-C2's product semantics. PRView MCP/integration is minimum agentic substrate, not optional decoration, so a missing/disabled/ failed PRView surface must now BLOCK Agentic readiness instead of merely warning. - classify_prview now returns (McpStatusRow, bool) matching classify_prereq, with the full state matrix: Tools=live/ok, Failed=block, Disabled or enabled:false=block, configured-not-started=non-blocking. - Missing PRView keeps the honest label (loctree literal prview = 0 production occurrences, no invented binary name) but flips to Bad tone + "(required)" and feeds the blocking counter, so is_ready() is false. - Ready verdict copy updated: "ready" now implies full substrate present. - Tests: missing PRView blocks readiness; a configured/enabled PRView-like server satisfies the prereq; a disabled PRView server blocks. Basic-mode probe_mcp_status untouched (missing mcp.json stays neutral/optional). Authored-By: claude session_id: 4916ab15-cd14-4431-8060-7473cb4aa913 date: 2026-06-26T23:10:00 CEST runtime: terminal --- app/agent/tools/mcp.rs | 165 +++++++++++++++++++++++++++++------------ 1 file changed, 118 insertions(+), 47 deletions(-) diff --git a/app/agent/tools/mcp.rs b/app/agent/tools/mcp.rs index 5b1bb492..0112fad4 100644 --- a/app/agent/tools/mcp.rs +++ b/app/agent/tools/mcp.rs @@ -204,9 +204,10 @@ impl AgenticReadinessReport { &self.rows } - /// `true` only when every gating prerequisite (Vibecrafted / AICX / Loctree) - /// is non-blocking. PRView's missing integration is surfaced but never flips - /// this to `false` on its own — otherwise Agentic could never be ready. + /// `true` only when every gating prerequisite is non-blocking. The agentic + /// substrate is Vibecrafted + AICX + Loctree + PRView; all four are required. + /// A missing/disabled/failed PRView integration flips this to `false` just + /// like any other prerequisite — PRView is minimum substrate, not decoration. pub fn is_ready(&self) -> bool { self.ready } @@ -273,52 +274,78 @@ fn classify_prereq( ) } -/// Classify PRView readiness. +/// Classify PRView readiness as a **required** agentic prerequisite. /// /// Repo truth (loctree literal scan, 2026-06-26): there is NO `prview` MCP /// server name and no local prview command anywhere in CodeScribe. We refuse to /// invent a binary name. If a user has manually wired a server whose name /// contains "prview" we honour that real config; otherwise we report the exact /// evidence — missing integration — and never fake green readiness. +/// +/// Returns the display row and whether the prerequisite is *blocking*, matching +/// [`classify_prereq`]'s contract: a missing/disabled/failed PRView integration +/// blocks Agentic readiness because PRView is minimum substrate, not decoration. fn classify_prview( config: &McpConfigFile, runtime: &BTreeMap, -) -> McpStatusRow { +) -> (McpStatusRow, bool) { let detected = config .servers - .keys() - .find(|name| name.to_ascii_lowercase().contains("prview")); - match detected { - Some(name) => { - let (value, tone) = match runtime.get(name) { - Some(ServerRuntime::Tools(count)) => ( - format!("ready — {count} tool(s) live (via \"{name}\")"), - McpRowTone::Good, - ), - Some(ServerRuntime::Failed(reason)) => { - (format!("failed: {reason}"), McpRowTone::Bad) - } - Some(ServerRuntime::Disabled) => { - (format!("disabled — \"{name}\""), McpRowTone::Warn) + .iter() + .find(|(name, _)| name.to_ascii_lowercase().contains("prview")); + let (value, tone, blocking) = match detected { + Some((name, cfg)) => match runtime.get(name) { + // Real discovery succeeded — PRView tools are live. + Some(ServerRuntime::Tools(count)) => ( + format!("ready — {count} tool(s) live (via \"{name}\")"), + McpRowTone::Good, + false, + ), + // Configured but discovery failed: surface the concrete reason. + Some(ServerRuntime::Failed(reason)) => { + (format!("failed: {reason}"), McpRowTone::Bad, true) + } + // Disabled (via cache or the `enabled` flag) blocks the agentic lane. + Some(ServerRuntime::Disabled) => ( + format!("disabled — set \"enabled\": true for \"{name}\""), + McpRowTone::Bad, + true, + ), + None => { + if cfg.enabled.unwrap_or(true) { + // Config is correct; the agent runtime has not run discovery + // yet. Not blocking — the substrate is present. + ( + format!("configured — agent not started yet (via \"{name}\")"), + McpRowTone::Warn, + false, + ) + } else { + ( + format!("disabled — set \"enabled\": true for \"{name}\""), + McpRowTone::Bad, + true, + ) } - None => ( - format!("configured — agent not started yet (via \"{name}\")"), - McpRowTone::Warn, - ), - }; - McpStatusRow { - label: "PRView integration:".to_string(), - value, - tone, } - } - None => McpStatusRow { + }, + // `missing_prview_integration`: no MCP server, no local command. Honest + // evidence preserved (loctree literal `prview` = 0 production occurrences), + // but PRView is required substrate, so its absence blocks readiness. + None => ( + "missing (required) — no PRView MCP server or local command found".to_string(), + McpRowTone::Bad, + true, + ), + }; + ( + McpStatusRow { label: "PRView integration:".to_string(), - // `missing_prview_integration`: no MCP server, no local command. - value: "missing — no PRView MCP server or local command found".to_string(), - tone: McpRowTone::Warn, + value, + tone, }, - } + blocking, + ) } /// Agentic-lane readiness probe: classifies the agentic substrate prerequisites @@ -393,13 +420,17 @@ fn probe_agentic_readiness_at(path: &Path) -> AgenticReadinessReport { } prereq_rows.push(row); } - prereq_rows.push(classify_prview(&config, &runtime)); + let (prview_row, prview_blocking) = classify_prview(&config, &runtime); + if prview_blocking { + blocking += 1; + } + prereq_rows.push(prview_row); let ready = blocking == 0; let verdict = if ready { McpStatusRow { label: "Agentic readiness:".to_string(), - value: "ready — core substrate present (PRView integration unavailable)".to_string(), + value: "ready — full agentic substrate present".to_string(), tone: McpRowTone::Good, } } else { @@ -820,24 +851,27 @@ mod tests { } #[test] - fn agentic_recognizes_configured_aicx_and_loctree() { + fn agentic_recognizes_configured_full_substrate() { let temp = tempfile::tempdir().expect("temp dir"); let path = temp.path().join("mcp.json"); + // Full required substrate: Vibecrafted + AICX + Loctree + a PRView-like + // server. A user who wires a "prview" server satisfies the prerequisite. let config = json!({ "mcpServers": { "vibecrafted-mcp": { "command": "vibecrafted-mcp", "enabled": true }, "aicx-mcp": { "command": "aicx-mcp", "enabled": true }, - "loctree-mcp": { "command": "loctree-mcp", "enabled": true } + "loctree-mcp": { "command": "loctree-mcp", "enabled": true }, + "vista-prview": { "command": "vista-prview", "enabled": true } } }); fs::write(&path, config.to_string()).expect("write config"); let report = probe_agentic_readiness_at(&path); - // All three prereqs are configured + enabled (no runtime discovery yet), - // so none block: the core substrate is recognized as present. + // All four prereqs are configured + enabled (no runtime discovery yet), + // so none block: the full agentic substrate is recognized as present. assert!( report.is_ready(), - "configured substrate should be ready: {:?}", + "configured full substrate should be ready: {:?}", report .summary_rows() .iter() @@ -853,6 +887,40 @@ mod tests { row.value ); } + // A configured/enabled PRView-like server satisfies the PRView prereq. + let prview = find_row(&report, "PRView integration:"); + assert_eq!(prview.tone, McpRowTone::Warn); + assert!( + prview.value.contains("configured") && prview.value.contains("vista-prview"), + "PRView-like server should satisfy the prerequisite, got: {}", + prview.value + ); + } + + #[test] + fn agentic_disabled_prview_server_blocks_readiness() { + let temp = tempfile::tempdir().expect("temp dir"); + let path = temp.path().join("mcp.json"); + // Core substrate present, but the wired PRView-like server is disabled — + // a disabled required prerequisite must block readiness. + let config = json!({ + "mcpServers": { + "vibecrafted-mcp": { "command": "vibecrafted-mcp", "enabled": true }, + "aicx-mcp": { "command": "aicx-mcp", "enabled": true }, + "loctree-mcp": { "command": "loctree-mcp", "enabled": true }, + "vista-prview": { "command": "vista-prview", "enabled": false } + } + }); + fs::write(&path, config.to_string()).expect("write config"); + + let report = probe_agentic_readiness_at(&path); + assert!( + !report.is_ready(), + "a disabled PRView server must block readiness" + ); + let prview = find_row(&report, "PRView integration:"); + assert_eq!(prview.tone, McpRowTone::Bad); + assert!(prview.value.contains("disabled"), "got: {}", prview.value); } #[test] @@ -876,10 +944,11 @@ mod tests { } #[test] - fn agentic_prview_classified_missing_when_no_known_integration() { + fn agentic_prview_missing_blocks_readiness() { let temp = tempfile::tempdir().expect("temp dir"); let path = temp.path().join("mcp.json"); - // Full agentic substrate present, but no PRView surface anywhere. + // Core substrate present, but no PRView surface anywhere — this is the + // repo-truth baseline (loctree literal `prview` = 0 production hits). let config = json!({ "mcpServers": { "vibecrafted-mcp": { "command": "vibecrafted-mcp", "enabled": true }, @@ -891,16 +960,18 @@ mod tests { let report = probe_agentic_readiness_at(&path); let row = find_row(&report, "PRView integration:"); + // Honest evidence preserved AND now flagged as a hard, blocking gap. + assert_eq!(row.tone, McpRowTone::Bad); assert!( row.value.contains("missing") && row.value.contains("PRView"), "PRView must be explicitly classified as missing, got: {}", row.value ); - // PRView's missing integration must NOT, on its own, block readiness — - // otherwise Agentic could never be ready. + // PRView is required substrate: its absence blocks Agentic readiness even + // when Vibecrafted / AICX / Loctree are all present. assert!( - report.is_ready(), - "missing PRView alone should not block core readiness" + !report.is_ready(), + "missing PRView must block agentic readiness" ); } From a14a0a63d949e866626df23804a1aba56a2e9836 Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Fri, 26 Jun 2026 16:43:19 -0700 Subject: [PATCH 017/426] [claude/vc-justdo] feat(onboarding): add agentic mode readiness step MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit W1-C3: wire the first-run wizard so users pick Basic vs Agentic and see the right next steps. Two new steps join the fixed STEP_FLOW: a Mode chooser right after Welcome, and an Agentic-only readiness verdict before Done. Keeping both in the fixed array (rather than a mode-dependent flow) preserves resume-safe step indices; the readiness step is navigated *around* in the Basic lane via pure, tested routing helpers (step_is_visible / next_visible_step / prev_visible_step). The readiness table reuses the W1-C2 contract verbatim (probe_agentic_readiness → AgenticReadinessReport): verdict row plus Vibecrafted / AICX / Loctree / PRView prerequisites, each keeping its actionable value text and tone so missing items never collapse into one generic error. Tone→color mapping mirrors the Settings engine tab so the two surfaces never drift. Basic lane never blocks on MCP readiness. FULL_DISK_STEP_INDEX is now derived from STEP_FLOW instead of hardcoded, so inserting the Mode step ahead of it cannot silently break the full-disk polling guards. Sidebar renders lane-hidden steps as dimmed, unmarked entries so Basic never shows a false checkmark on Readiness. Gates: cargo fmt --check, cargo check --workspace, cargo clippy --workspace --all-targets -D warnings all clean; 18 onboarding tests green (5 new flow-routing cases for Basic and Agentic lanes). GUI window not launched (interactive AppKit menu-bar surface; verified via compile + data contract + routing tests). Authored-By: claude session_id: 36b582bd-4172-47d8-8302-fec4e11aa692 date: 2026-06-26T16:42:54 PDT runtime: terminal --- app/ui/onboarding/actions.rs | 79 +++++++++++++++++++++----- app/ui/onboarding/handlers.rs | 21 ++++++- app/ui/onboarding/render.rs | 86 ++++++++++++++++++++++++++-- app/ui/onboarding/state.rs | 6 ++ app/ui/onboarding/steps.rs | 12 +++- app/ui/onboarding/tests.rs | 104 +++++++++++++++++++++++++++++++++- app/ui/onboarding/widgets.rs | 20 ++++++- app/ui/onboarding/window.rs | 84 +++++++++++++++++++++++++++ 8 files changed, 391 insertions(+), 21 deletions(-) diff --git a/app/ui/onboarding/actions.rs b/app/ui/onboarding/actions.rs index 65445316..77d59289 100644 --- a/app/ui/onboarding/actions.rs +++ b/app/ui/onboarding/actions.rs @@ -22,11 +22,55 @@ use super::permission_flow::{ }; use super::render::render_current_step; use super::session::{mark_onboarding_done, release_onboarding_lock, save_onboarding_progress}; -use super::state::{HotkeyModeChoice, ONBOARDING_STATE}; -use super::steps::{PermissionKind, TOTAL_STEPS, WizardStep, step_for_index}; +use super::state::{HotkeyModeChoice, ONBOARDING_STATE, OnboardingModeChoice}; +use super::steps::{PermissionKind, STEP_FLOW, TOTAL_STEPS, WizardStep, step_for_index}; use super::widgets::{get_text_field_string, system_green_color, system_red_color}; -const FULL_DISK_STEP_INDEX: usize = 5; +/// Resolve the flow index of the Full Disk Access step from the canonical +/// [`STEP_FLOW`] rather than hardcoding it — inserting steps ahead of it (the +/// Mode step) must not silently break the polling-reset guards below. +fn full_disk_step_index() -> usize { + STEP_FLOW + .iter() + .position(|step| *step == WizardStep::Permission(PermissionKind::FullDiskAccess)) + .unwrap_or(0) +} + +/// Whether `step` is part of the active flow for the chosen operating lane. +/// +/// The Agentic readiness verdict is only meaningful in the Agentic lane; in the +/// Basic lane it is skipped entirely so a fresh install never blocks on +/// Vibecrafted/MCP prerequisites it does not need. Every other step is shared. +pub(super) fn step_is_visible(step: WizardStep, mode: OnboardingModeChoice) -> bool { + match step { + WizardStep::AgenticReadiness => mode == OnboardingModeChoice::Agentic, + _ => true, + } +} + +/// Next flow index visible in the given lane, skipping mode-hidden steps. +pub(super) fn next_visible_step(index: usize, mode: OnboardingModeChoice) -> Option { + let mut candidate = index + 1; + while candidate < TOTAL_STEPS { + if step_is_visible(step_for_index(candidate), mode) { + return Some(candidate); + } + candidate += 1; + } + None +} + +/// Previous flow index visible in the given lane, skipping mode-hidden steps. +pub(super) fn prev_visible_step(index: usize, mode: OnboardingModeChoice) -> Option { + let mut candidate = index; + while candidate > 0 { + candidate -= 1; + if step_is_visible(step_for_index(candidate), mode) { + return Some(candidate); + } + } + None +} pub(super) fn handle_primary_action() { let step = { @@ -36,6 +80,12 @@ pub(super) fn handle_primary_action() { match step { WizardStep::Welcome => advance_step(), + WizardStep::Mode => { + // Persist the lane on confirm so a mid-wizard quit or resume already + // records the user's choice; finish_onboarding re-saves defensively. + save_onboarding_mode(); + advance_step(); + } WizardStep::Permission(kind) => handle_permission_primary(kind), WizardStep::Language => { save_language_choice(); @@ -50,6 +100,7 @@ pub(super) fn handle_primary_action() { save_hotkey_mode(); advance_step(); } + WizardStep::AgenticReadiness => advance_step(), WizardStep::Done => finish_onboarding(true), } } @@ -173,14 +224,15 @@ fn handle_permission_primary(kind: PermissionKind) { } fn advance_step() { + let full_disk = full_disk_step_index(); let mut should_render = false; let mut new_step = None; { let mut state = ONBOARDING_STATE.lock().unwrap_or_else(|e| e.into_inner()); - if state.step_index + 1 < TOTAL_STEPS { - state.step_index += 1; + if let Some(next) = next_visible_step(state.step_index, state.onboarding_mode) { + state.step_index = next; state.scheduled_auto_advance_step = None; - if state.step_index != FULL_DISK_STEP_INDEX { + if state.step_index != full_disk { state.full_disk_polling = false; } new_step = Some(state.step_index); @@ -197,14 +249,15 @@ fn advance_step() { } fn retreat_step() { + let full_disk = full_disk_step_index(); let mut should_render = false; let mut new_step = None; { let mut state = ONBOARDING_STATE.lock().unwrap_or_else(|e| e.into_inner()); - if state.step_index > 0 { - state.step_index -= 1; + if let Some(prev) = prev_visible_step(state.step_index, state.onboarding_mode) { + state.step_index = prev; state.scheduled_auto_advance_step = None; - if state.step_index != FULL_DISK_STEP_INDEX { + if state.step_index != full_disk { state.full_disk_polling = false; } new_step = Some(state.step_index); @@ -327,7 +380,7 @@ fn start_full_disk_polling() { render_current_step(); } if should_schedule { - maybe_schedule_auto_advance(FULL_DISK_STEP_INDEX); + maybe_schedule_auto_advance(full_disk_step_index()); } }); } @@ -465,9 +518,9 @@ fn save_hotkey_mode() { } /// Persist the selected first-run operating lane (Basic / Agentic) into -/// settings.json, mirroring [`save_language_choice`]. No wizard step mutates -/// the lane yet, so a completed onboarding records the safe Basic default; a -/// later readiness-UI cut will set `state.onboarding_mode` before finish. +/// settings.json, mirroring [`save_language_choice`]. Called both when the user +/// confirms the Mode step and again from [`finish_onboarding`] so the safe Basic +/// default is recorded even if the lane step is somehow bypassed. fn save_onboarding_mode() { let mode = { let state = ONBOARDING_STATE.lock().unwrap_or_else(|e| e.into_inner()); diff --git a/app/ui/onboarding/handlers.rs b/app/ui/onboarding/handlers.rs index 735873ee..fe7c8cea 100644 --- a/app/ui/onboarding/handlers.rs +++ b/app/ui/onboarding/handlers.rs @@ -13,7 +13,9 @@ use super::actions::{ }; use super::render::render_current_step; use super::session::release_onboarding_lock; -use super::state::{HotkeyModeChoice, LanguageChoice, ONBOARDING_STATE, UiRefs}; +use super::state::{ + HotkeyModeChoice, LanguageChoice, ONBOARDING_STATE, OnboardingModeChoice, UiRefs, +}; static ACTION_HANDLER_CLASS: OnceLock<&'static Class> = OnceLock::new(); static WINDOW_DELEGATE_CLASS: OnceLock<&'static Class> = OnceLock::new(); @@ -36,6 +38,10 @@ pub(super) fn action_handler_class() -> &'static Class { sel!(onSkipAction:), on_skip_action as extern "C" fn(&Object, Sel, Id), ); + decl.add_method( + sel!(onModeSelected:), + on_mode_selected as extern "C" fn(&Object, Sel, Id), + ); decl.add_method( sel!(onLanguageSelected:), on_language_selected as extern "C" fn(&Object, Sel, Id), @@ -78,6 +84,19 @@ extern "C" fn on_skip_action(_this: &Object, _sel: Sel, _sender: Id) { handle_skip_action(); } +extern "C" fn on_mode_selected(_this: &Object, _sel: Sel, sender: Id) { + unsafe { + let tag: isize = msg_send![sender, tag]; + let mut state = ONBOARDING_STATE.lock().unwrap_or_else(|e| e.into_inner()); + state.onboarding_mode = if tag == 1 { + OnboardingModeChoice::Agentic + } else { + OnboardingModeChoice::Basic + }; + } + render_current_step(); +} + extern "C" fn on_language_selected(_this: &Object, _sel: Sel, sender: Id) { unsafe { let tag: isize = msg_send![sender, tag]; diff --git a/app/ui/onboarding/render.rs b/app/ui/onboarding/render.rs index 0f4e4bad..f024896d 100644 --- a/app/ui/onboarding/render.rs +++ b/app/ui/onboarding/render.rs @@ -3,21 +3,25 @@ use crate::ui::shared::helpers::color_label; +use super::Id; use super::actions::maybe_schedule_auto_advance; use super::permission_flow::{ PERMISSION_ORDER, PermissionUiStatus, check_permission_state, permission_instruction_text, permission_status_color, permission_status_text, refresh_all_permission_states_locked, should_wait_for_restart, }; -use super::state::{HotkeyModeChoice, LanguageChoice, ONBOARDING_STATE, UiRefs}; +use super::state::{ + HotkeyModeChoice, LanguageChoice, ONBOARDING_STATE, OnboardingModeChoice, UiRefs, +}; use super::steps::{ PermissionKind, PermissionRecoveryStrategy, TOTAL_STEPS, WizardStep, step_for_index, }; use super::widgets::{ set_button_title_if_present, set_hidden_if_present, set_label_color_if_present, - set_text_if_present, sync_hotkey_radios, sync_language_radios, system_green_color, - system_red_color, system_secondary_color, + set_text_if_present, sync_hotkey_radios, sync_language_radios, sync_mode_radios, + system_green_color, system_orange_color, system_red_color, system_secondary_color, }; +use crate::agent::tools::mcp::{McpRowTone, probe_agentic_readiness}; pub(super) fn render_current_step() { let ( @@ -25,6 +29,7 @@ pub(super) fn render_current_step() { step, language, hotkey_mode, + onboarding_mode, api_key_configured, permissions, requested_permissions, @@ -49,6 +54,7 @@ pub(super) fn render_current_step() { step, state.language, state.hotkey_mode, + state.onboarding_mode, state.api_key_configured, state.permission_states, state.requested_permissions, @@ -63,6 +69,8 @@ pub(super) fn render_current_step() { set_hidden_if_present(ui.status_label, true); set_hidden_if_present(ui.instruction_label, true); + set_hidden_if_present(ui.mode_view, true); + set_hidden_if_present(ui.readiness_view, true); set_hidden_if_present(ui.language_view, true); set_hidden_if_present(ui.api_view, true); set_hidden_if_present(ui.hotkey_view, true); @@ -74,9 +82,10 @@ pub(super) fn render_current_step() { set_hidden_if_present(ui.back_button, step_index == 0); + sync_mode_radios(ui, onboarding_mode); sync_language_radios(ui, language); sync_hotkey_radios(ui, hotkey_mode); - update_sidebar_step_labels(ui, step_index, permissions); + update_sidebar_step_labels(ui, step_index, permissions, onboarding_mode); match step { WizardStep::Welcome => { @@ -88,6 +97,16 @@ pub(super) fn render_current_step() { ); set_button_title_if_present(ui.primary_button, "Get Started"); } + WizardStep::Mode => { + set_text_if_present(ui.icon_label, "MODE"); + set_text_if_present(ui.title_label, "Choose Your Lane"); + set_text_if_present( + ui.description_label, + "Basic keeps CodeScribe a local dictation tool. Agentic turns dictation into agent orchestration through Vibecrafted and MCP, with a readiness check next. You can switch later in Settings.", + ); + set_hidden_if_present(ui.mode_view, false); + set_button_title_if_present(ui.primary_button, "Continue"); + } WizardStep::Permission(kind) => { let idx = kind.index(); let status = permissions[idx]; @@ -173,6 +192,19 @@ pub(super) fn render_current_step() { set_hidden_if_present(ui.hotkey_view, false); set_button_title_if_present(ui.primary_button, "Continue"); } + WizardStep::AgenticReadiness => { + set_text_if_present(ui.icon_label, "AGENT"); + set_text_if_present(ui.title_label, "Agentic Runtime"); + // Short copy: the readiness table below is tall; a long description + // would overlap it. The table carries the actionable detail. + set_text_if_present( + ui.description_label, + "Live prerequisites for the Agentic lane — fix any missing item, or continue and finish setup later.", + ); + set_hidden_if_present(ui.readiness_view, false); + update_readiness_view(ui); + set_button_title_if_present(ui.primary_button, "Continue"); + } WizardStep::Done => { set_text_if_present(ui.icon_label, "DONE"); set_text_if_present(ui.title_label, "You're All Set"); @@ -194,6 +226,7 @@ pub(super) fn render_current_step() { fn sidebar_step_title(step: WizardStep) -> &'static str { match step { WizardStep::Welcome => "Welcome", + WizardStep::Mode => "Mode", WizardStep::Permission(PermissionKind::Microphone) => "Microphone", WizardStep::Permission(PermissionKind::Accessibility) => "Accessibility", WizardStep::Permission(PermissionKind::InputMonitoring) => "Input Monitoring", @@ -202,6 +235,7 @@ fn sidebar_step_title(step: WizardStep) -> &'static str { WizardStep::Language => "Language", WizardStep::ApiKey => "API Key", WizardStep::HotkeyMode => "Hotkeys", + WizardStep::AgenticReadiness => "Readiness", WizardStep::Done => "Finish", } } @@ -210,9 +244,20 @@ fn update_sidebar_step_labels( ui: UiRefs, current_step_index: usize, permissions: [PermissionUiStatus; 5], + mode: OnboardingModeChoice, ) { + use super::actions::step_is_visible; for idx in 0..TOTAL_STEPS { let step = step_for_index(idx); + // Steps not part of the active lane (e.g. Readiness in Basic) render as a + // dimmed, unmarked entry so the sidebar never shows a false ✓ for a step + // the user never visits. + if !step_is_visible(step, mode) { + let text = format!("\u{25CB} {}", sidebar_step_title(step)); + set_text_if_present(ui.sidebar_step_labels[idx], &text); + set_label_color_if_present(ui.sidebar_step_labels[idx], system_secondary_color()); + continue; + } let (marker, color) = if idx == current_step_index { if let WizardStep::Permission(kind) = step { let status = permissions[kind.index()]; @@ -286,3 +331,36 @@ fn update_summary_view( ), ); } + +/// Map an [`McpRowTone`] to an AppKit color, mirroring the Settings engine tab so +/// the two surfaces never drift on what "ready / warn / blocked" looks like. +fn readiness_tone_color(tone: McpRowTone) -> Id { + match tone { + McpRowTone::Good => system_green_color(), + McpRowTone::Warn => system_orange_color(), + McpRowTone::Bad => system_red_color(), + McpRowTone::Neutral => system_secondary_color(), + } +} + +/// Fill the readiness table from a live [`probe_agentic_readiness`] run. +/// +/// Re-uses the W1-C2 verdict contract verbatim (verdict row + Vibecrafted / AICX +/// / Loctree / PRView prerequisites), so each row keeps its actionable value text +/// and tone instead of collapsing into a single generic error. Rows beyond the +/// five reserved labels are dropped (the probe never emits more in normal flow); +/// any unused label slots are blanked. +fn update_readiness_view(ui: UiRefs) { + let report = probe_agentic_readiness(); + let rows = report.summary_rows(); + + for (slot, label_ptr) in ui.readiness_row_labels.iter().enumerate() { + match rows.get(slot) { + Some(row) => { + set_text_if_present(*label_ptr, &format!("{} {}", row.label, row.value)); + set_label_color_if_present(*label_ptr, readiness_tone_color(row.tone)); + } + None => set_text_if_present(*label_ptr, ""), + } + } +} diff --git a/app/ui/onboarding/state.rs b/app/ui/onboarding/state.rs index 776636b4..bdc26c7e 100644 --- a/app/ui/onboarding/state.rs +++ b/app/ui/onboarding/state.rs @@ -103,6 +103,12 @@ pub(super) struct UiRefs { pub(super) primary_button: Option, pub(super) back_button: Option, pub(super) skip_button: Option, + pub(super) mode_view: Option, + pub(super) mode_basic_radio: Option, + pub(super) mode_agentic_radio: Option, + pub(super) readiness_view: Option, + pub(super) readiness_heading_label: Option, + pub(super) readiness_row_labels: [Option; 5], pub(super) language_view: Option, pub(super) language_en_radio: Option, pub(super) language_pl_radio: Option, diff --git a/app/ui/onboarding/steps.rs b/app/ui/onboarding/steps.rs index 755db11b..668d99f8 100644 --- a/app/ui/onboarding/steps.rs +++ b/app/ui/onboarding/steps.rs @@ -90,15 +90,24 @@ impl PermissionKind { #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub enum WizardStep { Welcome, + /// First-run operating-lane choice (Basic vs Agentic). Placed right after + /// Welcome so the lane framing is set before the rest of the wizard. + Mode, Permission(PermissionKind), Language, ApiKey, HotkeyMode, + /// Agentic-only readiness verdict (Vibecrafted / AICX / Loctree / PRView). + /// Present in the fixed flow but navigated *around* in the Basic lane — see + /// `actions::step_is_visible`. Keeping it in the array (rather than a + /// mode-dependent flow) preserves stable, resume-safe step indices. + AgenticReadiness, Done, } -pub const STEP_FLOW: [WizardStep; 10] = [ +pub const STEP_FLOW: [WizardStep; 12] = [ WizardStep::Welcome, + WizardStep::Mode, WizardStep::Permission(PermissionKind::Microphone), WizardStep::Permission(PermissionKind::Accessibility), WizardStep::Permission(PermissionKind::InputMonitoring), @@ -107,6 +116,7 @@ pub const STEP_FLOW: [WizardStep; 10] = [ WizardStep::Language, WizardStep::ApiKey, WizardStep::HotkeyMode, + WizardStep::AgenticReadiness, WizardStep::Done, ]; diff --git a/app/ui/onboarding/tests.rs b/app/ui/onboarding/tests.rs index 877b8c88..0dc11708 100644 --- a/app/ui/onboarding/tests.rs +++ b/app/ui/onboarding/tests.rs @@ -4,6 +4,7 @@ use tempfile::TempDir; use crate::config::{Config, UserSettings}; use crate::os::permissions::PermissionStatus; +use super::actions::{next_visible_step, prev_visible_step, step_is_visible}; use super::permission_flow::{ PermissionUiStatus, should_open_settings_after_failed_request, should_refresh_hotkey_runtime_after_grant, should_wait_for_restart, @@ -14,7 +15,9 @@ use super::session::{ }; use super::should_show_onboarding; use super::state::{OnboardingModeChoice, initial_onboarding_mode_choice}; -use super::steps::{PermissionKind, PermissionRecoveryStrategy, WizardStep, step_for_index}; +use super::steps::{ + PermissionKind, PermissionRecoveryStrategy, STEP_FLOW, WizardStep, step_for_index, +}; fn setup_test_env() -> TempDir { let tmp = TempDir::new().expect("tempdir"); @@ -99,6 +102,105 @@ fn onboarding_mode_value_round_trips_through_token() { ); } +fn index_of(target: WizardStep) -> usize { + STEP_FLOW + .iter() + .position(|step| *step == target) + .expect("step present in canonical flow") +} + +/// Walk the wizard forward from Welcome through every lane-visible step. +fn walk_forward(mode: OnboardingModeChoice) -> Vec { + let mut visited = vec![step_for_index(0)]; + let mut idx = 0; + while let Some(next) = next_visible_step(idx, mode) { + visited.push(step_for_index(next)); + idx = next; + } + visited +} + +#[test] +fn mode_step_immediately_follows_welcome() { + for mode in [OnboardingModeChoice::Basic, OnboardingModeChoice::Agentic] { + assert_eq!( + next_visible_step(0, mode).map(step_for_index), + Some(WizardStep::Mode), + "the lane chooser must be the first step after Welcome in {mode:?}" + ); + } +} + +#[test] +fn step_visibility_gates_only_readiness_on_lane() { + assert!(step_is_visible( + WizardStep::AgenticReadiness, + OnboardingModeChoice::Agentic + )); + assert!(!step_is_visible( + WizardStep::AgenticReadiness, + OnboardingModeChoice::Basic + )); + + // Every shared step stays visible in both lanes — only readiness is gated. + for step in [ + WizardStep::Welcome, + WizardStep::Mode, + WizardStep::Permission(PermissionKind::Microphone), + WizardStep::Language, + WizardStep::ApiKey, + WizardStep::HotkeyMode, + WizardStep::Done, + ] { + assert!(step_is_visible(step, OnboardingModeChoice::Basic)); + assert!(step_is_visible(step, OnboardingModeChoice::Agentic)); + } +} + +#[test] +fn basic_lane_flow_skips_agentic_readiness() { + let steps = walk_forward(OnboardingModeChoice::Basic); + assert!(steps.contains(&WizardStep::Mode)); + assert!( + !steps.contains(&WizardStep::AgenticReadiness), + "Basic lane must not route through the agentic readiness step: {steps:?}" + ); + assert_eq!(steps.last(), Some(&WizardStep::Done)); +} + +#[test] +fn agentic_lane_flow_includes_readiness_before_done() { + let steps = walk_forward(OnboardingModeChoice::Agentic); + assert!(steps.contains(&WizardStep::Mode)); + let readiness_pos = steps + .iter() + .position(|step| *step == WizardStep::AgenticReadiness); + let done_pos = steps.iter().position(|step| *step == WizardStep::Done); + assert!( + readiness_pos.is_some(), + "Agentic lane must surface the readiness step: {steps:?}" + ); + assert!( + readiness_pos < done_pos, + "readiness must precede Done in the agentic lane: {steps:?}" + ); +} + +#[test] +fn back_navigation_respects_lane_visibility() { + let done = index_of(WizardStep::Done); + // Going Back from Done lands on HotkeyMode in Basic (readiness skipped) and + // on the readiness step in Agentic. + assert_eq!( + prev_visible_step(done, OnboardingModeChoice::Basic).map(step_for_index), + Some(WizardStep::HotkeyMode) + ); + assert_eq!( + prev_visible_step(done, OnboardingModeChoice::Agentic).map(step_for_index), + Some(WizardStep::AgenticReadiness) + ); +} + fn assert_resume_permission(step: Option, expected: PermissionKind) { assert_eq!( step.map(step_for_index), diff --git a/app/ui/onboarding/widgets.rs b/app/ui/onboarding/widgets.rs index 83cc6d3d..303c9c63 100644 --- a/app/ui/onboarding/widgets.rs +++ b/app/ui/onboarding/widgets.rs @@ -8,7 +8,7 @@ use objc::{msg_send, sel, sel_impl}; use crate::ui::shared::helpers::{ns_string, set_hidden, set_text_field_string}; use super::Id; -use super::state::{HotkeyModeChoice, LanguageChoice, UiRefs}; +use super::state::{HotkeyModeChoice, LanguageChoice, OnboardingModeChoice, UiRefs}; pub(super) fn configure_label(label: Id, centered: bool, multiline: bool) { unsafe { @@ -84,6 +84,17 @@ pub(super) fn sync_language_radios(ui: UiRefs, language: LanguageChoice) { } } +pub(super) fn sync_mode_radios(ui: UiRefs, mode: OnboardingModeChoice) { + unsafe { + if let Some(basic) = ui.mode_basic_radio { + let _: () = msg_send![basic as Id, setState: if mode == OnboardingModeChoice::Basic { 1_isize } else { 0_isize }]; + } + if let Some(agentic) = ui.mode_agentic_radio { + let _: () = msg_send![agentic as Id, setState: if mode == OnboardingModeChoice::Agentic { 1_isize } else { 0_isize }]; + } + } +} + pub(super) fn sync_hotkey_radios(ui: UiRefs, mode: HotkeyModeChoice) { unsafe { if let Some(hold) = ui.hotkey_hold_radio { @@ -112,6 +123,13 @@ pub(super) fn system_red_color() -> Id { } } +pub(super) fn system_orange_color() -> Id { + unsafe { + let ns_color = Class::get("NSColor").unwrap(); + msg_send![ns_color, systemOrangeColor] + } +} + pub(super) fn system_secondary_color() -> Id { unsafe { let ns_color = Class::get("NSColor").unwrap(); diff --git a/app/ui/onboarding/window.rs b/app/ui/onboarding/window.rs index 0c32677e..17bba2c1 100644 --- a/app/ui/onboarding/window.rs +++ b/app/ui/onboarding/window.rs @@ -352,6 +352,40 @@ fn build_onboarding_ui(root: Id, action_handler: Id) -> UiRefs { add_subview(root, instruction_label); ui.instruction_label = Some(instruction_label as usize); + // Operating-lane chooser (Basic vs Agentic). Mirrors the hotkey radio + // group: short descriptive titles, fuller framing in the step + // description. Tags map to OnboardingModeChoice in `onModeSelected:`. + let mode_view: Id = msg_send![ns_view, alloc]; + let mode_view: Id = msg_send![ + mode_view, + initWithFrame: CGRect::new( + &CGPoint::new(content_center - 200.0, 196.0), + &CGSize::new(400.0, 96.0) + ) + ]; + add_subview(root, mode_view); + ui.mode_view = Some(mode_view as usize); + + let mode_basic = create_radio_button( + CGRect::new(&CGPoint::new(0.0, 56.0), &CGSize::new(390.0, 26.0)), + "Basic — local dictation and overlays", + true, + ); + let _: () = msg_send![mode_basic, setTag: 0_isize]; + button_set_action(mode_basic, action_handler, sel!(onModeSelected:)); + add_subview(mode_view, mode_basic); + ui.mode_basic_radio = Some(mode_basic as usize); + + let mode_agentic = create_radio_button( + CGRect::new(&CGPoint::new(0.0, 20.0), &CGSize::new(390.0, 26.0)), + "Agentic — orchestrate agents via Vibecrafted + MCP", + false, + ); + let _: () = msg_send![mode_agentic, setTag: 1_isize]; + button_set_action(mode_agentic, action_handler, sel!(onModeSelected:)); + add_subview(mode_view, mode_agentic); + ui.mode_agentic_radio = Some(mode_agentic as usize); + let language_view: Id = msg_send![ns_view, alloc]; let language_view: Id = msg_send![ language_view, @@ -496,6 +530,56 @@ fn build_onboarding_ui(root: Id, action_handler: Id) -> UiRefs { add_subview(summary_view, summary_config); ui.summary_config_label = Some(summary_config as usize); + // Agentic readiness table (Agentic lane only). One wrapping label per + // McpStatusRow: verdict + Vibecrafted / AICX / Loctree / PRView. Compact + // rows by design (see W1-C3 recovery hint) — each row keeps the probe's + // full actionable value text so prerequisites never collapse into one + // generic error. Render fills text + tone color per step. + const READINESS_HEIGHT: f64 = 280.0; + let readiness_view: Id = msg_send![ns_view, alloc]; + let readiness_view: Id = msg_send![ + readiness_view, + initWithFrame: CGRect::new( + &CGPoint::new(content_left, 56.0), + &CGSize::new(content_width, READINESS_HEIGHT) + ) + ]; + add_subview(root, readiness_view); + ui.readiness_view = Some(readiness_view as usize); + + let readiness_heading = create_label(LabelConfig { + frame: CGRect::new( + &CGPoint::new(0.0, READINESS_HEIGHT - 26.0), + &CGSize::new(content_width, 22.0), + ), + text: "Agentic runtime readiness".to_string(), + font_size: 14.0, + bold: true, + text_color: color_label(), + ..Default::default() + }); + configure_label(readiness_heading, false, false); + add_subview(readiness_view, readiness_heading); + ui.readiness_heading_label = Some(readiness_heading as usize); + + let mut readiness_rows: [Option; 5] = [None; 5]; + let readiness_row_gap = 48.0; + let readiness_first_top = READINESS_HEIGHT - 34.0 - readiness_row_gap; + for (idx, slot) in readiness_rows.iter_mut().enumerate() { + let y = readiness_first_top - (idx as f64 * readiness_row_gap); + let label = create_label(LabelConfig { + frame: CGRect::new(&CGPoint::new(0.0, y), &CGSize::new(content_width, 44.0)), + text: String::new(), + font_size: 12.0, + text_color: color_secondary_label(), + ..Default::default() + }); + configure_label(label, false, true); + add_subview(readiness_view, label); + *slot = Some(label as usize); + } + ui.readiness_row_labels = readiness_rows; + let primary_w = 132.0; let skip_w = 106.0; let back_w = 90.0; From 66dd8ab7c267d9e1102189c5460220334afe2903 Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Fri, 26 Jun 2026 23:57:53 -0700 Subject: [PATCH 018/426] [codex/vc-manual] test(config): preserve legacy LLM host contract --- core/tests/env_validation.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/tests/env_validation.rs b/core/tests/env_validation.rs index 20e38a90..ad598a9c 100644 --- a/core/tests/env_validation.rs +++ b/core/tests/env_validation.rs @@ -111,6 +111,10 @@ fn env_ignores_legacy_llm_host() { let _g3 = EnvGuard::unset("LLM_ENDPOINT"); let mut cfg = Config::default(); + // Isolate the env loader contract: the runtime default endpoint is covered + // by Config::load()/Config::default() tests, while legacy host envs should + // not populate an otherwise-empty llm_endpoint. + cfg.llm_endpoint = None; cfg.load_from_env(); assert!(cfg.llm_endpoint.is_none()); From 390ea74772a0cd54ebbed9f5308c77c958f309ef Mon Sep 17 00:00:00 2001 From: m-szymanska Date: Sat, 27 Jun 2026 00:03:40 -0700 Subject: [PATCH 019/426] fix(make): stop target kills full-path codescribe processes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `make stop` used `pkill -f "^codescribe$"`, which only matches a bare `codescribe` argv and missed the real run targets — `/Applications/CodeScribe .app/Contents/MacOS/codescribe` and `~/.cargo/bin/codescribe` — so the app kept running and had to be killed by hand. Match `codescribe$` instead, which covers the bare name and both full paths without touching `qube-daemon`/`qube-report`. Co-Authored-By: Claude Opus 4.8 (1M context) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 260969fc..9e1dc362 100644 --- a/Makefile +++ b/Makefile @@ -163,7 +163,7 @@ start: @echo "CodeScribe started (logs: /tmp/codescribe.log)" stop: - @pkill -f "^codescribe$$" 2>/dev/null || true + @pkill -f "codescribe$$" 2>/dev/null || true @rm -f ~/.codescribe/codescribe.pid 2>/dev/null || true @echo "Stopped" From 0ada61564646638ad3bf558ae189623a6cedf5b4 Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Sat, 27 Jun 2026 11:57:38 -0700 Subject: [PATCH 020/426] [claude/vc-workflow] fix(controller): guard empty tool segment in friendly_tool_name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A raw MCP identifier with a trailing `__` and no tool name (e.g. `mcp__github__`) split to server="github", tool="" and fell through to the `"{tool} · {server}"` formatter, emitting a dangling " · Github" — the separator floating in front of an empty tool label in the Tool Activity timeline. Guard the empty-tool case: fall back to the bare server label, and for the fully degenerate `mcp__` (no server, no tool) prettify the raw rather than return an empty string. Extends the existing unknown-mcp test with the trailing-`__` and degenerate edges so the regression is pinned. Closes the unresolved review thread from PR #33 (malformed MCP tool label); the prior worker fixed GitHub casing only, not this empty-segment edge. Authored-By: claude session_id: 3055637f-6f4f-44c5-97f1-86cd85beeb59 date: 2026-06-27T11:57:03 PDT runtime: terminal --- app/controller/helpers.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/controller/helpers.rs b/app/controller/helpers.rs index 5cf16876..8ee246a9 100644 --- a/app/controller/helpers.rs +++ b/app/controller/helpers.rs @@ -489,6 +489,18 @@ pub(crate) fn friendly_tool_name(raw: &str) -> String { let mut parts = rest.splitn(2, "__"); let server = parts.next().unwrap_or(""); let tool = parts.next().unwrap_or(server); + // Trailing `__` with no tool segment (e.g. `mcp__github__`) yields an + // empty `tool`. Without this guard the formatter below emits a dangling + // " · Github" — the separator with nothing in front of it. Fall back to + // the bare server label; if even the server is empty (`mcp__`), prettify + // the raw rather than returning an empty string. + if tool.is_empty() { + return if server.is_empty() { + prettify_identifier(raw) + } else { + prettify_identifier(server) + }; + } let tool_pretty = prettify_identifier(tool); if server.is_empty() || tool == server { return tool_pretty; @@ -1299,6 +1311,15 @@ mod tests { assert_eq!(friendly_tool_name("read_file"), "Read File"); // The raw mcp__ wire form must never survive verbatim. assert!(!friendly_tool_name("mcp__github__create_issue").contains("mcp__")); + // Trailing `__` leaves an empty tool segment (`mcp__github__`). This must + // collapse to the bare server label — never a dangling " · Github" with + // the separator floating in front of nothing. + assert_eq!(friendly_tool_name("mcp__github__"), "Github"); + assert!(!friendly_tool_name("mcp__github__").contains('·')); + assert!(!friendly_tool_name("mcp__github__").starts_with(' ')); + // Fully degenerate `mcp__` (no server, no tool) must not yield an empty + // label either. + assert!(!friendly_tool_name("mcp__").is_empty()); } #[test] From 420888a863eaa00fe09f2aee4bca26c57d7ad9da Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Sat, 27 Jun 2026 12:01:31 -0700 Subject: [PATCH 021/426] [claude/vc-workflow] docs(release): add App Store readiness plan + preflight MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Examine→Research→Implement pass for the board-level decision to make the Mac App Store the first-choice lane. Adds a NO-GO-as-single-SKU readiness plan with official Apple citations and a read-only preflight that flags the 3 P0 blockers (no sandbox, no App Store upload path, no privacy manifest) and 6 P1 warnings (incl. the com.codescribe.app vs com.vetcoders.codescribe bundle-id split). No build behavior, entitlements, signing, or PR36 work is touched; sandbox/entitlement changes are deliberately deferred to follow-ups. Authored-By: claude session_id: 77a6977a-4b1a-4abc-ad8f-7ba5bc7862d9 date: 2026-06-27T12:01:31 PDT runtime: terminal --- docs/APP_STORE_READINESS.md | 123 ++++++++++++++++++++++++++++++++ scripts/appstore-preflight.sh | 128 ++++++++++++++++++++++++++++++++++ 2 files changed, 251 insertions(+) create mode 100644 docs/APP_STORE_READINESS.md create mode 100755 scripts/appstore-preflight.sh diff --git a/docs/APP_STORE_READINESS.md b/docs/APP_STORE_READINESS.md new file mode 100644 index 00000000..a1c9cf2b --- /dev/null +++ b/docs/APP_STORE_READINESS.md @@ -0,0 +1,123 @@ +# Mac App Store Readiness + +Status as of `0.12.2` (source) on branch `fix/make-stop-process-match`. + +> **Verdict: NO-GO for the Mac App Store as a single SKU covering the current +> product.** The shipping lane today is **Developer ID + notarization** (outside +> the App Store), and that is the correct lane for the product as it exists. A +> Mac App Store build is feasible only as a **separate, sandbox-clean "Basic" +> SKU** with a materially reduced feature set — and even that carries real App +> Review risk (see Accessibility, below). This document is the plan; it does not +> change the build. + +Run the read-only check any time: + +```bash +./scripts/appstore-preflight.sh # exit 0 = no P0 blockers, 1 = blockers present +``` + +Last run: **3 P0 blockers, 6 P1 warnings**. + +--- + +## Why this matters + +CodeScribe's product direction is a **dictation-driven orchestration agent**, not +a dictation toy. The Agentic mode spawns MCP servers, shells out to external +binaries (Vibecrafted), reads broad file context, controls other apps, and uses +global hotkeys. Those capabilities are the product — and they are exactly what +the App Sandbox forbids. So "ship to the App Store" is not a packaging task; it +is a question of **which product** goes to the store. + +--- + +## The hard constraints (Apple, official) + +| # | Constraint | Source | +|---|------------|--------| +| 1 | **App Sandbox is required** for Mac App Store apps. Builds without `com.apple.security.app-sandbox = true` are rejected at submission. | [App Sandbox](https://developer.apple.com/documentation/security/app-sandbox); rejection text confirmed on [Apple Developer Forums](https://developer.apple.com/forums/thread/41400) | +| 2 | **Developer ID + notarization** is the *outside-the-store* lane; the store lane needs an **Apple Distribution / "3rd Party Mac Developer"** signing identity, a `.pkg` (`productbuild`), and an App Store Connect upload (Transporter). | [Notarizing macOS software](https://developer.apple.com/documentation/security/notarizing-macos-software-before-distribution) | +| 3 | **Privacy manifest (`PrivacyInfo.xcprivacy`)** with declared **required-reason API** usage is mandatory for App Store Connect submissions since **2024-05-01**. | [Privacy updates for App Store submissions](https://developer.apple.com/news/?id=3d8a9yyh), [Reminder: starts May 1](https://developer.apple.com/news/?id=pvszzano) | +| 4 | **App Privacy Details** ("nutrition labels") must be completed in App Store Connect before publishing — including microphone data. | [App Privacy Details](https://developer.apple.com/app-store/app-privacy-details/) | +| 5 | **Apple Events to other apps** under sandbox need a `scripting-targets` entitlement or an `apple-events` **temporary exception** — which is "carefully reviewed, and **most often rejected**" by App Review. | [App Sandbox Temporary Exception Entitlements](https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/AppSandboxTemporaryExceptionEntitlements.html), [QA1888](https://developer.apple.com/library/archive/qa/qa1888/_index.html) | +| 6 | **Accessibility used for non-accessibility purposes** (pasting into / driving other apps) is rejected under **Guideline 2.4.5**. | Apple Developer Forums review reports; App Store Review Guidelines 2.4.5 | +| 7 | **Input Monitoring** (CGEventTap *listen-only*, via `CGPreflightListenEventAccess` / `CGRequestListenEventAccess`) **is available to sandboxed Mac App Store apps**. Global-hotkey *detection* can survive sandbox; *controlling other apps* cannot. | [Xojo: Sandboxing to Notarization](https://blog.xojo.com/2024/08/22/macos-apps-from-sandboxing-to-notarization-the-basics/), [Beyond App Sandbox](https://www.appcoda.com/mac-app-sandbox/) | +| 8 | `allow-unsigned-executable-memory` and `allow-jit` are, per Apple's own entitlement docs, **compatible with both the Mac App Store and Developer ID**. The harder conflict is `disable-library-validation`, which fights the sandbox rule that nested code be team-signed. **Mark as uncertain until validated against a real `productbuild` + App Store Connect upload.** | [allow-unsigned-executable-memory](https://developer.apple.com/documentation/bundleresources/entitlements/com.apple.security.cs.allow-unsigned-executable-memory), [disable-library-validation](https://developer.apple.com/documentation/BundleResources/Entitlements/com.apple.security.cs.disable-library-validation) | + +--- + +## Current state vs. Mac App Store requirement + +| Surface | Today (verified in repo) | MAS requirement | Gap | +|---------|--------------------------|-----------------|-----| +| **Sandbox** | `scripts/entitlements.plist` explicitly **disables** App Sandbox (documented as "outside Mac App Store") | `app-sandbox = true` mandatory | **P0** | +| **Entitlements** | `disable-library-validation`, `allow-unsigned-executable-memory`, `allow-dyld-environment-variables` — all required by embedded Whisper/MiniLM dylibs | Sandboxed apps must team-sign nested code; `disable-library-validation` conflicts | **P0/uncertain** | +| **Privacy manifest** | none (`PrivacyInfo.xcprivacy` absent); app uses `std::fs::metadata().modified()` → **FileTimestamp** required-reason category | `PrivacyInfo.xcprivacy` with declared reasons | **P0** | +| **App Privacy Details** | only a written `docs/guide/privacy.md`; no App Store Connect record | Nutrition-label questionnaire completed | **P1** (process, blocked on having an app record) | +| **Purpose strings** | Mic, Accessibility, Input Monitoring, Screen Capture, Apple Events — generated in `Makefile` bundle target (lines 127–131) | Mic + Input Monitoring OK; Accessibility/Apple Events review-risky | **P1** | +| **Basic vs Agentic** | Onboarding has Basic (safe default) + Agentic lanes; Agentic probes MCP readiness | Agentic capabilities are sandbox-incompatible | **architecture** | +| **MCP / Vibecrafted** | Agentic mode shells out, spawns MCP, reads broad files | Forbidden under sandbox | **P0 for Agentic SKU** | +| **Signing/upload** | Developer ID → notarytool → stapler → Gatekeeper (DMG); `.github/workflows/release.yml` | Apple Distribution cert → `.pkg` → App Store Connect | **P0** | +| **Release gates / PRView** | PR35 (release-forward) not yet main-ready; signing secrets unset; live release `v0.8.0` ≪ source `0.12.2` | Green release pipeline | **P1** | +| **Cold install smoke** | DMG drag-install + Gatekeeper drill documented in `PUBLIC_RELEASE_CHECKLIST.md` | TestFlight / store install | **P1** | + +--- + +## Recommended path: two SKUs + +Marked uncertain where Apple's real truth needs a live submission to confirm. + +1. **Developer ID SKU (primary, ships today).** The full product — Agentic + orchestration, MCP, Vibecrafted, global hotkeys, paste-into-other-apps, + embedded ML. Stays exactly as it is. This is where the product lives. + +2. **Mac App Store SKU (Basic, new build profile).** A sandbox-clean dictation + app: microphone → transcript → its own window / clipboard copy. **Drops**: + Accessibility paste, Apple Events focus-restore, Agentic/MCP/Vibecrafted, + broad file access, Full Disk Access probing. **Keeps** (pending validation): + Input Monitoring listen-only hotkeys, embedded Whisper/MiniLM (subject to the + `disable-library-validation` question). Even this SKU risks rejection if the + transcript is delivered by driving another app via Accessibility — keep + delivery in-app or via standard clipboard. + +A **single SKU covering both is not viable**: the sandbox cannot be both on (for +the store) and off (for the agent). Do not attempt one binary for both. + +--- + +## Blockers, ordered + +**P0 — must change before any MAS submission is even possible** + +1. **No App Sandbox** — would require a separate sandboxed build profile; + incompatible with the current feature set. +2. **No App Store distribution path** — no Apple Distribution identity, no + `productbuild`/`.pkg`, no App Store Connect upload step anywhere in the repo. +3. **No privacy manifest** — `PrivacyInfo.xcprivacy` is required and absent; + FileTimestamp required-reason usage is confirmed in code. + +**P1 — required but not the gate** + +4. **Bundle-id split** — `com.codescribe.app` (Makefile/Info.plist) vs + `com.vetcoders.codescribe` (`core/config/keychain.rs:15`, `release.yml:73`). + A store app record needs one canonical id; this split also fragments TCC and + keychain identity today. **Fix is out-of-scope here** (touches the dirty + `Makefile` on this branch) — see follow-up prompt. +5. **Accessibility / Apple Events purpose strings** — review-risky for a store + build; fine for Developer ID. +6. **Release pipeline not green** — PR35 unresolved; signing secrets unset; live + release lags source. (Tracked in `PUBLIC_RELEASE_CHECKLIST.md`.) + +**P2 — only after a sandboxed build exists** + +7. App Privacy Details questionnaire, App Store screenshots/metadata, TestFlight + cold-install smoke. + +--- + +## What this repo change does and does NOT do + +- **Adds** this document and `scripts/appstore-preflight.sh` (read-only check). +- **Does not** enable the sandbox, change entitlements, alter signing, touch the + `Makefile`, or modify any PR36 work. Those are deliberate follow-ups, gated on + the operator's decision to actually stand up a second SKU. diff --git a/scripts/appstore-preflight.sh b/scripts/appstore-preflight.sh new file mode 100755 index 00000000..0087afe4 --- /dev/null +++ b/scripts/appstore-preflight.sh @@ -0,0 +1,128 @@ +#!/bin/bash +# CodeScribe — Mac App Store (MAS) readiness preflight +# +# READ-ONLY. Inspects the repo for state that is known-incompatible with Mac App +# Store distribution and reports each item as a blocker (P0), a warning (P1), or +# OK. It does NOT modify build behavior, entitlements, or any tracked file. +# +# The current shipping lane is Developer ID + notarization (outside the App +# Store). This script does not change that. It exists so an operator can answer +# "how far is the tree from a sandbox-clean MAS build?" without re-deriving it by +# hand. See docs/APP_STORE_READINESS.md for the full plan and citations. +# +# Usage: +# ./scripts/appstore-preflight.sh # human-readable report +# ./scripts/appstore-preflight.sh && echo OK # exit 0 only if no P0 blockers +# +# Exit code: 0 = no P0 blockers found, 1 = at least one P0 blocker. +# +# Created by M&K (c)2026 VetCoders + +set -uo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +ROOT="$(dirname "$SCRIPT_DIR")" +cd "$ROOT" + +ENTITLEMENTS="scripts/entitlements.plist" +MAKEFILE="Makefile" +KEYCHAIN_RS="core/config/keychain.rs" +RELEASE_YML=".github/workflows/release.yml" + +P0=0 +P1=0 + +red() { printf '\033[31m%s\033[0m\n' "$1"; } +green() { printf '\033[32m%s\033[0m\n' "$1"; } +yellow(){ printf '\033[33m%s\033[0m\n' "$1"; } + +blocker() { red " [P0] $1"; P0=$((P0 + 1)); } +warn() { yellow " [P1] $1"; P1=$((P1 + 1)); } +ok() { green " [OK] $1"; } + +echo "═══════════════════════════════════════════════════════════" +echo " CodeScribe — Mac App Store readiness preflight (read-only)" +echo "═══════════════════════════════════════════════════════════" + +# 1. App Sandbox — REQUIRED for MAS, intentionally absent today. +echo "" +echo "▶ App Sandbox entitlement (com.apple.security.app-sandbox)" +if grep -q "com.apple.security.app-sandbox" "$ENTITLEMENTS" 2>/dev/null \ + && grep -A1 "com.apple.security.app-sandbox" "$ENTITLEMENTS" | grep -q ""; then + ok "App Sandbox is enabled." +else + blocker "App Sandbox is NOT enabled in $ENTITLEMENTS. MAS rejects builds without it." +fi + +# 2. Hardened-runtime relaxations that conflict with a clean sandboxed MAS build. +echo "" +echo "▶ Sandbox-hostile hardened-runtime relaxations" +for key in \ + "com.apple.security.cs.disable-library-validation" \ + "com.apple.security.cs.allow-unsigned-executable-memory" \ + "com.apple.security.cs.allow-dyld-environment-variables"; do + if grep -q "$key" "$ENTITLEMENTS" 2>/dev/null; then + warn "$key present (required by embedded ML dylibs; review against MAS — see readiness doc)." + else + ok "$key absent." + fi +done + +# 3. Privacy manifest — required by App Store Connect since 2024-05-01. +echo "" +echo "▶ Privacy manifest (PrivacyInfo.xcprivacy)" +if find . -path ./target -prune -o -name "PrivacyInfo.xcprivacy" -print 2>/dev/null | grep -q .; then + ok "PrivacyInfo.xcprivacy present." +else + blocker "No PrivacyInfo.xcprivacy. Required-reason APIs (FileTimestamp via std::fs metadata) are used; MAS submission needs it." +fi + +# 4. Bundle identifier consistency across the surfaces that must agree. +echo "" +echo "▶ Bundle identifier consistency" +MK_ID="$(grep -E "^CODESCRIBE_BUNDLE_ID \?=" "$MAKEFILE" 2>/dev/null | sed -E 's/.*= *//' | tr -d ' ')" +KC_ID="$(grep -oE "com\.[a-zA-Z0-9.]+codescribe[a-zA-Z0-9.]*" "$KEYCHAIN_RS" 2>/dev/null | head -1)" +YML_ID="$(grep -oE "com\.[a-zA-Z0-9.]+codescribe[a-zA-Z0-9.]*|com\.codescribe\.app" "$RELEASE_YML" 2>/dev/null | head -1)" +echo " Makefile default : ${MK_ID:-}" +echo " keychain.rs : ${KC_ID:-}" +echo " release.yml : ${YML_ID:-}" +if [ -n "$MK_ID" ] && [ "$MK_ID" = "$KC_ID" ] && [ "$MK_ID" = "$YML_ID" ]; then + ok "Bundle id is consistent across Makefile, keychain, and release workflow." +else + warn "Bundle id differs across surfaces. A MAS app record needs one canonical id (TCC + keychain identity)." +fi + +# 5. Apple Events / Accessibility purpose strings — MAS review risk under sandbox. +echo "" +echo "▶ Sandbox-review-sensitive purpose strings (Makefile bundle target)" +if grep -q "NSAppleEventsUsageDescription" "$MAKEFILE" 2>/dev/null; then + warn "NSAppleEventsUsageDescription present. Apple-events temporary exception is 'most often rejected' by App Review." +else + ok "No NSAppleEventsUsageDescription." +fi +if grep -q "NSAccessibilityUsageDescription" "$MAKEFILE" 2>/dev/null; then + warn "NSAccessibilityUsageDescription present. Accessibility for non-accessibility purposes risks Guideline 2.4.5 rejection." +else + ok "No NSAccessibilityUsageDescription." +fi + +# 6. App Store distribution path — none today (Developer ID only). +echo "" +echo "▶ App Store upload path" +if grep -qiE "productbuild|App Store Connect|altool|Transporter|3rd Party Mac Developer|Apple Distribution" "$MAKEFILE" "$RELEASE_YML" 2>/dev/null; then + ok "An App Store distribution path is referenced." +else + blocker "No App Store distribution path (productbuild/pkg, Apple Distribution cert, App Store Connect upload). Only Developer ID + notarization exists." +fi + +echo "" +echo "───────────────────────────────────────────────────────────" +echo " Summary: $P0 P0 blocker(s), $P1 P1 warning(s)" +echo " Lane today: Developer ID + notarization (outside App Store)." +echo " Full plan + Apple citations: docs/APP_STORE_READINESS.md" +echo "───────────────────────────────────────────────────────────" + +if [ "$P0" -gt 0 ]; then + exit 1 +fi +exit 0 From dff0a20339a7ba31d09433b57934724f7d4b2120 Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Sat, 27 Jun 2026 12:48:58 -0700 Subject: [PATCH 022/426] [claude/vc-workflow] docs(release): verify App Store readiness vs live Apple sources + privacy manifest draft ERi re-run: re-checked every Mac App Store constraint against live Apple/official sources (sandbox requirement, MAS vs Developer ID signing+upload path, App Privacy Details, privacy-manifest 2024-05-01 enforcement, FileTimestamp reason code). All core claims held; added the precise FileTimestamp reason code C617.1 mapped to the app's std::fs metadata().modified() usage in history.rs/hf_cache.rs/attachment.rs. Adds scripts/PrivacyInfo.xcprivacy.template as a clearly-marked DRAFT guardrail for the future sandbox-clean Basic SKU (not wired into any build, zero blast radius). Does not enable the sandbox, change entitlements/signing, touch the Makefile, or modify PR36 work. Authored-By: claude session_id: 9c078cd2-268d-4d36-bf2f-26e89bc1ca80 date: 2026-06-27T12:47:25 PDT runtime: terminal --- docs/APP_STORE_READINESS.md | 32 ++++++++++- scripts/PrivacyInfo.xcprivacy.template | 75 ++++++++++++++++++++++++++ 2 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 scripts/PrivacyInfo.xcprivacy.template diff --git a/docs/APP_STORE_READINESS.md b/docs/APP_STORE_READINESS.md index a1c9cf2b..be5c5382 100644 --- a/docs/APP_STORE_READINESS.md +++ b/docs/APP_STORE_READINESS.md @@ -52,7 +52,7 @@ is a question of **which product** goes to the store. |---------|--------------------------|-----------------|-----| | **Sandbox** | `scripts/entitlements.plist` explicitly **disables** App Sandbox (documented as "outside Mac App Store") | `app-sandbox = true` mandatory | **P0** | | **Entitlements** | `disable-library-validation`, `allow-unsigned-executable-memory`, `allow-dyld-environment-variables` — all required by embedded Whisper/MiniLM dylibs | Sandboxed apps must team-sign nested code; `disable-library-validation` conflicts | **P0/uncertain** | -| **Privacy manifest** | none (`PrivacyInfo.xcprivacy` absent); app uses `std::fs::metadata().modified()` → **FileTimestamp** required-reason category | `PrivacyInfo.xcprivacy` with declared reasons | **P0** | +| **Privacy manifest** | none (`PrivacyInfo.xcprivacy` absent); app reads file mtimes via `std::fs` `metadata().modified()` in `core/state/history.rs`, `core/hf_cache.rs`, `core/attachment.rs` → **FileTimestamp** required-reason category, reason code **C617.1** (metadata of files in the app's own containers) | `PrivacyInfo.xcprivacy` declaring `NSPrivacyAccessedAPICategoryFileTimestamp` / `C617.1` | **P0** (draft template: `scripts/PrivacyInfo.xcprivacy.template`) | | **App Privacy Details** | only a written `docs/guide/privacy.md`; no App Store Connect record | Nutrition-label questionnaire completed | **P1** (process, blocked on having an app record) | | **Purpose strings** | Mic, Accessibility, Input Monitoring, Screen Capture, Apple Events — generated in `Makefile` bundle target (lines 127–131) | Mic + Input Monitoring OK; Accessibility/Apple Events review-risky | **P1** | | **Basic vs Agentic** | Onboarding has Basic (safe default) + Agentic lanes; Agentic probes MCP readiness | Agentic capabilities are sandbox-incompatible | **architecture** | @@ -115,9 +115,37 @@ the store) and off (for the agent). Do not attempt one binary for both. --- +## Research verification — live Apple sources (2026-06-27) + +The constraints above were re-checked against live Apple/official sources during +an ERi (Examine → Research → Implement) pass. Each core claim held; precision was +added where the first draft was coarse. + +| Claim | Verdict (live) | Source | +|-------|----------------|--------| +| App Sandbox (`com.apple.security.app-sandbox = true`) is required for every Mac App Store app; builds without it are rejected at submission | **Confirmed** | [App Sandbox Entitlement](https://developer.apple.com/documentation/bundleresources/entitlements/com.apple.security.app-sandbox); rejection text on [Apple Developer Forums 41400](https://developer.apple.com/forums/thread/41400) | +| MAS lane needs an **Apple Distribution** signing identity + a **3rd Party Mac Developer Installer** `.pkg` via `productbuild`, uploaded with **Transporter** to App Store Connect — distinct from Developer ID + `notarytool` (outside-store lane; `altool` retired 2023-11-01) | **Confirmed** | [Notarizing macOS software](https://developer.apple.com/documentation/security/notarizing-macos-software-before-distribution), [Distributing software on macOS](https://developer.apple.com/macos/distribution/), [Uploading macOS Builds to App Store Connect (Xojo, 2025)](https://blog.xojo.com/2025/01/14/uploading-macos-builds-to-app-store-connect/) | +| **App Privacy Details** ("nutrition labels") are mandatory to submit new apps/updates, apply to macOS, and require declaring **Audio Data** with purpose + linkage + tracking answers | **Confirmed** | [App Privacy Details](https://developer.apple.com/app-store/app-privacy-details/) | +| **Privacy manifest** (`PrivacyInfo.xcprivacy`) with **required-reason API** declarations is enforced since **2024-05-01**; apps without it are rejected | **Confirmed** | [Privacy updates for App Store submissions](https://developer.apple.com/news/?id=3d8a9yyh), [Reminder: starts May 1](https://developer.apple.com/news/?id=pvszzano) | +| CodeScribe's `metadata().modified()` usage maps to **FileTimestamp** category, reason code **C617.1** (metadata of files in the app's own containers); `DDA9.1` is the alternate (show timestamps to the user, no off-device send) | **Confirmed + made precise** | [NSPrivacyAccessedAPIType](https://developer.apple.com/documentation/bundleresources/app-privacy-configuration/nsprivacyaccessedapitypes/nsprivacyaccessedapitype) | + +**Honest nuance:** the hardest-edged 2024-05-01 gate is scoped most strictly to +*third-party SDKs on Apple's commonly-used list*, but the required-reason +*declaration* obligation also covers an app's own first-party usage of those +APIs. CodeScribe uses a FileTimestamp API directly, so the manifest is required +regardless of SDKs. + +**Still uncertain (needs a real `productbuild` + App Store Connect upload to +settle):** whether `disable-library-validation` (required today by the embedded +Whisper/MiniLM dylibs) can coexist with a sandboxed MAS build, and whether +Input-Monitoring listen-only hotkeys survive App Review in practice. Do not +assert either way from documentation alone. + ## What this repo change does and does NOT do -- **Adds** this document and `scripts/appstore-preflight.sh` (read-only check). +- **Adds** this document, `scripts/appstore-preflight.sh` (read-only check), and + `scripts/PrivacyInfo.xcprivacy.template` (a clearly-marked DRAFT manifest, not + wired into any build — a guardrail/starting point for the future Basic SKU). - **Does not** enable the sandbox, change entitlements, alter signing, touch the `Makefile`, or modify any PR36 work. Those are deliberate follow-ups, gated on the operator's decision to actually stand up a second SKU. diff --git a/scripts/PrivacyInfo.xcprivacy.template b/scripts/PrivacyInfo.xcprivacy.template new file mode 100644 index 00000000..e15abec0 --- /dev/null +++ b/scripts/PrivacyInfo.xcprivacy.template @@ -0,0 +1,75 @@ + + + + + + + NSPrivacyTracking + + + NSPrivacyTrackingDomains + + + + NSPrivacyCollectedDataTypes + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + + C617.1 + + + + + From 1dc5ceeb86332a97a605ad81def2b5c51461798b Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Sat, 27 Jun 2026 13:47:02 -0700 Subject: [PATCH 023/426] =?UTF-8?q?[claude/vc-workflow]=20docs(release):?= =?UTF-8?q?=20App=20Store=20first-choice=20lane=20=E2=80=94=20ERi=20re-fir?= =?UTF-8?q?e=20+=20draft=20Basic-SKU=20entitlements?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Board decision: Mac App Store is now the first-choice distribution lane. Second ERi (Examine -> Research -> Implement) pass re-verified the two points the first readiness draft left "uncertain"; both now resolve toward feasibility: - Embedded Whisper/MiniLM dylibs CAN ship sandboxed: disable-library-validation is only needed because nested dylibs are ad-hoc/foreign-signed. Re-signing them under the app's own team id satisfies library validation AND the sandbox nested-code rule, so the relaxation drops. (TN2206.) - Global hotkeys survive the sandbox: listen-only CGEventTap via Input Monitoring is available to MAS apps; CodeScribe already uses CGEventTap, not NSEvent. Additive, low-blast-radius, no build/sandbox/signing change, PR36 dirty work (Makefile, env_validation.rs) deliberately left untouched: - scripts/entitlements.appstore-basic.plist: DRAFT sandbox-clean entitlement set for the future Basic SKU (sandbox=true, audio-input, no disable-library-validation, no Accessibility/AppleEvents/broad-files). Not wired into any build. - docs/APP_STORE_READINESS.md: ERi re-fire section (research resolutions, exact productbuild/upload command path, true blockers) + FileTimestamp precision fix (stream_postprocess.rs is an additional runtime C617.1 site). - scripts/appstore-preflight.sh: informational check that draft Basic-SKU scaffolding exists (no exit-code change; still 3 P0 / 6 P1). Authored-By: claude session_id: 8113edfc-7bf8-46b3-b5ba-8240bf287956 date: 2026-06-27T13:47:02 PDT runtime: terminal --- docs/APP_STORE_READINESS.md | 115 +++++++++++++++++++++- scripts/appstore-preflight.sh | 14 +++ scripts/entitlements.appstore-basic.plist | 91 +++++++++++++++++ 3 files changed, 219 insertions(+), 1 deletion(-) create mode 100644 scripts/entitlements.appstore-basic.plist diff --git a/docs/APP_STORE_READINESS.md b/docs/APP_STORE_READINESS.md index be5c5382..d09ec673 100644 --- a/docs/APP_STORE_READINESS.md +++ b/docs/APP_STORE_READINESS.md @@ -52,7 +52,7 @@ is a question of **which product** goes to the store. |---------|--------------------------|-----------------|-----| | **Sandbox** | `scripts/entitlements.plist` explicitly **disables** App Sandbox (documented as "outside Mac App Store") | `app-sandbox = true` mandatory | **P0** | | **Entitlements** | `disable-library-validation`, `allow-unsigned-executable-memory`, `allow-dyld-environment-variables` — all required by embedded Whisper/MiniLM dylibs | Sandboxed apps must team-sign nested code; `disable-library-validation` conflicts | **P0/uncertain** | -| **Privacy manifest** | none (`PrivacyInfo.xcprivacy` absent); app reads file mtimes via `std::fs` `metadata().modified()` in `core/state/history.rs`, `core/hf_cache.rs`, `core/attachment.rs` → **FileTimestamp** required-reason category, reason code **C617.1** (metadata of files in the app's own containers) | `PrivacyInfo.xcprivacy` declaring `NSPrivacyAccessedAPICategoryFileTimestamp` / `C617.1` | **P0** (draft template: `scripts/PrivacyInfo.xcprivacy.template`) | +| **Privacy manifest** | none (`PrivacyInfo.xcprivacy` absent); app reads file mtimes via `std::fs` `metadata().modified()` in `core/state/history.rs`, `core/hf_cache.rs`, `core/attachment.rs`, **and runtime `core/pipeline/stream_postprocess.rs`** (lexicon mtime in config dir) → **FileTimestamp** required-reason category, reason code **C617.1** (metadata of files in the app's own containers) | `PrivacyInfo.xcprivacy` declaring `NSPrivacyAccessedAPICategoryFileTimestamp` / `C617.1` | **P0** (draft template: `scripts/PrivacyInfo.xcprivacy.template`) | | **App Privacy Details** | only a written `docs/guide/privacy.md`; no App Store Connect record | Nutrition-label questionnaire completed | **P1** (process, blocked on having an app record) | | **Purpose strings** | Mic, Accessibility, Input Monitoring, Screen Capture, Apple Events — generated in `Makefile` bundle target (lines 127–131) | Mic + Input Monitoring OK; Accessibility/Apple Events review-risky | **P1** | | **Basic vs Agentic** | Onboarding has Basic (safe default) + Agentic lanes; Agentic probes MCP readiness | Agentic capabilities are sandbox-incompatible | **architecture** | @@ -149,3 +149,116 @@ assert either way from documentation alone. - **Does not** enable the sandbox, change entitlements, alter signing, touch the `Makefile`, or modify any PR36 work. Those are deliberate follow-ups, gated on the operator's decision to actually stand up a second SKU. + +--- + +## ERi re-fire — board decision: App Store is the first-choice lane (2026-06-27) + +The operator has made a **board-level product decision**: the Mac App Store is +now the **first-choice distribution lane** for CodeScribe. That does not reverse +the technical verdict above — a single binary still cannot be both sandboxed (for +the store) and un-sandboxed (for the agent). What it changes is the *action*: stop +treating the Basic MAS SKU as a "maybe later" and treat it as the **primary lane +to stand up**, with Developer ID/Agentic as the secondary power-user lane. + +A second ERi pass re-verified the two points the first draft left explicitly +"uncertain". Both are now **resolved in favour of feasibility** — the Basic SKU is +technically viable, not merely conceivable. + +### Resolved uncertainty 1 — embedded ML dylibs CAN ship sandboxed + +`disable-library-validation` is set today **only because the embedded Whisper / +MiniLM dylibs are signed ad-hoc / under a foreign team**. Apple's library-validation +policy lets a binary link any library signed with **the same team identifier** (or +an Apple system library). So the fix is not an entitlement — it is **re-signing +every nested dylib/framework under the app's own team ID at bundle time**. Do that +and library validation is satisfied *and* the sandbox's "nested code must be +team-signed" rule is met, with `disable-library-validation` removed entirely. + +- Library validation / nested-code signing: [TN2206: macOS Code Signing In Depth](https://developer.apple.com/library/archive/technotes/tn2206/_index.html) +- `allow-unsigned-executable-memory` is MAS-compatible (keep only if a launch test shows the ML runtime needs JIT): [allow-unsigned-executable-memory](https://developer.apple.com/documentation/bundleresources/entitlements/com.apple.security.cs.allow-unsigned-executable-memory) + +**Still requires a real `productbuild` + App Store Connect upload to fully settle** — +documentation establishes the rule; only a live upload proves the embedded ML stack +loads under the sandbox. + +### Resolved uncertainty 2 — global hotkeys survive the sandbox + +Listen-only **Input Monitoring** (`CGEventTap` via `CGPreflightListenEventAccess` / +`CGRequestListenEventAccess`) **is available to sandboxed Mac App Store apps**. It +uses the runtime *Input Monitoring* privilege, not the Accessibility privilege that +the sandbox blocks. CodeScribe already detects hotkeys with `CGEventTap` (not the +Accessibility-bound `NSEvent` monitor), so **hotkey detection carries into the +Basic SKU unchanged**. What does *not* carry is *controlling other apps* (paste, +focus-restore) — that needs Accessibility / Apple Events, which stay in the +Developer ID SKU. + +- Source: Apple confirms `CGEventTap` + Input Monitoring works in sandbox where `NSEvent`/Accessibility does not — see [Apple Developer Forums: Accessibility permission in sandboxed app](https://developer.apple.com/forums/thread/707680) and the [App Sandbox Information upload reference](https://developer.apple.com/help/app-store-connect/reference/app-uploads/app-sandbox-information). + +### Required-reason API scope is widening (re-confirmed) + +The 2024-05-01 gate began with third-party SDKs, but Apple has stated the +required-reason obligation **will expand to the entire app binary**, and since +**2025-02-12** a new privacy-impacting SDK must ship a manifest. CodeScribe uses a +FileTimestamp API directly in first-party code, so `PrivacyInfo.xcprivacy` is +required regardless of SDKs — do not defer it. + +- [Privacy updates for App Store submissions](https://developer.apple.com/news/?id=3d8a9yyh) · [List of APIs that require declared reasons](https://developer.apple.com/news/?id=z6fu1dcu) · [TN3183: required reason API entries](https://developer.apple.com/documentation/technotes/tn3183-adding-required-reason-api-entries-to-your-privacy-manifest) + +### What this re-fire adds to the repo + +- **`scripts/entitlements.appstore-basic.plist`** — a clearly-marked **DRAFT** + sandbox-clean entitlement set for the Basic SKU: `app-sandbox = true`, + `device.audio-input`, **no** `disable-library-validation`, **no** + Accessibility / Apple Events / broad file access. Not wired into any build — + the starting point for the MAS build profile. Sibling to the shipping + `scripts/entitlements.plist` (Developer ID). +- This section + the FileTimestamp precision fix (`stream_postprocess.rs` is an + additional runtime FileTimestamp site the first draft missed). +- **No** Makefile / signing / sandbox changes; PR36's dirty work is untouched. + +### Concrete path to the Basic MAS SKU (commands the operator will run later) + +These are the *documented target commands*, not run by this pass (they need an +Apple Distribution identity and a sandboxed build profile that do not exist yet): + +```bash +# 0. Pre-req certs (operator, in Apple Developer portal — NOT done here): +# - "Apple Distribution" certificate +# - "Mac Installer Distribution" (3rd Party Mac Developer Installer) certificate +# - App record + bundle id in App Store Connect (pick ONE canonical id) + +# 1. Build the Basic profile (future Makefile target, sandbox-clean feature set). +# Sign the app AND re-sign each nested ML dylib under the SAME team id: +codesign --force --options runtime \ + --entitlements scripts/entitlements.appstore-basic.plist \ + --sign "Apple Distribution: ()" \ + CodeScribe.app/Contents/MacOS/ # then the .app last + +# 2. Build the installer package for the store: +productbuild --component CodeScribe.app /Applications \ + --sign "3rd Party Mac Developer Installer: ()" \ + CodeScribe.pkg + +# 3. Validate + upload to App Store Connect (Transporter app or notarytool's +# successor for store delivery; altool was retired 2023-11-01): +xcrun altool --validate-app -f CodeScribe.pkg -t macos ... # or Transporter.app + +# 4. In App Store Connect: complete App Privacy Details ("nutrition labels"): +# Audio Data -> purpose "App Functionality", NOT linked to identity, NOT tracking. + +# Read-only gap check any time (this DOES run today): +./scripts/appstore-preflight.sh +``` + +### Remaining true blockers (unchanged by this pass, ordered) + +- **P0** Stand up the sandboxed Basic build profile (new Makefile target + + `entitlements.appstore-basic.plist` wired in + nested-dylib re-signing). +- **P0** Acquire Apple Distribution + Mac Installer Distribution certificates and + add a `productbuild` + App Store Connect upload step (none exist in the repo). +- **P0** Ship `PrivacyInfo.xcprivacy` inside the bundle (template ready). +- **P1** Resolve the bundle-id split to one canonical id (touches the dirty + `Makefile` — out of scope on this branch; see follow-up prompts). +- **P1** Confirm the embedded ML stack actually loads sandboxed via a real + `productbuild` + upload (documentation-confident, not upload-proven). diff --git a/scripts/appstore-preflight.sh b/scripts/appstore-preflight.sh index 0087afe4..197cd240 100755 --- a/scripts/appstore-preflight.sh +++ b/scripts/appstore-preflight.sh @@ -115,6 +115,20 @@ else blocker "No App Store distribution path (productbuild/pkg, Apple Distribution cert, App Store Connect upload). Only Developer ID + notarization exists." fi +# 7. Basic-SKU draft scaffolding — informational (does not affect exit code). +echo "" +echo "▶ Basic SKU draft scaffolding (informational)" +if [ -f "scripts/entitlements.appstore-basic.plist" ]; then + ok "Draft sandbox entitlements present (scripts/entitlements.appstore-basic.plist)." +else + yellow " [info] No draft sandbox entitlements (scripts/entitlements.appstore-basic.plist)." +fi +if [ -f "scripts/PrivacyInfo.xcprivacy.template" ]; then + ok "Draft privacy manifest present (scripts/PrivacyInfo.xcprivacy.template)." +else + yellow " [info] No draft privacy manifest template." +fi + echo "" echo "───────────────────────────────────────────────────────────" echo " Summary: $P0 P0 blocker(s), $P1 P1 warning(s)" diff --git a/scripts/entitlements.appstore-basic.plist b/scripts/entitlements.appstore-basic.plist new file mode 100644 index 00000000..bc6d2efa --- /dev/null +++ b/scripts/entitlements.appstore-basic.plist @@ -0,0 +1,91 @@ + + + + + + + com.apple.security.app-sandbox + + + + com.apple.security.device.audio-input + + + + com.apple.security.cs.allow-unsigned-executable-memory + + + + + From 670022861b30e2f57ac43c108753543686835f89 Mon Sep 17 00:00:00 2001 From: m-szymanska Date: Sat, 27 Jun 2026 19:20:12 -0700 Subject: [PATCH 024/426] fix(vad): share Silero ONNX session process-wide to stop per-recording leak MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The embedded Silero VAD session was rebuilt on every recording (`SileroVad::new_embedded` → `Session::commit_from_memory`). Over a long run this fired hundreds of times (378× in one 15h session, with zero unloads), and ORT arena allocations do not return to the OS — driving phys_footprint to ~5GB (peak 10GB) while RSS stayed at ~560MB. The Silero graph is stateless between calls: the recurrent `state` and the 64-sample `context` live in `SileroVad` and are passed in/out as tensors. So we now compile the embedded graph once into a process-wide `OnceLock>>` and hand every instance a clone. The Mutex is required because `ort::Session::run` takes `&mut self`; serializing the short VAD inferences is harmless and correct (per-stream state is untouched). The path-based `new` loader (dev/test override) keeps its own session. Embedder and Whisper already use this singleton pattern; this brings Silero in line. Tests: embedded session is shared across instances (Arc::ptr_eq); shared session keeps independent per-instance state across predict + reset. Co-Authored-By: Claude Opus 4.8 (1M context) --- core/vad/silero_ort.rs | 156 ++++++++++++++++++++++++++++++++--------- 1 file changed, 121 insertions(+), 35 deletions(-) diff --git a/core/vad/silero_ort.rs b/core/vad/silero_ort.rs index 5e404d90..45b82019 100644 --- a/core/vad/silero_ort.rs +++ b/core/vad/silero_ort.rs @@ -4,6 +4,7 @@ //! Model: silero_vad.onnx v6 from https://github.com/snakers4/silero-vad use std::path::{Path, PathBuf}; +use std::sync::{Arc, Mutex, OnceLock}; use anyhow::{Context, Result}; use ndarray::ArrayD; @@ -18,6 +19,42 @@ mod embedded { include!(concat!(env!("OUT_DIR"), "/embedded_vad_data.rs")); } +/// Process-wide shared Silero ONNX session for the embedded model. +/// +/// The Silero graph is **stateless** between calls — the recurrent state +/// (`state`) and the 64-sample `context` live in each [`SileroVad`] instance +/// and are passed in/out as tensors per inference. Only the compiled graph is +/// heavy (ORT arena + graph optimizer scratch), and rebuilding it per recording +/// leaked native memory (the session is created hundreds of times over a long +/// run and ORT arenas do not return to the OS). We therefore build it **once** +/// and share it behind a `Mutex` (ORT's `Session::run` takes `&mut self`). +static EMBEDDED_SESSION: OnceLock>> = OnceLock::new(); + +/// Build (once) and return a handle to the shared embedded Silero session. +/// +/// First call compiles the graph from the embedded bytes and caches it; every +/// subsequent call clones the `Arc` — no reload, no extra native allocation. +fn embedded_session() -> Result>> { + // Fast path: already initialized. + if let Some(existing) = EMBEDDED_SESSION.get() { + return Ok(Arc::clone(existing)); + } + // Build outside the OnceLock so a failure isn't cached as a poisoned slot. + info!( + "Loading Silero VAD model from embedded bytes ({} bytes) — shared once, reused", + embedded::MODEL.len() + ); + let session = Session::builder()? + .with_intra_threads(1)? + .commit_from_memory(embedded::MODEL) + .context("Failed to load embedded Silero VAD ONNX model")?; + debug!("Silero VAD model loaded successfully (embedded, shared)"); + // Race-safe: if another thread won the init, drop ours and use theirs. + let handle = Arc::new(Mutex::new(session)); + let stored = EMBEDDED_SESSION.get_or_init(|| handle); + Ok(Arc::clone(stored)) +} + /// Silero VAD sample rate (always 16kHz) pub const VAD_SAMPLE_RATE: u32 = 16000; @@ -89,7 +126,11 @@ impl Resampler { /// - Output names: `output`, `stateN` (v4: positional) /// - Context window: 64 samples prepended to each 512-sample chunk pub struct SileroVad { - session: Session, + /// Shared, compiled Silero graph. The embedded production path hands out a + /// clone of one process-wide session (see [`embedded_session`]); the legacy + /// path-based loader builds its own. The graph is stateless across calls, so + /// sharing it behind a `Mutex` is safe — per-stream state lives below. + session: Arc>, state: ArrayD, context: Vec, config: VadConfig, @@ -110,7 +151,9 @@ impl SileroVad { debug!("Silero VAD model loaded successfully"); Ok(Self { - session, + // Path-based loads are dev/test overrides with a caller-chosen file, + // so they are not cached — each gets its own session. + session: Arc::new(Mutex::new(session)), state: ArrayD::zeros(STATE_SHAPE.as_slice()), context: vec![0.0; CONTEXT_SIZE], config, @@ -119,17 +162,13 @@ impl SileroVad { } /// Load Silero VAD model from embedded bytes (production path, zero I/O). + /// + /// The compiled ONNX graph is shared process-wide (built once, cloned + /// thereafter) — only the lightweight per-stream state is allocated here. + /// This is the hot path: it runs once per recording, so rebuilding the graph + /// every time previously leaked native ORT memory over long sessions. pub(crate) fn new_embedded(config: VadConfig) -> Result { - info!( - "Loading Silero VAD model from embedded bytes ({} bytes)", - embedded::MODEL.len() - ); - let session = Session::builder()? - .with_intra_threads(1)? - .commit_from_memory(embedded::MODEL) - .context("Failed to load embedded Silero VAD ONNX model")?; - - debug!("Silero VAD model loaded successfully (embedded)"); + let session = embedded_session()?; Ok(Self { session, @@ -200,31 +239,45 @@ impl SileroVad { let state_value = Value::from_array(state)?; let sr_value = Value::from_array(sr)?; - let outputs = self.session.run([ - (&input_value).into(), - (&state_value).into(), - (&sr_value).into(), - ])?; - - // Read probability from "output" (safe access — no panic on missing key) - let prob = { - let output = outputs - .get("output") - .context("Silero model missing 'output' tensor")?; - let (_shape, data) = output.try_extract_tensor::()?; - data.first().copied().unwrap_or(0.0) + // Lock the shared session only for the inference call. The graph is + // stateless across runs, so serializing concurrent streams here is + // correct — each keeps its own `state`/`context`. Extract everything we + // need from `outputs` (which borrows the guard) before the guard drops. + let (prob, next_state) = { + let mut session = self + .session + .lock() + .map_err(|e| anyhow::anyhow!("Silero session lock poisoned: {e}"))?; + let outputs = session.run([ + (&input_value).into(), + (&state_value).into(), + (&sr_value).into(), + ])?; + + // Read probability from "output" (safe access — no panic on missing key) + let prob = { + let output = outputs + .get("output") + .context("Silero model missing 'output' tensor")?; + let (_shape, data) = output.try_extract_tensor::()?; + data.first().copied().unwrap_or(0.0) + }; + + // Read updated state from "stateN" (safe access — no panic on missing key) + let next_state = { + let state_output = outputs + .get("stateN") + .context("Silero model missing 'stateN' tensor")?; + let (shape, data) = state_output.try_extract_tensor::()?; + let shape_usize: Vec = shape.as_ref().iter().map(|&d| d as usize).collect(); + ArrayD::from_shape_vec(shape_usize.as_slice(), data.to_vec()).ok() + }; + + (prob, next_state) }; - // Read updated state from "stateN" (safe access — no panic on missing key) - { - let state_output = outputs - .get("stateN") - .context("Silero model missing 'stateN' tensor")?; - let (shape, data) = state_output.try_extract_tensor::()?; - let shape_usize: Vec = shape.as_ref().iter().map(|&d| d as usize).collect(); - if let Ok(arr) = ArrayD::from_shape_vec(shape_usize.as_slice(), data.to_vec()) { - self.state = arr; - } + if let Some(arr) = next_state { + self.state = arr; } Ok(prob) @@ -452,4 +505,37 @@ mod tests { let vad = AccumulatingVad::new(16000); assert!(vad.is_ok(), "embedded VAD must load: {:?}", vad.err()); } + + #[test] + fn embedded_session_is_shared_across_instances() { + // The core of the memory fix: two embedded VAD instances must point at + // ONE underlying ONNX session (graph built once, cloned thereafter), + // instead of each rebuilding it and leaking native ORT memory. + let a = SileroVad::new_embedded(VadConfig::default()).expect("first embedded VAD"); + let b = SileroVad::new_embedded(VadConfig::default()).expect("second embedded VAD"); + assert!( + Arc::ptr_eq(&a.session, &b.session), + "embedded Silero session must be shared, not rebuilt per instance" + ); + } + + #[test] + fn shared_session_keeps_per_instance_state() { + // Sharing the session must not couple per-stream recurrent state: each + // instance owns its `state`/`context`, so both predict correctly and a + // reset on one does not disturb the other. + let mut a = SileroVad::new_embedded(VadConfig::default()).expect("VAD a"); + let mut b = SileroVad::new_embedded(VadConfig::default()).expect("VAD b"); + + let chunk = vec![0.0f32; CHUNK_SIZE]; + let pa = a.predict(&chunk).expect("predict a"); + let pb = b.predict(&chunk).expect("predict b"); + assert!((0.0..=1.0).contains(&pa), "prob a in range: {pa}"); + assert!((0.0..=1.0).contains(&pb), "prob b in range: {pb}"); + + // Reset one stream; the other must keep working on the shared session. + a.reset(); + let pb2 = b.predict(&chunk).expect("predict b after a.reset"); + assert!((0.0..=1.0).contains(&pb2), "prob b2 in range: {pb2}"); + } } From 5001549b524bf389f2f65850d44f8cb6a88d94ec Mon Sep 17 00:00:00 2001 From: m-szymanska Date: Sat, 27 Jun 2026 20:48:39 -0700 Subject: [PATCH 025/426] fix(memory): return freed heap pages to the OS after each recording MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Live measurement showed that after a few recordings ~700MB of MALLOC_LARGE (plus reclaimable MALLOC_SMALL) was freed-but-retained — only ~37MB was actually live. The system allocator caches freed dirty pages for reuse instead of returning them to the kernel, so phys_footprint creeps up across a long session even though nothing leaks. Add `codescribe_core::memory::release_freed_heap()`, a thin macOS FFI to `malloc_zone_pressure_relief(NULL, 0)`, and call it once per recording at the quiescent "State reset to IDLE" point in the controller. No-op off macOS. Co-Authored-By: Claude Opus 4.8 (1M context) --- app/controller/mod.rs | 6 +++++ core/lib.rs | 1 + core/memory.rs | 51 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 core/memory.rs diff --git a/app/controller/mod.rs b/app/controller/mod.rs index 72fd3d07..1d8abf38 100644 --- a/app/controller/mod.rs +++ b/app/controller/mod.rs @@ -1632,6 +1632,12 @@ impl RecordingController { crate::ui::voice_chat::update_voice_chat_status(final_status); info!("Processing finished successfully. State reset to IDLE."); + // The transcription just freed large transient buffers (audio, + // mel, model scratch). Hand those freed-but-retained pages back + // to the OS now, while idle, instead of letting phys_footprint + // creep up across a long session. + codescribe_core::memory::release_freed_heap(); + if let Some(reason) = outcome.no_speech_reason.as_deref() { info!("NoSpeech outcome in finish_recording: reason={reason}"); if !assistive { diff --git a/core/lib.rs b/core/lib.rs index 89c5559f..83b2a61f 100644 --- a/core/lib.rs +++ b/core/lib.rs @@ -48,6 +48,7 @@ mod hf_cache; pub mod ipc; pub mod llm; pub mod mcp; +pub mod memory; pub mod pipeline; pub mod quality; pub mod state; diff --git a/core/memory.rs b/core/memory.rs new file mode 100644 index 00000000..b4e9b1a9 --- /dev/null +++ b/core/memory.rs @@ -0,0 +1,51 @@ +//! Process memory hygiene helpers. +//! +//! After a recording's transcription completes, large transient buffers (audio, +//! mel spectrograms, candle/ORT scratch) are freed — but the system allocator +//! keeps the dirty pages cached for reuse instead of returning them to the OS. +//! Measured on a fresh run: ~700 MB of freed-but-retained `MALLOC_LARGE` after +//! only three recordings (37 MB actually live), inflating `phys_footprint` +//! toward the multi-GB figures users see in Activity Monitor. This module asks +//! the allocator to give that memory back at natural quiescent points. + +/// Ask the system allocator to return freed-but-retained pages to the OS. +/// +/// On macOS this calls `malloc_zone_pressure_relief(NULL, 0)`, which madvises +/// free pages in every malloc zone back to the kernel. It is safe to call at +/// any time; the cost is a scan of free regions, so call it at natural +/// quiescent points (e.g. once after each recording finishes), never in a hot +/// loop. No-op on non-macOS targets. +pub fn release_freed_heap() { + #[cfg(target_os = "macos")] + { + // SAFETY: FFI to a stable libmalloc entry point. A NULL zone means + // "all zones" and a goal of 0 means "release as much as possible". + // Returns the number of bytes handed back to the OS. + let released = unsafe { malloc_zone_pressure_relief(std::ptr::null_mut(), 0) }; + tracing::debug!("release_freed_heap: allocator returned {released} bytes to the OS"); + } +} + +#[cfg(target_os = "macos")] +unsafe extern "C" { + /// `size_t malloc_zone_pressure_relief(malloc_zone_t *zone, size_t goal);` + /// from ``. Not exposed by the `libc` crate as a function, + /// so we declare it directly. + fn malloc_zone_pressure_relief(zone: *mut core::ffi::c_void, goal: usize) -> usize; +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn release_freed_heap_is_callable_and_safe() { + // Allocate and drop a large buffer so there is something to reclaim, + // then ensure the call does not panic (and is a no-op off macOS). + let big = vec![0u8; 32 * 1024 * 1024]; + let len = big.len(); + drop(big); + assert_eq!(len, 32 * 1024 * 1024); + release_freed_heap(); + } +} From 2b8bb1fbe5ca560b1da81a981e6e56711f19a302 Mon Sep 17 00:00:00 2001 From: m-szymanska Date: Sat, 27 Jun 2026 20:54:25 -0700 Subject: [PATCH 026/426] feat(whisper): unload idle Whisper engine to free ~3GB GPU memory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Whisper large-v3-turbo lives on the Metal GPU and is the single largest memory consumer — measured ~3GB resident (IOAccelerator) the moment it loads, held for the whole process lifetime even when idle. Make the engine unloadable: replace the `OnceLock>` singleton with a resettable `Mutex<{ engine: Option, last_used: Instant }>`. A background reaper drops the engine after a configurable idle period (CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS, default 300s, 0 disables), returning GPU/host memory to the system; the next transcription transparently reloads it (~6s). All engine access now goes through `with_engine`/`try_with_engine` closures that lazily (re)load, refresh the idle clock, and serialize on the single mutex exactly as before — so the reaper can never drop an engine mid-transcription. External callers (stt::mod candle_* helpers, offline batch) move to the new singleton functions; the public transcribe/init/is_initialized API is preserved (is_initialized now reflects current load state). Co-Authored-By: Claude Opus 4.8 (1M context) --- core/pipeline/streaming/offline.rs | 14 +- core/stt/mod.rs | 21 +-- core/stt/whisper/singleton.rs | 235 ++++++++++++++++++++++------- 3 files changed, 195 insertions(+), 75 deletions(-) diff --git a/core/pipeline/streaming/offline.rs b/core/pipeline/streaming/offline.rs index dc519873..b1d0b172 100644 --- a/core/pipeline/streaming/offline.rs +++ b/core/pipeline/streaming/offline.rs @@ -2,12 +2,12 @@ //! session path; compiled only for tests and the `offline_eval` feature //! (the module is cfg-gated in `mod.rs`). -use anyhow::{Result, anyhow}; +use anyhow::Result; use tracing::{debug, info}; use crate::pipeline::dedup::dedup_chunk_overlap; use crate::pipeline::stream_postprocess::StreamPostProcessor; -use crate::stt::whisper::singleton::engine as get_engine; +use crate::stt::whisper::singleton::transcribe_chunk; use super::tuning::{env_bool_default, env_f32}; @@ -53,11 +53,9 @@ pub fn transcribe_streaming_samples( effective_audio_sec ); - let engine_mutex = get_engine()?; - let mut engine = engine_mutex - .lock() - .map_err(|e| anyhow!("Lock error: {}", e))?; - + // Per-chunk engine acquisition via the singleton: chunks are independent + // (overlap dedup happens on the text below), and routing through the + // singleton keeps the idle-unload/reload bookkeeping consistent. let mut out = String::new(); let mut offset = 0usize; let mut chunks_processed = 0usize; @@ -68,7 +66,7 @@ pub fn transcribe_streaming_samples( let chunk = &samples[offset..end]; let chunk_sec = chunk.len() as f32 / sample_rate as f32; let t_chunk = std::time::Instant::now(); - let text = engine.transcribe_with_language(chunk, sample_rate, language)?; + let text = transcribe_chunk(chunk, sample_rate, language)?; let chunk_ms = t_chunk.elapsed().as_millis(); chunks_processed += 1; diff --git a/core/stt/mod.rs b/core/stt/mod.rs index a26385f2..38068214 100644 --- a/core/stt/mod.rs +++ b/core/stt/mod.rs @@ -108,11 +108,9 @@ fn candle_transcribe_chunk( sample_rate: u32, language: Option<&str>, ) -> anyhow::Result { - let engine = whisper::singleton::engine()?; - let mut guard = engine - .lock() - .map_err(|e| anyhow::anyhow!("Candle lock error: {}", e))?; - guard.transcribe_with_language(audio, sample_rate, language) + // Engine acquisition + idle-clock refresh + lazy (re)load live in the + // singleton now, so it can unload Whisper when idle and reload on demand. + whisper::singleton::transcribe_chunk(audio, sample_rate, language) } fn candle_transcribe_long_with_segments( @@ -120,11 +118,7 @@ fn candle_transcribe_long_with_segments( sample_rate: u32, language: Option<&str>, ) -> anyhow::Result { - let engine = whisper::singleton::engine()?; - let mut guard = engine - .lock() - .map_err(|e| anyhow::anyhow!("Candle lock error: {}", e))?; - guard.transcribe_long_with_language_segments(audio, sample_rate, language) + whisper::singleton::transcribe_with_segments(audio, sample_rate, language) } #[allow(dead_code)] @@ -133,11 +127,8 @@ fn candle_try_transcribe_long_with_segments( sample_rate: u32, language: Option<&str>, ) -> anyhow::Result { - let engine = whisper::singleton::engine()?; - let mut guard = engine - .try_lock() - .map_err(|_| anyhow::anyhow!("Whisper engine busy, skipping correction"))?; - guard.transcribe_long_with_language_segments(audio, sample_rate, language) + // Non-blocking acquisition: skip the correction pass if the engine is busy. + whisper::singleton::try_transcribe_with_segments(audio, sample_rate, language) } /// Initialize whichever STT engine is active by env. diff --git a/core/stt/whisper/singleton.rs b/core/stt/whisper/singleton.rs index 71ade56f..4d0a7ef3 100644 --- a/core/stt/whisper/singleton.rs +++ b/core/stt/whisper/singleton.rs @@ -3,14 +3,24 @@ //! The canonical product path is an embedded Whisper payload built into the //! binary. Runtime lookup remains as a fallback for explicit no-embed builds, //! developer overrides, and recovery when the payload is unavailable. +//! +//! ## Idle unload +//! +//! The Whisper model lives on the GPU (Metal) and is by far the largest single +//! memory consumer (~3 GB resident). Keeping it loaded across long idle periods +//! wastes that memory, so the engine is held in a *resettable* slot: after a +//! configurable idle period with no transcription a background reaper drops it, +//! returning the GPU/host memory to the system, and the next call transparently +//! reloads it. Set `CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS=0` to disable. // This entire module is a public API for library consumers use std::path::PathBuf; use std::sync::{Mutex, OnceLock}; +use std::time::{Duration, Instant}; use anyhow::{Context, Result, anyhow}; -use tracing::info; +use tracing::{info, warn}; use crate::config::Config; use crate::config::models::resolve_runtime_whisper_model_path; @@ -22,12 +32,47 @@ use super::params::DecodingParams; /// Default model name (for dev/fallback mode) pub use crate::config::models::DEFAULT_MODEL; -/// Global singleton engine -static ENGINE: OnceLock> = OnceLock::new(); +/// Default idle period after which the Whisper engine is unloaded to free GPU +/// memory. Overridable via `CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS` (0 disables). +const DEFAULT_IDLE_UNLOAD_SECS: u64 = 300; + +/// How often the reaper wakes to check for idleness. +const REAPER_TICK: Duration = Duration::from_secs(30); + +/// Resettable engine slot: `None` when unloaded, plus the last-use timestamp the +/// reaper consults. A single `Mutex` serializes loads, transcriptions, and +/// unloads — exactly as the previous `Mutex` did. +struct WhisperSlot { + engine: Option, + last_used: Instant, +} + +static SLOT: OnceLock> = OnceLock::new(); /// Runtime model path used only when embedded provisioning is unavailable. static MODEL_PATH: OnceLock = OnceLock::new(); +/// Guard so the idle reaper thread is spawned at most once. +static REAPER_STARTED: OnceLock<()> = OnceLock::new(); + +fn slot() -> &'static Mutex { + SLOT.get_or_init(|| { + Mutex::new(WhisperSlot { + engine: None, + last_used: Instant::now(), + }) + }) +} + +/// Resolve the configured idle-unload period, or `None` when disabled (0). +fn idle_unload_after() -> Option { + let secs = std::env::var("CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS") + .ok() + .and_then(|s| s.trim().parse::().ok()) + .unwrap_or(DEFAULT_IDLE_UNLOAD_SECS); + (secs > 0).then(|| Duration::from_secs(secs)) +} + /// Resolve the model path for runtime Whisper fallback loading. fn resolve_model_path_fallback() -> Result { let config = Config::load(); @@ -53,50 +98,116 @@ pub fn get_model_path() -> Result<&'static PathBuf> { .ok_or_else(|| anyhow!("Failed to store model path")) } -/// Initialize the global engine (call once at startup). -/// -/// Embedded Whisper is the product-default truth. Runtime path resolution is a -/// deliberate fallback for no-embed builds and local recovery. -pub fn init() -> Result<()> { +/// Build a fresh engine, embedded-first with a runtime-path fallback. +fn load_engine() -> Result { // 1. Primary shipped path: embedded Whisper payload. if let Some(embedded) = super::embedded::get_embedded_data() { let engine = LocalWhisperEngine::from_embedded(&embedded) .context("Failed to initialize from embedded model")?; - - ENGINE - .set(Mutex::new(engine)) - .map_err(|_| anyhow!("Engine already initialized"))?; - - info!("Whisper engine initialized from embedded model (zero I/O)"); - return Ok(()); + info!("Whisper engine loaded from embedded model (zero I/O)"); + return Ok(engine); } // 2. Fallback path: resolve Whisper model at runtime. let path = get_model_path()?; let engine = LocalWhisperEngine::new_with_params(path, DecodingParams::default()) .context("Failed to initialize Whisper engine from path")?; + info!("Whisper engine loaded from path: {}", path.display()); + Ok(engine) +} - ENGINE - .set(Mutex::new(engine)) - .map_err(|_| anyhow!("Engine already initialized"))?; +/// Spawn the idle reaper once (only when idle-unload is enabled). +fn ensure_reaper() { + if idle_unload_after().is_none() { + return; + } + REAPER_STARTED.get_or_init(|| { + let spawned = std::thread::Builder::new() + .name("whisper-idle-reaper".into()) + .spawn(reaper_loop); + if let Err(e) = spawned { + warn!("Failed to spawn Whisper idle reaper: {e}"); + } + }); +} - info!("Whisper engine initialized from path: {}", path.display()); - Ok(()) +/// Background loop: drops the engine after it has been idle long enough. +fn reaper_loop() { + loop { + std::thread::sleep(REAPER_TICK); + let Some(threshold) = idle_unload_after() else { + continue; + }; + let mut guard = match slot().lock() { + Ok(g) => g, + Err(_) => continue, + }; + if guard.engine.is_some() && guard.last_used.elapsed() >= threshold { + // Drop the engine (and its Metal device) while holding the lock so + // no transcription can be mid-flight, then return freed pages. + guard.engine = None; + drop(guard); + info!( + "Whisper engine unloaded after {}s idle; releasing GPU/host memory", + threshold.as_secs() + ); + crate::memory::release_freed_heap(); + } + } } -/// Check if engine is initialized -pub fn is_initialized() -> bool { - ENGINE.get().is_some() +/// Run `f` with the engine, loading it on demand and refreshing the idle clock. +fn with_engine(f: impl FnOnce(&mut LocalWhisperEngine) -> Result) -> Result { + let mut guard = slot() + .lock() + .map_err(|e| anyhow!("Failed to lock engine: {}", e))?; + if guard.engine.is_none() { + guard.engine = Some(load_engine()?); + ensure_reaper(); + } + guard.last_used = Instant::now(); + let engine = guard + .engine + .as_mut() + .ok_or_else(|| anyhow!("Engine not initialized"))?; + f(engine) } -/// Get the global engine (initializes on first call if needed) -pub fn engine() -> Result<&'static Mutex> { - if !is_initialized() { - init()?; +/// Like [`with_engine`] but never blocks: if the engine is busy, return an error +/// instead of waiting. Used by best-effort correction passes. +fn try_with_engine(f: impl FnOnce(&mut LocalWhisperEngine) -> Result) -> Result { + let mut guard = slot() + .try_lock() + .map_err(|_| anyhow!("Whisper engine busy, skipping correction"))?; + if guard.engine.is_none() { + guard.engine = Some(load_engine()?); + ensure_reaper(); } - ENGINE - .get() - .ok_or_else(|| anyhow!("Engine not initialized")) + guard.last_used = Instant::now(); + let engine = guard + .engine + .as_mut() + .ok_or_else(|| anyhow!("Engine not initialized"))?; + f(engine) +} + +/// Initialize the global engine (call once at startup). +/// +/// Embedded Whisper is the product-default truth. Runtime path resolution is a +/// deliberate fallback for no-embed builds and local recovery. Idempotent: a +/// no-op if the engine is already loaded. +pub fn init() -> Result<()> { + with_engine(|_| Ok(())) +} + +/// Check if the engine is currently loaded. +/// +/// Note: with idle-unload enabled this can become `false` again after a period +/// of inactivity; the next transcription call reloads transparently. +pub fn is_initialized() -> bool { + SLOT.get() + .and_then(|m| m.lock().ok().map(|g| g.engine.is_some())) + .unwrap_or(false) } /// Transcribe audio samples using the global engine @@ -110,12 +221,9 @@ pub fn transcribe_with_segments( sample_rate: u32, language: Option<&str>, ) -> Result { - let engine_mutex = engine()?; - let mut engine = engine_mutex - .lock() - .map_err(|e| anyhow!("Failed to lock engine: {}", e))?; - - engine.transcribe_long_with_language_segments(samples, sample_rate, language) + with_engine(|engine| { + engine.transcribe_long_with_language_segments(samples, sample_rate, language) + }) } /// Transcribe with streaming callback @@ -125,12 +233,7 @@ pub fn transcribe_streaming<'a>( language: Option<&str>, callback: Option>, ) -> Result { - let engine_mutex = engine()?; - let mut engine = engine_mutex - .lock() - .map_err(|e| anyhow!("Failed to lock engine: {}", e))?; - - engine.transcribe_long_streaming(samples, sample_rate, language, callback) + with_engine(|engine| engine.transcribe_long_streaming(samples, sample_rate, language, callback)) } /// Transcribe a file with full structured verdict (VAD stats, confidence, provenance). @@ -139,21 +242,35 @@ pub fn transcribe_file_verdict( language: Option<&str>, options: FileTranscriptionOptions, ) -> Result { - let engine_mutex = engine()?; - let mut engine = engine_mutex - .lock() - .map_err(|e| anyhow!("Failed to lock engine: {}", e))?; - engine.transcribe_file_with_language(path, language, options) + with_engine(|engine| engine.transcribe_file_with_language(path, language, options)) } /// Detect language from audio samples pub fn detect_language(samples: &[f32], sample_rate: u32) -> Result { - let engine_mutex = engine()?; - let mut engine = engine_mutex - .lock() - .map_err(|e| anyhow!("Failed to lock engine: {}", e))?; + with_engine(|engine| engine.detect_language(samples, sample_rate)) +} + +/// Transcribe with a non-blocking engine acquisition (best-effort correction). +/// +/// Returns an error instead of waiting if the engine is busy with another +/// transcription. +pub fn try_transcribe_with_segments( + samples: &[f32], + sample_rate: u32, + language: Option<&str>, +) -> Result { + try_with_engine(|engine| { + engine.transcribe_long_with_language_segments(samples, sample_rate, language) + }) +} - engine.detect_language(samples, sample_rate) +/// Transcribe a single (already-windowed) chunk, blocking on the engine. +pub fn transcribe_chunk( + samples: &[f32], + sample_rate: u32, + language: Option<&str>, +) -> Result { + with_engine(|engine| engine.transcribe_with_language(samples, sample_rate, language)) } #[cfg(test)] @@ -161,6 +278,20 @@ mod tests { use super::*; use serial_test::serial; + #[test] + fn idle_unload_disabled_when_zero() { + // SAFETY: single-threaded test mutating a process env var it owns. + unsafe { std::env::set_var("CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS", "0") }; + assert!(idle_unload_after().is_none()); + unsafe { std::env::set_var("CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS", "120") }; + assert_eq!(idle_unload_after(), Some(Duration::from_secs(120))); + unsafe { std::env::remove_var("CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS") }; + assert_eq!( + idle_unload_after(), + Some(Duration::from_secs(DEFAULT_IDLE_UNLOAD_SECS)) + ); + } + #[test] #[serial] fn test_model_path_resolution_and_real_whisper_noop_load() { From a0e4cb7da09f31de918407a5325dcb522ea5a4e0 Mon Sep 17 00:00:00 2001 From: m-szymanska Date: Sat, 27 Jun 2026 22:59:42 -0700 Subject: [PATCH 027/426] feat(embedder): unload idle MiniLM embedder to free ~470MB The MiniLM embedder is the other always-resident ML model: a candle BertModel on the Metal GPU (~230MB) plus its multilingual tokenizer (~250K vocab, the dominant ~240MB host-side small-allocation bucket). Like Whisper it was loaded on first use and held for the whole process lifetime, and it accounts for the ~230MB Metal residual that remained even after the Whisper idle-unload. Mirror the Whisper idle-unload: the singleton becomes a resettable `Mutex<{ engine: Option, last_used }>`, a background reaper drops it after `CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS` (default 300s, 0 disables), and the next embed transparently reloads it. All access routes through a `with_embedder` closure so the reaper can never drop an engine mid-embed. The (re)load config is captured once via `CONFIG`. Public API (init/embed*/similarity/dimension/is_initialized) is preserved. Co-Authored-By: Claude Opus 4.8 (1M context) --- core/embedder/singleton.rs | 233 ++++++++++++++++++++++++------------- 1 file changed, 149 insertions(+), 84 deletions(-) diff --git a/core/embedder/singleton.rs b/core/embedder/singleton.rs index ff2e0b51..0cd3f3ca 100644 --- a/core/embedder/singleton.rs +++ b/core/embedder/singleton.rs @@ -1,105 +1,174 @@ //! Singleton pattern for embedder - easy global access. //! -//! Provides a global embedder instance that's initialized once and reused. -//! Thread-safe via OnceLock + Mutex pattern. +//! Provides a global embedder instance that is loaded on demand and reused. +//! Thread-safe via a single `Mutex` guarding a resettable slot. +//! +//! ## Idle unload +//! +//! Like Whisper, the MiniLM embedder lives on the GPU (Metal, candle BertModel) +//! and its multilingual tokenizer is a large host-side structure — together a +//! few hundred MB held for the whole process. The engine is therefore held in a +//! *resettable* slot: after a configurable idle period with no embedding a +//! background reaper drops it, returning GPU/host memory to the system, and the +//! next call transparently reloads it. Set +//! `CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS=0` to disable. use std::sync::{Mutex, OnceLock}; +use std::time::{Duration, Instant}; use anyhow::Result; -use tracing::info; +use tracing::{info, warn}; use super::engine::{EmbedderConfig, EmbedderEngine}; -/// Global embedder instance -static EMBEDDER_INSTANCE: OnceLock> = OnceLock::new(); +/// Default idle period after which the embedder is unloaded to free GPU memory. +/// Overridable via `CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS` (0 disables). +const DEFAULT_IDLE_UNLOAD_SECS: u64 = 300; -/// Initialize the embedder with default config -pub fn init() -> Result<()> { - init_with_config(EmbedderConfig::default()) +/// How often the reaper wakes to check for idleness. +const REAPER_TICK: Duration = Duration::from_secs(30); + +/// Resettable engine slot: `None` when unloaded, plus the last-use timestamp. +struct EmbedderSlot { + engine: Option, + last_used: Instant, } -/// Initialize with custom configuration -pub fn init_with_config(config: EmbedderConfig) -> Result<()> { - if EMBEDDER_INSTANCE.get().is_some() { - info!("Embedder already initialized"); - return Ok(()); - } +static SLOT: OnceLock> = OnceLock::new(); - let engine = EmbedderEngine::with_config(config)?; +/// Config used to (re)load the engine. First value wins (default unless +/// `init_with_config` set one before the first load). +static CONFIG: OnceLock = OnceLock::new(); - EMBEDDER_INSTANCE - .set(Mutex::new(engine)) - .map_err(|_| anyhow::anyhow!("Embedder already initialized"))?; +/// Guard so the idle reaper thread is spawned at most once. +static REAPER_STARTED: OnceLock<()> = OnceLock::new(); - info!("Embedder singleton initialized"); - Ok(()) +fn slot() -> &'static Mutex { + SLOT.get_or_init(|| { + Mutex::new(EmbedderSlot { + engine: None, + last_used: Instant::now(), + }) + }) } -/// Check if embedder is initialized -pub fn is_initialized() -> bool { - EMBEDDER_INSTANCE.get().is_some() +fn config() -> EmbedderConfig { + CONFIG.get_or_init(EmbedderConfig::default).clone() } -/// Embed a single text (query) -/// -/// Auto-initializes with default config if not already done. -pub fn embed(text: &str) -> Result> { - ensure_initialized()?; +/// Resolve the configured idle-unload period, or `None` when disabled (0). +fn idle_unload_after() -> Option { + let secs = std::env::var("CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS") + .ok() + .and_then(|s| s.trim().parse::().ok()) + .unwrap_or(DEFAULT_IDLE_UNLOAD_SECS); + (secs > 0).then(|| Duration::from_secs(secs)) +} - let embedder = EMBEDDER_INSTANCE - .get() - .ok_or_else(|| anyhow::anyhow!("Embedder not initialized"))?; +fn load_engine() -> Result { + let engine = EmbedderEngine::with_config(config())?; + info!("Embedder engine loaded"); + Ok(engine) +} + +/// Spawn the idle reaper once (only when idle-unload is enabled). +fn ensure_reaper() { + if idle_unload_after().is_none() { + return; + } + REAPER_STARTED.get_or_init(|| { + let spawned = std::thread::Builder::new() + .name("embedder-idle-reaper".into()) + .spawn(reaper_loop); + if let Err(e) = spawned { + warn!("Failed to spawn embedder idle reaper: {e}"); + } + }); +} - let mut guard = embedder +/// Background loop: drops the engine after it has been idle long enough. +fn reaper_loop() { + loop { + std::thread::sleep(REAPER_TICK); + let Some(threshold) = idle_unload_after() else { + continue; + }; + let mut guard = match slot().lock() { + Ok(g) => g, + Err(_) => continue, + }; + if guard.engine.is_some() && guard.last_used.elapsed() >= threshold { + guard.engine = None; + drop(guard); + info!( + "Embedder engine unloaded after {}s idle; releasing GPU/host memory", + threshold.as_secs() + ); + crate::memory::release_freed_heap(); + } + } +} + +/// Run `f` with the engine, loading it on demand and refreshing the idle clock. +fn with_embedder(f: impl FnOnce(&mut EmbedderEngine) -> Result) -> Result { + let mut guard = slot() .lock() .map_err(|e| anyhow::anyhow!("Embedder lock poisoned: {}", e))?; + if guard.engine.is_none() { + guard.engine = Some(load_engine()?); + ensure_reaper(); + } + guard.last_used = Instant::now(); + let engine = guard + .engine + .as_mut() + .ok_or_else(|| anyhow::anyhow!("Embedder not initialized"))?; + f(engine) +} - guard.embed(text) +/// Initialize the embedder with default config. +pub fn init() -> Result<()> { + with_embedder(|_| Ok(())) } -/// Embed a passage (document) for indexing -pub fn embed_passage(text: &str) -> Result> { - ensure_initialized()?; +/// Initialize with custom configuration. +/// +/// The config is captured for (re)loads; the first config wins. Idempotent. +pub fn init_with_config(config: EmbedderConfig) -> Result<()> { + let _ = CONFIG.set(config); + with_embedder(|_| Ok(())) +} - let embedder = EMBEDDER_INSTANCE - .get() - .ok_or_else(|| anyhow::anyhow!("Embedder not initialized"))?; +/// Check if the embedder is currently loaded. +/// +/// Note: with idle-unload enabled this can become `false` again after a period +/// of inactivity; the next call reloads transparently. +pub fn is_initialized() -> bool { + SLOT.get() + .and_then(|m| m.lock().ok().map(|g| g.engine.is_some())) + .unwrap_or(false) +} - let mut guard = embedder - .lock() - .map_err(|e| anyhow::anyhow!("Embedder lock poisoned: {}", e))?; +/// Embed a single text (query) +/// +/// Auto-initializes with default config if not already done. +pub fn embed(text: &str) -> Result> { + with_embedder(|engine| engine.embed(text)) +} - guard.embed_passage(text) +/// Embed a passage (document) for indexing +pub fn embed_passage(text: &str) -> Result> { + with_embedder(|engine| engine.embed_passage(text)) } /// Embed multiple texts at once pub fn embed_batch(texts: &[&str]) -> Result>> { - ensure_initialized()?; - - let embedder = EMBEDDER_INSTANCE - .get() - .ok_or_else(|| anyhow::anyhow!("Embedder not initialized"))?; - - let mut guard = embedder - .lock() - .map_err(|e| anyhow::anyhow!("Embedder lock poisoned: {}", e))?; - - guard.embed_batch(texts) + with_embedder(|engine| engine.embed_batch(texts)) } /// Embed multiple passages at once pub fn embed_passages(texts: &[&str]) -> Result>> { - ensure_initialized()?; - - let embedder = EMBEDDER_INSTANCE - .get() - .ok_or_else(|| anyhow::anyhow!("Embedder not initialized"))?; - - let mut guard = embedder - .lock() - .map_err(|e| anyhow::anyhow!("Embedder lock poisoned: {}", e))?; - - guard.embed_passages(texts) + with_embedder(|engine| engine.embed_passages(texts)) } /// Calculate cosine similarity between two embeddings @@ -109,25 +178,7 @@ pub fn similarity(a: &[f32], b: &[f32]) -> f32 { /// Get embedding dimension for the current model pub fn dimension() -> Result { - ensure_initialized()?; - - let embedder = EMBEDDER_INSTANCE - .get() - .ok_or_else(|| anyhow::anyhow!("Embedder not initialized"))?; - - let guard = embedder - .lock() - .map_err(|e| anyhow::anyhow!("Embedder lock poisoned: {}", e))?; - - Ok(guard.dimension()) -} - -/// Ensure embedder is initialized (auto-init with defaults if not) -fn ensure_initialized() -> Result<()> { - if !is_initialized() { - init()?; - } - Ok(()) + with_embedder(|engine| Ok(engine.dimension())) } #[cfg(test)] @@ -142,5 +193,19 @@ mod tests { assert!((sim - 1.0).abs() < 0.001); } + #[test] + fn idle_unload_disabled_when_zero() { + // SAFETY: single-threaded test mutating a process env var it owns. + unsafe { std::env::set_var("CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS", "0") }; + assert!(idle_unload_after().is_none()); + unsafe { std::env::set_var("CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS", "90") }; + assert_eq!(idle_unload_after(), Some(Duration::from_secs(90))); + unsafe { std::env::remove_var("CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS") }; + assert_eq!( + idle_unload_after(), + Some(Duration::from_secs(DEFAULT_IDLE_UNLOAD_SECS)) + ); + } + // Note: Full embedding tests require model download and are in integration tests } From 2bb1d13825665c4d0bb1ccafb578ed9ed4cda46f Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Sat, 27 Jun 2026 23:54:43 -0700 Subject: [PATCH 028/426] [codex/vc-ownership] fix(release): settle stop target and legacy env test --- Makefile | 2 +- core/tests/env_validation.rs | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 9e1dc362..3bdd160d 100644 --- a/Makefile +++ b/Makefile @@ -163,7 +163,7 @@ start: @echo "CodeScribe started (logs: /tmp/codescribe.log)" stop: - @pkill -f "codescribe$$" 2>/dev/null || true + @pkill -x codescribe 2>/dev/null || true @rm -f ~/.codescribe/codescribe.pid 2>/dev/null || true @echo "Stopped" diff --git a/core/tests/env_validation.rs b/core/tests/env_validation.rs index ad598a9c..013d6755 100644 --- a/core/tests/env_validation.rs +++ b/core/tests/env_validation.rs @@ -110,11 +110,13 @@ fn env_ignores_legacy_llm_host() { let _g2 = EnvGuard::set("OLLAMA_HOST", "http://ollama-host"); let _g3 = EnvGuard::unset("LLM_ENDPOINT"); - let mut cfg = Config::default(); // Isolate the env loader contract: the runtime default endpoint is covered // by Config::load()/Config::default() tests, while legacy host envs should // not populate an otherwise-empty llm_endpoint. - cfg.llm_endpoint = None; + let mut cfg = Config { + llm_endpoint: None, + ..Default::default() + }; cfg.load_from_env(); assert!(cfg.llm_endpoint.is_none()); From 15e6decd70ff100f798501330a333553587a10e0 Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Sun, 28 Jun 2026 00:31:39 -0700 Subject: [PATCH 029/426] [codex/vc-ownership] test(env): register idle unload controls --- docs/ENV_REGISTRY.toml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/ENV_REGISTRY.toml b/docs/ENV_REGISTRY.toml index 9376e9eb..79478f37 100644 --- a/docs/ENV_REGISTRY.toml +++ b/docs/ENV_REGISTRY.toml @@ -225,6 +225,13 @@ reload = "restart" category = "stt" description = "Initial prompt hint for Whisper decoding (ignored by ONNX adapter)" +[vars.CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS] +default = "300" +type = "u64" +reload = "hot" +category = "stt" +description = "Unload idle Whisper engine after this many seconds (0 disables)" + [vars.WHISPER_INITIAL_PROMPT] default = "" type = "string" @@ -427,6 +434,13 @@ reload = "rebuild" category = "embedder" description = "HF repo for E5 embedder (used for embedding at build/runtime)" +[vars.CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS] +default = "300" +type = "u64" +reload = "hot" +category = "embedder" +description = "Unload idle embedder engine after this many seconds (0 disables)" + # ═══════════════════════════════════════════════════════════════════════════════ # LLM / AI Formatting # ═══════════════════════════════════════════════════════════════════════════════ From 350d97c3469e4634fbb1d732ce1ab961f3a25971 Mon Sep 17 00:00:00 2001 From: m-szymanska Date: Sun, 28 Jun 2026 01:16:55 -0700 Subject: [PATCH 030/426] docs(env): document idle-unload env vars + memory changelog The two idle-unload knobs were registered in ENV_REGISTRY.toml when #37 merged, but the human-facing docs lagged. Add CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS and CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS to .env.example and docs/env.md (matching the registry's hot-reload/300s contract), and record the memory footprint work (model idle-unload, Silero session sharing, allocator relief) under CHANGELOG [Unreleased]. Co-Authored-By: Claude Opus 4.8 (1M context) --- .env.example | 2 ++ CHANGELOG.md | 6 ++++++ docs/env.md | 2 ++ 3 files changed, 10 insertions(+) diff --git a/.env.example b/.env.example index 072010b3..33c74981 100644 --- a/.env.example +++ b/.env.example @@ -23,6 +23,7 @@ # CODESCRIBE_TOGGLE_FINAL_PASS=1 # 0 = restore preview-only toggle stop path # CODESCRIBE_WHISPER_INITIAL_PROMPT=CodeScribe, LibraxisAI, Docker, GitHub # CODESCRIBE_MODEL_PATH=/path/to/whisper/model # runtime fallback / dev override +# CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS=300 # unload Whisper from GPU after N s idle (0 = never) # ============================================================================= # CLOUD STT (OPTIONAL) @@ -145,6 +146,7 @@ # CODESCRIBE_STREAM_NOVELTY=0.20 # CODESCRIBE_STREAM_DISABLE_EMBEDDINGS=1 # CODESCRIBE_STREAM_FORCE_EMBEDDINGS=1 +# CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS=300 # unload MiniLM embedder from GPU after N s idle (0 = never) # CODESCRIBE_STREAM_LEXICON=1 # CODESCRIBE_STREAM_LOG=1 # CODESCRIBE_STREAM_LOG_PATH=/tmp/codescribe_stream.log diff --git a/CHANGELOG.md b/CHANGELOG.md index f84d7bac..2419b31e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **Public release hygiene** — release packaging, repository metadata, and public-facing docs are being aligned for a current `v0.12.x` public release. - **Dual DMG release variants** — release automation now builds a standard notarized DMG with embedded Silero + embedder and runtime Whisper cache/download, plus a `_full` notarized DMG with Whisper embedded. +- **Memory footprint** — idle RAM cut from ~5 GB (peak 10 GB) to ~0.8 GB. The Whisper and MiniLM embedder models now unload from the GPU after a period of inactivity and reload transparently on next use (`CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS`, `CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS`, default 300s, 0 disables). + +### Fixed + +- **Silero VAD reload leak** — the Silero ONNX session is now compiled once and shared process-wide instead of being rebuilt per recording (which leaked native ORT memory over long sessions). +- **Allocator retention** — freed transient buffers are returned to the OS after each recording (`malloc_zone_pressure_relief` on macOS) instead of inflating the resident footprint across a session. ## [0.12.2] - 2026-06-22 diff --git a/docs/env.md b/docs/env.md index aa31d3c3..76239a02 100644 --- a/docs/env.md +++ b/docs/env.md @@ -163,6 +163,7 @@ i runtime nie może znaleźć Whispera przez cache / config: - `CODESCRIBE_WHISPER_INITIAL_PROMPT` (RESTART NEEDED; alias legacy: `WHISPER_INITIAL_PROMPT`; ignorowane przez ONNX) - `STT_ENDPOINT`, `STT_API_KEY` (RESTART NEEDED) - `CODESCRIBE_MODEL_PATH`, `CODESCRIBE_MODELS_DIR` (RESTART NEEDED) +- `CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS` (HOT RELOADED; default `300`; `0` wyłącza) — po N s bezczynności silnik Whisper jest zwalniany z GPU i ładowany ponownie przy następnym użyciu ### Streaming / VAD / buffer @@ -178,6 +179,7 @@ i runtime nie może znaleźć Whispera przez cache / config: - `CODESCRIBE_STREAM_SIMILARITY` (HOT RELOADED) - `CODESCRIBE_STREAM_NOVELTY` (HOT RELOADED) - `CODESCRIBE_STREAM_DISABLE_EMBEDDINGS` (HOT RELOADED) +- `CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS` (HOT RELOADED; default `300`; `0` wyłącza) — po N s bezczynności embedder MiniLM jest zwalniany z GPU i ładowany ponownie przy następnym użyciu ### LLM (formatting/assistive) From 7c26af6f2ace09814969cf8dfe959a2c8dfd800c Mon Sep 17 00:00:00 2001 From: m-szymanska Date: Sun, 28 Jun 2026 11:44:43 -0700 Subject: [PATCH 031/426] =?UTF-8?q?docs(env):=20clarify=20idle-unload=20re?= =?UTF-8?q?claims=20GPU/host=20memory=20+=200=E2=86=92N=20caveat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Address PR review (non-blocking P3s): - "from GPU" → "from GPU/host memory" across env.md, .env.example, CHANGELOG to match the runtime log ("releasing GPU/host memory") and the actual RAM win. - Note that the hot-reload tag applies to the threshold value; enabling from 0 (disabled) requires a restart, since the reaper is only spawned on (re)load. Co-Authored-By: Claude Opus 4.8 (1M context) --- .env.example | 4 ++-- CHANGELOG.md | 2 +- docs/env.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.env.example b/.env.example index 33c74981..9e9a0e1d 100644 --- a/.env.example +++ b/.env.example @@ -23,7 +23,7 @@ # CODESCRIBE_TOGGLE_FINAL_PASS=1 # 0 = restore preview-only toggle stop path # CODESCRIBE_WHISPER_INITIAL_PROMPT=CodeScribe, LibraxisAI, Docker, GitHub # CODESCRIBE_MODEL_PATH=/path/to/whisper/model # runtime fallback / dev override -# CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS=300 # unload Whisper from GPU after N s idle (0 = never) +# CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS=300 # unload Whisper from GPU/host memory after N s idle (0 = never) # ============================================================================= # CLOUD STT (OPTIONAL) @@ -146,7 +146,7 @@ # CODESCRIBE_STREAM_NOVELTY=0.20 # CODESCRIBE_STREAM_DISABLE_EMBEDDINGS=1 # CODESCRIBE_STREAM_FORCE_EMBEDDINGS=1 -# CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS=300 # unload MiniLM embedder from GPU after N s idle (0 = never) +# CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS=300 # unload MiniLM embedder from GPU/host memory after N s idle (0 = never) # CODESCRIBE_STREAM_LEXICON=1 # CODESCRIBE_STREAM_LOG=1 # CODESCRIBE_STREAM_LOG_PATH=/tmp/codescribe_stream.log diff --git a/CHANGELOG.md b/CHANGELOG.md index 2419b31e..c0a27ff6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **Public release hygiene** — release packaging, repository metadata, and public-facing docs are being aligned for a current `v0.12.x` public release. - **Dual DMG release variants** — release automation now builds a standard notarized DMG with embedded Silero + embedder and runtime Whisper cache/download, plus a `_full` notarized DMG with Whisper embedded. -- **Memory footprint** — idle RAM cut from ~5 GB (peak 10 GB) to ~0.8 GB. The Whisper and MiniLM embedder models now unload from the GPU after a period of inactivity and reload transparently on next use (`CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS`, `CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS`, default 300s, 0 disables). +- **Memory footprint** — idle RAM cut from ~5 GB (peak ~10 GB) to ~0.8 GB. The Whisper and MiniLM embedder models now unload from GPU/host memory after a period of inactivity and reload transparently on next use (`CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS`, `CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS`, default 300s, 0 disables). ### Fixed diff --git a/docs/env.md b/docs/env.md index 76239a02..ceb91f87 100644 --- a/docs/env.md +++ b/docs/env.md @@ -163,7 +163,7 @@ i runtime nie może znaleźć Whispera przez cache / config: - `CODESCRIBE_WHISPER_INITIAL_PROMPT` (RESTART NEEDED; alias legacy: `WHISPER_INITIAL_PROMPT`; ignorowane przez ONNX) - `STT_ENDPOINT`, `STT_API_KEY` (RESTART NEEDED) - `CODESCRIBE_MODEL_PATH`, `CODESCRIBE_MODELS_DIR` (RESTART NEEDED) -- `CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS` (HOT RELOADED; default `300`; `0` wyłącza) — po N s bezczynności silnik Whisper jest zwalniany z GPU i ładowany ponownie przy następnym użyciu +- `CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS` (HOT RELOADED dla wartości progu; default `300`; `0` wyłącza — włączenie z `0` wymaga restartu) — po N s bezczynności silnik Whisper jest zwalniany z pamięci (GPU/host) i ładowany ponownie przy następnym użyciu ### Streaming / VAD / buffer @@ -179,7 +179,7 @@ i runtime nie może znaleźć Whispera przez cache / config: - `CODESCRIBE_STREAM_SIMILARITY` (HOT RELOADED) - `CODESCRIBE_STREAM_NOVELTY` (HOT RELOADED) - `CODESCRIBE_STREAM_DISABLE_EMBEDDINGS` (HOT RELOADED) -- `CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS` (HOT RELOADED; default `300`; `0` wyłącza) — po N s bezczynności embedder MiniLM jest zwalniany z GPU i ładowany ponownie przy następnym użyciu +- `CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS` (HOT RELOADED dla wartości progu; default `300`; `0` wyłącza — włączenie z `0` wymaga restartu) — po N s bezczynności embedder MiniLM jest zwalniany z pamięci (GPU/host) i ładowany ponownie przy następnym użyciu ### LLM (formatting/assistive) From eb46b962224a540558c5c576ef4b8dcd1adae370 Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Sun, 28 Jun 2026 12:18:06 -0700 Subject: [PATCH 032/426] [codex/vc-ownership] release: embed models by default Drive embed-by-default from the delivery layer (Makefile recipes + build-dmg.sh defaults) rather than flipping the build.rs default, so `make build` / raw `cargo build` stay lean for dev iteration while release/install/DMG user-delivery lanes always embed Silero + MiniLM + Whisper. release-codescribe-embedded and release-full collapse to compatibility aliases; --embed-whisper becomes a documented no-op and --no-embed remains the dev/recovery path (CODESCRIBE_NO_EMBED still wins in build.rs, so the recovery lane needs no loader rewrite). Authored-By: claude session_id: eb1ce15e-5876-4262-a6dd-edc747d81617 date: 2026-06-28T12:17:47 PDT runtime: claude --- Makefile | 37 +++++++++++++++++++------------------ README.md | 2 +- scripts/build-dmg.sh | 34 +++++++++++++++++++--------------- 3 files changed, 39 insertions(+), 34 deletions(-) diff --git a/Makefile b/Makefile index 3bdd160d..97d587f6 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # CodeScribe - Pure Rust Build System # Speech-to-text tray app for macOS -.PHONY: all build release release-codescribe release-qube install install-no-embed config bundle install-app \ +.PHONY: all build release release-codescribe release-codescribe-embedded release-qube install install-no-embed config bundle install-app \ start stop restart status logs logs-follow \ bump bump-patch bump-minor bump-major version \ lint format test test-quick test-e2e test-e2e-real test-sse test-formatting test-all \ @@ -60,14 +60,14 @@ build: @echo "Building (debug)..." @cargo build -release-codescribe: - @echo "Building codescribe (release, embedded support assets; Whisper from cache/download)..." - @cargo build --release --bin codescribe - -release-codescribe-embedded: - @echo "Building codescribe (release, EMBEDDED Whisper — distribution)..." +release-codescribe: ensure-models + @echo "Building codescribe (release, embedded models: Silero + MiniLM + Whisper)..." @CODESCRIBE_EMBED_WHISPER=1 cargo build --release --bin codescribe +# Compatibility alias — embedding Whisper is now the default for release-codescribe. +# Kept so existing scripts / muscle memory keep working; NOT a separate public lane. +release-codescribe-embedded: release-codescribe + release-qube: @echo "Building qube-* (release, runtime model resolve from HF cache)..." @CODESCRIBE_NO_EMBED=1 cargo build --release --target-dir target-noembed --bin qube-daemon --bin qube-report @@ -75,16 +75,16 @@ release-qube: release: release-codescribe release-qube install: - @echo "Installing CodeScribe (embedded support assets; Whisper from cache/download)..." + @echo "Installing CodeScribe (embedded models: Silero + MiniLM + Whisper)..." @./scripts/ensure-models.sh - @cargo install --path . --force + @CODESCRIBE_EMBED_WHISPER=1 cargo install --path . --force @mkdir -p ~/.codescribe @pwd > ~/.codescribe/repo_path @$(MAKE) hooks @echo "Installed: codescribe $$(grep '^version' $(VERSION_FILE) | head -1 | sed 's/.*\"\(.*\)\"/v\1/')" install-no-embed: - @echo "Installing CodeScribe (runtime Whisper fallback + no optional embedded support assets)..." + @echo "Installing CodeScribe (DEV/RECOVERY: runtime Whisper fallback + no optional embedded support assets)..." @./scripts/ensure-models.sh @CODESCRIBE_NO_EMBED=1 cargo install --path . --force @mkdir -p ~/.codescribe @@ -376,8 +376,8 @@ help: @printf '\n' @printf ' $(HELP_C_YELLOW)%s$(HELP_C_RESET)\n' 'BUILD & INSTALL' @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'build' 'Build debug binary' - @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'release' 'Build release binary with embedded support assets; Whisper from cache/download' - @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'install' 'Install CLI with embedded support assets' + @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'release' 'Build release binary with embedded models (Silero + MiniLM + Whisper)' + @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'install' 'Install CLI with embedded models (Silero + MiniLM + Whisper)' @printf '%s\n' ' make install-no-embed Install without optional embedded assets (needs CODESCRIBE_MODEL_PATH)' @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'config' 'Edit ~/.codescribe/.env' @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'bundle' 'Create CodeScribe.app bundle' @@ -386,9 +386,9 @@ help: @printf ' $(HELP_C_YELLOW)%s$(HELP_C_RESET)\n' 'RELEASE & DISTRIBUTION' @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'dmg' 'Build DMG (ad-hoc signed)' @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'dmg-signed' 'Build DMG (Developer ID signed)' - @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'release-standard' 'Build + sign + notarize standard DMG' - @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'release-full' 'Build + sign + notarize full DMG with embedded Whisper' - @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'release-dmgs' 'Build both notarized release DMGs' + @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'release-standard' 'Build + sign + notarize release DMG (embedded models)' + @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'release-full' 'Compatibility alias for release-standard (embedded by default)' + @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'release-dmgs' 'Build the notarized release DMG' @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'notarize' 'Notarize DMG with Apple' @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'download-model' 'Download Whisper model from HF' @printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'download-e5' 'Download E5 embedder model from HF' @@ -437,10 +437,11 @@ dmg-signed: release-standard: @./scripts/build-dmg.sh --sign --notarize -release-full: - @./scripts/build-dmg.sh --sign --notarize --embed-whisper --dmg-suffix _full +# Compatibility alias — the standard DMG now embeds Whisper by default, so it IS +# the real user artifact. `_full` no longer denotes a separate "real" build. +release-full: release-standard -release-dmgs: release-standard release-full +release-dmgs: release-standard notarize: @if ls CodeScribe_*.dmg 1> /dev/null 2>&1; then \ diff --git a/README.md b/README.md index 358b5dea..0c5eb80f 100644 --- a/README.md +++ b/README.md @@ -351,7 +351,7 @@ CodeScribe uses **whisper-large-v3-turbo-mlx-q8**: ### Runtime Whisper (Current) -The standard build embeds Silero VAD and MiniLM semantic support assets, then resolves Whisper at runtime from the locations below. The full release DMG embeds the same support assets plus Whisper by building with `CODESCRIBE_EMBED_WHISPER=1`. +User-delivery builds (`make release`, `make install`, the release DMG) embed everything by default: Silero VAD, the MiniLM semantic embedder, and Whisper (`CODESCRIBE_EMBED_WHISPER=1`). The fast developer build (`make build` / raw `cargo build`) stays lean and resolves Whisper at runtime from the locations below; that same resolution order is the fallback whenever a build is not embedded. 1. `CODESCRIBE_MODEL_PATH` environment variable 2. `~/.codescribe/models/whisper-large-v3-turbo-mlx-q8/` diff --git a/scripts/build-dmg.sh b/scripts/build-dmg.sh index 9522fb97..65a60b11 100755 --- a/scripts/build-dmg.sh +++ b/scripts/build-dmg.sh @@ -19,21 +19,27 @@ APP_PATH="$ROOT_DIR/bundle/${APP_NAME}.app" SIGN=0 NOTARIZE=0 NO_EMBED=0 -EMBED_WHISPER=0 +# Embedding everything (Silero + MiniLM + Whisper) is the default for user +# delivery. --no-embed flips this off for dev/recovery builds only. +EMBED_WHISPER=1 +EMBED_WHISPER_EXPLICIT=0 DMG_SUFFIX="" usage() { cat < Override codesign identity --entitlements

Entitlements plist path (default: $ENTITLEMENTS) - --embed-whisper Embed the Whisper model in the app bundle + --embed-whisper Compatibility no-op: Whisper is embedded by default --dmg-suffix Append suffix before .dmg (for example: _full) - --no-embed Disable all model embedding (CODESCRIBE_NO_EMBED=1) + --no-embed DEV/RECOVERY only: disable all model embedding + (CODESCRIBE_NO_EMBED=1) — not the public product path EOF } @@ -43,7 +49,7 @@ while [[ $# -gt 0 ]]; do --notarize) NOTARIZE=1; shift 1;; --identity) IDENTITY="$2"; shift 2;; --entitlements) ENTITLEMENTS="$2"; shift 2;; - --embed-whisper) EMBED_WHISPER=1; shift 1;; + --embed-whisper) EMBED_WHISPER=1; EMBED_WHISPER_EXPLICIT=1; shift 1;; --dmg-suffix) DMG_SUFFIX="$2"; shift 2;; --no-embed) NO_EMBED=1; shift 1;; -h|--help) usage; exit 0;; @@ -51,10 +57,14 @@ while [[ $# -gt 0 ]]; do esac done -if [[ "$NO_EMBED" -eq 1 && "$EMBED_WHISPER" -eq 1 ]]; then +if [[ "$NO_EMBED" -eq 1 && "$EMBED_WHISPER_EXPLICIT" -eq 1 ]]; then echo "ERROR: --no-embed and --embed-whisper cannot be used together" >&2 exit 1 fi +# --no-embed (dev/recovery) wins over the embed-by-default policy. +if [[ "$NO_EMBED" -eq 1 ]]; then + EMBED_WHISPER=0 +fi DMG_NAME="CodeScribe_${VERSION}${DMG_SUFFIX}.dmg" DMG_PATH="$ROOT_DIR/$DMG_NAME" @@ -67,12 +77,8 @@ BUILD_ENV+=(-u CODESCRIBE_EMBED_TTS) if [[ "$NO_EMBED" -eq 1 ]]; then BUILD_ENV+=(-u CODESCRIBE_EMBED_WHISPER CODESCRIBE_NO_EMBED=1) else - BUILD_ENV+=(-u CODESCRIBE_NO_EMBED) - if [[ "$EMBED_WHISPER" -eq 1 ]]; then - BUILD_ENV+=(CODESCRIBE_EMBED_WHISPER=1) - else - BUILD_ENV+=(-u CODESCRIBE_EMBED_WHISPER) - fi + # Default user-delivery path: embed Whisper alongside Silero + MiniLM. + BUILD_ENV+=(-u CODESCRIBE_NO_EMBED CODESCRIBE_EMBED_WHISPER=1) fi echo "=== Build DMG ===" @@ -80,11 +86,9 @@ echo "App: $APP_NAME" echo "Bundle ID: $BUNDLE_ID" echo "Version: $VERSION" if [[ "$NO_EMBED" -eq 1 ]]; then - echo "Models: runtime assets only (CODESCRIBE_NO_EMBED=1)" -elif [[ "$EMBED_WHISPER" -eq 1 ]]; then - echo "Models: embedded Silero + embedder + Whisper" + echo "Models: runtime assets only (CODESCRIBE_NO_EMBED=1) — dev/recovery build, not the public artifact" else - echo "Models: embedded Silero + embedder; Whisper resolves from cache/download" + echo "Models: embedded Silero + MiniLM + Whisper" fi echo "DMG: $DMG_PATH" From ecbc5a3421994791c8c17e1e5cee96b9011805ae Mon Sep 17 00:00:00 2001 From: m-szymanska Date: Sun, 28 Jun 2026 12:56:46 -0700 Subject: [PATCH 033/426] chore(docs): remove stale and internal docs for public repo Drop docs that are stale, internal, or leak private setup: - docs/BACKLOG.md (stale working backlog) - docs/audits/ (internal audit, contained an absolute home path) - docs/ADR/2026-01-*/2026-02-* (22 dated snapshots duplicating live docs) - docs/future/ + docs/quality-loop-vision.md (vision docs naming an internal dev workstation) - docs/reports/ (internal AI-agent forensics artifact) Keep the two ADRs that are linked as authoritative (layered pipeline + its correction). Fix dangling references in README and ARCHITECTURE. Co-Authored-By: Claude Opus 4.8 (1M context) --- README.md | 6 +- docs/ADR/2026-01-16-LICENSE_NOTES.md | 23 - docs/ADR/2026-01-18-WHISPER_LIVE.md | 152 ----- docs/ADR/2026-01-19-INSTALLATION.md | 202 ------- docs/ADR/2026-01-19-TEAM_SETUP.md | 186 ------ docs/ADR/2026-01-25-ARCHITECTURE.md | 259 -------- docs/ADR/2026-01-25-ARCHITECTURE_VISION.md | 186 ------ docs/ADR/2026-01-25-BACKLOG.md | 119 ---- docs/ADR/2026-01-25-FEASIBILITY_ANALYSIS.md | 117 ---- docs/ADR/2026-01-25-README.md | 100 --- docs/ADR/2026-01-25-chat-overlay.md | 207 ------- docs/ADR/2026-01-25-installation.md | 140 ----- docs/ADR/2026-01-25-modes.md | 199 ------ docs/ADR/2026-01-25-quality-loop-vision.md | 569 ------------------ docs/ADR/2026-01-26-OVERLAY_STREAMING.md | 177 ------ docs/ADR/2026-01-26-QUICKSTART.md | 145 ----- docs/ADR/2026-01-26-SPEECH_TO_SPEECH_AGENT.md | 556 ----------------- docs/ADR/2026-01-26-VOICE_STACK_WBS.md | 311 ---------- docs/ADR/2026-01-26-env.md | 32 - docs/ADR/2026-01-26-privacy.md | 291 --------- docs/ADR/2026-01-26-settings.md | 340 ----------- docs/ADR/2026-01-26-troubleshooting.md | 321 ---------- .../2026-02-15-CODESCRIBE_RUNTIME_IN_VISTA.md | 168 ------ docs/ARCHITECTURE.md | 7 +- docs/BACKLOG.md | 106 ---- .../DIAGNOSIS_top_shots.md | 115 ---- .../2026-05-28-faza1-handsoff/audit_report.md | 179 ------ .../audit_requirements_matrix.jsonl | 9 - docs/future/ARCHITECTURE_VISION.md | 186 ------ docs/future/FEASIBILITY_ANALYSIS.md | 117 ---- docs/future/SPEECH_TO_SPEECH_AGENT.md | 556 ----------------- docs/quality-loop-vision.md | 569 ------------------ docs/reports/20260502_chat_shell_forensics.md | 227 ------- 33 files changed, 4 insertions(+), 6873 deletions(-) delete mode 100644 docs/ADR/2026-01-16-LICENSE_NOTES.md delete mode 100644 docs/ADR/2026-01-18-WHISPER_LIVE.md delete mode 100644 docs/ADR/2026-01-19-INSTALLATION.md delete mode 100644 docs/ADR/2026-01-19-TEAM_SETUP.md delete mode 100644 docs/ADR/2026-01-25-ARCHITECTURE.md delete mode 100644 docs/ADR/2026-01-25-ARCHITECTURE_VISION.md delete mode 100644 docs/ADR/2026-01-25-BACKLOG.md delete mode 100644 docs/ADR/2026-01-25-FEASIBILITY_ANALYSIS.md delete mode 100644 docs/ADR/2026-01-25-README.md delete mode 100644 docs/ADR/2026-01-25-chat-overlay.md delete mode 100644 docs/ADR/2026-01-25-installation.md delete mode 100644 docs/ADR/2026-01-25-modes.md delete mode 100644 docs/ADR/2026-01-25-quality-loop-vision.md delete mode 100644 docs/ADR/2026-01-26-OVERLAY_STREAMING.md delete mode 100644 docs/ADR/2026-01-26-QUICKSTART.md delete mode 100644 docs/ADR/2026-01-26-SPEECH_TO_SPEECH_AGENT.md delete mode 100644 docs/ADR/2026-01-26-VOICE_STACK_WBS.md delete mode 100644 docs/ADR/2026-01-26-env.md delete mode 100644 docs/ADR/2026-01-26-privacy.md delete mode 100644 docs/ADR/2026-01-26-settings.md delete mode 100644 docs/ADR/2026-01-26-troubleshooting.md delete mode 100644 docs/ADR/2026-02-15-CODESCRIBE_RUNTIME_IN_VISTA.md delete mode 100644 docs/BACKLOG.md delete mode 100644 docs/audits/2026-05-28-faza1-handsoff/DIAGNOSIS_top_shots.md delete mode 100644 docs/audits/2026-05-28-faza1-handsoff/audit_report.md delete mode 100644 docs/audits/2026-05-28-faza1-handsoff/audit_requirements_matrix.jsonl delete mode 100644 docs/future/ARCHITECTURE_VISION.md delete mode 100644 docs/future/FEASIBILITY_ANALYSIS.md delete mode 100644 docs/future/SPEECH_TO_SPEECH_AGENT.md delete mode 100644 docs/quality-loop-vision.md delete mode 100644 docs/reports/20260502_chat_shell_forensics.md diff --git a/README.md b/README.md index 358b5dea..f20432fc 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ flowchart TB > **Status:** current source version is `0.12.2` (see `Cargo.toml`) and ships as a native macOS tray/settings/overlay app with local live preview, tiered settings (`settings.json` + Keychain + optional `.env`), and quality-loop tooling. -See: [`docs/WHISPER_LIVE.md`](docs/WHISPER_LIVE.md) | [`docs/BACKLOG.md`](docs/BACKLOG.md) | [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) +See: [`docs/WHISPER_LIVE.md`](docs/WHISPER_LIVE.md) | [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) ## OpenAI Provider @@ -254,7 +254,7 @@ pipeline, while overlays/chat bubbles still receive only backspace-encoded | **Formatting** | Double‑tap `Left Option` | AI formatting pass, auto‑paste | | **Assistive (Agent)** | Double‑tap `Right Option` | Agent chat with optional selection context | -See [`docs/BACKLOG.md`](docs/BACKLOG.md) for detailed mode descriptions and future enhancements (VAD, Overlay). +See [`docs/guide/modes.md`](docs/guide/modes.md) for detailed mode descriptions. ## Configuration @@ -448,7 +448,7 @@ Grant permissions in System Settings > Privacy & Security when prompted. - Preserve the explicit split between onboarding, settings, dictation overlay, and assistive overlay. - Ship the macOS distribution path cleanly: bundle, sign, and notarize the DMG story. -See [`docs/BACKLOG.md`](docs/BACKLOG.md) for the working backlog, [`docs/PUBLIC_RELEASE_CHECKLIST.md`](docs/PUBLIC_RELEASE_CHECKLIST.md) for the public launch gate, and [`docs/ARCHITECTURE_VISION.md`](docs/ARCHITECTURE_VISION.md) for longer-range ideas that are not part of the current shipped surface. +See [`docs/PUBLIC_RELEASE_CHECKLIST.md`](docs/PUBLIC_RELEASE_CHECKLIST.md) for the public launch gate. ## License diff --git a/docs/ADR/2026-01-16-LICENSE_NOTES.md b/docs/ADR/2026-01-16-LICENSE_NOTES.md deleted file mode 100644 index a79b7c6c..00000000 --- a/docs/ADR/2026-01-16-LICENSE_NOTES.md +++ /dev/null @@ -1,23 +0,0 @@ -# CodeScribe License Notes - -CodeScribe is distributed under the **BSD 4-Clause License (Original BSD)**. The clause that -usually raises questions is the _advertising clause_: - -> "All advertising materials mentioning features or use of this software must display the -> acknowledgement: This product includes software developed by Loctree." - -What this means in practice: - -| Scenario | Requirement | -| -------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| README / documentation inside this repo | already satisfied (see README §License). | -| Public marketing site, blog post, product page mentioning CodeScribe | include the acknowledgement sentence verbatim. | -| Binary redistributions (DMG, PKG) | include the acknowledgement in the splash / "About" dialog or accompanying README. | -| Internal deployments (no external advertising) | no additional action beyond keeping the LICENSE file intact. | - -If you fork CodeScribe and redistribute it, you must keep the LICENSE file and the acknowledgement -sentence wherever you describe the fork. If you embed CodeScribe inside another product, place the -acknowledgement next to other third‑party credits. - -For questions about alternative licensing please reach out Loctree team -at [contact@loctree.io](mailto:contact@loctree.io). diff --git a/docs/ADR/2026-01-18-WHISPER_LIVE.md b/docs/ADR/2026-01-18-WHISPER_LIVE.md deleted file mode 100644 index ed35563e..00000000 --- a/docs/ADR/2026-01-18-WHISPER_LIVE.md +++ /dev/null @@ -1,152 +0,0 @@ -# WHISPER LIVE (Embedded + Streaming Transcription) - -> **Status:** DONE ✅ (2026-01-16) -> -> **Tagline:** Whisper is welded into the binary, and transcription happens _during recording_. - -## TL;DR - -CodeScribe’s core power-up is: - -1. **Embedded Whisper model** (`whisper-large-v3-turbo-mlx-q8`) in the release binary - - **Zero disk I/O** for local STT - - Model loads once into GPU/Metal and stays in-process -2. **Live (streaming) transcription** while the user is recording - - Audio is chunked and transcribed in the background - - On `stop()` we only “close” the last fragment → **near-instant time-to-paste** - -## What we shipped - -### 1) Embedded Whisper (Strict Policy) - -- **ALWAYS Embedded:** The model (`whisper-large-v3-turbo-mlx-q8`) is welded into the release binary. - - **Zero Exceptions:** We never bundle the `models/` folder in the `.app`. - - **Zero Disk I/O:** Model loads directly from memory to Metal GPU. - - **Native Power:** Minimal abstraction layers (approx. 4) compared to typical 32+ in heavy JS/Python bridges. -- **Global Singleton:** A process-wide engine instance loads once and stays resident. - -Key behavior: - -- **Release:** Strict embedded mode. If the model isn't found at build time, the build fails. -- **Development:** Local debug builds can still resolve external paths for rapid iteration, but the release pipeline enforces embedding. - -### 2) Streaming transcription (during recording) - -We removed the old bottleneck: - -```text -Audio callback → buffer → stop() → WAV write/read → transcribe entire audio → LLM -``` - -And replaced it with: - -```text -Audio callback → non-blocking channel → chunking worker → spawn_blocking(Whisper) → transcript buffer - ↓ - overlap dedup - -stop() → transcribe last pending samples → return final transcript → LLM/paste -``` - -Practical win: - -- **~35s recording:** `stop()` is ~0.5s (last chunk only) instead of ~4s (whole audio) - -## What’s new around Whisper Live - -- **Stream postprocess** (`src/stream_postprocess.rs`) — semantic gating and cleanup of chunk output - before final paste/LLM, reducing low‑quality fragments in live mode. -- **IPC server** (`src/ipc/`) — stable runtime interface for GUI/clients; Whisper Live can be - consumed and extended outside the tray flow. -- **Quality loop/report** (`src/quality_loop.rs`, `src/quality_report.rs`) — automated scoring and - batch diagnostics for streaming accuracy and regressions. - -## How it works (high level) - -```mermaid -flowchart TD - A[CPAL input callback (audio thread)] -->|try_send f32 samples| B[mpsc channel] - B --> C[StreamingRecorder worker (tokio task)] - C -->|accumulate| D[chunk buffer] - D -->|every ~15s with ~2s overlap| E[spawn_blocking] - E --> F[Whisper singleton engine (Metal)] - F --> G[chunk text] - G --> H[append_with_overlap_dedup] - H --> I[transcript_buffer] - I --> J[controller stop(): finalize + paste / LLM] -``` - -## Where in the code - -### Embedded + singleton engine - -- `src/whisper/embedded.rs` — embedded model bytes and accessors -- `src/whisper/singleton.rs` — global engine singleton (loads embedded model and exposes `transcribe*()`) -- `src/whisper/engine.rs` — Candle/Whisper inference, chunking, overlap dedup (`append_with_overlap_dedup`) - -### Live streaming recorder - -- `src/audio/recorder.rs` - - CPAL input stream at **native device rate** (often `48000Hz`) - - callback hook for raw `f32` samples - - exposes `Recorder::actual_sample_rate()` -- `src/audio/streaming_recorder.rs` - - connects recorder callback → `mpsc::channel` (non-blocking) - - chunking (default: `15s` chunks + `2s` overlap) - - background transcription via `tokio::spawn_blocking` - - dedup between chunks via `append_with_overlap_dedup` -- `src/controller.rs` - - uses `StreamingRecorder` and prefers the streaming transcript on `stop()` - - can still save the WAV for logs and/or cloud fallback - -## Build & distribution - -### Install from source (embedded model) - -```bash -make download-model # ensures models/whisper-large-v3-turbo-mlx-q8 exists for embedding -make install # builds + installs an ~888MB binary with embedded model -``` - -### Bundle / DMG (Whisper + Silero only) - -```bash -make bundle -make dmg-signed -``` - -Notes: - -- DMG ships the `.app` with **the embedded model only** (no `Resources/models/*` duplication) -- A “too small” release binary is treated as a build error (guardrail in `scripts/build-release.sh`) - -## Troubleshooting / FAQ - -### “My binary is small — is the model embedded?” - -If the release binary is far below ~500MB, embedding likely didn’t happen. - -Checklist: - -- ensure `models/whisper-large-v3-turbo-mlx-q8/` exists (download step) -- ensure `CODESCRIBE_NO_EMBED` is not set -- rebuild with `cargo build --release` - -### “Why does streaming care about actual sample rate?” - -Microphones usually run at `48kHz`. We record at the device’s native rate for compatibility, -and Whisper internally resamples to `16kHz`. - -**Important:** streaming must pass the **real** `sample_rate` to the engine — otherwise you -get hallucinations and low confidence (classic “gibberish” pattern). - -## Benchmarks (rule of thumb) - -- Model load: ~7s (first time after app start, embedded → GPU) -- Live transcription: overlaps with recording -- After `stop()`: usually just final chunk, typically well below 1s - ---- - -**Made with (งಠ_ಠ)ง by the ⌜ CodeScribe ⌟ 𝖙𝖊𝖆𝖒 (c) 2024-2026 -Maciej & Monika + Klaudiusz (AI) + Junie (AI)** diff --git a/docs/ADR/2026-01-19-INSTALLATION.md b/docs/ADR/2026-01-19-INSTALLATION.md deleted file mode 100644 index bfd900e7..00000000 --- a/docs/ADR/2026-01-19-INSTALLATION.md +++ /dev/null @@ -1,202 +0,0 @@ -# CodeScribe Installation and Launch Guide - -This document describes the installation methods, configuration paths, and how the application locates its resources. - -## Installation Methods - -### Method 1: CLI Install (Recommended for Development) - -```bash -make download-model # Download Whisper model (required for embedding) -make install # Build and install to ~/.cargo/bin/ -``` - -**Result**: Binary `codescribe` installed to `~/.cargo/bin/` (~888MB with embedded model). - -**How it runs**: Direct execution from terminal or as background daemon. - -### Method 2: App Bundle (For Distribution) - -```bash -make bundle # Creates bundle/CodeScribe.app -make install-app # Copies to /Applications/CodeScribe.app -``` - -**Result**: Standard macOS .app bundle in `/Applications/`. - -**How it runs**: Double-click or launch from Spotlight. - -### Method 3: DMG Distribution (For End Users) - -```bash -make dmg-signed # Build signed DMG -make notarize # Notarize with Apple (requires Developer ID) -# or one-shot: -# make release-full # Build + sign + notarize -``` - -**Result**: `CodeScribe_X.Y.Z.dmg` ready for distribution. - -## Configuration - -### Config Directory - -All configuration is stored in: - -``` -~/.codescribe/ -├── .env # Main configuration file -├── prompts/ # Custom AI prompts -│ ├── formatting.txt -│ └── assistive.txt -├── history/ # Transcription history -├── reports/ # Quality reports -└── repo_path # Path to source repo (set during install) -``` - -### Environment Variables (.env) - -The application loads configuration from `~/.codescribe/.env` using these priorities: - -1. **Environment variables** (highest priority) -2. **~/.codescribe/.env** (main config file) -3. **Default values** (fallback) - -```mermaid -flowchart TD - A[Application Start] --> B{Check ENV vars} - B -->|Set| C[Use ENV value] - B -->|Not set| D{Check ~/.codescribe/.env} - D -->|Exists| E[Load with dotenvy] - D -->|Missing| F[Create from template] - F --> G{Find template} - G -->|Bundle| H[../Resources/.env.example] - G -->|Repo| I[.env.example in repo root] - G -->|None| J[Generate minimal .env] - E --> K[Apply defaults for missing keys] - H --> K - I --> K - J --> K - C --> L[Config Ready] - K --> L -``` - -### Key Configuration Variables - -```env -# Speech-to-Text -WHISPER_LANGUAGE=pl # pl | en | de | fr -USE_LOCAL_STT=1 # 1 = embedded Whisper - -# Hotkeys -HOLD_MODS=ctrl # ctrl | ctrl_alt | ctrl_shift -TOGGLE_TRIGGER=double_option # double_option | none - -# AI Formatting -AI_FORMATTING_ENABLED=1 -LLM_ENDPOINT=https://api.openai.com/v1/responses -LLM_MODEL=gpt-4.1-mini -LLM_API_KEY=sk-xxx - -# Optional: Separate providers for modes -LLM_FORMATTING_{ENDPOINT,MODEL,API_KEY}=... -LLM_ASSISTIVE_{ENDPOINT,MODEL,API_KEY}=... -``` - -## Bundle Structure - -``` -CodeScribe.app/ -└── Contents/ - ├── Info.plist # Bundle metadata (icon, identifier, version) - ├── MacOS/ - │ └── codescribe # Main executable (~888MB with embedded model) - └── Resources/ - └── AppIcon.icns # Application icon -``` - -### Info.plist Keys - -| Key | Value | Purpose | -| ---------------------------- | --------------------- | ---------------------------- | -| CFBundleIdentifier | io.loctree.codescribe | Unique app identifier | -| CFBundleIconFile | AppIcon | Points to AppIcon.icns | -| CFBundleExecutable | codescribe | Main binary name | -| LSMinimumSystemVersion | 14.0 | Requires macOS Sonoma+ | -| NSMicrophoneUsageDescription | ... | Microphone permission prompt | - -## Icons - -### Tray Icon - -- **Source**: `assets/icon.png` (embedded via `include_bytes!`) -- **Location in code**: `src/tray/icons.rs` -- **Size**: 44x44 pixels (Retina), 22x22 logical - -### Dock Icon - -- **For CLI**: Programmatically set via `set_dock_icon()` in `src/ui.rs` -- **For Bundle**: Uses `CFBundleIconFile` from Info.plist pointing to `AppIcon.icns` -- **Source**: `assets/AppIcon.icns` - -### Icon Loading Flow - -```mermaid -flowchart LR - subgraph CLI["CLI Mode (codescribe)"] - A1[Start] --> A2[set_dock_icon] - A2 --> A3[NSImage from include_bytes] - A3 --> A4[setApplicationIconImage] - end - - subgraph Bundle["Bundle Mode (.app)"] - B1[Start] --> B2[macOS reads Info.plist] - B2 --> B3[CFBundleIconFile = AppIcon] - B3 --> B4[Load AppIcon.icns from Resources] - end - - subgraph Tray["Tray Icon (both modes)"] - C1[Tray init] --> C2[load_custom_icon] - C2 --> C3[include_bytes icon.png] - C3 --> C4[tray_icon::Icon] - end -``` - -## Permissions Required - -Grant in **System Settings > Privacy & Security**: - -| Permission | Purpose | When Prompted | -| ---------------- | ---------------------- | ----------------------- | -| Microphone | Audio recording | First recording attempt | -| Accessibility | Global hotkeys, paste | First hotkey press | -| Input Monitoring | Keyboard event capture | First hotkey press | - -## Troubleshooting - -### Empty Dock Icon - -- **CLI mode**: `set_dock_icon()` should set it programmatically -- **Bundle mode**: Check that `Info.plist` exists and has `CFBundleIconFile` -- **Verify**: `plutil -lint /Applications/CodeScribe.app/Contents/Info.plist` - -### Empty Tray Icon - -- Check that `assets/icon.png` exists and is valid PNG -- Rebuild with `cargo build --release` - -### Config Not Loading - -- Check `~/.codescribe/.env` exists -- Verify syntax: `cat ~/.codescribe/.env` -- Check logs: `codescribe -v` for verbose output - -### Hotkeys Not Working - -- Grant Accessibility permission -- Grant Input Monitoring permission -- Restart the application after granting - ---- - -_Copyright © 2024–2026 VetCoders_ diff --git a/docs/ADR/2026-01-19-TEAM_SETUP.md b/docs/ADR/2026-01-19-TEAM_SETUP.md deleted file mode 100644 index e6a398e9..00000000 --- a/docs/ADR/2026-01-19-TEAM_SETUP.md +++ /dev/null @@ -1,186 +0,0 @@ -# CodeScribe - Team Setup (Pure Rust Era) - -> **Historical snapshot (2026-01-19).** CLI names here (`codescribe-quality`, -> `codescribe-loop`) were renamed in 0.9.0 to `qube-report` and `qube-daemon`. -> For the current team setup, see [`docs/TEAM_SETUP.md`](../TEAM_SETUP.md). - -## Quick Start - -### 1. Prerequisites - -- macOS 14+ (Apple Silicon ARM64 only) -- Rust 1.83+ - -### 2. Build & Run (CLI) - -```bash -# Clone -git clone git@github.com:VetCoders/CodeScribe.git -cd CodeScribe - -# Build and run CLI -cargo build --release -p codescribe -./target/release/codescribe -``` - -### 3. Development Mode - -```bash -# Run debug binary -cargo run -``` - -## Permissions Required - -Grant in: System Settings > Privacy & Security - -1. **Microphone** - for audio recording -2. **Accessibility** - for global hotkeys -3. **Input Monitoring** - for hotkey capture - -## Hotkeys - -| Key | Action | AI Mode | -| -------------------------- | --------------------------------------- | ------------------ | -| Hold **Ctrl** | Record → paste raw transcript | ALWAYS RAW (no AI) | -| Hold **Ctrl+Shift** | Record → AI assistant response | ALWAYS Assistive | -| Double-tap **Option** | Toggle recording (hands-free) | Respects AI toggle | -| Triple-tap **Option** | Toggle AI Formatting on/off | Shows toast | -| **Shift** during Ctrl hold | Upgrade to Assistive mode mid-recording | — | - -### Mode Behavior - -- **RAW mode (Ctrl)**: Fast dictation. Transcript is pasted as-is (only local repetition cleanup). - Ignores AI_FORMATTING_ENABLED setting. -- **Toggle mode (Double Option)**: Respects the AI Formatting toggle. If enabled, sends to AI - for formatting. If disabled, pastes raw. -- **Assistive mode (Ctrl+Shift)**: Full AI assistant. Model can answer questions, expand ideas, - or pass through dictation based on detected intent (KURIER/ASYSTENT system). - -## Model - -**Strictly Embedded (Release Policy)**: `whisper-large-v3-turbo-mlx-q8` (~888MB) - -- **Zero Exceptions:** Release binaries ALWAYS contain the model. -- **No external files:** We never bundle `Resources/models/*`. -- **Zero I/O:** Model loads from memory directly to Metal. - -**Developer note (Build Time):** -You still need the model files locally to _build_ the app (because they are `include_bytes!`-ed into the binary). - -```bash -make download-model # Required for build -``` - -Location (build-time only): `models/whisper-large-v3-turbo-mlx-q8/` - -## CLI Usage - -```bash -# Transcribe audio file -codescribe transcribe audio.wav - -# With AI formatting -codescribe transcribe audio.wav --format - -# Specify language -codescribe transcribe audio.wav --language pl -``` - -## Quality & Tools - -New CLI tools for batch processing and automation: - -```bash -# Batch quality report -codescribe-quality --help - -# Self-improving quality loop -codescribe-loop --help -``` - -## Configuration - -File: `~/.codescribe/.env` - -```env -USE_LOCAL_STT=1 - -# Whisper -WHISPER_LANGUAGE=pl - -# AI formatting (optional) - separate providers for formatting vs assistive -AI_FORMATTING_ENABLED=1 - -# Formatting mode (fast, cheap) - for Ctrl Hold with AI toggle -LLM_FORMATTING_ENDPOINT=https://api.libraxis.cloud/v1/responses -LLM_FORMATTING_MODEL=gpt-5-mini -LLM_FORMATTING_API_KEY=sk-xxx - -# Assistive mode (smart) - for Ctrl+Shift Hold -LLM_ASSISTIVE_ENDPOINT=https://api.libraxis.cloud/v1/responses -LLM_ASSISTIVE_MODEL=gpt-5.2 -LLM_ASSISTIVE_API_KEY=sk-xxx - -# Shared fallback (if mode-specific not set) -LLM_ENDPOINT=https://api.openai.com/v1/responses -LLM_MODEL=gpt-4.1-mini -LLM_API_KEY=sk-proj-xxx -``` - -### Custom Prompts - -Prompts are loaded from `~/.codescribe/prompts/` at each request (no restart needed): - -- `formatting.txt` - System prompt for formatting mode (punctuation, structure) -- `assistive.txt` - System prompt for assistive mode (KURIER/ASYSTENT logic) - -Edit these files to customize AI behavior. Changes take effect immediately. - -## Quality Assurance - -### Local (recommended) - -```bash -# Install pre-commit hooks (runs check/fmt on commit, clippy/semgrep on push) -make hooks - -# Manual quality gate -make check # fmt + clippy + unit tests - -# E2E tests with real API -make test-sse # SSE streaming tests (requires ~/.codescribe/.env) -``` - -### CI (GitHub Actions) - -**Note:** Full build requires macOS + Swift 6.0 (CoreML, Metal). GitHub runners have Swift 5.10, so CI only runs: - -- **Format check** (`cargo fmt --check`) on Linux -- **Semgrep** security scan on Linux - -Clippy and tests run **locally** via pre-commit hooks or `make check`. - -For full CI, configure a self-hosted macOS runner (Dragon recommended). - -## Troubleshooting - -### App doesn't start - -- Check Console.app for crash logs -- If building locally: ensure the model exists in `models/` (for embedding at build time) - -### Hotkeys don't work - -- Grant Accessibility permission -- Grant Input Monitoring permission -- Restart app after granting - -### No transcription - -- Check `USE_LOCAL_STT=1` in config -- If using local STT: confirm the app is using the embedded engine (default in release builds) - ---- - -_Copyright © 2024–2026 VetCoders_ diff --git a/docs/ADR/2026-01-25-ARCHITECTURE.md b/docs/ADR/2026-01-25-ARCHITECTURE.md deleted file mode 100644 index 60770a5d..00000000 --- a/docs/ADR/2026-01-25-ARCHITECTURE.md +++ /dev/null @@ -1,259 +0,0 @@ -# CodeScribe Architecture - -> Created by M&K (c)2026 VetCoders - -> **Historical snapshot (2026-01-25).** Paths and CLI names in this document -> reflect the pre-refactor layout. Current truth: -> - `src/voice_chat_ui.rs` → `app/ui/voice_chat/mod.rs` -> - `src/transcription_overlay.rs` → `app/ui/overlay/mod.rs` -> - `codescribe-quality` → `qube-report` (renamed in 0.9.0) -> - `codescribe-loop` → `qube-daemon` (renamed in 0.9.0) -> -> For the current architecture, see [`docs/ARCHITECTURE.md`](../ARCHITECTURE.md) -> and the repo-level [README](../../README.md). - -## System Overview - -```mermaid -flowchart TB - %% High-level packaging / layers - - subgraph APP[codescribe crate - bin/daemon] - direction LR - HK[hotkeys.rs] - CTRL[controller/] - IPC_SERVER[ipc/server.rs] - TRAY[tray/] - OVERLAY[voice_chat_ui/] - - subgraph CORE[codescribe-core crate] - direction LR - WH[whisper/] - CO[config/] - AU[audio/] - IPC_CORE[ipc types] - end - - APP --> CORE - end - - WH --> MODEL[Whisper Model\nlarge-v3-turbo\nmlx-q8 ~888MB\nembedded in bin] - - subgraph TOOLS[Quality & CLI Tools] - CLI[codescribe-quality] - LOOP[codescribe-loop] - end - - APP -.-> TOOLS -``` - -## Module Architecture - -### Recording Flow - -``` -┌─────────────┐ ┌────────────┐ ┌───────────────┐ ┌──────────────┐ -│ CGEventTap │───►│ hotkeys.rs │───►│ controller/ │───►│ whisper/ │ -│ (macOS API) │ │ │ │ mod.rs │ │ engine.rs │ -└─────────────┘ └────────────┘ └───────────────┘ └──────────────┘ - │ │ │ - │ ▼ ▼ - │ ┌──────────────┐ ┌──────────────┐ - │ │ voice_chat │ │ transcription│ - │ │ _ui/ │ │ _overlay.rs │ - │ └──────────────┘ └──────────────┘ - │ - Ctrl hold → Raw mode (no AI) - Ctrl+Shift hold → Assistive mode (AI) - Double Option → Toggle mode (respects AI setting) -``` - -### Voice Chat UI (Mission Control) - -``` -┌─────────────────────────────────────────────────────────────────┐ -│ Status Header [Collapse] │ -├─────────────────────────────────────┬───────────────────────────┤ -│ LEFT PANEL (60%) │ RIGHT PANEL (40%) │ -│ │ │ -│ Chat bubbles (NSStackView) │ [Transcriptions][Settings]│ -│ ┌─────────────────────────────┐ │ │ -│ │ User message (blue, right) │ │ Draft files list │ -│ └─────────────────────────────┘ │ [Format] [Copy] [Augment] │ -│ ┌─────────────────────────┐ │ │ -│ │ AI response (gray,left) │ │ Settings toggles │ -│ └─────────────────────────┘ │ [Edit Config] [Edit Prompt]│ -│ │ │ -│ [Auto] [📎] [Input...] [Send] │ │ -└─────────────────────────────────────┴───────────────────────────┘ -``` - -## File Structure - -``` -CodeScribe/ -├── codescribe-core/ # Core library (portable, no macOS deps) -│ └── src/ -│ ├── whisper/ # Embedded + singleton Whisper engine -│ │ ├── engine.rs # Transcription logic -│ │ ├── singleton.rs # Global instance (lazy init) -│ │ └── embedded.rs # Model bytes (include_bytes!) -│ ├── audio/ # Recorder + StreamingRecorder -│ │ ├── recorder.rs # cpal audio capture -│ │ └── streaming_recorder.rs # Live transcription -│ ├── config/ # Configuration management -│ ├── stream_postprocess.rs # Semantic gating for live chunks -│ ├── quality_loop.rs # Self-improvement loop -│ ├── quality_report.rs # Batch quality reports -│ └── ipc/ # IPC types -│ -├── src/ # codescribe crate (macOS-specific) -│ ├── main.rs # CLI entry (daemon/transcribe) -│ ├── lib.rs # Library exports -│ │ -│ ├── controller/ # Recording state machine -│ │ ├── mod.rs # RecordingController impl -│ │ ├── types.rs # State, HotkeyInput, etc. -│ │ ├── helpers.rs # Session state, callbacks -│ │ └── tests.rs # Controller tests -│ │ -│ ├── voice_chat_ui/ # Voice Chat Overlay (Mission Control) -│ │ ├── mod.rs # UI creation (AppKit) -│ │ ├── state.rs # VoiceChatOverlayState -│ │ ├── handlers.rs # Objective-C callbacks -│ │ └── api.rs # Public API functions -│ │ -│ ├── tray/ # System tray menu -│ │ ├── mod.rs # Tray setup -│ │ ├── menu.rs # Menu creation -│ │ ├── handlers.rs # Menu actions -│ │ ├── icons.rs # Icon generation -│ │ └── types.rs # MenuIds, TrayMenuEvent -│ │ -│ ├── hotkeys.rs # CGEventTap handler -│ ├── transcription_overlay.rs # Simple text overlay -│ ├── ui.rs # Badge, Dock icon -│ ├── ui_helpers.rs # AppKit utilities -│ ├── clipboard.rs # Paste to active app -│ ├── permissions.rs # macOS permission checks -│ └── ipc/ # IPC server (Unix socket) -│ -├── src/bin/ # CLI tools -│ ├── codescribe_quality.rs # Batch quality reports -│ └── codescribe_loop.rs # Self-improving loop -│ -├── docs/ -│ ├── guide/ # User documentation -│ │ ├── README.md # Quick start -│ │ ├── installation.md -│ │ ├── modes.md -│ │ ├── chat-overlay.md -│ │ ├── settings.md -│ │ ├── troubleshooting.md -│ │ └── privacy.md -│ ├── ARCHITECTURE.md # This file -│ ├── WHISPER_LIVE.md # Streaming transcription -│ ├── TEAM_SETUP.md # Developer setup -│ └── future/ # Aspirational docs -│ ├── ARCHITECTURE_VISION.md -│ └── FEASIBILITY_ANALYSIS.md -│ -└── tests/ # Integration tests -``` - -## Key Components - -### Controller State Machine - -```rust -// src/controller/types.rs -pub enum State { - Idle, // Ready for input - RecHold, // Recording (hold mode) - RecToggle, // Recording (toggle mode) - Busy, // Processing transcription -} -``` - -State transitions: - -- `Idle` + Ctrl down → (800ms delay) → `RecHold` -- `Idle` + Double Option → `RecToggle` -- `RecHold` + Ctrl up → `Busy` → `Idle` -- `RecToggle` + Double Option → `Busy` → `Idle` -- `RecToggle` + 5s silence (VAD) → `Busy` → `Idle` - -### Mode Determination - -```rust -// src/controller/mod.rs - handle_hotkey_event() -match (hotkey, flags) { - (Hold, no_shift) => force_raw = true, // Ctrl: always raw - (Hold, shift) => assistive = true, // Ctrl+Shift: always AI - (Toggle, force_ai)=> force_ai = true, // Left Option x2: force AI - (Toggle, _) => /* respects AI_FORMATTING_ENABLED */ -} -``` - -### Voice Chat UI Components - -| Module | LOC | Purpose | -| ------------- | --- | -------------------------------- | -| `mod.rs` | 632 | UI creation with AppKit | -| `api.rs` | 589 | Public API (update_status, etc.) | -| `handlers.rs` | 450 | Objective-C action handlers | -| `state.rs` | 148 | VoiceChatOverlayState struct | - -### Whisper Engine - -- **Singleton pattern**: One global instance, lazy initialized -- **Metal acceleration**: Uses Apple GPU via candle-core -- **Streaming**: Chunks processed during recording -- **Embedded**: Model bytes in binary (~888MB) - -## Implementation Status - -| Feature | Status | -| -------------------------------------------- | ------ | -| Local Whisper STT (Metal GPU) | ✅ | -| Embedded model (~888MB binary) | ✅ | -| Global hotkeys (CGEventTap) | ✅ | -| Three recording modes (Raw/Assistive/Toggle) | ✅ | -| Voice Chat UI (split panel) | ✅ | -| Chat bubbles (NSStackView) | ✅ | -| Drafts panel with tabs | ✅ | -| Settings in overlay | ✅ | -| AI formatting (Responses API) | ✅ | -| Streaming AI responses | ✅ | -| Tray app with submenus | ✅ | -| History with slug filenames | ✅ | -| IPC server (runtime interface) | ✅ | -| Stream postprocess (semantic gating) | ✅ | -| Quality loop + report | ✅ | -| CodeScribe Core separation | ✅ | -| VAD (utterance boundary on silence) | ✅ | -| Transcription overlay | ✅ | -| Tauri GUI (future) | 📋 | - -## Model Location - -**Release Builds**: Model embedded via `include_bytes!` (~888MB total). -Zero disk I/O, model bytes loaded directly into GPU memory. - -**Development**: External model from: - -1. `CODESCRIBE_MODEL_PATH` environment variable -2. `~/.codescribe/models/whisper-large-v3-turbo-mlx-q8/` -3. `./models/whisper-large-v3-turbo-mlx-q8/` in repo - -## Related Documentation - -- [`guide/README.md`](guide/README.md) — User documentation -- [`WHISPER_LIVE.md`](WHISPER_LIVE.md) — Embedded + streaming transcription -- [`TEAM_SETUP.md`](TEAM_SETUP.md) — Developer setup guide -- [`BACKLOG.md`](BACKLOG.md) — Feature backlog -- [`future/ARCHITECTURE_VISION.md`](future/ARCHITECTURE_VISION.md) — Libraxis Qube Protocol vision - ---- - -**Made with ⌜ CodeScribe ⌟ by Maciej & Monika + Klaudiusz (AI) (c) 2024-2026** diff --git a/docs/ADR/2026-01-25-ARCHITECTURE_VISION.md b/docs/ADR/2026-01-25-ARCHITECTURE_VISION.md deleted file mode 100644 index cf2eb815..00000000 --- a/docs/ADR/2026-01-25-ARCHITECTURE_VISION.md +++ /dev/null @@ -1,186 +0,0 @@ -# Architecture Vision: The Libraxis Qube Protocol - -> **Status:** Draft / Conceptual -> **Date:** 2026-01-19 -> **Author:** Junie (AI) for VetCoders - -## 1. Core Concept: The Libraxis Qube - -We are renaming the central orchestration node (formerly "CodeScribe Core") to **The Libraxis Qube**. - -The **Libraxis Qube** is a central, location-agnostic **Stream Router & Orchestrator**. It is not just a backend for an app; -it is the "infinite cube" that holds the state of the conversation and manages all flows of information (Audio, Text, -Artifacts). - -### Key Philosophy: Deployment Neutrality - -The architecture removes the distinction between "Local" and "Cloud". - -- **Distance is irrelevant.** -- The Libraxis Qube can run on `localhost` (your laptop) or on `Dragon` (remote workstation). -- The **Client** (Microphone/Speaker) connects to the Libraxis Qube via a **WebSocket**. -- Whether that WebSocket connects to `ws://127.0.0.1:8000` or `wss://dragon.lan:8000` changes nothing in the system - logic. It only changes the latency of the wire. - -## 2. System Topology - -```mermaid -graph TD - subgraph Client [User / Client Side] - Mic[Microphone] - Speaker[Speaker] - UI[Visual Overlay/Logs] - end - - subgraph Libraxis QubeNode [The Libraxis Qube Node] - Router[Libraxis Qube Orchestrator
(State, Routing, Demux)] - - subgraph Modules [Attached Modules] - ASR[Candle Transformers
(Whisper v3 Turbo - Streaming)] - Agent[LLM Agent
(Reasoning & Tools)] - TTS[TTS Engine
(Voice Synthesis)] - Artifacts[Artifact Generator
(PDF, Files, JSON)] - end - end - - %% Connections - Mic ==>|"WebSocket Stream (Audio Bytes)"| Router - Router ==>|"WebSocket Stream (Audio/Events)"| Speaker - Router -.->|"Updates (SSE/WS)"| UI - - %% Internal Flows - Router <==>|"Raw Audio / Tokens"| ASR - Router <==>|"Context / Intention"| Agent - Router ==>|"Text to Speak"| TTS - TTS ==>|"Audio Bytes"| Router - Router ==>|"Content"| Artifacts -``` - -## 3. The "Single Stream" Protocol - -To maintain synchronization and simplicity, the Agent/Model does not open multiple TCP connections. Instead, it emits a -**single continuous stream** of tokens. The Libraxis Qube is responsible for **demuxing** (splitting) this stream based on -**Tags**. - -### Stream Structure - -The stream contains interspersed content types, delimited by XML-like tags or special markers. - -**Example Stream Flow (Server to Client):** - -```text -[STREAM_START] -... (thinking tokens, internal log) ... -Here is the summary of the patient's condition. -[ROUTER DETECTS TAG -> Routes content to TTS -> Sends Audio Bytes to Client] -... - - { "patient": "Fretka Ziggy", "diagnosis": "Healthy" } - -[ROUTER DETECTS TAG -> Routes content to PDF Generator -> Saves File -> Notifies Client] -... -Displaying chart... -[ROUTER DETECTS TAG -> Routes to Overlay] -... -[STREAM_END] -``` - -### Routing Logic (The Demuxer) - -1. **Default Channel**: Tokens flow to the internal buffer/context. -2. **Audio Channel (`` / `

CodeScribe Quality Report

Generated: {}

Metrics reference: {}

Raw semantics: text_committed={} • quality_gate_dropped={} • no_speech_detected={}

", + "

Codescribe Quality Report

Generated: {}

Metrics reference: {}

Raw semantics: text_committed={} • quality_gate_dropped={} • no_speech_detected={}

", html_escape(&report.generated_at), html_escape(&report.environment.metrics_reference), report.summary.raw_text_committed, @@ -952,7 +952,7 @@ fn render_html(report: &QualityReport, config: &QualityReportConfig) -> String { -CodeScribe Quality Report +Codescribe Quality Report - - -
-
- - -
-
-

Dictation-driven Orchestration Agent

-

Codescribe

-

- Speak naturally. See local Whisper live preview. Orchestrate work - with your voice, selected text, files, tools, and workflow context — - right from the app you are already using. -

- -
-
- -
-

What ships

-
-
-

Local Whisper Live

-

- Streaming local transcription starts while you speak, so the - overlay can preview words before the final paste path runs. -

-
-
-

Assistive voice overlay

-

- Right-Option toggle mode opens an agent-facing voice surface for - drafting, follow-ups, and context-aware responses. -

-
-
-

Custom MCP servers

-

- Add your own MCP tools through codescribe config so the agent can - reach the systems you already use. -

-
-
-
-

One hotkey, explicit transcript truth

-

- The recording pipeline separates live preview, final - transcription, formatting, and assistive routing so the UI can - show what is draft, final, or rejected. -

- Hold Fn -> local preview -> final transcript -> paste or - assistive response -
-
    -
  • Local-first by default; cloud final paths are optional.
  • -
  • - OpenAI Responses powers Formatting and Assistive by default. -
  • -
  • Native AppKit overlays, settings, onboarding, and tray.
  • -
  • FSL-1.1-ALv2 license with Apache-2.0 future conversion.
  • -
-
-
-
- -
-

Public release status

-
-
-

Current install path

-

- Source install is the guaranteed path until the current - v0.12.x standard and full DMGs are published, - Developer ID signed, notarized, and smoke-tested. -

-
-
-

Release gate

-

- GitHub Release automation is configured for signed and notarized - standard/full DMGs. Missing Apple credentials block release - instead of shipping a hostile installer. -

-
-
-

Trust

-

- Security policy, issue intake, PR template, changelog, license, - and public release checklist are tracked in the repository. -

-
-
-
- -
- Current public release target: `v0.12.2`. Source install remains the - honest CTA until a fresh notarized DMG exists. -
-
- - - - diff --git a/docs/landing/og-codescribe.png b/docs/landing/og-codescribe.png deleted file mode 100644 index d7033a8c7fa441235b57274ed4a93f85c0a46686..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194359 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 diff --git a/docs/landing/quickstart/index.html b/docs/landing/quickstart/index.html deleted file mode 100644 index 24ea6c0e..00000000 --- a/docs/landing/quickstart/index.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - Codescribe Quickstart | Vetcoders - - - - - - -

- - -
-

Codescribe quickstart for real first use.

-

- This page is the public install path. No hidden markdown, no broken - internal repo links. Install, grant the required macOS permissions, - pick your transcription backend, and get to the first solid - transcript. -

- -
- -
-

1. Install

-
-
-

Release DMG

-

- Use a GitHub Release only after current v0.12.x - standard and full DMGs exist and are signed, notarized, and - smoke-tested. Until then, source install is the honest public - path. -

-
-
-

Build from source

-

The supported local install path is:

-
git clone https://github.com/vetcoders/codescribe.git
-cd codescribe
-make install-app
-
-
-
- -
-

2. Grant permissions

-
    -
  • Microphone
  • -
  • Accessibility
  • -
  • Input Monitoring
  • -
-

- Without these, global hotkeys and live dictation preview will not be - truthful. -

-
- -
-

3. Pick the runtime shape

-
-
-

Transcription overlay ON

-

- Use this for low-latency live preview. Partial transcript updates - are shown during capture and tuned from Settings → Transcription. -

-
-
-

Transcription overlay OFF

-

- Use this for a quieter, more buffered runtime profile when live - overlay is not needed and you want lower local load. -

-
-
-

Backend selection

-

- Settings → Transcription lets you choose between local Whisper and - Cloud STT. Cloud in the current build is a post-capture/final - path, not live cloud overlay streaming. -

-
-
-
- -
-

4. First transcript

-
    -
  • Open Settings from the menu bar icon.
  • -
  • Confirm your preferred backend in Transcription.
  • -
  • Check overlay state in Audio & Input.
  • -
  • Use the default Dictation hotkey: hold Fn/Globe.
  • -
  • - Speak, release, and verify the transcript lands in the frontmost - app. -
  • -
-
- -
-

Need deeper docs?

-

- The repo README remains the canonical deep reference for - configuration, architecture, CLI usage, and development flow. -

- -
-
- - diff --git a/docs/landing/robots.txt b/docs/landing/robots.txt deleted file mode 100644 index 5e44c85d..00000000 --- a/docs/landing/robots.txt +++ /dev/null @@ -1,4 +0,0 @@ -User-agent: * -Allow: / - -Sitemap: https://vetcoders.github.io/codescribe/sitemap.xml diff --git a/docs/landing/sitemap.xml b/docs/landing/sitemap.xml deleted file mode 100644 index bd7282e9..00000000 --- a/docs/landing/sitemap.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - https://vetcoders.github.io/codescribe/ - weekly - 1.0 - - - https://vetcoders.github.io/codescribe/quickstart/ - weekly - 0.8 - - From 7c14bdf4e5c9fc0541cb42daddcad186cdbe441f Mon Sep 17 00:00:00 2001 From: Szowesgad Date: Sun, 12 Jul 2026 19:17:46 +0200 Subject: [PATCH 426/426] Revert "[junie/vc-hydrate] docs(release): lane-truth README + changelog + landing retired for Astro site" This reverts commit 80a8d36e25199544a33f6a404fc10540bb83989a. --- .github/workflows/pages.yml | 23 +- CHANGELOG.md | 9 +- README.md | 40 +- docs/PUBLIC_RELEASE_CHECKLIST.md | 12 +- docs/landing/hero-dictation-agent.jpg | Bin 0 -> 764309 bytes docs/landing/index.html | 983 ++++++++++++++++++++++++++ docs/landing/og-codescribe.png | Bin 0 -> 194359 bytes docs/landing/quickstart/index.html | 304 ++++++++ docs/landing/robots.txt | 4 + docs/landing/sitemap.xml | 13 + 10 files changed, 1328 insertions(+), 60 deletions(-) create mode 100644 docs/landing/hero-dictation-agent.jpg create mode 100644 docs/landing/index.html create mode 100644 docs/landing/og-codescribe.png create mode 100644 docs/landing/quickstart/index.html create mode 100644 docs/landing/robots.txt create mode 100644 docs/landing/sitemap.xml diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 32419f8e..222380b3 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -1,10 +1,10 @@ -name: Deploy website +name: Landing Pages on: push: branches: [main] paths: - - "site/**" + - "docs/landing/**" - ".github/workflows/pages.yml" workflow_dispatch: @@ -19,28 +19,19 @@ concurrency: jobs: build: - name: Build Astro site + name: Build landing artifact runs-on: ubuntu-latest steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 - - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 - with: - node-version: 22 - cache: npm - cache-dependency-path: site/package-lock.json - - name: Install dependencies - run: npm ci - working-directory: site - - name: Build - run: npm run build - working-directory: site - uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5 + with: + enablement: true - uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3 with: - path: site/dist + path: docs/landing deploy: - name: Deploy website + name: Deploy landing environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} diff --git a/CHANGELOG.md b/CHANGELOG.md index caeb5776..7bc0bcf7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,17 +11,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **API key liveness probe in Settings → Keys** (PR #50) — per-key **Test** button runs a background probe and shows a result chip (`Key OK` / `Invalid key` / `No credits (check billing)` / `Network error` / `Not set` / `Unsupported`). LLM keys are probed with a minimal generation request rather than an auth-only endpoint, so exhausted billing (`insufficient_quota`) is distinguished from an invalid key. - **Guided MCP onboarding + reset app data** (PR #52) — fresh installs with no `mcp.json` now get a short explainer with **Set up MCP servers** (deep-links into Settings → Engine) and **Skip for now**, instead of a dead-end wall; Settings → Engine gains a danger-zone **Reset app data…** action with a two-step destructive confirmation and an opt-in checkbox to also remove API keys from the Keychain. -- **Sign in with ChatGPT groundwork** — OpenAI account OAuth/device-code support is present behind the `LLM_OPENAI_OAUTH_CLIENT_ID` gate; without that operator-provided client id the UI stays honest and API keys remain the supported path. -- **Quality loop MVP** — quality-loop reporting is now part of the public-readiness surface, with Qube tooling retained for batch scoring and regression inspection. ### Changed - **Public release hygiene** — release packaging, repository metadata, and public-facing docs are being aligned for a current `v0.12.x` public release. -- **Single DMG release truth** — `make release-dmgs` is documented as one notarizable release DMG instead of the older standard/full dual-variant promise. -- **Lane truth for LLM routing** — formatting, assistive, and Anthropic-compatible lanes now resolve through the runtime lane truth, with Settings → Engine as the per-lane endpoint/model/key surface. -- **RAW lexicon and formatting default** — dictation defaults preserve the project lexicon in RAW paths while keeping formatting opt-in/default behavior aligned with Settings. -- **Overlay transcript phases** — overlay output now appends committed utterances, rewrites only the active preview tail, and auto-hides at the end of the finalized interaction. -- **Polarization accounting** — quality polarizations now allow net-negative balances to stay visible instead of hiding regressions behind aggregate-positive summaries. +- **Dual DMG release variants** — release automation now builds a standard notarized DMG with embedded Silero + embedder and runtime Whisper cache/download, plus a `_full` notarized DMG with Whisper embedded. - **Memory footprint** — idle RAM cut from ~5 GB (peak ~10 GB) to ~0.8 GB. The Whisper and MiniLM embedder models now unload from GPU/host memory after a period of inactivity and reload transparently on next use (`CODESCRIBE_WHISPER_IDLE_UNLOAD_SECS`, `CODESCRIBE_EMBEDDER_IDLE_UNLOAD_SECS`, default 300s, 0 disables). ### Fixed @@ -29,7 +23,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **Legacy fallback threads persisted on AI failure** (PR #51) — when the AI runtime is unavailable, the legacy assistive fallback no longer persists a conversation thread for `Failed`/`Skipped` attempts (previously created repeated "AI Failed" junk threads cluttering the history rail); `Applied`/`AiNoop` outcomes are still persisted as before. - **MCP setup prompt never appeared** (PR #53) — `probe_mcp_status` now reports a `configured` flag so onboarding can tell "no `mcp.json`" apart from "servers configured," fixing the guided MCP setup prompt from PR #52 that was dead code because the row-count check was always true. - **MCP setup deep-link did nothing** (PR #54) — the onboarding "Set up MCP servers" action now opens Settings via the SwiftUI `openSettings` environment action instead of a dead AppKit `showSettingsWindow:` selector that has no responder in this accessory (LSUIElement) app. -- **Delivery idempotency** — paste delivery now guards against double-paste/replay of the same finalized payload. - **Silero VAD reload leak** — the Silero ONNX session is now compiled once and shared process-wide instead of being rebuilt per recording (which leaked native ORT memory over long sessions). - **Allocator retention** — freed transient buffers are returned to the OS after each recording (`malloc_zone_pressure_relief` on macOS) instead of inflating the resident footprint across a session. diff --git a/README.md b/README.md index 726af92f..233c29ed 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,8 @@ transcription while you speak, and pastes or routes the final result into the fo in this repo is a tray app whose SwiftUI front-end has two explicit surfaces: settings and overlays. Local Whisper is the low-latency path. Cloud STT is optional and currently used as a post-capture transcript backend, -not as live cloud preview. LLM work is split into explicit formatting, assistive, and Anthropic-compatible lanes, -resolved by the runtime lane truth and configured in Settings or `~/.codescribe/.env`. +not as live cloud preview. AI formatting and assistive mode use OpenAI Responses API (`/v1/responses`) by default, +configured in Settings or `~/.codescribe/.env`. ```mermaid flowchart TB @@ -65,19 +65,13 @@ flowchart TB See: [`docs/WHISPER_LIVE.md`](docs/WHISPER_LIVE.md) | [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) -## LLM Providers and Lanes +## OpenAI Provider -Codescribe resolves LLM configuration through a single runtime lane truth. The app has separate lanes for: - -- **Formatting** — cleanup pass after dictation, defaulting to OpenAI Responses API (`/v1/responses`) and `gpt-4.1`. -- **Assistive** — agent/chat responses, defaulting to OpenAI Responses API and `gpt-5.5`. -- **Anthropic-compatible assistive** — optional Messages-style provider path for users who configure an Anthropic lane. - -Each lane can override endpoint, model, and key in **Settings → Engine**. Shared defaults still work, but per-lane settings are the source of truth when present. +Codescribe uses **OpenAI Responses API** (`/v1/responses`) by default for AI formatting and assistive mode. ### Default Setup -Put your provider keys in Settings. Codescribe stores secrets in macOS Keychain and uses Settings values before falling back to power-user environment overrides: +Put your OpenAI API key in Settings. Codescribe stores it in macOS Keychain and applies it to both AI modes: ```env # ~/.codescribe/.env @@ -96,23 +90,10 @@ LLM_FORMATTING_API_KEY=sk-proj-xxx LLM_ASSISTIVE_ENDPOINT=https://api.openai.com/v1/responses LLM_ASSISTIVE_MODEL=gpt-5.5 LLM_ASSISTIVE_API_KEY=sk-proj-xxx - -# Optional Anthropic-compatible assistive lane -ANTHROPIC_ENDPOINT=https://api.anthropic.com/v1/messages -ANTHROPIC_MODEL=claude-sonnet-4-20250514 -ANTHROPIC_API_KEY=sk-ant-xxx ``` > **Note:** All requests use `previous_response_id` for conversation chaining. Context persists across transcriptions. -### Sign in with ChatGPT - -The app contains a gated **Sign in with ChatGPT** affordance for OpenAI account OAuth. It is intentionally disabled unless an OAuth client id is configured (`LLM_OPENAI_OAUTH_CLIENT_ID`). Until that operator-owned client registration exists, API keys remain the supported OpenAI path. - -### Key liveness checks - -Settings shows a **Test** action next to each configured key. The result chip reports the latest verdict at the probed host, for example `Key OK @ api.openai.com`, `Invalid key @ api.openai.com`, `No credits @ api.openai.com`, `Network error @ api.openai.com`, or `Not set`. - ### MCP Extension Path Codescribe can load custom MCP servers from `~/.codescribe/mcp.json`. That keeps the free product useful with user-owned tools today, while leaving room for first-party Pro integrations such as AICX and Loctree later. @@ -120,7 +101,7 @@ Codescribe can load custom MCP servers from `~/.codescribe/mcp.json`. That keeps ## Features - **Rust core + SwiftUI app** — Native macOS SwiftUI shell over the Rust engine through UniFFI, with candle-core + Metal GPU -- **One release DMG** — `make release-dmgs` currently builds one notarizable DMG with the app and embedded support assets; it does not build separate standard/full variants. +- **Two DMG variants** — The standard DMG embeds Silero VAD + MiniLM support assets and resolves Whisper from cache/download. The `_full` DMG embeds Silero + MiniLM + Whisper for users who prefer one larger download. - **Whisper Live** — Streaming transcription happens _during recording_ (chunks + overlap), so `stop()` is near-instant - **Stream postprocess** — semantic gating + cleanup of live chunks before final output @@ -130,7 +111,7 @@ Codescribe can load custom MCP servers from `~/.codescribe/mcp.json`. That keeps - **Metal GPU Acceleration** — Hardware-accelerated inference on Apple Silicon - **System Tray App** — Minimal menu-bar presence with animated status glyphs - **Global Hotkeys** — Hold Fn (default) or double‑tap Option to record -- **Lane-based LLM settings** — Formatting, assistive, and Anthropic-compatible lanes can each override endpoint/model/key in Settings → Engine +- **OpenAI Responses by default** — Formatting uses `gpt-4.1`; Assistive uses `gpt-5.5` - **Custom MCP Servers** — Add your own MCP tools through `~/.codescribe/mcp.json` - **AI Formatting** — Optional post-processing via Responses API - **Slug Filenames** — Transcripts named with first 3 words for easy identification @@ -183,7 +164,7 @@ make version Tagged builds publish DMGs through GitHub Releases: 1. Open [Releases](https://github.com/vetcoders/codescribe/releases) -2. Download the single published `Codescribe_.dmg` artifact. +2. Download `Codescribe_.dmg` for the standard build, or `Codescribe__full.dmg` for the larger build with embedded Whisper. 3. Drag `Codescribe.app` into `Applications` > **Current truth:** source install is the guaranteed path inside this repo until a current `v0.12.x` GitHub Release exists. Public release DMGs must be Developer ID signed and notarized; the release workflow is wired to fail if the required Apple signing/notary secrets are missing. @@ -226,9 +207,8 @@ Hotkeys are configured in **Settings → Modes & Shortcuts**. Double‑tap modes ## Settings & Secrets - GUI settings: `~/Library/Application Support/Codescribe/settings.json` -- API keys: macOS Keychain (`com.vetcoders.codescribe`) with per-key liveness **Test** chips in Settings +- API keys: macOS Keychain (`com.vetcoders.codescribe`) - Power‑user overrides: `~/.codescribe/.env` -- LLM lanes: Settings → Engine is the user-facing source for formatting, assistive, and Anthropic-compatible endpoint/model/key overrides ## How It Works @@ -309,8 +289,6 @@ LLM_API_KEY=sk-proj-xxx # Mode-specific overrides (optional) # LLM_FORMATTING_{ENDPOINT,MODEL,API_KEY}= # LLM_ASSISTIVE_{ENDPOINT,MODEL,API_KEY}= -# ANTHROPIC_{ENDPOINT,MODEL,API_KEY}= -# LLM_OPENAI_OAUTH_CLIENT_ID= # Enables gated Sign in with ChatGPT # History HISTORY_ENABLED=1 # Save transcripts diff --git a/docs/PUBLIC_RELEASE_CHECKLIST.md b/docs/PUBLIC_RELEASE_CHECKLIST.md index 1156beba..5907e4fd 100644 --- a/docs/PUBLIC_RELEASE_CHECKLIST.md +++ b/docs/PUBLIC_RELEASE_CHECKLIST.md @@ -23,8 +23,10 @@ Current source version: `0.12.2` - [ ] `CHANGELOG.md` has a current `0.12.x` release section. - [ ] The hardened release workflow in this branch has landed on `main`; do not tag from the old `main` workflow that still builds an ad-hoc `make dmg` artifact. - [ ] Tag `v0.12.2` is created only after the release notes and signing secrets are ready. -- [ ] The `Release DMG` workflow produces the single current release artifact: `Codescribe_0.12.2.dmg`. -- [ ] The DMG is Developer ID signed, notarized, stapled, and passes Gatekeeper on a machine outside the developer environment. +- [ ] The `Release DMG` workflow produces both release variants: + - `Codescribe_0.12.2.dmg` with embedded Silero + embedder and runtime Whisper cache/download. + - `Codescribe_0.12.2_full.dmg` with embedded Silero + embedder + Whisper. +- [ ] Both DMGs are Developer ID signed, notarized, stapled, and pass Gatekeeper on a machine outside the developer environment. - [ ] Landing page primary CTA does not promise a DMG until a current notarized DMG exists. - [ ] README install section names source install as the guaranteed path until the current DMG is verified. @@ -34,7 +36,7 @@ Current source version: `0.12.2` 2. Confirm `gh release list` does not already contain `v0.12.2`. 3. Create and push tag `v0.12.2`. 4. Watch `.github/workflows/release.yml` until the release is published. -5. Download the DMG from GitHub Releases, mount it, drag the app into `/Applications`, launch it, and verify: +5. Download both DMGs from GitHub Releases, mount each one, drag the app into `/Applications`, launch it, and verify: - Gatekeeper accepts it without a workaround. - onboarding opens cleanly, - microphone/accessibility/input-monitoring prompts are understandable, @@ -43,8 +45,8 @@ Current source version: `0.12.2` ## Current Known External Gaps -- The latest live GitHub release observed on 2026-07-12 was still `v0.8.0`, while the source version is `0.12.2`. +- The latest live GitHub release observed on 2026-06-23 was `v0.8.0`, while the source version is `0.12.2`. - GitHub license detection still needs final review because the active repository license is `FSL-1.1-ALv2` while GitHub may display Apache-2.0. - GitHub Actions signing/notary secrets were not listed by `gh secret list` on 2026-06-23; configure them before tagging. -- GitHub Pages now belongs to the Astro `site/` workflow on `main`; do not resurrect the deleted `docs/landing` tree during merge. +- The live GitHub Pages deployment still served the 2026-05-07 landing as of 2026-06-23; merge/deploy the branch before public announcement. - A current signed and notarized `v0.12.2` DMG still needs to be produced by GitHub Actions and smoke-tested. diff --git a/docs/landing/hero-dictation-agent.jpg b/docs/landing/hero-dictation-agent.jpg new file mode 100644 index 0000000000000000000000000000000000000000..032a0cc47fc29a75339cac528a68ce2563e8e1f6 GIT binary patch literal 764309 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 z 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

rOm2M+lB-Z^>0{~Y-jvli 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

fI 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

=6nurASolR* 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%0D+3Gup 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�S~GiC@EayC#n2ZW7divMJ8Ae& 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%0DA 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 w>N>=5I9zApv + + + + + Codescribe — Dictation-driven Orchestration Agent | Vetcoders + + + + + + + + + + + + + + + + + +

+
+ + +
+
+

Dictation-driven Orchestration Agent

+

Codescribe

+

+ Speak naturally. See local Whisper live preview. Orchestrate work + with your voice, selected text, files, tools, and workflow context — + right from the app you are already using. +

+ +
+
+ +
+

What ships

+
+
+

Local Whisper Live

+

+ Streaming local transcription starts while you speak, so the + overlay can preview words before the final paste path runs. +

+
+
+

Assistive voice overlay

+

+ Right-Option toggle mode opens an agent-facing voice surface for + drafting, follow-ups, and context-aware responses. +

+
+
+

Custom MCP servers

+

+ Add your own MCP tools through codescribe config so the agent can + reach the systems you already use. +

+
+
+
+

One hotkey, explicit transcript truth

+

+ The recording pipeline separates live preview, final + transcription, formatting, and assistive routing so the UI can + show what is draft, final, or rejected. +

+ Hold Fn -> local preview -> final transcript -> paste or + assistive response +
+
    +
  • Local-first by default; cloud final paths are optional.
  • +
  • + OpenAI Responses powers Formatting and Assistive by default. +
  • +
  • Native AppKit overlays, settings, onboarding, and tray.
  • +
  • FSL-1.1-ALv2 license with Apache-2.0 future conversion.
  • +
+
+
+
+ +
+

Public release status

+
+
+

Current install path

+

+ Source install is the guaranteed path until the current + v0.12.x standard and full DMGs are published, + Developer ID signed, notarized, and smoke-tested. +

+
+
+

Release gate

+

+ GitHub Release automation is configured for signed and notarized + standard/full DMGs. Missing Apple credentials block release + instead of shipping a hostile installer. +

+
+
+

Trust

+

+ Security policy, issue intake, PR template, changelog, license, + and public release checklist are tracked in the repository. +

+
+
+
+ +
+ Current public release target: `v0.12.2`. Source install remains the + honest CTA until a fresh notarized DMG exists. +
+
+ + + + diff --git a/docs/landing/og-codescribe.png b/docs/landing/og-codescribe.png new file mode 100644 index 0000000000000000000000000000000000000000..d7033a8c7fa441235b57274ed4a93f85c0a46686 GIT binary patch literal 194359 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 literal 0 HcmV?d00001 diff --git a/docs/landing/quickstart/index.html b/docs/landing/quickstart/index.html new file mode 100644 index 00000000..24ea6c0e --- /dev/null +++ b/docs/landing/quickstart/index.html @@ -0,0 +1,304 @@ + + + + + + Codescribe Quickstart | Vetcoders + + + + + + +

+ + +
+

Codescribe quickstart for real first use.

+

+ This page is the public install path. No hidden markdown, no broken + internal repo links. Install, grant the required macOS permissions, + pick your transcription backend, and get to the first solid + transcript. +

+ +
+ +
+

1. Install

+
+
+

Release DMG

+

+ Use a GitHub Release only after current v0.12.x + standard and full DMGs exist and are signed, notarized, and + smoke-tested. Until then, source install is the honest public + path. +

+
+
+

Build from source

+

The supported local install path is:

+
git clone https://github.com/vetcoders/codescribe.git
+cd codescribe
+make install-app
+
+
+
+ +
+

2. Grant permissions

+
    +
  • Microphone
  • +
  • Accessibility
  • +
  • Input Monitoring
  • +
+

+ Without these, global hotkeys and live dictation preview will not be + truthful. +

+
+ +
+

3. Pick the runtime shape

+
+
+

Transcription overlay ON

+

+ Use this for low-latency live preview. Partial transcript updates + are shown during capture and tuned from Settings → Transcription. +

+
+
+

Transcription overlay OFF

+

+ Use this for a quieter, more buffered runtime profile when live + overlay is not needed and you want lower local load. +

+
+
+

Backend selection

+

+ Settings → Transcription lets you choose between local Whisper and + Cloud STT. Cloud in the current build is a post-capture/final + path, not live cloud overlay streaming. +

+
+
+
+ +
+

4. First transcript

+
    +
  • Open Settings from the menu bar icon.
  • +
  • Confirm your preferred backend in Transcription.
  • +
  • Check overlay state in Audio & Input.
  • +
  • Use the default Dictation hotkey: hold Fn/Globe.
  • +
  • + Speak, release, and verify the transcript lands in the frontmost + app. +
  • +
+
+ +
+

Need deeper docs?

+

+ The repo README remains the canonical deep reference for + configuration, architecture, CLI usage, and development flow. +

+ +
+
+ + diff --git a/docs/landing/robots.txt b/docs/landing/robots.txt new file mode 100644 index 00000000..5e44c85d --- /dev/null +++ b/docs/landing/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://vetcoders.github.io/codescribe/sitemap.xml diff --git a/docs/landing/sitemap.xml b/docs/landing/sitemap.xml new file mode 100644 index 00000000..bd7282e9 --- /dev/null +++ b/docs/landing/sitemap.xml @@ -0,0 +1,13 @@ + + + + https://vetcoders.github.io/codescribe/ + weekly + 1.0 + + + https://vetcoders.github.io/codescribe/quickstart/ + weekly + 0.8 + +

Yc(@9k#$9} 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∈gac@ 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