4runr-os 2.9.65 → 2.9.67

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.
@@ -609,25 +609,20 @@ fn main() -> Result<()> {
609
609
  terminal.clear()?;
610
610
  }
611
611
 
612
- // When on Setup Portal: explicit size sync + clear (only on first frame to avoid flicker)
613
- // Phase 3: Query real terminal size and force resize BEFORE clearing, so buffer matches console.
614
- if matches!(current_screen, crate::screens::Screen::SetupPortal) {
615
- // Only clear when we JUST entered Setup Portal (first frame), not on every navigation
612
+ // BACK TO PHASE 1.1: Clear every frame on Setup Portal (no corruption, but flickers)
613
+ // Flicker debug: log CLEAR then DRAW so we can confirm flicker = clear then redraw.
614
+ let on_setup_portal = matches!(current_screen, crate::screens::Screen::SetupPortal);
615
+ if on_setup_portal {
616
+ terminal.autoresize()?;
617
+ debug_log::log_flicker_debug("CLEAR_BEFORE", &format!("switching={}", switching_to_setup_portal));
618
+ terminal.clear()?;
616
619
  if switching_to_setup_portal {
617
- // Phase 3: Explicitly query terminal size and resize buffer to match before clearing
618
- // This fixes windowed-mode corruption on Windows where autoresize() may not catch the right size.
619
- let (cols, rows) = crossterm::terminal::size()?;
620
- terminal.resize(Rect::new(0, 0, cols, rows))?;
621
- terminal.clear()?;
622
620
  #[cfg(debug_assertions)]
623
- eprintln!("[MAIN] ENTERED Setup Portal (explicit resize {}x{} + clear)", cols, rows);
621
+ eprintln!("[MAIN] ENTERED Setup Portal (autoresize + clear)");
624
622
  debug_log::log_screen(
625
623
  &format!("{:?}", previous_screen.as_ref().unwrap_or(&current_screen)),
626
624
  &format!("{:?}", current_screen),
627
625
  );
628
- } else {
629
- // While navigating on Setup Portal, still autoresize (no clear to avoid flicker)
630
- terminal.autoresize()?;
631
626
  }
632
627
  }
633
628
 
@@ -635,6 +630,9 @@ fn main() -> Result<()> {
635
630
  terminal.draw(|f| app.render(f))?;
636
631
  let render_duration = render_start.elapsed().as_millis() as u64;
637
632
  app.record_render(render_duration);
633
+ if on_setup_portal {
634
+ debug_log::log_flicker_debug("DRAW_DONE", &format!("ms={}", render_duration));
635
+ }
638
636
 
639
637
  // Update previous screen tracking
640
638
  previous_screen = Some(current_screen);
@@ -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.65";
147
+ const PACKAGE_VERSION: &str = "2.9.67";
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.65",
3
+ "version": "2.9.67",
4
4
  "type": "module",
5
- "description": "4Runr AI Agent OS - Secure terminal interface for AI agents. v2.9.65: Setup Portal windowed - explicit size+resize before clear. v2.9.64: Double clear. ⚠️ Pre-MVP / Development Phase",
5
+ "description": "4Runr AI Agent OS - Secure terminal interface for AI agents. v2.9.67: Setup Portal flicker debug (CLEAR_BEFORE/DRAW_DONE). v2.9.66: Clear every frame. ⚠️ Pre-MVP / Development Phase",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
8
8
  "4runr": "dist/index.js",