Hermes v1.2 — watch, link health, break, script replay
Five additions, all aimed at the live session — the part of the workflow earlier versions still left you doing by hand.
Drop hermes.fap onto your Flipper at SD Card / apps / GPIO /, then open Apps → GPIO → Hermes.
Watch for a string, and look away
A slow boot is a bad thing to babysit. Ctrl palette → Watch for… arms a string; when it appears in the stream, the Flipper buzzes and flashes — so you can set login: (or Password, or a panic string you are hunting) and go do something else.
An armed watch shows as an inverted strip along the bottom with a live hit count, so you can confirm at a glance it is live. Matching is case-insensitive and works even when the pattern straddles two DMA chunks or is wrapped in colour codes — it watches the raw stream, not the cooked screen. The matcher is KMP with a precomputed failure table, unit-tested against overlaps and byte-at-a-time delivery.
Link health
The console status bar now shows ERR n — hardware framing, parity and noise errors counted since the link opened. A count that climbs with the traffic is the surest sign the framing is wrong even though the rate is right. (Overruns stay excluded — those are the Flipper being slow, not the line being wrong.)
Send break
Some bootloaders, and the Linux magic SysRq, listen for a UART break — the line held low past the end of a frame. That is a deliberate framing violation, so it cannot be sent as a byte. Ctrl palette → Send break takes the TX pin off the UART, holds it low by hand for 25 ms, and hands it back idle-high, without disturbing RX.
Script replay
Ctrl palette → Run script… picks a .txt off the SD card and sends it line by line — a login, a set of U-Boot commands, a recovery sequence you would otherwise peck out one Flipper-keyboard character at a time. Lines are paced ~250 ms apart, blank lines and # comments are skipped, and playback runs off the UI tick so the target replies keep scrolling in between. Progress shows as SCRIPT n/m. A commented example_login.txt is in the repo to copy across and adapt.
Notes
None of these block the GUI thread — they run off the UI tick or a brief bounded hold, so the boot log keeps rendering throughout. An armed watch shrinks the terminal from six rows to five to make room for its strip; the terminal genuinely gives up the row rather than being drawn over.
GND first, always. 3.3V logic only. RS-232 swings ±12V and will destroy your Flipper — use a MAX3232. Detection releases the TX pin, and the console only transmits what you ask it to. For your own boards, or ones you are authorised to test.
Verified
Release API 87.1 and dev API 88.0 both green in CI, alongside two host test suites (the autobaud fit and the trigger matcher) under ASan/UBSan.