Conversation
* docs: add documentation to test_poll.rs * chore: remove test_echo_server.rs (fully commented out, no functional tests) * chore: remove test_close_on_drop.rs (fully commented out, no functional tests) * chore: remove test_double_register.rs (fully commented out, no functional tests) * chore: remove test_broken_pipe.rs (uses deprecated corcovado::deprecated module that no longer exists)
This adds the core parse/encode for the still in-development and experimental terminal glyph protocol: raphamorim/rio#1542 The only cross-cutting change necessary was changing the APC identification logic which previously only looked at a single byte to support multi-byte identifiers since the glyph protocol uses `25a1`.
This adds the core parse/encode for the still in-development and experimental terminal glyph protocol: raphamorim/rio#1542 The only cross-cutting change necessary was changing the APC identification logic which previously only looked at a single byte to support multi-byte identifiers since the glyph protocol uses `25a1`.
I'd like to ask for explicit guidance on payload size limits too. At the time of writing this, I've initially set a default limit on the full APC command to 1 MB: ghostty-org/ghostty#12352 (As a comparison, for Kitty Graphic I do 65 MB). This is to prevent DoS for malformed APC commands buffering unbounded memory usage. From a spec standpoint, it'd be helpful to have guidance on recommended limits so that application authors can be confident what works and what may not. EDIT: I see
I think simpler protocols are better than complex protocols, especially for getting mass adoption, so I'm going to push back on this. I think this would add a lot more complexity to the terminal emulator side of things (per-session state is always easier) and I think it'd better to avoid it. Can you explain this a bit further? |
|
There is no mention of That'd be simplest for me because in the EDIT: I see |
This adds the core parse/encode for the still in-development and experimental terminal glyph protocol: raphamorim/rio#1542 The only cross-cutting change necessary was changing the APC identification logic which previously only looked at a single byte to support multi-byte identifiers since the glyph protocol uses `25a1`.
I agree 100% the simpler the better, and this is a concern I have regarding multiplexers running applications with the protocol usage. For example, tmux can runs many nvim or any application that can register and overwrite same codepoint. so it would lead to corruption on the other panels of the tmux. What I thought originally was add a param like |
|
Other idea though is actually introduce automatic registry and let the terminal manage the spots. It would get rid of the necessity of known the specific unicode or even evolve the scope registry. |
|
i am thinking in also change the nature of the protocol. so you can't overwrite existing codepoints anymore. this would eliminate corruption cases. If you want a specific cp you can still send. if it's used, then the protocol will reply it's in use. Optionally you can send auto and the terminal will manage the codepoints in runtime, security wise, for example any other malware that wants to force the same codepoint as the main running application, is also better. EDIT: I think I will not change the nature of the protocol for now, I understand developers want freedom. I will just add support for auto and make it the recommendation for many cases |
|
@qwerasd205 made a great point — auto-assignment breaks replay tools like asciinema and I'll revert |
Ref: https://rapha.land/introducing-glyph-protocol-for-terminals/
Ref: https://rapha.land/adding-color-glyphs-to-glyph-terminal-protocol/
TODO: