v1.0.0
Version One!
This release marks grpcui
reaching a stable state with fundamental features all working correctly.
Changes
There are numerous changes and fixes since the previous release, v0.2.1.
Web UI
These changes impact usage of both the command-line tool and the Go packages.
- The web UI would reject values greater than 2^31 for
uint32
andfixed32
field types, making it impossible to enter half of the valid values for these fields. This has been corrected. - A new Request Timeout field has been added to the bottom of the Request Form tab, allowing a deadline to be set for the invocation.
- There were previously numerous issues in handling of data entered/pasted into the Raw Request (JSON) tab. All of them have been corrected:
- The UI was strictly requiring strings for 64-bit integers, but the JSON mapping states that numbers are accepted, too. So now one can enter a JSON blob that uses numbers, and they are handled correctly.
- This UI was requiring that enum values always use the value names. However, the JSON mapping states that the numeric value is also acceptable. So now one can enter a JSON blob in that uses enum value numbers, and they are handled correctly.
- Field names in the JSON blob were generally handled incorrectly. The logic was always requiring JSON keys to match the protobuf field name. However the JSON mapping states that the name is converted to camel-case and that the
json_name
field option can override this to a custom JSON key. So now the JSON keys can refer to the correct JSON field names and be successfully processed. Instead of requiring the protobuf field name, it only accepts protobuf field names as a last resort (if a given JSON key does not match the camel-case version of a field name or ajson_name
option).
Command-line tool
- If the process's stdin is a terminal, then the program assumes the user is running the tool interactively, so an attempt will be made to automatically open a browser window pointed at the UI. This can be overridden via a new
-open-browser
flag.
Go package "github.com/fullstorydev/grpcui"
- The
AllFilesViaReflection
andAllMethodsViaReflection
functions have been updated to accept agrpc.ClientConnInterface
argument, instead of a*grpc.ClientConn
. This makes them more flexible as any concrete type can be used that implements the correct interface. This change to the API should be backwards-compatible at the source level.
Go package "github.com/fullstorydev/grpcui/standalone"
- The
HandlerViaReflection
function has been updated to accept agrpc.ClientConnInterface
argument, instead of a*grpc.ClientConn
. This makes it more flexible as any concrete type can be used that implements the correct interface. This change to the API should be backwards-compatible at the source level. - The CSS, JS, and the actual HTML code served by the standalone handler can all now be overridden/augmented, to provide more customization to embedded UIs. Previously, using custom CSS, JS, or HTML required falling back to the low-level primitives in the
github.com/fullstorydev/grpcui
package. But now they can be supplied as options tostandalone.Handler
to create a single, fully-self-contained handler which serves customized content.