11 Commits
Author SHA1 Message Date
etwen e2fa8d87f1 merge: Phase 9 Serial MCP + app icon/version (v0.2.0) 2026-06-04 21:25:38 +08:00
etwenandClaude Opus 4.8 28538594d7 feat: Phase 9 Serial MCP server + app icon & version title (v0.2.0)
Phase 9 (AI integration) complete -- AI agents can send/receive serial
while the user watches live in the GUI, with the GUI as sole COM-port owner.

- ETTerms.SerialMcp: stdio MCP server (net8.0 + ModelContextProtocol SDK)
  exposing serial_list / serial_attach / serial_write / serial_read
  (waitFor + timeoutMs) / serial_detach; forwards over named pipe.
- GUI SerialBridgeServer (pipe etterms-serial) + SerialBridge endpoint;
  SessionPage.WriteFromAi echoes MCP-sourced TX tagged [AI] (magenta).
- App icon: window title bar / taskbar / exe now use Choco_256x256.ico
  (embedded via AppAssets); title bar shows ETTerms Version vX.Y.Z.
- About page: large Choco icon (Zoom, no crop).
- Docs: ARCHITECTURE.md + CLAUDE.md mark Phase 9 done; docs/serial-mcp-guide.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 21:25:30 +08:00
etwen f4207f8586 docs: redesign Phase 9 Serial MCP as GUI-owned port + named pipe bridge
GUI holds the COM port exclusively; ETTerms.SerialMcp becomes a thin client that bridges over a local named pipe (SerialBridgeServer). AI TX/RX flows through the GUI channel so it is visible live in the terminal view. Tools change from open/close to attach/detach.
2026-06-04 15:05:36 +08:00
etwen 37460e22ca chore: bump version to 0.1.3 2026-06-04 14:46:52 +08:00
etwen f2a8d8515c refactor(scripts): drop output-marker gates from SVOS script; engine wait-settle handles the race 2026-06-04 14:41:46 +08:00
etwen 6821b310fe merge: wait settle + sprintf2/wait docs (feature/wait-settle) 2026-06-04 14:29:53 +08:00
etwen cb6d5a097a docs: document sprintf2 and wait settle behavior (v0.1.2) 2026-06-04 14:29:46 +08:00
etwen e5ed2dc688 feat(scripting): wait settles until device is idle before matching
After finding the keyword, wait requires the receive buffer to stay quiet for ~300ms (no new bytes) and consumes up to the LAST occurrence. This rejects matches on echoed command prompts (e.g. 'SVOS> help') mid-output, preventing the script from racing ahead. Applies to all wait-based loops without per-command markers.
2026-06-04 14:17:45 +08:00
etwen 7b8f04e1dd feat(scripting): add sprintf2 command and fix prompt-wait race (v0.1.2)
- Add TeraTerm-compatible sprintf2 (C printf formatting into a string var)

- Fix SVOS power-cycle script racing ahead by gating prompt waits behind output-completion markers

- Bump version to 0.1.2; docs and README updates
2026-06-04 14:13:43 +08:00
etwenandClaude Opus 4.8 a8dc3d4a7a feat(terminal): Add session logging, tab reorder, and settings polish
- Add per-tab Log button: record session output to logs\[name]_yyyyMMdd_HHmmss.log
- Add Log All toolbar button to toggle logging on every open tab at once
- Add drag-to-reorder for top tabs (also rearranges grid layout cells)
- Polish Settings > Terminal: align all input boxes, soften folder browse button

Logs strip ANSI escapes and prefix each line with [yyyy-MM-dd HH:mm:ss.fff].
LogName per channel: Shell=ShellType, Serial=PortName, SSH=user@host.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 21:55:58 +08:00
etwen 2bfb2c6575 feat: initial release v0.1.0
- KKTerm-style UI: Activity Rail, Connection Sidebar, Tabbed Workspace
- Serial Port connection (System.IO.Ports)
- SSH connection (SSH.NET, password/key/keyboard-interactive)
- Local Shell via Windows ConPTY (PowerShell/Bash/Cmd)
- VT100/ANSI terminal rendering (owner-drawn, double-buffered)
- TTL script engine: send, sendln, wait, pause, timeout, if/while, messagebox
- Group execution: waitall, sendlnall, sendlngroup (Barrier sync)
- Run All / Run Group toolbar buttons
- SFTP file browser sidebar (SSH.NET SftpClient)
- PDU control via SNMP (pduconnect/pductrl commands)
- Settings: Terminal prefs, Shell config, PDU monitoring
- About page with changelog
- AppSettings persisted to %LocalAppData%\ETTerms\
- Dark theme throughout (KKTerm purple accent)
2026-06-03 17:09:55 +08:00