Add GMCP support and shared media layer

This commit is contained in:
2026-09-17 17:15:46 +02:00
parent 158ee2568c
commit 3fd28c2e0b
13 changed files with 1344 additions and 18 deletions
+10 -5
View File
@@ -11,6 +11,9 @@ The project is currently an early but usable Telnet client. Its interface is bui
- UTF-8, Windows-1252, and ISO-8859-1 character encodings
- Streaming Telnet negotiation with ECHO, Suppress Go Ahead, and Terminal Type support
- MCCP2 compressed-stream negotiation and bounded streaming decompression
- GMCP negotiation with bounded UTF-8/JSON parsing and a raw diagnostic inspector
- Accessible live views for character, room, items, skills, group, and communication data
- Opt-in Client.Media audio with captions, per-profile volumes, HTTPS-only bounded downloads, and cache limits
- Streaming ANSI control-sequence filtering
- Accessible scrollback and command entry
- Automatic reading of incoming lines and prompts
@@ -40,6 +43,9 @@ The output and command fields provide additional actions through their context m
- `lib/meow/profile_repository.rb` stores and validates connection profiles.
- `lib/meow/transport.rb` owns TCP/TLS sockets and background I/O.
- `lib/meow/telnet.rb` implements the streaming Telnet state machine.
- `lib/meow/gmcp.rb` parses GMCP and maintains package state.
- `lib/meow/media.rb` provides protocol-neutral media requests, safe caching, and Elten audio playback.
- `lib/meow/session_gmcp.rb` integrates GMCP packages with accessible session views.
- `lib/meow/text_pipeline.rb` handles ANSI filtering, decoding, lines, and prompts.
- `lib/meow/session.rb` owns connected-session state, scrollback, input, and speech.
- `lib/meow/ui.rb` implements the connection manager and profile editor.
@@ -52,11 +58,10 @@ Automated regression coverage now exercises the streaming Telnet parser and text
Planned work, roughly in order:
1. Add GMCP negotiation, bounded JSON parsing, typed package events, and an accessible inspector.
2. Add opt-in MSP sound and music with safe URL handling, limits, caching, and independent playback controls.
3. Add aliases, triggers, timers, optional transcripts, and configurable command shortcuts.
4. Add multiple simultaneous sessions with independent output and speech queues.
5. Add localization catalogs and package/signing automation for releases.
1. Add MSP parsing as a second adapter to the shared media request and playback layer.
2. Add aliases, triggers, timers, optional transcripts, and configurable command shortcuts.
3. Add multiple simultaneous sessions with independent output, media, and speech queues.
4. Add localization catalogs and package/signing automation for releases.
## Running the tests