towerops/test/towerops_web/channels
Graham McIntire e54ee75513 Rewrite protobuf encoding/decoding in pure Gleam with integrated validation (#104)
Replace the protobuf hex package (agent.pb.ex) and hand-written validator
(validator.ex) with a pure Gleam implementation: wire format primitives,
all 23 message types, encode/decode functions, and validation merged into
decode. Thin Elixir wrappers in agent.ex preserve the existing struct API.

- Wire format: varint, length-delimited, double (IEEE 754 via FFI), tag encode/decode
- Types: all proto3 message types as Gleam custom types with enums and oneof
- Decode: field-level parsing with integrated validation (UUID, IP, hostname, limits)
- Encode: proto3 default omission, bytes_tree concatenation, map/repeated fields
- Wrappers: Elixir structs with encode/decode delegating to Gleam, enum atom conversion
- Remove {:protobuf, "~> 0.12"} dependency

Reviewed-on: graham/towerops-web#104
2026-03-21 16:08:40 -05:00
..
agent_channel_check_proto_test.exs Rewrite protobuf encoding/decoding in pure Gleam with integrated validation (#104) 2026-03-21 16:08:40 -05:00
agent_channel_test.exs Rewrite protobuf encoding/decoding in pure Gleam with integrated validation (#104) 2026-03-21 16:08:40 -05:00
mobile_channel_test.exs add mobile app websocket channel and improve QR linking UX 2026-03-13 17:28:36 -05:00
mobile_socket_test.exs add mobile app websocket channel and improve QR linking UX 2026-03-13 17:28:36 -05:00