4runr-os 2.9.36 → 2.9.38

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.
@@ -144,7 +144,7 @@ fn render_header(f: &mut Frame, area: Rect, state: &AppState) {
144
144
 
145
145
  // Line 1: Brand + version + mode + uptime - Bug 3 fix: Use "4Runr." with dot (matches brand logo)
146
146
  // Use npm package version (2.9.24) - matches package.json
147
- const PACKAGE_VERSION: &str = "2.9.36";
147
+ const PACKAGE_VERSION: &str = "2.9.38";
148
148
  let brand_line = Line::from(vec![
149
149
  Span::styled("4Runr.", Style::default().fg(BRAND_PURPLE).add_modifier(Modifier::BOLD)),
150
150
  Span::styled(" AI AGENT OS", Style::default().fg(BRAND_VIOLET)),
@@ -41,9 +41,6 @@ pub fn render(f: &mut Frame, state: &AppState) {
41
41
  height: portal_height,
42
42
  };
43
43
 
44
- // Clear the portal area for clean rendering
45
- f.render_widget(Clear, portal_area);
46
-
47
44
  // Split portal into sections
48
45
  use ratatui::layout::{Constraint, Direction, Layout};
49
46
 
@@ -84,9 +81,6 @@ pub fn render(f: &mut Frame, state: &AppState) {
84
81
  }
85
82
 
86
83
  fn render_header(f: &mut Frame, area: Rect, state: &AppState) {
87
- // Clear the area first to prevent duplication
88
- f.render_widget(Clear, area);
89
-
90
84
  let title = if state.setup_portal.error.is_some() {
91
85
  " ⚙ Gateway Setup Portal - Error "
92
86
  } else if state.setup_portal.detecting {
@@ -111,9 +105,6 @@ fn render_header(f: &mut Frame, area: Rect, state: &AppState) {
111
105
  }
112
106
 
113
107
  fn render_description(f: &mut Frame, area: Rect) {
114
- // Clear the area first to prevent duplication
115
- f.render_widget(Clear, area);
116
-
117
108
  let block = Block::default()
118
109
  .borders(Borders::LEFT | Borders::RIGHT)
119
110
  .style(Style::default().bg(BG_PANEL));
@@ -143,9 +134,6 @@ fn render_content(f: &mut Frame, area: Rect, state: &AppState) {
143
134
  }
144
135
 
145
136
  fn render_options_list(f: &mut Frame, area: Rect, state: &AppState) {
146
- // Clear the area first to prevent duplication
147
- f.render_widget(Clear, area);
148
-
149
137
  let options = vec![
150
138
  ("Local Bundle", GatewayOption::LocalBundle),
151
139
  ("4Runr Server", GatewayOption::CloudServer),
@@ -183,21 +171,21 @@ fn render_options_list(f: &mut Frame, area: Rect, state: &AppState) {
183
171
  let mut list_state = ListState::default();
184
172
  list_state.select(Some(selected_index));
185
173
 
174
+ // Use Block to properly contain and clear the area
175
+ let block = Block::default()
176
+ .borders(Borders::ALL)
177
+ .title(" Gateway Options ")
178
+ .border_style(Style::default().fg(CYBER_CYAN))
179
+ .style(Style::default().bg(BG_PANEL));
180
+
186
181
  let list = List::new(items)
187
- .block(Block::default()
188
- .borders(Borders::ALL)
189
- .title(" Gateway Options ")
190
- .border_style(Style::default().fg(CYBER_CYAN))
191
- .style(Style::default().bg(BG_PANEL)))
182
+ .block(block)
192
183
  .highlight_style(Style::default().fg(CYBER_CYAN).bold().bg(BG_PANEL));
193
184
 
194
185
  f.render_stateful_widget(list, area, &mut list_state);
195
186
  }
196
187
 
197
188
  fn render_option_details(f: &mut Frame, area: Rect, state: &AppState) {
198
- // Clear the area first to prevent duplication
199
- f.render_widget(Clear, area);
200
-
201
189
  let selected_option = &state.setup_portal.selected_option;
202
190
  let detection_result = &state.setup_portal.detection_result;
203
191
 
@@ -283,6 +271,7 @@ fn render_option_details(f: &mut Frame, area: Rect, state: &AppState) {
283
271
  ),
284
272
  };
285
273
 
274
+ // Use Block to properly contain and clear the area
286
275
  let block = Block::default()
287
276
  .title(title)
288
277
  .borders(Borders::ALL)
@@ -324,9 +313,6 @@ fn render_error_box(f: &mut Frame, area: Rect, state: &AppState) {
324
313
  }
325
314
 
326
315
  fn render_actions(f: &mut Frame, area: Rect, state: &AppState) {
327
- // Clear the area first to prevent duplication
328
- f.render_widget(Clear, area);
329
-
330
316
  let block = Block::default()
331
317
  .borders(Borders::ALL)
332
318
  .border_style(Style::default().fg(TEXT_DIM))
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "4runr-os",
3
- "version": "2.9.36",
3
+ "version": "2.9.38",
4
4
  "type": "module",
5
- "description": "4Runr AI Agent OS - Secure terminal interface for AI agents. v2.9.36: Fixed Setup Portal duplication issue - added Clear widgets to all render functions to prevent text overlap during navigation. v2.9.35: Fixed UI flashing during navigation. ⚠️ Pre-MVP / Development Phase",
5
+ "description": "4Runr AI Agent OS - Secure terminal interface for AI agents. v2.9.38: Fixed Setup Portal character corruption - removed redundant Clear widget causing buffer corruption during navigation. ⚠️ Pre-MVP / Development Phase",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
8
8
  "4runr": "dist/index.js",