The About page changelog is a hardcoded array, so it did not list v0.7.1 even though the title bar and About header already read 0.7.1 (those come from the assembly version). Also rework docs/release-notes/v0.7.1.md to the house format: New features before Bug fixes, bold group headings, and the standard Downloads table. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MKF7C75bhA4ArQhyMpnsxU
2.8 KiB
v0.7.1 — Scripts stop losing commands to a booting device
✨ New features
sendlnretry — send a command, confirm it ran, resend if it didn't
-
New TTL command:
sendlnretry '<text>' '<confirm keyword>' [max attempts]. It sends the text, then waits for proof the device actually ran it, and resends if that proof never arrives. Leave the attempt count out and it retries until it gets through. -
Drop it in wherever you send a command right after a boot — the fragile
pause+sendln+waitdance becomes one line:wait 'root@(none):/#' sendlnretry 'tpm2' 'TPM 2p0' ; retry until the device really runs it wait 'PASS' -
Cap the attempts and handle the failure yourself — on success
resultis 1; when the attempts run outresultis 0 and the script carries on instead of dying:sendlnretry 'tpm2' 'TPM 2p0' 3 if result = 0 then dispstr 'tpm2 got no response after 3 tries' endif -
Pick the confirm keyword from the command's own output (
TPM 2p0), not its echo (tpm2) — an echo is produced by the device's tty and doesn't prove the shell ever read the line. -
Each attempt waits 3 seconds by default, or your
timeout/mtimeoutif you've set one. (Unlikewait,0doesn't mean "wait forever" here — that would mean never retrying.)
🐛 Bug fixes
Scripts no longer hang forever when a booting device swallows a command
- Fixed: a device that is still booting can silently discard console input the moment its shell
takes over the tty. The line you sent is gone — the device never echoes it and never runs it —
so the
waitthat follows blocks forever and the test rig sits dead until someone notices. - This is a race, not a delay: adding
pausebeforesendlnonly lowers the odds of hitting the window, it can never close it. In one overnight 45-cycle power-cycle run, 3 cycles hung this way — and the swallowed sends landed at exactly the same moment as the 42 that worked. - Use the new
sendlnretryabove to make these sends reliable.
📦 Downloads
Two builds are produced:
| Build | Needs .NET 8 Desktop Runtime? | Notes |
|---|---|---|
Standard (ETTerms_v0.7.1) |
✅ Yes | Smaller; for machines that already have the runtime |
Portable (ETTerms_v0.7.1_portable) |
❌ No | Runtime bundled — unzip and run, no install / admin needed |
Run ETTerms v0.7.1.exe.
🔗 Links
- TTL reference (see 送出並確認 / sendlnretry): docs/ttl-script-reference.md
- Architecture: ARCHITECTURE.md
Full changelog: v0.7.0...v0.7.1