on main help sign in
feat: added vm info
commit402f37bae40ae39c20a3e9fabfe9bf016042fae2 authorrobcholz <84130577+robcholz@users.noreply.github.com> dateSat 7 Feb 2026, 17:36 (8 months ago) parent166b035
2 files changed+24−8
src/bin/vibebox-cli.rs+3−2 src/tui.rs+21−6
src/bin/vibebox-cli.rs+3−2
@@ -79,12 +79,13 @@ fn main() -> Result<()> {
7979 mounts: config.box_cfg.mounts.clone(),
8080 };
8181
82+ let auto_shutdown_ms = config.supervisor.auto_shutdown_ms;
8283 let vm_info = VmInfo {
83− version: env!("CARGO_PKG_VERSION").to_string(),
8484 max_memory_mb: vm_args.ram_bytes / (1024 * 1024),
8585 cpu_cores: vm_args.cpu_count,
86+ system_name: "Debian".to_string(), // TODO: read system name from the VM.
87+ auto_shutdown_ms,
8688 };
87− let auto_shutdown_ms = config.supervisor.auto_shutdown_ms;
8889 if let Ok(manager) = SessionManager::new() {
8990 if let Err(err) = manager.update_global_sessions(&cwd) {
9091 tracing::warn!(error = %err, "failed to update a global session list");
src/tui.rs+21−6
@@ -34,12 +34,14 @@ const ASCII_BANNER: [&str; 7] = [
3434 " ╚═══╝ ╚═╝╚═════╝ ╚══════╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝",
3535 "",
3636];
37+const INFO_LINE_COUNT: u16 = 5;
3738
3839#[derive(Debug, Clone)]
3940pub struct VmInfo {
40− pub version: String,
4141 pub max_memory_mb: u64,
4242 pub cpu_cores: usize,
43+ pub system_name: String,
44+ pub auto_shutdown_ms: u64,
4345}
4446
4547#[derive(Debug)]
@@ -155,10 +157,14 @@ fn compute_page_layout(app: &AppState, width: u16) -> PageLayout {
155157fn header_height() -> u16 {
156158 let banner_height = ASCII_BANNER.len() as u16;
157159 let welcome_height = 1;
158− let info_height = 4;
160+ let info_height = info_block_height();
159161 welcome_height + banner_height + info_height
160162}
161163
164+fn info_block_height() -> u16 {
165+ INFO_LINE_COUNT.saturating_add(1)
166+}
167+
162168pub fn render_tui_once(app: &mut AppState) -> Result<()> {
163169 let (width, _) = crossterm::terminal::size()?;
164170 if width == 0 {
@@ -532,13 +538,15 @@ fn render_header(buffer: &mut Buffer, area: Rect, app: &AppState) {
532538 .constraints([
533539 Constraint::Length(1),
534540 Constraint::Length(ASCII_BANNER.len() as u16),
535− Constraint::Length(4),
541+ Constraint::Length(info_block_height()),
536542 ])
537543 .split(area);
538544
545+ let version = env!("CARGO_PKG_VERSION");
546+
539547 let welcome = Line::from(vec![
540548 Span::raw("Welcome to Vibebox v"),
541− Span::styled(&app.vm_info.version, Style::default().fg(Color::Yellow)),
549+ Span::styled(version, Style::default().fg(Color::Yellow)),
542550 ]);
543551
544552 Paragraph::new(welcome).render(header_chunks[0], buffer);
@@ -557,8 +565,8 @@ fn render_header(buffer: &mut Buffer, area: Rect, app: &AppState) {
557565 Span::styled(app.cwd.to_string_lossy(), Style::default().fg(Color::Cyan)),
558566 ]),
559567 Line::from(vec![
560− Span::raw("VM Version: "),
561− Span::styled(&app.vm_info.version, Style::default().fg(Color::Green)),
568+ Span::raw("System: "),
569+ Span::styled(&app.vm_info.system_name, Style::default().fg(Color::Green)),
562570 ]),
563571 Line::from(vec![
564572 Span::raw("CPU / Memory: "),
@@ -570,6 +578,13 @@ fn render_header(buffer: &mut Buffer, area: Rect, app: &AppState) {
570578 Style::default().fg(Color::Green),
571579 ),
572580 ]),
581+ Line::from(vec![
582+ Span::raw("Auto Shutdown: "),
583+ Span::styled(
584+ format!("{} ms", app.vm_info.auto_shutdown_ms),
585+ Style::default().fg(Color::Green),
586+ ),
587+ ]),
573588 ];
574589
575590 Paragraph::new(info_lines)