pulse_ops 1.1.0
pulse_ops: ^1.1.0 copied to clipboard
Flutter-native developer toolkit for in-app network inspection, cURL export, log sharing, shake-to-open, and crash diagnostics with breadcrumbs.
Changelog #
All notable changes to PulseOps will be documented in this file. The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
1.1.0 — 2026-05-16 #
🛠 Debug Overlay #
- Shake-to-open: shaking the device launches the inspector. Tunable via
PulseOpsConfig.enableShakeToOpenandshakeThreshold. Powered bysensors_plusand silently no-ops when an accelerometer is unavailable. - Expandable bottom sheet: the inspector now slides up as a draggable
bottom sheet with 40 / 70 / 95 % snap points instead of a full-screen
route. Switch back via
PulseOpsConfig(inspectorPresentation: InspectorPresentation.fullScreen).
✨ Developer Experience #
- Log export: new export menu in the inspector (JSON / plain text / cURL)
that opens the platform share sheet via
share_plusand falls back to clipboard. Programmatic exports available viaNetworkLogExporter.
Migration #
PulseOps.openInspectornow respectsinspectorPresentation. Existing callers continue to work unchanged.
1.0.0 — 2026-05-16 #
Initial public release.
🌐 Network Inspector #
- Dio interceptor (
PulseDioInterceptor) capturing request, response, headers, query params, timing, sizes, and errors. - In-memory ring-buffer store (
InMemoryNetworkStore) with configurable capacity and reactive stream API. - Beautiful dark Material 3 inspector UI:
- Newest-first timeline with method, status, host, duration, timestamp.
- Live search and filter chips (
GET/POST/PUT/PATCH/DELETE, plus "failed only"). - Per-request detail screen with Overview, Headers, Request, Response, and cURL tabs.
- Syntax-highlighted JSON viewer with copy-to-clipboard.
- One-tap cURL export via
CurlBuilderwith proper shell escaping. - One-tap retry using a host-provided Dio instance.
- Multipart (
FormData) request description, including filenames + sizes. - Header / body sanitization for sensitive keys.
💥 Crash Diagnostics #
- Backend-agnostic
PulseCrashReporterinterface with shippedNoopCrashReporterand a documented Firebase Crashlytics adapter. BreadcrumbTrailring buffer withdebug/info/warning/errorlevels.- Automatic non-fatal reporting for failed Dio requests, with recent request summary attached as context.
- Manual breadcrumb + error APIs:
PulseOps.instance.log(...),PulseOps.instance.recordError(...). - Optional global
FlutterError.onErrorandPlatformDispatcher.onErrorinstallation.
Developer Experience #
- Single-call
PulseOps.initialize(...)with shorthandcrashlytics,enableInRelease, andsanitizeKeysnamed args. PulseOps.instance.wrap(child:)to mount the draggable floating overlay launcher around any widget tree.PulseOps.instance.openInspector(context)to push the inspector from a debug menu without the overlay.- Production-safe: inspector and overlay are disabled in release builds
unless
enableInReleaseis explicitly set. - Comprehensive test suite covering sanitizer, cURL builder, store, breadcrumb trail, interceptor, and facade.