v0.1.6
Install
cargo install mandible
Or download a pre-compiled binary from the assets below. Verify with the accompanying .sha256.
This release fundamentally overhauls the re-extraction (r) workflow, addressing critical concurrency defects reported in [#6](#6) and ensuring the UI retains your exact context across refreshes.
Stateful Re-extraction
- Context Retention: Pressing
rto re-extract no longer rebuilds the application state from scratch. Your expanded nodes, selection, scroll position, search filter, and view mode are all preserved. The selection is intelligently restored by path rather than row index, accommodating changes in the underlying tree structure. - Root Fill Restoration: Fixed a bug where a refresh left the detail pane entirely empty. The root fill is now properly re-queued to start the tree walk immediately, removing the need to manually trigger an expansion to force an update.
Concurrency & Performance Fixes
A series of shared architectural defects were resolved surrounding how the event loop handles a refreshed state:
- Input Buffer Clearing: Holding
ron a slow tool no longer queues up multiple synchronous re-extractions. Because extraction runs on the UI thread, key auto-repeat previously filled the input buffer with blind events that continuously re-froze the screen. Input arriving during this blocking operation is now explicitly discarded. - Non-Blocking Cascade Abandonment: Refreshing the tree now safely orphans previous background warming cascades using generation counters via
Warmer::reset. Previously, dropping therayon::ThreadPoolforced the UI to wait for running jobs to finish, freezing the screen for the exact duration of the abandoned work. - Warming Budget Reset: The
MAX_WARMED_NODESbounding counter now correctly resets per generation. Previously, this counter was monotonic across refreshes, meaning eachrconsumed a non-replenishing budget until background warming silently stopped working for the rest of the session.
UI Discoverability
- Footer Visibility: The
r(re-extract) key binding is now explicitly displayed in the status footer. - Help Pinning: The
? helphint is now permanently pinned alongside^C quit. On narrow terminals, this guarantees the most critical discoverability hint is never pushed off-screen by other status text.