jala_ui 0.8.2
jala_ui: ^0.8.2 copied to clipboard
Inspector UI for Jala: filtered call list, detail tabs, call diff, virtualized JSON tree, cURL/HAR import, throttle screen, session export/import, and overlay bubble.
0.8.2 — 2026-08-11 #
Added #
JalaLocalizations,JalaLocalizationsEn,JalaLocalizationsIdandJalaLocalizations.delegate— the inspector's UI strings, in English and Indonesian. Hosts select the language throughJalaConfig.localeon thejalafacade rather than installing the delegate by hand.JalaLocalizations.of(context)never returns null and never throws: these widgets are individually exported and a host may mount one anywhere, so a missing delegate degrades to English rather than crashing.
Fixed #
- The filter grammar help sheet could overflow its bottom sheet. Its content column was never scrollable; English happened to fit, but a longer locale or a shorter screen did not.
0.8.1 — not published separately #
Prepared and tagged in the repo, then folded into 0.8.2 before it reached pub.dev. Everything below shipped in 0.8.2; there is no 0.8.1 on pub.dev.
Fixed #
- Exports and copies reported success even when they had failed. Every
action awaited
Clipboard.setDatawith no error handling and then showed "Copied …" unconditionally. On Android the clipboard rides the Binder transaction buffer (~1 MB, shared process-wide), so a session export or a large response body silently delivered nothing while the UI claimed it had worked — the reported "export doesn't do anything" symptom. Snackbars now name the destination and size, and surface real failures. - Long filter text overflowed the empty state. "No calls match …" echoes the filter verbatim and was unbounded, so pasting a session export into the filter field overflowed the layout by hundreds of pixels. The echo is now clamped, in both the call list and the WebSocket frame list.
Added #
JalaExportSink/JalaExportOutcome/JalaClipboardExportSink— the export destination is now swappable;package:jalaships a file-backed implementation.jalaCopyToClipboard/jalaCopyMessagehelpers.
0.8.0 — 2026-08-03 #
Fixed #
- The overlay bubble keeps its position when the inspector closes.
JalaOverlayunmounts the bubble while the inspector is open, which disposed theStateholding its position — so closing the inspector snapped it back to the default right-edge spot every time, discarding wherever the user had dragged it. The dragged position is now retained across mount/unmount (JalaOverlayButton.resetPositionForTestingclears it in tests) and re-clamped to the current bounds on read, so a position stored before a rotation or resize cannot strand the bubble off-screen. - Replay is disabled, with an explanatory tooltip, for a call whose request body was truncated at capture time; replaying it would have sent an incomplete body. Edit & resend stays available as the escape hatch.
Added #
- gRPC presentation (Track G, G3): call tiles show
service/methodwith an RPC-kind chip and the gRPC status name instead of the HTTP method and code,JalaTheme.statusColorForcolours bygrpcStatusCodefirst (a failed RPC rides on an HTTP 200, so status-only colouring painted every NOT_FOUND green), the detail screen renders trailers as their own section and explains why a streaming RPC has no response body, and agRPCquick-filter chip joins GraphQL/WS.
Changed #
parseQueryParams/JalaQueryParammoved tojala_core(they were never exported from this package's barrel). The HAR exporter now shares the same parser.
0.7.0 #
- Call detail Request tab: new Query parameters section breaking the
URL's query string into decoded name/value rows — percent-decoded
(
item_type%5B%5Dreads asitem_type[]), wire order and repeated keys preserved, and params sent without a value shown as(no value)rather than dropped. Previously query params were only visible mashed into the single-line URL row. JalaThemeScope.sharedControllerexposes the controlleroffalls back to, so an embedder pushing Jala screens onto a host navigator can bind them all to one theme mode;JalaInspector.route()now defaults to it. Fixes pushed screens ignoring the AppBar theme toggle.
0.6.0 #
- Call diff:
JalaCallDiffScreen+JalaJsonDiffView(unified status / header chips / body tree with add/remove/change colors). Entry points: Compare with… on call detail, multi-select ready path via route helper. - Import UI: inspector overflow Import cURL… (opens request composer prefilled) and Import HAR… (session import, same imported-session banner / replay-disabled UX as session import).
- JSON tree virtualization:
JalaJsonTreeflattens visible rows into aListView.builder(true virtualization when height is bounded; flat shrink-wrap when nested in a parent scroll view). Search, expand-all / collapse-all, type colors, and long-string expand preserved.
0.5.3 #
- Session menu: export full / no bodies / headers only; import dialog warns about log-dump sensitivity and size limit (pairs with jala_core 0.5.3).
0.5.2 #
- Headers: stacked name/value layout (full-width wrapping values) with per-value copy — long names no longer crush the value column. Search within headers; collapse common noise (date/server/…); collapse cookie/authorization under Sensitive.
- Call list: path is primary (up to 2 lines, monospace); query string
included; host stays secondary. Status code uses status color; trailing
shows duration + relative time (
12s ago); long-press copies full URL; compact density toggle in the AppBar. - Filter: quick chips (
4xx,5xx,Errors,Mocked,GraphQL,WS); clearer hint contrast / filled field. - Detail AppBar: method + multi-line path; Overview Path row.
0.5.1 #
- Pub metadata:
homepage,issue_tracker, description covers throttle screen and session export/import (docs-only).
0.5.0 #
JalaThrottleScreen(inspector AppBar speed icon): preset radio list (Off + Slow 3G/Fast 3G/Flaky/Offline, humanized), a custom profile editor (latency/jitter/download/upload fields, drop-rate slider), and a host-pattern scope field. Applies viaJalaBinding.instance.throttleRegistry.setActive/clear.- Active-throttle banner above the inspector list ("Throttling:
- Session actions in an inspector AppBar overflow menu: Export
session (copies
JalaSessionCodec.encodeoutput to the clipboard with an entry-count snackbar) and Import session (paste-JSON dialog with a Replace/Append choice; malformed input shows an inline error instead of crashing). WhileJalaStore.isViewingImport: a banner offers Clear back to live capture, and imported entries disable Replay/Mock this/Edit & resend on the detail screen with an explanatory tooltip. - Call detail Response tab renders a subscription payload timeline (index,
size; tap opens a body view reusing the WS frame preview-sheet pattern)
above the regular body section for
is:subscriptionentries, with a trimmed-count note when the ring buffer has dropped older payloads. - Filter help documents
is:subscription.
0.4.0 #
- Merged inspector list:
NetworkCallEntryandWsConnectionEntryinterleave chronologically. GraphQL entries showoperationNameas the title with aQUERY/MUTATIONmethod chip; WS entries show aWSchip, uri, live status color (connecting/open/closed/error), and frame count, updating live fromwatchWs. JalaWsDetailScreen: connection header (uri, status, open/close times, close code/reason) plus a frame timeline (direction arrow, relative timestamp, size) with a substring filter box; tapping a text frame opens a body view that reuses the JSON tree when the frame parses as JSON.- Call detail Request tab for GraphQL entries (
is:graphql) becomes two panes: Query (monospace, selectable) and Variables (JSON tree). - WS entries hide cURL/HAR export actions (not representable) and instead offer copy frame text / copy connection summary as JSON.
- Filter help documents
is:ws,is:graphql, andop:<name>.
0.3.0 #
- Mocks screen (list / enable / delete) and mock rule editor.
- Mock this on call detail prefills a rule from a captured call.
- Edit & resend composer for modified replay.
- Call list bolt badge for mocked entries; filter help documents
is:mocked; inspector app bar opens Mocks with enabled-count badge.
0.2.0 #
- Image preview:
BodyKind.imagerenders an inlineImage.memorywith size/mime caption and full-screen pinch-zoom on tap. - Multipart request bodies render as a Name / Filename / Content-Type /
Size parts table instead of the raw
@multipartJSON tree. - Pending list tiles show a determinate progress bar when totals are known; call detail Overview shows a Transferred row (live while pending, final snapshot after completion).
0.1.1 #
- Add pub.dev topics.
0.1.0 #
JalaInspectorScreen— DevTools-style filter bar with live filtering, call list, and clear/copy-HAR/theme-toggle app bar actions.JalaCallDetailScreen— Overview / Request / Response tabs with a headers table, body viewer, and copy body/cURL/Dart snippet/HAR/replay actions.JalaBodyView+JalaJsonTree— collapsible pretty-JSON tree with in-body search, plain-text view, and a binary/too-large fallback.JalaOverlayButton— draggable floating bubble with a pending/error count badge, meant to be dropped into a host app's rootOverlay.JalaTheme/JalaThemeController— explicit Material 3 light/dark/ system theming that never inherits the host app'sTheme.JalaFilterHelpSheetpopover documenting the filter grammar.- Status color coding: pending spinner, 2xx green, 3xx blue, 4xx orange, 5xx/error red, cancelled grey.