fluttersdk_telescope 0.0.2
fluttersdk_telescope: ^0.0.2 copied to clipboard
Passive runtime inspector for Flutter. Captures HTTP, logs, exceptions, DB queries, and Magic events via VM Service extensions. CLI tail and MCP tools for Claude Code.
Changelog #
All notable changes to this project will be documented in this file.
This project follows Semantic Versioning 2.0.0. Entries follow the Keep a Changelog shape.
[Unreleased] #
No unreleased changes yet.
0.0.2 - 2026-05-22 #
Fixed #
- CHANGELOG correction. The
0.0.1archive on pub.dev shipped with a populated[Unreleased]block left over from release prep: every entry listed there (magic dev-dep drop,pubspec_overrides.yamlremoval,test/src/magic/deletion,magictag cleanup indart_test.yaml+ CI workflows + agent-instruction files,example_magic/removal, sub-barrel import path swap intelescope:install) actually shipped INSIDE0.0.1; nothing was published before it. This0.0.2republishes the corrected CHANGELOG so the consolidated0.0.1history surfaces on pub.dev. - README pinned-install snippet bumped from
^0.0.1to^0.0.2so the example matches the published version.
Unchanged #
- No code, no test, no runtime behavior, no public API surface changed.
lib/,bin/,test/,example/, and all 11ext.telescope.*VM Service extensions plus 9telescope_*MCP tools are byte-identical to0.0.1.
0.0.1 - 2026-05-22 #
Initial public release of fluttersdk_telescope. Passive runtime inspector for Flutter apps with a framework-agnostic core and optional Magic-stack integration. Plugin of fluttersdk_artisan ^0.0.4 (hosted-only; no path overrides). Vanilla-Flutter clean: zero magic references in the production or default-test surface. Magic-stack integration is opt-in via runtime detection in telescope:install, which injects import 'package:magic/telescope_integration.dart'; and an if (kDebugMode) MagicTelescopeIntegration.install(); block after await Magic.init( when the consumer's pubspec lists magic:.
Watchers #
9 watchers across vanilla Flutter and Magic-stack:
LogWatcher(auto-installed):package:loggingLogger calls captured to thelogsring buffer.ExceptionWatcher:FlutterError.onError+PlatformDispatcher.instance.onError, chain-preserve previous handlers.DumpWatcher:debugPrintcapture (vanilla Flutter); debug-only.MagicHttpFacadeAdapter: MagicHttpfacade interceptor.MagicModelWatcher:ModelCreated/ModelSaved/ModelDeletedevents from Magic.MagicCacheWatcher:CacheHit/CacheMiss/CachePut/CacheForget/CacheFlushevents.MagicEventWatcher: curated event subscription (auth, db connection, gate-define).MagicGateWatcher:GateAccessCheckedevent after everyGate.allows/Gate.denies.MagicQueryWatcher:QueryExecutedevent from the magic database connector.
Records #
9 immutable record types: HttpRequestRecord, LogRecordEntry, ExceptionRecord, MagicModelRecord, MagicCacheRecord, EventRecord, GateRecord, DumpRecord, QueryRecord.
9-buffer TelescopeStore #
Per-buffer Queue
VM Service extensions (11) #
ext.telescope.requests, .console, .exceptions, .events, .gates, .dumps, .queries, .caches, .clear, .pause, .resume. Every registration goes through registerExtensionIdempotent (from fluttersdk_artisan) for hot-restart safety.
MCP tools (9) #
telescope_tail, telescope_requests, telescope_exceptions, telescope_clear, telescope_events, telescope_gates, telescope_dumps, telescope_queries, telescope_caches. Each is a McpToolDescriptor const instance contributed via TelescopeArtisanProvider.mcpTools().
CLI commands (6) #
telescope:install, telescope:tail, telescope:requests, telescope:queries, telescope:caches, telescope:clear. telescope:install is a one-shot bootstrap that scaffolds the consumer artisan harness, runs plugin:install fluttersdk_telescope, and injects TelescopePlugin.install() into lib/main.dart (Magic-stack anchor or vanilla runApp anchor).
Three public contracts #
TelescopeWatcher:namegetter +install()+uninstall().TelescopeHttpAdapter: same 3-method shape + optionalpendingCountgetter (default 0).McpToolDescriptor: const-constructible; shape owned byfluttersdk_artisan.
TelescopeStore extension surface #
pendingHttpCountgetter sumsTelescopeHttpAdapter.pendingCountacross every registered adapter; consumed byext.dusk.wait_for_network_idlefor network-idle detection.
CI + automated publishing #
.github/workflows/ci.yml: format + analyze + flutter test (--exclude-tags integration) + 80% line-coverage floor (lcov + awk gate) + codecov upload + dart pub publish --dry-run..github/workflows/publish.yml: SemVer tag push triggers validate -> pub.dev publish via the officialdart-lang/setup-dart/.github/workflows/publish.yml@v1reusable workflow with OIDC authentication + github-release job auto-extracting CHANGELOG entry..github/dependabot.yml: weekly pub root + weekly github-actions bumps.
Documentation #
README.mdtwo-path Quick Start (one-shot self-bootstrap viadart run fluttersdk_telescope telescope:install; manual wiring for consumers who prefer to drive the artisan dispatcher by hand). After install, the consumer's./bin/fsanative AOT launcher is the recommended entry point for every subsequent telescope command.doc/tree:getting-started/,watchers/,mcp/.llms.txtat repo root per llmstxt.org spec.skills/fluttersdk-telescope/LLM-agent skill (SKILL.md + 2 references).
Compatibility #
- Dart SDK >=3.4.0 <4.0.0; Flutter >=3.22.0.
- Platforms: Android, iOS, macOS, Linux, Windows, Web (debug-only on every platform; release builds tree-shake the entire telescope subsystem via
kDebugModegate). - Magic-stack integration optional. Vanilla Flutter consumers use Dio adapter + LogWatcher + ExceptionWatcher + DumpWatcher with no Magic dependency.
Test coverage #
249 tests green at release time across watchers, records, commands, extensions, and the artisan provider. 80% line coverage floor enforced in CI (current measured coverage 95.60%).