- TUI: Add parseCSIuBytes to handle CSI u sequences that bubbletea
v1.3.6 returns as []byte (unknownCSISequenceMsg). Parses codepoint
and modifier bits to reconstruct key string for hotkey routing.
- Console: Reorder escape parser checks. Check 2-byte non-CSI
sequences first, then CSI terminator only after ESC[ introducer.
Fixes CSI u sequences being truncated at '[' byte (0x5b).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
tea.WithInputTTY forces bubbletea to use raw ANSI/VT input on Windows
instead of the conInputReader, which correctly parses Ctrl+Alt+Key
combos as VT sequences (e.g. \x1b[102;6u → ctrl+alt+f).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Call enableVTInput after tea.NewProgram to restore VT input mode
on Windows (bubbletea v1 conInputReader disables it, breaking
Ctrl+Alt+Key combos)
- Move normalizeHotkey to internal/config.NormalizeHotkey, eliminate
duplicate implementations in tui and console packages
- Remove unused Sess() getter from App
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Register Go helper functions (modbus.crc16, hex.encode/decode,
util.bytes) into Lua states for Modbus RTU support
- Add plugins/modbus.lua with .modbus read/write commands
- Fix Reload race condition (hold lock across Unload+Load)
- Make App.Close nil-safe for sess
- Restore internal/console/console_test.go
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>