NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #5212 most downloaded on pub.dev
BLoC and Cubit observer for ISpect with event, transition, change, error, completion, and redacted metadata logging.
Last release 2 days ago
05 Oct 2026
Ships on a steady schedule
a new release about every 1 weeks
Most releases are documented
notes for 49 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
247 releases · first in 2025
One column per month.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Layout inspector breadcrumb: The selected widget's hit-test ancestor chain (Row, Column, Stack, Padding, SizedBox, Align, and other meaningful render
ActionChip, Chip, FilterChip, and InputChip previously routed every tap to the label slot, hiding the avatar Icon from the inspector path. Tapping the avatar now correctly selects it.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 fi
ISpectSettingsState.toJson() no longer throws when disabled_log_types is non-empty. toMap() now returns a List<String> for that field instead of an unmodifiable Set.Nothing published for this version
Nothing published for this version
Unified `trace()` pipeline: All logging now flows through one structured pipeline with consistent correlation across every layer.
trace() pipeline: All logging now flows through one structured pipeline with consistent correlation across every layer.NetworkRequestLog, DioResponseLog, BlocLifecycleLog, …) are replaced by a metadata-driven ISpectLogData, with field accessors like isNetwork and httpStatusCode moved into extensions. See the migration guide below.ISpectLogType is now a final class (no longer an enum): ISpectLogType.values becomes ISpectLogType.builtIn and exhaustive switches no longer apply, but custom types are first-class - write const ISpectLogType('my-key', category: 'firebase') directly.ISpectLogData.id is now a 26-character ULID instead of a per-isolate int - globally unique, lexicographically sortable, and JSON round-trippable. Equality uses the id alone, which fixes deduplication of persisted history.ispect_layout: New standalone visual layout inspector - tap any widget to read its size, constraints, padding, decoration, text styles, transform, and clip shape, or compare two widgets for the pixel gap. Forked from inspector with expanded render-object coverage.SafePluginScreen and a global ErrorWidget override keeping third-party plugin failures from taking down the host UI.ISpectLogType instances with their own category, title, color, and icon, safely merged with the built-in entries.packages/ispectify_db/example.trace(), traceAsync(), traceSync(), and traceTransaction() for correlated logging, plus domain extensions (authTrace(), storageTrace(), push(), analyticsEvent(), paymentTrace(), grpcTrace()).initialPanelExpanded, configurable decimalPlaces, smart panel positioning, shape-border and border-radius extraction, and globally-transformed hit testing.consoleMessage parameter on trace, network, WebSocket, and BLoC logs tailors IDE console output without touching structured metadata.ISpect.logger: Constructed on demand, with a developer warning when used before ISpect.run.RedactionService, with optional redaction statistics for data and header operations.DbSqlDigest for normalized SQL grouping, DbMessageFormatter for consistent log construction, and new sizeBytes and cacheHit fields.ISpectBlocObserver now auto-correlates events, transitions, and changes.ISpectNavigatorObserver.observers() publishes the installed observer in ISpectNavigatorObserver.current, and ISpectBuilder.wrap falls back to it - the quick-start no longer needs the same observer shared between MaterialApp.navigatorObservers and ISpectOptions.observer. An explicit ISpectOptions.observer still wins.ISpectScopeController.of(context) → use ISpect.read(context). The old method stays as a forwarder and will be removed in 6.0.0.requestFilter, responseFilter, errorFilter) on ispectify_dio, ispectify_http, and ispectify_ws → use the new composable filter chain. Existing callbacks keep working as forwarders and will be removed in 6.0.0.ISpectBuilder(...) constructor → use ISpectBuilder.wrap(...), which short-circuits before building when kISpectEnabled is false (preserving tree-shaking). The constructor will be made private in a stable 5.x release.ISpectLocalizations.delegates(...) → use ISpectLocalizations.delegate(...), which returns only ISpect's delegate and leaves the Global*Localizations to the host. The legacy method works as a forwarder during 5.x and will be removed in 6.0.0.ISpectToaster and clipboard operations by handling BuildContext correctly across async gaps.Offstage / IgnorePointer subtrees, and selection stays on-screen.RenderParagraph actually showing an icon font now displays the glyph and its U+XXXX code point under an ICON section instead of unreadable tofu.describeIdentity and other diagnostic-only formatters were replaced with release-safe equivalents, so the layout inspector no longer throws or leaks debug data in profile and release builds.JsonScreen.didUpdateWidget compares the data's id, so the viewer no longer rebuilds its tree and discards expansion state when the parent supplies an equal map.ISpectAppBar, EmptyLogsWidget, LogCard, ISpectBuilder) and BLoC/Dio/HTTP pipeline integration tests, and wired up Codecov with a Flutter version matrix.// BEFORE (v4.x): Pattern matching on typed subclasses
if (log is NetworkRequestLog) {
print(log.method);
print(log.url);
}
// AFTER (v5.0): Use ISpectLogDataX convenience getters
import 'package:ispectify/ispectify.dart';
if (log.isNetwork) {
print(log.traceOperation); // HTTP method
print(log.traceTarget); // URL
print(log.httpStatusCode); // from traceMeta
}
// NEW: Trace API for custom operations
logger.traceAsync(
category: authCategory,
source: 'firebase',
operation: 'signIn',
run: () => auth.signIn(email, password),
);
// NEW: Domain extensions
logger.push(source: 'fcm', operation: 'received', messageId: id);
logger.analyticsEvent(source: 'firebase', event: 'purchase');
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →