4runr-os 2.10.45 → 2.10.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3011,16 +3011,24 @@ impl App {
3011
3011
  let inner_h = self.state.portal_monitoring.viewport_lines.max(5);
3012
3012
  let sw = self.state.portal_monitoring.summary_clip_width.max(24);
3013
3013
  let max_scroll = portal_monitoring_scroll_max(&self.state, sw, inner_h);
3014
+ let logs_selected_and_open = self
3015
+ .state
3016
+ .advanced_monitoring
3017
+ .monitoring_state
3018
+ .selected_section
3019
+ == Some(MonitoringSection::Logs)
3020
+ && self
3021
+ .state
3022
+ .advanced_monitoring
3023
+ .monitoring_state
3024
+ .sections
3025
+ .get(&MonitoringSection::Logs)
3026
+ .map(|section| section.expanded)
3027
+ .unwrap_or(false);
3014
3028
 
3015
3029
  match key.code {
3016
3030
  KeyCode::Up => {
3017
- if self
3018
- .state
3019
- .advanced_monitoring
3020
- .monitoring_state
3021
- .selected_section
3022
- == Some(MonitoringSection::Logs)
3023
- {
3031
+ if logs_selected_and_open {
3024
3032
  self.state.portal_monitoring.scroll_offset =
3025
3033
  self.state.portal_monitoring.scroll_offset.saturating_sub(1);
3026
3034
  self.request_immediate_render("portal_obs_scroll");
@@ -3034,13 +3042,7 @@ impl App {
3034
3042
  }
3035
3043
  }
3036
3044
  KeyCode::Down => {
3037
- if self
3038
- .state
3039
- .advanced_monitoring
3040
- .monitoring_state
3041
- .selected_section
3042
- == Some(MonitoringSection::Logs)
3043
- {
3045
+ if logs_selected_and_open {
3044
3046
  self.state.portal_monitoring.scroll_offset =
3045
3047
  (self.state.portal_monitoring.scroll_offset + 1).min(max_scroll);
3046
3048
  self.request_immediate_render("portal_obs_scroll");
@@ -619,7 +619,7 @@ fn build_body_lines(state: &AppState, summary_width: usize) -> Vec<Line<'static>
619
619
  } else {
620
620
  (
621
621
  SectionStatus::Unknown,
622
- "Press R for CLI/host stats".to_string(),
622
+ "Press S for CLI/host stats".to_string(),
623
623
  )
624
624
  }
625
625
  }
@@ -720,8 +720,7 @@ fn build_body_lines(state: &AppState, summary_width: usize) -> Vec<Line<'static>
720
720
  "If results stay empty, nothing may be writing to the Gateway log ring buffer yet.".into(),
721
721
  ],
722
722
  MonitoringSection::System => vec![
723
- "Press R to fetch CLI process + host OS stats.".into(),
724
- "Press S to run diagnostics (Gateway verify + TUI WebSocket details).".into(),
723
+ "Press S to fetch CLI process + host OS stats and run diagnostics.".into(),
725
724
  String::new(),
726
725
  "MK3 TUI runtime".into(),
727
726
  format!(
@@ -789,7 +788,7 @@ fn build_body_lines(state: &AppState, summary_width: usize) -> Vec<Line<'static>
789
788
  }
790
789
  if matches!(section, MonitoringSection::System) && expanded {
791
790
  out.push(Line::from(vec![Span::styled(
792
- " Phase 4: R = stats, S = diagnostics. Disk is intentionally marked unavailable until a native probe exists.",
791
+ " Phase 4: S = CLI/host stats + diagnostics. Disk is intentionally marked unavailable until a native probe exists.",
793
792
  Style::default().fg(TEXT_DIM),
794
793
  )]));
795
794
  }
@@ -1042,7 +1041,7 @@ pub fn render(f: &mut Frame, state: &mut AppState) {
1042
1041
  Line::from(" R full snapshot refresh without closing your current section"),
1043
1042
  Line::from(" L jump to Logs + fetch Gateway logs"),
1044
1043
  Line::from(" H jump to Metrics + toggle trends → Metrics drill ← leave drill"),
1045
- Line::from(" T jump to Dependencies detail S jump to System diagnostics"),
1044
+ Line::from(" T jump to Dependencies detail S jump to System stats + diagnostics"),
1046
1045
  Line::from(" A toggle live auto-refresh (off by default for stable reading)"),
1047
1046
  Line::from(" E export diagnostics JSON to the current working directory"),
1048
1047
  Line::from(""),
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "4runr-os",
3
- "version": "2.10.45",
3
+ "version": "2.10.47",
4
4
  "type": "module",
5
- "description": "4Runr AI Agent OS - Secure terminal interface for AI agents. v2.10.45: Fixes Portal Monitoring log toggle, log-bottom scroll, and monitor re-entry from linked Gateway sessions. v2.10.44: Stabilizes Portal Monitoring reading mode, global refresh, logs, and shortcut behavior.",
5
+ "description": "4Runr AI Agent OS - Secure terminal interface for AI agents. v2.10.47: Clarifies Portal Monitoring System stats use S while R remains global refresh. v2.10.46: Restores Portal Monitoring section navigation after closing Logs.",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
8
8
  "4runr": "dist/index.js",