4runr-os 2.9.21 → 2.9.22
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.
|
Binary file
|
package/mk3-tui/src/app.rs
CHANGED
|
@@ -1720,7 +1720,8 @@ impl App {
|
|
|
1720
1720
|
self.add_log("[ERROR] WebSocket not connected".to_string());
|
|
1721
1721
|
}
|
|
1722
1722
|
|
|
1723
|
-
|
|
1723
|
+
// CRITICAL: Use immediate render for instant status update
|
|
1724
|
+
self.request_immediate_render("portal_connect");
|
|
1724
1725
|
}
|
|
1725
1726
|
|
|
1726
1727
|
// Typing - edit focused field (immediate render for responsiveness)
|
package/mk3-tui/src/main.rs
CHANGED
|
@@ -317,7 +317,8 @@ fn main() -> Result<()> {
|
|
|
317
317
|
}
|
|
318
318
|
|
|
319
319
|
// CRITICAL: Request render after state change to update UI
|
|
320
|
-
|
|
320
|
+
// CRITICAL: Use immediate render for instant success display
|
|
321
|
+
app.request_immediate_render("gateway_connect_success");
|
|
321
322
|
|
|
322
323
|
// Phase 1.3: Portal will show success state (user closes with ESC)
|
|
323
324
|
// Don't auto-close - let user see success message
|
|
@@ -446,8 +447,8 @@ fn main() -> Result<()> {
|
|
|
446
447
|
app.state.connection_portal.error = Some(error_msg.clone());
|
|
447
448
|
app.add_log(format!("✗ [{}] Gateway connection failed: {}", short_id, error_msg));
|
|
448
449
|
|
|
449
|
-
// CRITICAL:
|
|
450
|
-
app.
|
|
450
|
+
// CRITICAL: Use immediate render for instant error display
|
|
451
|
+
app.request_immediate_render("gateway_connect_error");
|
|
451
452
|
}
|
|
452
453
|
// Check if this is a response to setup.detect command
|
|
453
454
|
else if Some(&resp.id) == app.state.pending_setup_detect_id.as_ref() {
|
|
@@ -60,7 +60,7 @@ pub fn render(f: &mut Frame, state: &AppState) {
|
|
|
60
60
|
Constraint::Length(3), // Header
|
|
61
61
|
Constraint::Length(2), // Description
|
|
62
62
|
Constraint::Length(9), // Input fields
|
|
63
|
-
Constraint::Min(
|
|
63
|
+
Constraint::Min(10), // Content area (error/success/connecting) - increased for bordered boxes
|
|
64
64
|
Constraint::Length(3), // Actions
|
|
65
65
|
])
|
|
66
66
|
.split(portal_area);
|
|
@@ -157,6 +157,26 @@ fn render_content_area(f: &mut Frame, area: Rect, state: &AppState) {
|
|
|
157
157
|
// CRITICAL FIX: Clear the content area before rendering to prevent artifacts
|
|
158
158
|
f.render_widget(Clear, area);
|
|
159
159
|
|
|
160
|
+
// Ensure minimum area size for bordered boxes
|
|
161
|
+
if area.height < 8 || area.width < 20 {
|
|
162
|
+
// Area too small - just show simple text
|
|
163
|
+
let text = if portal.connection_success {
|
|
164
|
+
"✓ Connected"
|
|
165
|
+
} else if portal.error.is_some() {
|
|
166
|
+
"✗ Error"
|
|
167
|
+
} else if portal.connecting {
|
|
168
|
+
"⏳ Connecting..."
|
|
169
|
+
} else {
|
|
170
|
+
"Enter Gateway URL and press Enter to connect"
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
let paragraph = Paragraph::new(text)
|
|
174
|
+
.alignment(Alignment::Center)
|
|
175
|
+
.style(Style::default().fg(if portal.connection_success { NEON_GREEN } else if portal.error.is_some() { ERROR_RED } else if portal.connecting { AMBER_WARN } else { TEXT_DIM }));
|
|
176
|
+
f.render_widget(paragraph, area);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
|
|
160
180
|
if portal.connection_success {
|
|
161
181
|
render_success(f, area, state);
|
|
162
182
|
} else if let Some(error) = &portal.error {
|
|
@@ -170,10 +190,11 @@ fn render_content_area(f: &mut Frame, area: Rect, state: &AppState) {
|
|
|
170
190
|
}
|
|
171
191
|
|
|
172
192
|
fn render_connecting(f: &mut Frame, area: Rect) {
|
|
193
|
+
// Make the connecting box very prominent
|
|
173
194
|
let block = Block::default()
|
|
174
195
|
.title(" ⏳ CONNECTING ")
|
|
175
196
|
.borders(Borders::ALL)
|
|
176
|
-
.border_style(Style::default().fg(AMBER_WARN).bold())
|
|
197
|
+
.border_style(Style::default().fg(AMBER_WARN).bold().add_modifier(Modifier::BOLD))
|
|
177
198
|
.style(Style::default().bg(BG_PANEL));
|
|
178
199
|
|
|
179
200
|
let inner = block.inner(area);
|
|
@@ -222,10 +243,11 @@ fn render_error(f: &mut Frame, area: Rect, error: &str) {
|
|
|
222
243
|
("Connection Error", error_msg)
|
|
223
244
|
};
|
|
224
245
|
|
|
246
|
+
// Make the error box very prominent
|
|
225
247
|
let block = Block::default()
|
|
226
248
|
.title(format!(" ✗ {}", display_title))
|
|
227
249
|
.borders(Borders::ALL)
|
|
228
|
-
.border_style(Style::default().fg(ERROR_RED).bold())
|
|
250
|
+
.border_style(Style::default().fg(ERROR_RED).bold().add_modifier(Modifier::BOLD))
|
|
229
251
|
.style(Style::default().bg(BG_PANEL));
|
|
230
252
|
|
|
231
253
|
let inner = block.inner(area);
|
|
@@ -274,10 +296,11 @@ fn render_success(f: &mut Frame, area: Rect, state: &AppState) {
|
|
|
274
296
|
("Verifying...", AMBER_WARN)
|
|
275
297
|
};
|
|
276
298
|
|
|
299
|
+
// Make the success box very prominent
|
|
277
300
|
let block = Block::default()
|
|
278
301
|
.title(" ✓ CONNECTED ")
|
|
279
302
|
.borders(Borders::ALL)
|
|
280
|
-
.border_style(Style::default().fg(NEON_GREEN).bold())
|
|
303
|
+
.border_style(Style::default().fg(NEON_GREEN).bold().add_modifier(Modifier::BOLD))
|
|
281
304
|
.style(Style::default().bg(BG_PANEL));
|
|
282
305
|
|
|
283
306
|
let inner = block.inner(area);
|
package/mk3-tui/src/ui/layout.rs
CHANGED
|
@@ -143,8 +143,8 @@ fn render_header(f: &mut Frame, area: Rect, state: &AppState) {
|
|
|
143
143
|
};
|
|
144
144
|
|
|
145
145
|
// Line 1: Brand + version + mode + uptime - Bug 3 fix: Use "4Runr." with dot (matches brand logo)
|
|
146
|
-
// Use npm package version (2.9.
|
|
147
|
-
const PACKAGE_VERSION: &str = "2.9.
|
|
146
|
+
// Use npm package version (2.9.22) - matches package.json
|
|
147
|
+
const PACKAGE_VERSION: &str = "2.9.22";
|
|
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)),
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "4runr-os",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.22",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "4Runr AI Agent OS - Secure terminal interface for AI agents. v2.9.
|
|
5
|
+
"description": "4Runr AI Agent OS - Secure terminal interface for AI agents. v2.9.22: Connection Portal status fixes - immediate render, larger content area, prominent bordered boxes. v2.9.21: Improved status display. v2.9.20: Fixed Setup Portal navigation. ⚠️ Pre-MVP / Development Phase",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
|
8
8
|
"4runr": "dist/index.js",
|