ispectify_db 6.0.0-dev.35
ispectify_db: ^6.0.0-dev.35 copied to clipboard
Passive database observability for ISpect with operation tracing, timings, slow-query logs, result projection, and redaction.
Changelog #
6.0.0-dev.35 #
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.
5.0.4 #
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.3 #
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.
5.0.0 #
Breaking Changes #
- Unified
trace()pipeline: All logging now flows through one structured pipeline with consistent correlation across every layer. - Flattened log data: The old inheritance-based types are gone — typed subclasses (
NetworkRequestLog,DioResponseLog,BlocLifecycleLog, …) are replaced by a metadata-drivenISpectLogData, with field accessors likeisNetworkandhttpStatusCodemoved into extensions. See the migration guide below. ISpectLogTypeis now afinal class(no longer an enum):ISpectLogType.valuesbecomesISpectLogType.builtInand exhaustive switches no longer apply, but custom types are first-class — writeconst ISpectLogType('my-key', category: 'firebase')directly.ISpectLogData.idis 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.
Added #
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 frominspectorwith expanded render-object coverage.- Plugin architecture for the panel: Lifecycle hooks, custom screens, and action items, with
SafePluginScreenand a globalErrorWidgetoverride keeping third-party plugin failures from taking down the host UI. - Custom
ISpectLogTypeinstances with their own category, title, color, and icon, safely merged with the built-in entries. - Database interceptor cookbook: Drop-in interceptors and runnable examples for Hive, Isar, Drift, Sembast, ObjectBox, Realm, Firestore, Sqflite, SharedPreferences, GetStorage, and FlutterSecureStorage in
packages/ispectify_db/example.
Improvements #
- New trace API:
trace(),traceAsync(),traceSync(), andtraceTransaction()for correlated logging, plus domain extensions (authTrace(),storageTrace(),push(),analyticsEvent(),paymentTrace(),grpcTrace()). - Log exporter: Writes JSON Lines, plain text, Markdown, and CSV with built-in redaction; pluggable formatters give human-readable and JSON Lines output with ISO-8601 timestamps.
- Logs screen overhaul: Resizable desktop split view with keyboard navigation, chip-based search and filtering with category grouping, correlation/transaction-ID filters, expandable network transaction cards with status and duration, live tail with new-log indicators and relative time, 21 new log-type icons, and a JSON viewer with array support and async search.
- Inspector controls: Multi-key shortcuts,
initialPanelExpanded, configurabledecimalPlaces, smart panel positioning, shape-border and border-radius extraction, and globally-transformed hit testing. - Picker & zoom bar: A floating Cancel/Confirm bar with zoom controls and a live hex preview chip (tap to copy), on-screen-aware hex placement, auto re-snapshot on surface resize, and the restored outside-stroke disc look.
consoleMessageparameter on trace, network, WebSocket, and BLoC logs tailors IDE console output without touching structured metadata.- Lazy
ISpect.logger: Constructed on demand, with a developer warning when used beforeISpect.run. - Wider redaction: cURL commands and opt-in clipboard redaction now go through
RedactionService, with optional redaction statistics for data and header operations. - Correlation index: O(1) request/response/error lookup, removing scan-time matching on large histories.
- Database tracing:
DbSqlDigestfor normalized SQL grouping,DbMessageFormatterfor consistent log construction, and newsizeBytesandcacheHitfields. - Accessibility: Semantic labels on log cards and transactions, 36dp minimum touch targets, and tooltips on app-bar navigation, search, and filter.
- Faster triage: Expanded cards show a one-line metadata strip (id, trace source, operation/target, duration, exception type), and the action-sheet header shows the log type's description.
Behavioral Changes #
- Network redaction on by default: All network interceptors redact PII out of the box, using an expanded sensitive-key set.
ISpectBlocObservernow auto-correlates events, transitions, and changes.- Auto-wired navigator observer:
ISpectNavigatorObserver.observers()publishes the installed observer inISpectNavigatorObserver.current, andISpectBuilder.wrapfalls back to it — the quick-start no longer needs the same observer shared betweenMaterialApp.navigatorObserversandISpectOptions.observer. An explicitISpectOptions.observerstill wins. - Tips dialog moved from an automatic popup to a dedicated app-bar icon.
Deprecations #
ISpectScopeController.of(context)→ useISpect.read(context). The old method stays as a forwarder and will be removed in 6.0.0.- Per-callback network filters (
requestFilter,responseFilter,errorFilter) onispectify_dio,ispectify_http, andispectify_ws→ use the new composable filter chain. Existing callbacks keep working as forwarders and will be removed in 6.0.0. ISpectBuilder(...)constructor → useISpectBuilder.wrap(...), which short-circuits before building whenkISpectEnabledis false (preserving tree-shaking). The constructor will be made private in a stable 5.x release.ISpectLocalizations.delegates(...)→ useISpectLocalizations.delegate(...), which returns only ISpect's delegate and leaves theGlobal*Localizationsto the host. The legacy method works as a forwarder during 5.x and will be removed in 6.0.0.
Bug Fixes #
- Async-gap context safety: Fixed "deactivated widget's ancestor" errors in
ISpectToasterand clipboard operations by handlingBuildContextcorrectly across async gaps. - Stability: Resolved memory leaks in UI components and made JSON parsing more robust on large datasets.
- Export hardening: Added CSV-injection protection in exports and a clipboard size cap.
- Inspector hit testing: Now uses Flutter's native pipeline and clamps overlay rects to screen bounds, so taps no longer surface widgets from routes beneath the active one (non-opaque pages, dialogs, modal sheets) or from
Offstage/IgnorePointersubtrees, and selection stays on-screen. - Icon glyph rendering: A
RenderParagraphactually showing an icon font now displays the glyph and itsU+XXXXcode point under anICONsection instead of unreadable tofu. - Release-safe inspector:
describeIdentityand 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. - JSON viewer state:
JsonScreen.didUpdateWidgetcompares the data'sid, so the viewer no longer rebuilds its tree and discards expansion state when the parent supplies an equal map.
CI/Tests #
- Tests & CI: Refactored the suite for the trace-based architecture with JSON and multipart redaction validation, added widget tests (
ISpectAppBar,EmptyLogsWidget,LogCard,ISpectBuilder) and BLoC/Dio/HTTP pipeline integration tests, and wired up Codecov with a Flutter version matrix.
Migration Guide #
// 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');
4.7.4 #
Changes #
- Removed explicit button styling from action sheet buttons to leverage theme defaults.
4.7.3 #
Changes #
- JSON Truncation Limit: Bump default JSON truncation limits for maximum depth, string length, and iterable size.
4.7.2 #
Improvements #
- Web & WASM Compatibility: Decoupled
dart:iodependencies from core file utilities to ensure theispectpackage works flawlessly on the Web and WASM targets. Native functionality remains unchanged.
4.7.1 #
Changes #
ispectify:time,error,stackTrace, andlevelmetadata are now passed through to native platform logs (developer.log) for better debugging and crash reporting.
4.7.0 #
Breaking Changes #
- ISpect is now disabled by default. For production safety and tree-shaking, ISpect is no longer compiled into builds unless you opt in with
--dart-define=ISPECT_ENABLED=true. Without the flag, all ISpect logic, UI, and logging is removed from the binary at compile time, verified to tree-shake away in production builds.
New Features #
-
Zero-conditional API: Factory methods handle the
kISpectEnabledcheck internally — noif/elsein your code.ISpectBuilder.wrap()returns the child when disabled,ISpectNavigatorObserver.observers()returns an empty list, andISpectLocalizations.delegates()returns the base delegates.MaterialApp( localizationsDelegates: ISpectLocalizations.delegates(), navigatorObservers: ISpectNavigatorObserver.observers(), builder: (_, child) => ISpectBuilder.wrap(child: child!), ); -
Customizable observer:
ISpectNavigatorObserver.observers()also accepts a pre-configuredobserverplusadditionalobservers.
Migration #
Before (conditional):
navigatorObservers: kISpectEnabled ? [ISpectNavigatorObserver()] : [],
builder: (_, child) {
if (kISpectEnabled) return ISpectBuilder(...);
return child!;
},
After (zero-conditional):
navigatorObservers: ISpectNavigatorObserver.observers(),
builder: (_, child) => ISpectBuilder.wrap(child: child!),
4.6.0 #
Breaking Changes #
-
API renaming:
logCustom()→logData(),ISpectify→ISpectLogger,ISpectifyLogger→ISpectBaseLogger,ISpectifyFlutter→ISpectFlutter. -
ISpectThemechanges: Log-type filtering moved to adisabledLogTypesset, light/dark colors unified underISpectDynamicColor(light:, dark:), andlogDescriptionsnow takes aMap<String, String>for overriding default descriptions.ISpectTheme( disabledLogTypes: {'riverpod-add', 'riverpod-update'}, background: ISpectDynamicColor(light: Colors.white, dark: Colors.black), logDescriptions: {'error': 'Critical application errors'}, );
New Features #
- Interceptor config: Fluent API builders for interceptor settings and support for multiple observers.
- Logging:
additionalDatavia a centralizedLogFactory, properISpectLoggerdisposal, and full localization of BLoC error and provider-activity logs. - Persistent settings: Log preferences are saved between sessions, with improved log-type filtering controls.
- Strategy-based redaction: Configure
RedactionServicewith composite, key, and pattern strategies. - Platform abstraction: File operations work across all supported targets via platform-aware directory handling.
Improvements #
- Faster filtering: Debounced log-filter updates, fixed-size lists for rendering, and cached contrast lookups in the JSON viewer.
- Architecture: Unified interceptor API across HTTP and WebSocket,
ISpectViewControllersplit into dedicatedFilterManager/SettingsManagerand explicit import/export services, aPlatformOutputoutput abstraction, and sealed models (FileProcessingResultand related) for type-safe error handling.
Bug Fixes #
- Type safety: Stronger typing across HTTP/Dio interceptors and the JSON selector, with unmodifiable cache views.
- Memory: Fixed widget memory leaks, object-pool lifecycle issues, and circular dependencies in the service graph.
- Case-insensitive redaction: Redaction now matches keys regardless of case.
4.4.6 #
Changes #
- Removed hard dependency on
share_plusby introducing configurable share callbacks; all share flows now rely onISpectOptions.onShare. - Removed
open_filexusage in favor of an optionalISpectOptions.onOpenFilecallback. - Conditionally render share/open actions across UI so buttons disappear when callbacks are not supplied.
- Eliminated external
provider,device_info_plus, andpackage_info_plusdependencies; JSON explorer now ships with an internal selector. - Feedback builder and
ispect_jirapackage removed to streamline core functionality. - Updated descriptions of log tags in the info bottom sheet for clarity and consistency.
Added #
- New
ISpectShareRequest,ISpectShareCallback, andISpectOpenFileCallbackcontracts to keep integrations package-free. - Added
bloc-doneevent logging toispectify_blocfor comprehensive BLoC lifecycle tracking. - Added
SuperSliverListsupport in JSON/logs viewer for improved performance with large datasets.
4.4.2 #
Added #
- Added optional paramater
contexttoISpectOptions. This context is used to openISpectscreen.
4.4.1 #
Changes #
observerparameter moved fromISpectBuildertoISpectOptionsfor better consistency and usability.
4.4.0 #
Added #
- New package
ispectify_db: lightweight database logging with tracing and transaction markers. - cURL command copy functionality for HTTP logs in the log card, supporting both Dio and HTTP interceptors.
Enhancements #
- Stronger and more consistent redaction across HTTP/Dio/WS (incl. Base64/Base64URL, Unicode-friendly); versions synced across packages.
Fixed #
- ispectify_http: use
responseBodyin logs; separate request/response data; preserve non-Map error payloads; redact multipart fields/files (filenames masked). - ispectify_dio: redact
FormDatain request/response (filenames masked); mark error logs withLogLevel.error. - ispectify_ws: mark error logs with
LogLevel.error. - ispectify_db: no commit after rollback; correct log levels; safer
additionalData.value. - core: fix
_handleLogconstructor argument order.
Tests #
- HTTP: response body usage, array error payloads, multipart redaction.
- DB: rollback emits no commit; error/success log level assertions.
4.3.6 #
- Documentation updates
4.3.4 #
Improvements #
- JSON viewer refactor: Replaced the monolithic JSON-viewer services with specialized, instance-based search/cache/node services and an object pool for better performance on large JSON. Existing widget APIs stay backward-compatible.
Fixed #
- Resolved memory leaks in cache management and circular dependencies in service initialization.
4.3.2 #
Added #
- Optional redaction toggle in settings (enabled by default):
ISpectDioInterceptorSettings.enableRedactionISpectHttpInterceptorSettings.enableRedactionISpectWSInterceptorSettings.enableRedaction
- Redactor-aware serialization for network data models:
ispectify_dio:DioRequestData.toJson,DioResponseData.toJson,DioErrorData.toJsonnow accept an optionalRedactionServiceand (when provided) redact headers, data, and metadata. Per-callignoredValues/ignoredKeyssupported.ispectify_http:HttpRequestData.toJson,HttpResponseData.toJsonupdated similarly; redaction applied when a redactor is passed.
Enhancements #
- Apply centralized sensitive-data redaction consistently before logging and when serializing
additionalDataacrossdio/http/wsinterceptors. Interceptors pass their redactor into modeltoJson(...)calls when redaction is enabled. ispectify_dio:- Request/response/error logs redact request headers/body, response headers/body, and common metadata (
query-parameters,extra).FormDatabodies are represented with a safe placeholder.
- Request/response/error logs redact request headers/body, response headers/body, and common metadata (
ispectify_http:- Request/response logs redact headers and (when parsable) JSON/string bodies; multipart request details are preserved in shape while avoiding sensitive content.
ispectify_ws:- Interceptor respects the redaction toggle and redacts sent/received payloads when enabled.
Fixed #
- Preserve response headers shape while redacting in
ispectify_dio(Map<String, List<String>>) to avoid type/cast issues.
Updates #
- Update
draggable_paneldependency to version 1.2.0. See what's changed indraggable_panel: https://pub.dev/packages/draggable_panel/changelog
4.3.0 #
Added: #
- Add
LogsJsonServicefor structuredJSONexport/import of logs and integrate sharing/import features intoISpectViewControllerand UI. - Implement
DailyFileLogHistoryfor file-based log persistence with daily sessions and provide related screens for browsing and sharing sessions. - Added
File Viewerto settings sheet inISpectscreen to view and manage log files. ispectify_wspackage for WebSocket (ws package) logging withISpectintegration.
Enhancements: #
- Extend
ISpectFlutter.initto accept customILogHistoryinstances and disable default print logging. - Refactor file handlers (web and native) to support configurable file types and
JSONoutput. - Make settings and info callback parameters optional in the app bar and conditionally render related UI.
- Add ability to open log files directly from the
ISpectscreen.
Changes: #
- Rename
ISpectLoggerDioLoggertoISpectDioInterceptorfor clarity and consistency with other interceptors - Rename
ISpectLoggerHttpLoggertoISpectHttpInterceptorand adjust its usage in the example project - Rename
ISpectLoggerBlocObservertoISpectBLocObserverfor consistency - Rename
iSpectifytologgerand update related classes and documentation for consistency
Draggable Panel #
- Added: Position change listener API in
DraggablePanelController(addPositionListener/removePositionListener). - Added: Public
dockBoundarygetter for consistent boundary logic across widget and controller. - Changed:
toggle()now respects currentpanelState(notinitialPanelState). Auto-toggle on mount removed to preserve user state. Initial position is clamped and (when starting closed) docked to the nearest edge. - Fixed: Panel no longer resets to default after visibility toggles; duplicate position callbacks removed; unified docking logic.
- Performance: Batched x/y updates during drag via
setPosition(x, y); reduced redundant notifications and rebuilds; lifecycle safety (mounted checks) and controller rewire indidUpdateWidget.
4.2.0 #
Added: #
- Introduce navigation flow feature to visualize app route transitions.
- Ability to share log with the applied filters in the
ISpectscreen.
Enhancements: #
- Extend
ISpectNavigatorObserverto bufferRouteTransitionobjects with unique IDs, timestamps, and structured logging using aTransitionTypeenum. - Add
RouteTransitiondata model,Listextensions, androuteName/routeTypeextensions for richer routemetadata. - Improve
ISpectOptionsequality andtoStringimplementations withDeepCollectionEquality. - Toggle default
isLogModalsbehavior tofalsefor finer logging control.
4.1.9 #
Changes: #
- Replaced
LogScreenwith a generalizedISpectJsonScreen, which now accepts aMap<String, dynamic>JSONinput directly instead of extracting it from an object. - Refactored and migrated the
Colortohexstring conversion utility. - Performed minor improvements and code cleanups.
4.1.6 #
Changes: #
ISpectPanelItem->DraggablePanelItem;ISpectPanelButtonItem->DraggablePanelButtonItem.- Added tooltip snackbar when long press on the panel buttons and items.
Just add
descriptionfield to theDraggablePanelItemorDraggablePanelButtonItemto show the tooltip.
4.1.5 #
Enhancements: #
- Refactor
InspectorStateto modularize main child, overlay builders, and zoom state handling - Expose new zoom configuration constants and helper methods in
InspectorStatefor enhanced zoom and overlay management
Changes: #
- Revise
READMEinstructions across all packages to showcase new initialization patterns (e.g. ISpectFlutter.init,ISpectJiraClient.initialize) - Rename
ISpectLoggerActionItemtoISpectActionItemand update references in docs and examples - Add
ISpectPanelItemandISpectPanelButtonItemmodels and corresponding usage samples.Records->Models - Refresh quick start and advanced feature code snippets to illustrate updated APIs and options
- Unify headings (Basic Setup, Custom Issue Creation, etc.) and standardize sample app flows
4.1.4 #
Enhancements: #
- Optimize
JSONtruncator to avoid expensive length calls, use correct recursion depth, and handle truncations efficiently - Extend filter search to include map keys, prevent circular loops, and streamline filter combination logic
- Refine dotted separator painter to distribute dots evenly within container bounds
CI: #
- Upgrade
actions/checkoutto v4 with full fetch depth - Harden validate_versions workflow with strict error handling,
version.configandVERSIONchecks - Switch grep to fixed-string mode and update workflow paths in
sync_versions_and_changelogs - Remove obsolete
update_changelogs.ymlfile
4.1.3 #
Infrastructure #
- Added comprehensive version management system:
- Created
version.configas single source of truth for package versions - Added automated dependency synchronization between internal packages
- Implemented CI/CD workflows for automatic version sync on changes
- Added scripts for easy version bumping: patch, minor, major, dev versions
- Created comprehensive documentation in VERSION_MANAGEMENT.md and VERSION.md
- Created
- Added validation for package versions:
- Pre-commit hooks to prevent inconsistent versions
- Automated checks for internal dependency consistency
- Pull request validation for versions and changelogs
Enhanced #
- Refactored and improved optimization for handling very large JSON in the detailed log screen.
- Improved search and scroll to matched item functionality in the detailed log screen.
Added #
- Added a button for copying next to the JSON item (map/iterable) inside the detailed log screen.
- Added the ability to share the full log as a file .txt or quickly copy the truncated log to the clipboard.
Changes #
- UI changes in ISpect and log screens for better usability.
- Bumped dependencies to the latest versions.
4.1.2 #
4.1.1 #
Added #
- Add screen size utility to detect and adapt UI based on device screen
- Implement alternative dialog-based UI for larger screen sizes
Fixed #
- Fix issue displaying API fields correctly in the console
Enhancements #
- Implement responsive design for settings bottom sheet and log screens using screen size detection
- Improve search functionality in JSON viewer, added scrolling to the found element
Changes #
- Remove platform-specific configurations for Android and iOS in the example project
- Add macOS support for the example project
4.1.0 #
Fixed #
- Replace square bracket references with backticks in code comments and documentation across multiple packages to improve code documentation readability and consistency
4.0.9 #
Added #
- JsonTruncatorService for more robust JSON truncation and formatting
- Introduced more granular widget rendering strategies in JSON explorer
Fixed #
- Fixed potential performance bottlenecks in JSON rendering
- Improved error handling in JSON formatting and logging
- Fix analyzer issue for pub score
Enhanced #
- Refactored JSON attribute rendering to reduce widget rebuilds
- Improved performance of text highlighting in JSON viewer
- Optimized context selection and memoization in JSON explorer components
Chore #
- Cleaned up unused code and simplified complex rendering logic
- Improved code readability in JSON viewer components
4.0.6 #
Added #
- Custom Performance Overlay - Changed the approach and some improvements
- Enhanced Log Navigation - Search, highlight, and expand/collapse functionality
- New Option:
logTruncateLength- Available inISpectLoggerOptionsfor configurable log truncation - New Configuration:
ISpectHttpInterceptorSettings- Added toISpectHttpInterceptorfor improved setup flexibility
Improved #
- JSON Handling - Async and lazy loading for better performance on large data structures
- Log Card Refactor - Improved readability and maintainability
- Error Handling - Added filtering for more precise issue tracking
Fixed #
- Security Cleanup - Removed
ispect_aipackage and related dependencies
4.0.5 #
Changed #
- Error display now limited to first 10,000 characters for large errors to prevent widget overload and application hanging
4.0.1 #
Breaking Changes #
ISpectScopeWrapperRelocation - Moved insideISpectBuilder. Now,ISpectBuilderserves as a one-stop solutionISpect.log()Update - Replaced withISpect.logger.log()for improved consistency and clarity
Added #
- Language Support - Chinese (zh_CN) localization
- JSON Log Viewer - Detailed log viewing as a
JSONtree structure - Enhanced HTTP Logs - HTTP request logging displays all details in
JSONtree format with search and filtering - Log Descriptions - Added
logDescriptionstoISpectThemeto add, modify, or disable descriptions in the info bottom sheet - Theme Scheme Screen - Included basic
Theme Scheme Screenin theISpectpanel for testing
Improved #
ISpectLogger: Constructor now accepts optional components (logger,observer,options,filter,errorHandler,history) and aconfiguremethod to update an existing instance, with full dartdoc.- Bottom sheet: Replaced
BaseBottomSheetwith aDraggableScrollableSheet(configurableinitial/min/maxsizes). - Filtering: Added a search bar and
FilterChip-based title filtering with managed enablement state. - Navigation logging: Added flags to control logging of gestures, pages, modals, and other route types, plus a
validatemethod to decide what gets logged.
3.0.1 #
Fixed #
- Added
DraggablePanelControllertoISpectBuilderfor controlling the panel- See the example project for implementation details
3.0.0 #
BREAKING CHANGES #
-
Forked the
Talkerpackage (where I'm actively contributing) and added it toISpectasISpectLogger- This was done to ease usage and reduce external dependencies
- You can now use
ISpectLoggerto log all application actions
-
Separated main functions into different packages:
ispect_ai- For usingAIas a log reporter and log description generator (useful for managers and testers)ispect_jira- For usingJirato create tickets directly in the applicationispect_device- For getting device data and related informationispectify_http- For loggingHTTPrequestsispectify_dio- For loggingDiorequestsispectify_bloc- ForBLoClogging
Please see usage examples in the respective packages or in
ispect/exampleFor questions, contact:yelamanyelmuratov@gmail.com
2.0.8 #
Changed #
- Removed
ISpectPanelButtonandISpectPanelItemand replaced with Records - Separated
DraggablePanelinto its own package: draggable_panel
2.0.7 #
Breaking Changes #
- Jira and AI tools are now separate packages:
- Jira: ispect_jiraSee usage examples in ispect_ai/example
- ISpect AI: ispect_ai See usage examples in ispect_jira/example
2.0.5 #
Added #
- Support to view MultiPart request and response in the Detailed HTTP Logs page (HTTP package)
2.0.0 #
Fixed #
- No Navigator in context when navigatorKey is not provided
- Panel height factor calculation
1.9.8 #
1.9.6 #
1.9.5 #
Added #
-
New logging method:
ISpect.trackfor custom analytics events (Amplitude, Firebase, etc.) -
Ability to change log colors and custom log icons
Example: (SuccessLog is your custom log)
theme: ISpectTheme( logColors: { SuccessLog.logKey: const Color(0xFF880E4F), }, logIcons: { ISpectLogType.route.key: Icons.router_rounded, SuccessLog.logKey: Icons.check_circle_rounded, }, ), -
Google AI integration for generating log descriptions and reports
Changed #
ISpectreplaced withISpect- UseISpectfor all logging purposes Example:ISpect.debug('Hello, ISpect!')->ISpect.debug('Hello, ISpect!')
1.9.3 #
Added #
- New option in
ISpectOptions:panelButtonsto add custom buttons to the panel - New options for NavigatorObserver:
isLogPages- Toggle logging of page changesisLogModals- Toggle logging of modal changesisLogOtherTypes- Toggle logging of other change types
isFlutterPrintEnabledoption in ISpect.run to enable/disable Flutter print handler
1.8.9 #
UI Updates #
- Improved color picker
- Updated light log colors
- Revised ISpect page layout
- Combined actions and settings
- Various minor visual enhancements
1.7.2 #
1.7.1 #
Added #
- Updated Feedback builder for sending developer feedback
- Fixed localization issues when using Navigator inside Feedback
1.7.0 #
1.6.3 #
Changed #
- Implemented print handler
- Moved ISpect's initialization to the ISpect's run method (See example project for implementation details)
1.5.7 #
1.5.5 #
Fixed #
- Issues with Draggable button
- Enable ISpect in release builds: manage conditions with
isISpectEnabled
1.4.8 #
Changed #
- Removed shared preference (incompatible with shrink)
- Added parameters to ISpectBuilder for Draggable button customization
1.4.4 #
Added #
- New parameter
actionItemsinISpectOptionsfor adding custom actions to ISpect page's actions sheet
1.4.3 #
1.4.2 #
Improved #
- Draggable button functionality with new maximum reverse point
- Added localization for Detailed HTTP Logs page
- Minor updates to Detailed HTTP Logs page
1.3.1 #
Improved #
- Refactored and optimized code
- Draggable button position now saved in cache
- Updated
analysis_options.yamlfile - Updated
README.mdfile
1.2.7 #
Added #
- More customization options for
ISpect.initHandling- Configure BLoC, Dispatcher error handling, and more during initialization
1.2.4 #
Added #
- New options for
ISpectLoggerdetailed monitor page: reverse all logs and toggle expansion - Moved performance tracker to
Draggablebutton (removed from settings sheet)
1.2.3 #
Changed #
navigatorContextno longer required for ISpectBuilder- To use Draggable button inside ISpectScreen, pass the key (not available by default)