All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
update_sourceoption (field 50005, scalar string) replaced byupdate_source_opts(field 50007,UpdateSourceOptionsmessage) carrying bothsourceandcondition_fields. This fixesApplyTo/ToMapskipping message-type fields that were incorrectly inferred as condition fields. The old field 50005 is retired and no longer recognized. Since both options are internal (written only bygcode gen-proto), user impact is limited to re-runninggen-prototo regenerate intermediate proto files.
ApplyToandToMapnow correctly handle message-type fields (e.g.Dimensions) in update-derived messages.ToMapnow correctly handles optional bytes fields ([]bytewithHasPresence) with nil-guard.
0.1.0 — 2026-03-31
- Proto-to-Go code generation pipeline (proto3 only)
- Pure Go proto parser via
protocompile— noprotocdependency - Generated structs with
jsontags and optionalgormtags MarshalBinary/UnmarshalBinary— protobuf wire format compatibleUnmarshalBinaryLenient— lenient mode (duplicate fields use last value)Validate() errormethods viabuf/validateannotation syntaxToMap()for update derived messages (GORM partial update)- Derived message generation (
update_message/create_messageannotations) gen-protosub-command for intermediate proto generation- Service interface generation (
*.pb.rpc.go) - gin HTTP handler factory generation (
*.pb.http.go) c.Error+DefaultErrorHandlermiddleware pattern- Comment passthrough (struct, field, enum, service, handler)
- Embedded
gcode/options.protoandbuf/validate/validate.proto - Public runtime packages:
runtime,validateruntime,httpruntime - doc.go for all 4 public packages (
options,runtime,validateruntime,httpruntime) - CONTRIBUTING.md and MIT LICENSE
- Chinese/English documentation split (README.md / README.zh-CN.md, docs/.md / docs/.zh.md)
- Complete documentation suite: Getting Started, Architecture, Annotations Reference, Design Decisions (Chinese and English)
- Enum and nested message examples in Getting Started guide
- CLI reference (
gcode -houtput) in Getting Started guide - curl examples for HTTP service in Getting Started guide
- JSON tag naming rule (snake_case → camelCase) explanation in Getting Started guide