- Pressing Enter in find bar now advances to next match instead of
re-running search when needle is unchanged
- Invalidate search cache when new log lines flush or log is cleared
- Extract _invalidate_search() helper for consistent state reset
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace QShortcut with QApplication eventFilter to intercept
Ctrl+C/S/N/W/D/F/R before widgets consume them
- New bindings: Ctrl+N (new tab), Ctrl+C (clear log), Ctrl+S (find),
Ctrl+F (flash), Ctrl+D (connect/disconnect), Ctrl+R (normal mode)
- Single bindings tuple as source of truth for key map and help dialog
- Apply saved font settings via one-shot showEvent (after stylesheet)
- Add Shortcuts entry under Help menu
- Remove unused imports (QShortcut, QKeySequence, QMenuBar)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove /devices/ from Flash/.gitignore and track Flash/Devices/
(Floaders + Profiles) required for flashing on packaged builds.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Major refactor of Ameba Control Panel v3.1.0:
- Three-column layout: icon sidebar, config+history, log view
- Dracula PRO theme with light/dark toggle
- DTR/RTS GPIO control (replaces ASCII commands)
- Multi-CDC firmware support for AmebaSmart control device
- Dynamic DUT tabs with +/- management
- NN Model flash image support
- Settings dialog (Font, Serial, Flash, Command tabs)
- Background port scanning, debounced session store
- Adaptive log flush rate, format cache optimization
- Smooth sidebar animation, deferred startup
- pytest test framework with session/log/settings tests
- Thread safety fixes: _alive guards, parented timers, safe baud parsing
- Find highlight: needle-only highlighting with focused match color
- Partial line buffering for table output
- PyInstaller packaging with version stamp and module exclusions
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>