dev_log_viewer 0.2.2
dev_log_viewer: ^0.2.2 copied to clipboard
Real-time local log viewer for Flutter/Dart. Streams structured logs from your app to a searchable web UI on localhost.
Changelog #
0.2.2 #
- Non-API log entries now display their structured body. Tags like
PAYMENT,DEMO, or any custom tag that pass abodymap toLogForwarder.send()now expand to show the full JSON — previously only the message text was visible and the body was silently discarded by the UI. - Copy button now works for API error entries. The Dio interceptor
previously formatted error messages as
GET url → 404 · ms, which the parser could not recognise, so copy only produced the raw message line with no response body or error text. Format changed to<-- 404 url · ms(consistent with successful responses) so copy now includes the response body and the Dio error message.
0.2.1 #
key:valuesearch syntax — typeisSettled:truein the search box to filter log entries by a specific JSON field and value. Works at any nesting depth, case-insensitive, and falls back to free-text search when the query doesn't match thekey:valuepattern.- Highlights the key and value terms separately in search results — previously
the literal string
"isSettled:true"was never present in pretty-printed JSON, so nothing was highlighted in kv-mode. - Real-time SSE streaming fixed — events now appear in the browser
instantly without requiring a page reload. Root cause:
dart:io'sHttpResponsebuffers output by default, and Shelf's pipeline never callsflush(). Fixed by bypassing Shelf for the/streamroute and using the rawdart:ioresponse withbufferOutput = falseand an explicitflush()after every event. - SSE reconnect now reloads history to recover any entries missed during a disconnect — the existing ID-based dedup prevents double-rendering.
0.2.0 #
/pingnow reportsstartedAt, used by the client's discovery logic to prefer the most recently started server when several are running for the same project.- Tag filter chips now have a working click handler for
ALL— previously the staticALLbutton never had a listener attached, so the only way back to "show everything" was untoggling every other active tag by hand. - Tags with no dedicated colour (anything outside
API/AUTH/NOTIF/NAV/STORE/PAY/ERR*) get a deterministic colour from the existing accent palette, applied consistently to both the filter chip and the inline badge — previously they fell back to a flat grey with no active-state styling at all. - Sensitive JSON values (
password,pin,token,authorization,access_token,refresh_token,client_secret,cvv) render masked by default in the body viewer; click to reveal. The Copy button always copies the real value regardless of the on-screen mask state. - Copy button now reconstructs a clean request/response summary for
APIentries (--> METHOD url/CODE <-- url, with the real JSON body) instead of just the bare arrow line with no body.
0.1.1 #
- Documentation only — dartdoc comments added across the public API, no behavioural changes.
0.1.0 #
- Initial release.
- Shelf HTTP server with SSE live stream, log store, and built-in web UI.
- Auto-increments port (8181–8190) when the default is already in use.
dev_log_viewerCLI: starts the server.dev_log_setupCLI: one-command onboarding wizard for Flutter/Dart projects.