jala 0.8.2
jala: ^0.8.2 copied to clipboard
In-app Flutter network inspector with replay, filter grammar, redaction, throttling, session share, call diff, and cURL/HAR import. Facade over jala_core + jala_ui.
0.8.2 — 2026-08-11 #
Added #
-
The inspector speaks Indonesian.
JalaConfig.localeselects the UI language —'id-ID'(or'id') for Indonesian, unset for English:Jala.initialize( config: JalaConfig(enabled: kDebugMode, locale: 'id-ID'), );Opt-in, and unset means English — not "follow the device." An app on an Indonesian phone renders exactly as it did before this setting existed unless you pass
locale. Following the platform locale automatically would change behaviour for every existing host, so it is deliberately not done. Unsupported tags fall back to English rather than throwing.No new dependencies. The string tables are hand-rolled rather than generated from ARB, so Jala still pins nothing — in particular no
intlversion — onto your app.Deliberately left in English, so a half-translated UI doesn't read as a bug: the filter DSL (
status:,is:ws,op:), HTTP method names, gRPC status names, byte/duration formatting, every exported artifact (HAR, cURL, session JSON), and the handful of Flutter framework strings inside the inspector ("Back", "Close") — those would needflutter_localizations, which is theintlpin above. Indonesian also keeps the developer vocabulary its audience already speaks in English:request,response,header,payload,replay,mock.See CONFIG.md.
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.
Android bug-fix release. All four fixes were user-reported and are verified on a physical device (Xiaomi, Android 13 / API 33).
Fixed #
- Text fields in the inspector ignored Backspace on Android. Delete
arrives from Gboard as a
KEYCODE_DELkey event, which needsDefaultTextEditingShortcutsto become a delete intent; the inspector is a sibling of the host app and so never inherited the shortcut/action chainWidgetsAppinstalls. iOS was unaffected because its soft keyboard sends delete over the IME channel. Affected every field — filter bar, throttle host pattern, mock editor, request composer. - Escape, Tab and Enter did nothing inside the inspector, for the same
reason (
WidgetsApp.defaultShortcuts). Escape now dismisses dialogs and sheets, Tab traverses, Enter/Space activates. Reachable anywhere there is a keyboard: web, Chromebook, Android tablet, desktop.
Changed (behavior) #
-
The system back button/gesture now belongs to the inspector while it is open. It pops the inspector's own stack, then closes the inspector, and never reaches the host app. Previously it fell through to the host — popping the host's route, or exiting the app entirely when the host sat on its root route.
Two mechanisms were at fault:
WidgetsBindingdispatches to observers in registration order and the host'sWidgetsAppalways registered first, so the inspector's handler never ran; and the host'sWidgetsAppreports its own pop capability to Android, so with nothing to pop the platform finished the activity without ever dispatching to Dart.Jala now registers its back observer in
Jala.initialize()(beforerunApp, so it precedes the host), claimssetFrameworkHandlesBackwhile open, and handles the predictive-back gesture (API 33+).Note for hosts:
setFrameworkHandlesBack(true)is not handed back on close, because the host's own value is unknowable from a sibling widget and guessing wrong would strand a host that still has routes to pop. The practical effect is that back is routed through Dart, where Jala declines it and the host'sWidgetsApphandles it exactly as before.
Added #
Jala.enableFileExport(directory)/Jala.disableFileExport()— routes session and HAR exports to timestamped files instead of relying on the clipboard alone. Under 512 KB the clipboard is still written too, so pasting into a ticket keeps working. Web has no file system and falls back to the clipboard. Seedocs/ADOPTION.md.JalaExportSink/JalaExportOutcome(fromjala_ui) for hosts that want a custom export destination.
0.8.0 — 2026-08-03 #
Fixed #
- Picks up capture-time body redaction on every adapter, correct Dio bandwidth throttling, a bubble that keeps its dragged position across opening and closing the inspector, and replay that refuses to resend a truncated request body. See the individual package changelogs.
0.7.0 #
- Fix: screens pushed from the inspector (call detail, diff, mocks, mock
editor, request composer, throttle, WebSocket detail) ignored the AppBar
theme toggle and always rendered in system brightness.
JalaThemeScopewas built inside the root route'spageBuilder, and a pushed route is a sibling overlay entry rather than a descendant of that route, so it saw no scope and fell back to a different controller. The scope now sits above the inspector'sNavigator.
0.6.0 #
- Lockstep with
jala_core/jala_ui0.6.0: call diff, virtualized JSON tree, cURL + HAR import. No changes to theJalafacade API itself — use the inspector overflow menu / Compare with…, or driveJalaCurlCodec/JalaHarCodec/JalaEntryDifffrom app code (see the example Inspect deeper section).
0.5.3 #
- Docs: mock persistence security notes; lockstep with core/ui 0.5.3 security hardening.
0.5.2 #
- Overlay: hide the floating J bubble while the inspector is open so
it does not cover list/detail actions (pairs with
jala_ui0.5.2 UX). - Lockstep with
jala_ui/jala_core0.5.2.
0.5.1 #
- Pub metadata:
homepage,issue_tracker, package screenshots on pub.dev, and a clearer description (throttle + session share). - Docs: link brownfield ADOPTION
guide; note Flutter
>=3.35and lockstep 0.5.x versions.
0.5.0 #
- Lockstep with 0.5.0 core/ui: network throttling, session export/import,
GraphQL subscription payload timeline,
is:subscriptionfilter. No changes to theJalafacade API itself — open the inspector speed icon / overflow menu, or driveJalaBinding.instance.throttleRegistryandJalaSessionCodecfrom app code (see the example Power tools section).
0.4.0 #
- Lockstep with 0.4.0 core/ui: GraphQL operation metadata, merged
WebSocket list + connection detail,
op:/is:graphql/is:wsfilters. No changes to theJalafacade API itself — attachjala_graphql(JalaGraphQLLink) orjala_websocket(JalaWebSocketChannel.wrap) alongsidejala_dio/jala_httpto capture GraphQL and WebSocket traffic.
0.3.0 #
Jala.enableMockPersistence(directory)— file-backed mock rules that survive app restarts (IO platforms; no-op store on web).- Lockstep with 0.3.0 core/ui: mocking UI,
is:mocked, edit-and-resend.
0.2.0 #
- Lockstep release with
jala_core/jala_ui0.2.0: image preview, multipart parts table, and transfer progress in the inspector UI. - Pulls in the 0.2.0 capture surface (image bodies, multipart model,
NetworkProgressEvent) via dependency bumps.
0.1.2 #
- Fix: snackbar actions (copy cURL/Dart/HAR/body, replay feedback) threw
inside the inspector overlay and could crash release builds — the overlay
now provides its own
ScaffoldMessenger.
0.1.1 #
- Add pub.dev topics.
- Add a minimal
example/app so pub.dev renders the Example tab.
0.1.0 #
Jala.initialize()— idempotent setup that defaultsenabledtokDebugMode.Jala.open()/Jala.close()/Jala.isOpento control the inspector surface, plusJala.store/Jala.busaccessors for building custom client integrations.JalaOverlay— drops the floating bubble and full-screen inspector host above the host app; returnschildunchanged with zero overhead when Jala is disabled or uninitialized.- Own
Navigatorand explicit theme for the inspector surface, isolated from the host app's navigation stack andTheme. - Correct Android back-button handling: back pops the inspector's own navigator, then closes the inspector, before ever reaching the host app.
