ispectify
Pure-Dart structured logging, tracing, filtering, history, observers, export, and redaction core for the ISpect toolkit.
6.1.7
4.9K downloads/mo
#3876 most downloaded on pub.dev
yelmuratoff/ispect
What this package is like to depend on
Last release 6 days ago
18 Aug 2026
Ships on a steady schedule
a new release about every 9 days
Most releases are documented
notes for 49 of 68 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
236 releases · first in 2025
167 releases in the last 12 months
see the full history below
Release timeline
236 releases · Jan 2025 to Aug 2026Releases
latest 60 of 236-
7.0.0-dev915 Aug 2026 pre-releaseNothing published for this version
-
7.0.0-dev812 Aug 2026 pre-releaseNothing published for this version
-
7.0.0-dev712 Aug 2026 pre-releaseNothing published for this version
-
7.0.0-dev604 Aug 2026 pre-releaseNothing published for this version
-
7.0.0-dev501 Aug 2026 pre-releaseNothing published for this version
-
7.0.0-dev430 Jul 2026 pre-releaseNothing published for this version
-
7.0.0-dev327 Jul 2026 pre-releaseNothing published for this version
-
7.0.0-dev227 Jul 2026 pre-releaseNothing published for this version
-
7.0.0-dev1018 Aug 2026 pre-releaseNothing published for this version
-
6.1.725 Jul 2026Release notes
Open source →Bug Fixes
- JSON Lines export: Logs containing client-specific objects in nested diagnostic metadata are now exported without losing the original log fields.
-
6.1.625 Jul 2026Release notes
Open source →Security
- Redaction coverage: Trace and database error strings, URL fragments, and numeric JSON fields are now redacted, and the default sensitive-key set covers
session,passphrase,credential(s), andpincode. - Fail-closed defaults: Depth-limited key redaction, filtered log file export, and JSON-tree value copy now redact by default instead of passing data through unredacted.
- Redaction coverage: Trace and database error strings, URL fragments, and numeric JSON fields are now redacted, and the default sensitive-key set covers
-
6.1.524 Jul 2026Nothing published for this version
-
6.1.421 Jul 2026Release notes
Open source →Bug Fixes
- Log detail panel: Opening a log from search results now preserves the focused match and list position.
- Log search navigation: Previous/next match arrows now scroll to the correct card when HTTP request and response logs are grouped into transactions.
- Web/WASM log files: Browser Blob validation now behaves consistently in JavaScript and WebAssembly builds.
- Web log imports: Malformed structured text is no longer misclassified as JSON, and file stream failures stop processing without a second success callback.
Code Quality
- Deprecation schedule: Compatibility APIs retained in 6.x now have a consistent
7.0.0removal target and migration inventory.
CI
- Package gates:
ispectify_riverpodand the web logs viewer now run analyzer and test coverage checks in CI.
-
6.1.317 Jul 2026Release notes
Open source →Improvements
- High-volume profiling: The benchmark now exercises the real ISpect logger and log viewer, with isolated filters-off/on frame summaries and recorded display metadata.
-
6.1.213 Jul 2026Release notes
Open source →Bug Fixes
- JSON log sharing: Sharing all logs no longer fails when diagnostic metadata contains values such as
Duration,Uri, enums, or client-specific objects.
- JSON log sharing: Sharing all logs no longer fails when diagnostic metadata contains values such as
-
6.1.113 Jul 2026Release notes
Open source →Improvements
- Published benchmark results: CI-generated AOT hot-path and Android release-footprint metrics are now linked from the performance guide; physical-device startup and frame profiling remain explicitly documented as pending measurements.
- Faster onboarding: the README now opens with a copy-paste Flutter setup, an integration package selector, and a documented
ispectifylogger-only path. - Focused examples: the
ispectshowcase now has separate network, WebSocket, database, BLoC, Riverpod, and routing targets; BLoC and Riverpod also include standalone pure-Dart examples. - Architecture walkthroughs: new integration guidance shows where ISpect fits in Clean Architecture, BLoC, Riverpod, and Navigator-based routing.
- Database setup guidance: the database guide now passes
ISpectDbConfigdirectly to traced calls, matching the public API.
-
6.1.012 Jul 2026Release notes
Open source →Security
- URL fragment redaction: sensitive values in a URL fragment — such as the OAuth
#access_token=…redirect — are now masked in logs, error messages, and exports. - Export credential scrubbing: URL credentials and
Bearer/Basic/Tokenvalues are now stripped from text, Markdown, CSV, and JSON Lines exports even when no redaction keys are supplied. - Trace
valueredacted by default: thevaluecaptured bytraceand its async/sync/stream variants is now redacted alongsidemetaandtarget; opt out withISpectTraceConfig(redact: false). - Wider export redaction: CSV targets, exported stack traces, and the JSON Lines fallback are now redacted, and a failed JSON encode surfaces the error instead of being dropped.
- Network redaction fails closed: redacted network payloads never fall back to raw data when a value can't be processed.
Bug Fixes
- WebAssembly compatibility: opt-in rolling file history no longer prevents Web/WASM builds.
- Web-safe log IDs: log entry IDs stay correctly time-sortable on web builds.
copyWithkeeps identity:ISpectLogData.copyWith/copypreserve the originalidso copies compare equal and de-duplicate correctly; passid:for a new one.- Observer recursion: a log emitted synchronously from inside an observer is dropped instead of recursing.
- WebSocket log keys:
wsSend/wsReceivealways usews-sent/ws-received— and error framesws-error— regardless of the operation name. - Request ID collisions: network request IDs no longer collide between separate app runs started close together.
Improvements
- Rolling file history: opt-in
RollingFileLogHistorypersists redacted daily JSON Lines with bounded retention, archive support, and legacy 4.x daily-file compatibility. metaongraphqlTraceandsse: both now accept an optionalmetamap, matching the other trace helpers.- Consistent projection warnings: a throwing
projectResult/projectEventis logged as a warning across all trace variants instead of being silently dropped in streams. - Private keys in lists: internal
_-prefixed keys nested inside list elements are now stripped from exports.
- URL fragment redaction: sensitive values in a URL fragment — such as the OAuth
-
6.0.703 Jul 2026Release notes
Open source →Improvements
- Kurdish localization: ISpect's UI is now translated into Sorani (
ckb) and Kurmanji (ku); both resolve automatically throughISpectLocalization.supportedLocales. Apps that display ISpect in these locales own their Material/Cupertino delegates, as with every other locale.
Thanks @RekanAnwar
- Kurdish localization: ISpect's UI is now translated into Sorani (
-
6.0.603 Jul 2026Nothing published for this version
-
6.0.528 Jun 2026Release notes
Open source →Improvements
dart:developerconsole output: Opt into DevTools-native structured logging withISpectBaseLogger(output: developerLogOutput)— each entry becomes onelog()call (boxed output stays intact) with the log level mapped through. The defaultprint/console output is unchanged (#85).
-
6.0.428 Jun 2026Release notes
Open source →Improvements
- Pretty/boxed console logs: Opt into framed, visually-separated console output via
ConsoleSettings(formatter: const BoxedLogEntryFormatter()), or supply any customILogEntryFormatter. The compact default is unchanged (#85).
- Pretty/boxed console logs: Opt into framed, visually-separated console output via
-
6.0.327 Jun 2026Release notes
Open source →Bug Fixes
- WebAssembly (WASM) support:
ispectis WASM-ready and supports all six platforms (Android, iOS, web, Windows, macOS, Linux).flutter build web --wasmnow succeeds; log export uses the browser download on web and WASM, and the native filesystem on other platforms.
- WebAssembly (WASM) support:
-
6.0.226 Jun 2026Release notes
Open source →Security
- Redaction hardened across capture and export: Sensitive keys are matched more broadly (camelCase and whitespace-trimmed forms), the default sensitive-key set is broadened, and credential/PII values are fully masked. Redaction now fails closed — a payload that can't be processed is masked rather than passed through.
- Diagnostics redacted everywhere they leave the app: Network URLs (including in generated cURL), database values and error messages, BLoC/Riverpod console output, navigation route arguments, and every export path (JSON, text, Markdown, file share, and clipboard copy) are redacted by default.
- One-switch redaction control: A single source of truth turns redaction on or off everywhere at once —
ISpectRedaction.enabled = false(orISpect.run(redactionEnabled: false)) disables masking across network, database, BLoC/Riverpod, navigation, and all export paths. On by default; disabling is a deliberate opt-out. - Inert in production builds: When ISpect is compiled out (
ISPECT_ENABLEDomitted), observers stay silent and the global logger retains no history and writes nothing to the console, so diagnostics don't accumulate in release builds.
-
6.0.126 Jun 2026Nothing published for this version
-
6.0.022 Jun 2026Release notes
Open source →Improvements
- Owned dark theme by default: ISpect now ships its own flat dark design across all surfaces — logs, JSON viewer, composer, sheets, inspector, and the performance overlay — independent of the host app, with a paired light variant. Choose the mode via
ISpectTheme.themeMode, or setISpectTheme.useHostColors: trueto inherit the hostColorSchemeas before. - Squircle surfaces: Cards, buttons, fields, sheets, tiles, and the inspector overlay use continuous (squircle) corners for a smoother, more cohesive look.
ispectify_riverpod: New package —ISpectRiverpodObserverlogs provider lifecycle underriverpod-*keys (closes #80).- Provider-agnostic
ispectify_ws: WebSocket diagnostics now log any client (ws,socket_io_client, andweb_socket_channeladapters ship in the example), plus a newws-statelog type for connection lifecycle. - HTTP composer (mini-Postman): Replay a captured request or compose a new one and send it through your own client via
ISpect.registerSender(...); the result lands back in the network logs. Redacted values are never resent. - Compact network URLs: Collapsed transactions show only the path and query; the full URL stays in the expanded view. On by default, toggle in Settings.
- Clearer network cards: Per-method colored badges, a status-colored accent bar, de-duplicated expanded sections, and higher-contrast rows.
- Richer widget inspector: Property chips for composite values (offset, border, gradient, shadow), image/SVG source and decode details, correct selection boxes for rotated and skewed widgets, and grouped
RichTextspans. ISpectPerformanceOverlayrebuilt: Cross-platform (web + desktop) overlay with UI/raster/total bars, FPS, avg/p99 and jank stats, plus an opt-inenableJankLoggingcallback for severe frames.- Draggable panel 3.0.0: More reliable hide/reveal and a content-sized adaptive layout; customize it fully via
ISpectOptions.panelBuilder. - Export metadata:
ISpectOptions.metadataProviderembeds app/device details into exported and shared logs via the typedISpectMetadata(host-supplied and not redacted — keep secrets and PII out).
Behavioral Changes
- BLoC observer keys: Granular
bloc-event,bloc-transition,bloc-state,bloc-create,bloc-close,bloc-done,bloc-errorreplacestate-change/state-error, andmetakeys are now kebab-case (BlocJsonKeys.*). Update any filters keyed on the old names. - Fuller payloads by default: BLoC and Riverpod now log full event/state values instead of only the runtime type (
int → intbecomes0 → 1). UseISpectRiverpodSettings.compact, or set BLoC'sprintEventFullData/printStateFullDatatofalse, when state may carry PII. The oldISpectBlocSettings.verbosenow matches the default and is deprecated. ISpect.rununcaught-error hook: TypedonUncaughtError(Object error, StackTrace? stack)replacesonUncaughtErrors(List<dynamic>).ispectify_wsdrops thewsdependency: Copy the adapter from the package example and addwsto your app;ISpectWSInterceptorSettingsand thews-sent/ws-received/ws-errorkeys are unchanged.
Bug Fixes
- Typed request bodies: DTOs (e.g. Retrofit /
json_serializablemodels) now render as their JSON shape instead ofInstance of ...inispectify_dioandispectify_wslogs, with redaction reaching their nested fields. ispectify_dio: Responses no longer stay stuck on "Pending" when a downstream interceptor rewrites the request viacopyWith.- Reliable error capture: Flutter, platform, and zoned errors now report the original thrown object and stack trace, and
ISpect.run'sonInit/onInitializedrun inside the guarded zone so binding-setup errors are no longer dropped. - Navigation logging: A page opened from under a modal (e.g. pushed from a bottom sheet) is logged as a page transition again instead of being dropped.
- Logs screen reactivity: "Clear history" empties the list immediately, and view-controller history changes refresh the UI without a new log emission.
- Network status code shown again: Grouped transactions display the response status-code chip (it was read from the wrong metadata key).
- Color picker accuracy: The sampled colour now matches the pixel under the crosshair, reports the true colour for translucent and anti-aliased pixels, and no longer drifts to a neighbour when you lift your finger.
Code Quality
- Sealed core classes: Several data and utility classes (
LogDetails,RedactionResult,CurlUtils,JsonTruncator,NetworkPayloadSanitizer, and others) are nowfinal/abstract final.RedactionService,ISpectErrorHandler,NetworkTransaction, and the two log formatters stay open for subclassing.
- Owned dark theme by default: ISpect now ships its own flat dark design across all surfaces — logs, JSON viewer, composer, sheets, inspector, and the performance overlay — independent of the host app, with a paired light variant. Choose the mode via
-
6.0.0-dev.3522 Jun 2026 pre-releaseNothing published for this version
-
6.0.0-dev.3422 Jun 2026 pre-releaseNothing published for this version
-
6.0.0-dev.3322 Jun 2026 pre-releaseNothing published for this version
-
6.0.0-dev.3222 Jun 2026 pre-releaseNothing published for this version
-
6.0.0-dev.3121 Jun 2026 pre-releaseNothing published for this version
-
6.0.0-dev.3019 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.2819 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.2718 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.2617 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.2517 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.2417 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.2315 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.2215 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.2112 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.2012 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.1909 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.1808 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.1703 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.1603 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.1502 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.1402 Jun 2026 pre-releaseNothing published for this version
-
5.2.0-dev.1331 May 2026 pre-releaseNothing published for this version
-
5.2.0-dev.1231 May 2026 pre-releaseNothing published for this version
-
5.2.0-dev.1129 May 2026 pre-releaseNothing published for this version
-
5.2.0-dev.1025 May 2026 pre-releaseNothing published for this version
-
5.2.0-dev.924 May 2026 pre-releaseNothing published for this version
-
5.2.0-dev.824 May 2026 pre-releaseNothing published for this version
-
5.2.0-dev.724 May 2026 pre-releaseNothing published for this version
-
5.2.0-dev.623 May 2026 pre-releaseNothing published for this version
-
5.2.0-dev.522 May 2026 pre-releaseNothing published for this version
-
5.2.0-dev.322 May 2026 pre-releaseNothing published for this version
-
5.2.0-dev.222 May 2026 pre-releaseNothing published for this version
-
5.2.0-dev.122 May 2026 pre-releaseNothing published for this version
-
5.0.419 May 2026Release notes
Open source →Added
- Layout inspector breadcrumb: The selected widget's hit-test ancestor chain (Row, Column, Stack, Padding, SizedBox, Align, and other meaningful render objects) is now surfaced as horizontally scrollable chips under the panel title. Tap any chip to re-target the inspector without re-tapping the screen.
Improvements
- Breadcrumb navigation: Auto-scrolls the selected chip into view on every selection change, and uses clamping scroll physics so the list never overscrolls or bounces.
Bug Fixes
- Layout inspector — icon selection inside chips: Material
ActionChip,Chip,FilterChip, andInputChippreviously routed every tap to the label slot, hiding the avatarIconfrom the inspector path. Tapping the avatar now correctly selects it.
-
5.0.319 May 2026Release notes
Open source →Added
- The log viewer app bar now surfaces aggregate log statistics and a filter count badge, so active filters and totals are visible without opening the filter sheet.
- The JSON viewer breadcrumb bar auto-scrolls to the end as you drill in, keeping the current path segment in view on deep structures.
Improvements
- The JSON viewer's path navigation got a visual refresh: updated segment colors, tighter spacing, and tap-to-jump segments. The breadcrumb bar moved to its own file for easier reuse.
- App bar leading icons gained consistent padding and dynamic width so action targets stay tappable across varied layouts.
Fixed
ISpectSettingsState.toJson()no longer throws whendisabled_log_typesis non-empty.toMap()now returns aList<String>for that field instead of an unmodifiableSet.