diff --git a/src/user/tui/mod.rs b/src/user/tui/mod.rs index 5de8267..dd23d95 100644 --- a/src/user/tui/mod.rs +++ b/src/user/tui/mod.rs @@ -21,7 +21,7 @@ mod subconscious_screen; mod unconscious_screen; mod thalamus_screen; -pub(crate) const SCREEN_LEGEND: &str = " F1=interact F2=conscious F3=subconscious F4=unconscious "; +pub(crate) const SCREEN_LEGEND: &str = " F1=interact F2=conscious F3=subconscious F4=unconscious F5=thalamus "; /// Subconscious agents — interact with conscious context pub(crate) const SUBCONSCIOUS_AGENTS: &[&str] = &["surface-observe", "journal", "reflect"]; /// Unconscious agents — background consolidation @@ -380,6 +380,8 @@ pub(crate) enum Screen { Subconscious, /// F4 — memory daemon status Unconscious, + /// F5 — thalamus: channels, presence, attention routing + Thalamus, } /// Actions triggered by hotkeys, consumed by the main loop. @@ -577,6 +579,7 @@ impl App { KeyCode::F(2) => { self.set_screen(Screen::Conscious); return; } KeyCode::F(3) => { self.set_screen(Screen::Subconscious); return; } KeyCode::F(4) => { self.set_screen(Screen::Unconscious); return; } + KeyCode::F(5) => { self.set_screen(Screen::Thalamus); return; } _ => {} } @@ -677,7 +680,7 @@ impl App { _ => {} } } - Screen::Unconscious => { + Screen::Unconscious | Screen::Thalamus => { match key.code { KeyCode::PageUp => { self.debug_scroll = self.debug_scroll.saturating_sub(10); return; } KeyCode::PageDown => { self.debug_scroll += 10; return; } @@ -815,6 +818,7 @@ impl App { Screen::Conscious => { self.draw_debug(frame, size); return; } Screen::Subconscious => { self.draw_agents(frame, size); return; } Screen::Unconscious => { self.draw_unconscious(frame, size); return; } + Screen::Thalamus => { self.draw_thalamus(frame, size); return; } Screen::Interact => {} } diff --git a/src/user/tui/unconscious_screen.rs b/src/user/tui/unconscious_screen.rs index 9398517..b279809 100644 --- a/src/user/tui/unconscious_screen.rs +++ b/src/user/tui/unconscious_screen.rs @@ -134,8 +134,11 @@ impl App { // Plan summary let plan_total: usize = gh.plan_counts.values().sum::() + 1; - let plan_summary: Vec = gh.plan_counts.iter() + let mut plan_items: Vec<_> = gh.plan_counts.iter() .filter(|(_, c)| **c > 0) + .collect(); + plan_items.sort_by(|a, b| a.0.cmp(b.0)); + let plan_summary: Vec = plan_items.iter() .map(|(a, c)| format!("{}{}", &a[..1], c)) .collect(); let plan_line = Line::from(vec![