libnoa 0.1.1

AI-native distributed version control system with per-agent workspace isolation, JSONL append-only logs, snapshot-based history, and full git protocol compatibility
Documentation
mod app;
mod render;
mod terminal;
mod virtual_scroll;

use anyhow::Result;
use std::time::Duration;

pub use app::{App, AppMode, Focus};
use crossterm::event::{self, Event};
pub use terminal::{cleanup_terminal, setup_terminal};
pub use virtual_scroll::VirtualScroll;

pub fn run_interactive(
    terminal: &mut ratatui::Terminal<ratatui::backend::CrosstermBackend<std::io::Stdout>>,
    mut app: App,
) -> Result<()> {
    loop {
        terminal.draw(|f| render::render(f, &app))?;

        if event::poll(Duration::from_millis(100))? {
            if let Event::Key(key) = event::read()? {
                if app.handle_key(key) {
                    break;
                }
            }
        }
    }
    Ok(())
}