ispectify 4.4.8-dev02 
ispectify: ^4.4.8-dev02 copied to clipboard
Foundation logging system for ISpect toolkit (based on Talker)
Changelog #
4.4.8-dev02 #
Added #
- Fluent API builders for interceptor settings configuration
 - Support for multiple observers with improved notification mechanism
 - Enhanced logging context with 
additionalDatasupport and centralizedLogFactory - Localization for bloc error logs and provider activity across all supported languages
 - Settings persistence and log type filtering functionality
 - Resource disposal functionality to 
ISpectLoggerfor proper resource management - Comprehensive unit tests for settings builders and redaction service
 
Changed #
- Unified logging interface across HTTP and WebSocket interceptors
 - Improved filter update performance by ~70% with debouncing
 - Optimized widget rendering and list creation with fixed-size lists
 - Enhanced error handling and logging across all modules
 - Refactored observer handling to support multiple observers
 - Updated UI components for better consistency and theming
 - Improved code organization and reduced code duplication
 - Refactored logger initialization to use 
addPostFrameCallbackfor improved state management - Simplified header redaction logic in 
RedactionService - Enhanced documentation with detailed usage examples and configuration guides
 
Fixed #
- Improved type safety in HTTP and Dio interceptors
 - Enhanced null-safety in JSON selector and generic type constraints
 - Better memory safety with unmodifiable cache views
 - Case-insensitive key comparison in redact method
 - Memory optimization in widgets and list creation
 - Circular dependencies in service initialization
 - Object pool lifecycle management and performance issues
 
Breaking Changes #
Method Renaming
logCustom()->logData()- Renamed for consistency across logging API
Class Renaming
ISpectify->ISpectLoggerISpectifyLogger->ISpectBaseLoggerISpectifyFlutter->ISpectFlutter
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 #
Architecture Refactoring #
- Refactored JSON viewer services
 - Replaced monolithic services with specialized implementations:
- Split 
JsonViewerCacheServiceintoSearchCacheServiceandNodeHierarchyCacheService - Decomposed 
JsonNodeServiceintoNodeExpansionService,NodeCollapseService, andNodeNavigationService - Implemented strategy pattern for 
JsonSearchServicewith pluggable search algorithms - Added universal object pool with dependency injection support
 
 - Split 
 - Migrated from static method calls to instance-based service architecture
 - Eliminated temporary v2 files, replaced legacy implementations
 
Performance Improvements #
- Object pooling reduces memory allocations by ~60% through reusable collections
 - LRU caching improves search performance by ~80% with intelligent eviction
 - Adaptive batch processing for large JSON datasets (80-300 items per batch)
 - Widget memoization reduces unnecessary rebuilds by ~70%
 - Automatic algorithm selection based on data characteristics
 - Optimized UI update frequency to prevent performance degradation
 
Technical Changes #
- Implemented Facade pattern for unified service interfaces
 - Added Factory pattern for flexible service instantiation
 - Full dependency injection support for improved testability
 - Real-time performance metrics and memory tracking
 - Type-safe generic implementations for object pools and caches
 - Separated cache management for search results and node hierarchy
 
Core Component Updates #
- Updated 
JsonExplorerStoreto use new service architecture - Migrated search operations from static to instance methods
 - Integrated specialized cache services with clear boundaries
 - Added comprehensive performance monitoring throughout the system
 
Fixed #
- Resolved memory leaks in cache management
 - Fixed circular dependencies in service initialization
 - Corrected object pool lifecycle management
 - Eliminated performance bottlenecks in large JSON processing
 - Improved testability by removing static dependencies
 
Migration #
- All legacy services replaced with new implementations
 - Maintained backward compatibility for existing widget APIs
 - Added comprehensive architecture documentation
 
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.flutter-io.cn/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 
Updated ISpectLogger #
- Documentation - Comprehensive documentation added to the 
ISpectLoggerclass - Constructor Enhancement - Modified to accept optional components (
logger,observer,options,filter,errorHandler,history) - Configuration Method - Introduced 
configuremethod to update existing inspector instance configuration - Internal Logic - Updated to leverage new components and options effectively
 
Improved #
- 
Bottom Sheet Revamp
- Removed 
BaseBottomSheetwidget - Implemented 
DraggableScrollableSheetwith configurableinitial,min, andmaxchild sizes - Updated build method to integrate 
DraggableScrollableSheet - Adjusted layout and styling for new bottom sheet structure
 
 - Removed 
 - 
Filtering Enhancements
- Added 
ValueNotifierto manage filter enablement state - Introduced 
SearchBarfor log filtering - Replaced 
InkWellwithFilterChipfor title filtering - Adjusted layout and styling to support new search and filter components
 
 - Added 
 - 
Navigation Logging
- Added properties to control logging of gestures, pages, modals, and other navigation types
 - Updated 
didPush,didReplace,didPop,didRemove, anddidStartUserGesturemethods - Introduced 
validatemethod to determine if a route should be logged based on its type - Enhanced log messages with detailed route and argument information
 
 
Styling & Optimization #
- Improved consistency in terminology and formatting
 - Streamlined descriptions for clarity and brevity
 
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_jira
See usage examples in ispect_ai/example - ISpect AI: ispect_ai
See usage examples in ispect_jira/example 
 - Jira: ispect_jira
 
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)