Repository navigation
lantern 0.1.5
lantern 0.1.5
A conversational terminal over the assessment flow — and assessments are no
longer blocked by the disk floor.
lantern chat
The same pipeline as run and ask, behind a screen. The transcript stays in
the terminal's own scrollback (no alternate buffer, so the terminal's native
scrolling reaches every previous message) while a ten-row viewport at the
bottom holds the status line, the live activity trail and the input:
example.com |example.com recon|deepseek-flash |idle
› Check TLS and headers, defensive only
Enter send · Esc abort · / commands · ^C quit
/palette —/target /scope /roles /offensive /dry-run /steps /flows /clear /quit, filtered as you type, Tab completes, an exactly typed name
wins over the highlighted row, and commands that need arguments stay
composed instead of erroring on an empty one.- Live progress — the flow reports plan, role starts, each tool call and
role finishes as they happen; the status line carries the running role, the
step count and elapsed time. - Inline approval — active testing requested while the session does not
allow it raises a card instead of a wall of text:1allows it for this
flow only,2(or Esc, which is deny-by-inaction) keeps reconnaissance.
The session grant is recorded on the per-flow config, so the runtime's own
check agrees with the card. - Steering — a line typed while a flow runs joins the working set and
cross-role memory at the next step boundary, so the roles still to run act
on it. - Abort — Esc or Ctrl-C sets a flag the runtime checks per model step and
per tool call. The flow reportsaborted, keeps what it finished, and the
stored report saysabortedtoo rather thancompleted.
Nothing here is trusted either: without a terminal chat refuses and names
ask; there is still no prompt that can hang; roles cannot stop for questions
in chat (the UI owns stdin), so flows run non-interactively by design.
The disk floor guards provisioning, not work
The 20% free-space floor refused run, ask and chat on machines that were
already configured. Past setup, commands are bounded by the data-root and log
caps, so the floor was blocking work over unrelated disk usage.
It now guards the one step that can actually consume gigabytes —
lantern setup, which downloads packages and builds john from source. The
refusal names setup for the same reason. Reports stay informational:
lantern doctor still prints UNDER THE FLOOR, every startup line still
prints the numbers, and lantern gc still relieves the pressure.
Dependencies
The terminal is ratatui + crossterm (+ unicode-width), which is the Rust
counterpart of the framework this screen was modelled on. No new build tooling
enters the aarch64 build: no cmake, no ring, no bundled libclang.
Verified
- 234 tests pass, 1 ignored (the live NVD query), 0 warnings — up from 227
at 0.1.4. Seven new: composer editing on char boundaries, history, palette
matching and picking, approval keys, line wrapping, plus a runtime test for
progress events and one for abort semantics. - Driven through a real pty that answers cursor-position queries like an
emulator: intent card, live trail, approval allow-once,Escmid-flow
ending inflow flw_… abortedwith anabortedrow and report in SQLite,
and a clean session end. A real bug surfaced this way — the session grant
was not reaching the runtime's process-level check, so a correctly allowed
flow still warned about--offensive; fixed before release. - Floor behaviour verified at 5.21 GB free against the 6.16 GB floor:
setuprefuses naming itself, whilerun,askandchatstart, complete
and write their reports. - Binary: 8,939,992 bytes (the screen added ~262 KB over the 0.1.4 asset's
8,612,232).lantern doctorexits in 36–41 ms. run --dry-runmeasured 0.29–0.94 s idle and up to 15 s while this host was
loaded (load average 4.8 on four cores) — the spread is the host, not the
binary, and it is stated here rather than averaged away.- No warnings across
cargo check --workspace --all-targets, and no line
added in this window exceeds the project's 100-column style.
Upgrade
git pull
cargo build --release # ~/.cargo/bin/cargo if it is not on PATH
./target/release/lantern doctorNo database schema change: chat adds a flow status (aborted) and reads the
options already stored, so flows recorded on 0.1.0–0.1.4 still render. No new
required variables, and no change to run or ask flags.
Attached: lantern-v0.1.5-aarch64-linux-gnu (8,939,992 bytes), built on Debian
13 / glibc 2.41 / aarch64. For anything else, build from source as above.