29 Commits

Author SHA1 Message Date
5035e73d7e Add pipeview-tui with ANSI escape sequence rendering
Full ratatui terminal application mirroring pipeview-gui:
- Single-session telemetry console with Text/Hex/Plot views
- Serial/TCP/UDP transport with full parameter config
- DTR/RTS control, auto-reconnect, data send (Text/Hex modes)
- Search with case-sensitive toggle and match navigation
- Interactive config form with inline editing
- ANSI SGR parsing via ansitok: 4-bit, 256-color, true color,
  bold/italic/underline/strikethrough rendering in text view
- Persistent session state via JSON
- Mouse clickable controls and mousewheel scroll/zoom

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-06-15 14:44:08 +08:00
ee65e284c4 chore: fix import ordering and formatting in core and client 2026-06-14 04:12:37 +08:00
4e4c9cee65 feat(gui): add ANSI escape sequence renderer with full panel integration
- new ansi_render module: SGR, cursor movement, erase, scroll
- integrate ANSI rendering into console panel output pipeline
- wire app_state, buffers, hex_view, and shortcuts for ANSI-aware display
- add test_ansi.py for manual ANSI sequence testing
2026-06-14 04:12:35 +08:00
e600418da8 Detach GUI from terminal on linux, hide console on Windows 2026-06-13 14:35:25 +08:00
e939b16d2d Rewrite README in Chinese and English, add drone examples
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-06-12 22:32:58 +08:00
a2c7c0fa71 Fix all clippy warnings across workspace
collapsible_if, let-chains, derivable_impls, clone_on_copy, useless_vec, approx_constant, io_other_error, single_match, collapsible_match, unnecessary_map_or, manual_is_multiple_of, result_large_err, too_many_arguments, upper_case_acronyms

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-06-12 21:09:47 +08:00
ab1c5882d1 Add log-to-file feature with background writer
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-06-12 20:58:44 +08:00
2efbc9c284 Add horizontal scroll and enforce white text in console and hex views
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-06-12 20:34:32 +08:00
b3acb02d52 Add LineEnding enum with ComboBox UI for send panel
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-06-12 20:31:52 +08:00
afb8ca509a feat: add search for received data in Text and Hex views
- Add search() method to TextBuffer and HexBuffer
- Add SearchState with match tracking, prev/next navigation
- Highlight matched text with yellow background via LayoutJob
- Search bar UI with case-sensitive toggle and match counter
- Keyboard shortcuts: Ctrl+F (open), F3 (next), Shift+F3 (prev)
- Auto-focus input on Ctrl+F
- Update README with comprehensive project documentation
2026-06-12 02:42:17 +08:00
9cdbd5a892 Add keyboard shortcut system to xserial-gui
Introduce a centralized shortcut system with ShortcutAction enum and bindings table in shortcuts.rs. Global shortcuts are processed at the top of XserialApp::ui() before any widget rendering. Text input focus is detected via wants_keyboard_input() to suppress shortcuts when typing. Also fix pre-existing import ordering in panels/config.rs from cargo fmt.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-06-11 22:41:21 +08:00
8207b5e883 Fix deadlock in handle_send_to_dead_session test
The test called handle.join() without first calling handle.close(), causing the spawned session task to park forever waiting for cmd_rx.recv() to return None. Since join() borrows &self, cmd_tx stays alive, and the task never exits. Add close() call before join() to send a Close command and unblock the task.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-06-11 22:41:12 +08:00
202b8261c2 init tui 2026-06-11 19:11:36 +08:00
dc8f2eb8a4 feat: restrict DTR/RTS to serial transport; allow manual port input; clean up tool binaries
- Only show DTR/RTS toggles when transport is Serial (not TCP/UDP)
- Add manual port text entry next to serial port combo box
- Reduce combo box width to 180px to make room for text input
- Remove compiled ELF binaries from tools/ and add to .gitignore
2026-06-11 18:01:32 +08:00
edec8113fb Add Lua pipeline support 2026-06-11 15:07:02 +08:00
1fec5f8941 feat: Add DTR/RTS control for serial ports with GUI toggles
- Assert DTR/RTS after serial port open to prevent wireless modules
  (HC-12/HC-15/Bluetooth bridges) from entering AT command mode after
  the unavoidable Linux kernel DTR pulse on every open() call.
- Add dtr/rts fields to TransportConfig::Serial (default: false).
- Add set_dtr()/set_rts() on SerialTransport, Connection, SessionHandle.
- Add SessionCmd::SetDtr/SetRts for live toggling via command channel.
- Add DTR/RTS checkboxes to GUI session controls (visible when connected)
  and to config form for persistence.
- Add test_plot_serial.c and test_text_serial.c — standalone C test
  tools for sending MixedTextPlot frames and plain text over serial.
- Update AGENTS.md with build prerequisites, architecture map, testing
  conventions, env vars, and known quirks.
2026-06-11 14:18:39 +08:00
09bee86a08 add README.md 2026-06-10 13:41:56 +08:00
18bdd2652a Improve GUI plot workflow and performance 2026-06-10 11:54:57 +08:00
9b826d79da Use serial port dropdown 2026-06-10 00:43:58 +08:00
d489bc0831 Add GUI session persistence and full pipeline config 2026-06-09 23:18:15 +08:00
882b7f391f Improve GUI configuration and plotting tooling 2026-06-09 21:57:45 +08:00
594637ec50 Persist GUI font settings 2026-06-09 17:59:35 +08:00
b499db5d35 Add GUI font configuration controls 2026-06-09 15:55:45 +08:00
d5b6bb52c8 Add mixed text/plot transport and improve plot UI 2026-06-09 00:51:34 +08:00
25433038d5 Improve session controls and GUI views 2026-06-08 22:27:23 +08:00
2eb02350da Update core modules and add GUI panels 2026-06-08 17:32:42 +08:00
2d33b4b2ae Rework client sessions and Lua integration 2026-06-08 17:26:56 +08:00
530986d068 feat: xserial-client with session management, mlua integration, and 238 tests
- Session: background I/O task with SessionHandle for send/read/close/reconfigure
- SessionManager: multi-session collection with aggregated event broadcast
- Config: serializable SessionConfig/PipelineConfig/FramerConfig/DecoderConfig
- Lua: xserial global (open/list_ports/sleep/log) + session userdata API
- RingBuffer: bounded history buffer with pipeline filtering
- Core: added Serialize/Deserialize+Default to Endian/TextEncoding/PlotFormat
- Core: added Send bound to Framer trait for tokio task compatibility
- 238 tests (193 core + 10 config + 7 Lua + 9 session + 18 pipeline + 1 doctest)
2026-06-08 00:25:59 +08:00
60c60a8044 feat: initial xserial-core with transport, protocol, frame, and pipeline layers
- transport: async Serial/TCP/UDP via Connection enum + Transport trait
- protocol: TextDecoder (UTF-8/Latin-1/ASCII), HexDecoder, PlotDecoder (binary samples)
- frame: LineFramer, FixedLengthFramer, LengthPrefixedFramer, CobsFramer
- pipeline: MultiPipeline for parallel multi-protocol parsing
- 212 tests (182 unit + 18 integration + 1 doctest), clippy clean
2026-06-07 19:20:19 +08:00