What's Changed
- Improved performance when viewing large capture files.
- Message filtering now uses the CEL (Common Expression Language) syntax.
- CEL parsing errors are highlighted in red, with detailed error messages shown on hover.
- Added CEL syntax help in UI, see summary below.
- UI enhancements:
- Added option to toggle between UTC and local time.
- Added button to clear the filter string.
New CEL-Based Message Capture Filtering
This release introduces a new filtering language based on CEL (Common Expression Language), replacing the previous syntax. The main features are summarized below.
Available Fields:
message_id(int) – Sequential message identifierstream_id(int) – Stream identifier for the messagedirection(string) – Either"send"or"recv"time(string) – Timestamp in ISO 8601 formatmethod(string) – gRPC method name (e.g.,"/demo.Demo/Countdown")message(string) – Message type name (e.g.,"demo.CountdownReply")peer_address(string) – Remote peer addresscontent(map) – The message payload itselferror(string, optional) – Error message if present
Operators:
==,!=,<,>,<=,>=&&(and),||(or),!(not)in– e.g.,"Countdown" in method
String Methods:
.contains(substring)– Check if string contains substring.startsWith(prefix)– Check if string starts with prefix.endsWith(suffix)– Check if string ends with suffix.matches(regex)– Check if string matches regex pattern
Examples:
method.contains('Countdown')– Methods containing"Countdown"direction == 'recv'– Only received messagesstream_id == 1– Messages from stream 1content.value > 5– Content field value greater than 5method.startsWith('/demo') && direction == 'send'– Combined conditionsmessage.matches('.*Reply')– Messages ending with"Reply"
See cel-js documentation for more details.
Full Changelog: v0.5.0...v0.6.0