Commit 04f9ccf
committed
feat(tui,monitor): interactive TUI with normal/inspect modes
Adds a scrolling log-pane widget (tui.h/tui.c) and rebuilds
`ice target monitor` on top of it with two user-visible modes plus
a CI-friendly dumb passthrough.
tui_log widget:
- ring-buffered log with bounded scrollback (default 10k lines)
- per-line decorator hook + per-byte SGR overlays for level / keyword /
search highlighting, composed via a stack-based renderer that nests
cleanly across hard wraps
- PCRE2 regex search with match counter, current-match marker, and
forward / backward navigation that survives ring eviction via global-
index anchoring
- snapshot ceiling so a frozen view stays stable while the ring keeps
growing in the background
ice target monitor:
- normal mode: pure passthrough, only Ctrl-T intercepted (prefix for
x=exit, i=inspect, r=reset, p=bootloader, ?=help, Ctrl-T=literal)
- inspect mode: ceiling-frozen view with a vim-style keymap
(j/k/Up/Down/PgUp/PgDn/g/G/Home/End scrolling, /, n, N for search,
Esc/q to exit)
- ESP-IDF E/W/I level lines tinted to match the firmware's own
colouring; default keyword rules (error: / warning: / FAILED: /
CMake / undefined reference / etc.) applied to non-IDF lines
- title bar shows mode badge and per-mode key hints; help is per-mode
via tui_info modal
- automatic dumb passthrough when stdout/stdin isn't a tty (CI, piped
capture, redirection); --no-tui forces the dumb path
- DTR/RTS reset and bootloader sequences match esf_port.c's
UnixTightReset path
Signed-off-by: Frantisek Hrbata <frantisek.hrbata@espressif.com>1 parent 6dcc5cf commit 04f9ccf
3 files changed
Lines changed: 2299 additions & 40 deletions
0 commit comments