Skip to content

docs: design spec + implementation plan for generic navigation_devtools#1

Merged
masreplay merged 16 commits into
feat/initial-implementationfrom
claude/flutter-navigation-devtools-unjfnz
Jul 16, 2026
Merged

docs: design spec + implementation plan for generic navigation_devtools#1
masreplay merged 16 commits into
feat/initial-implementationfrom
claude/flutter-navigation-devtools-unjfnz

Conversation

@masreplay

Copy link
Copy Markdown
Owner

Generalize the auto_route-only DevTools extension into a navigation_devtools
core with a pluggable NavigationAdapter API covering Navigator 1.0,
the Navigator 2.0 Router API, go_router, and auto_route, plus an adapter
conformance test kit and a capability-aware multi-router panel UI.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01GpNWM852Ee3GJFEeJEd4vN

claude added 16 commits July 14, 2026 23:37
Generalize the auto_route-only DevTools extension into a navigation_devtools
core with a pluggable NavigationAdapter API covering Navigator 1.0,
the Navigator 2.0 Router API, go_router, and auto_route, plus an adapter
conformance test kit and a capability-aware multi-router panel UI.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GpNWM852Ee3GJFEeJEd4vN
…, new package stubs, examples/)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GpNWM852Ee3GJFEeJEd4vN
…lti-router NavigateRequest

Also splits the web-only VmServiceDataSource out of data_source.dart so
extension widget tests compile on the Dart VM, and renames the example
package to auto_route_example.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GpNWM852Ee3GJFEeJEd4vN
…vice extensions

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GpNWM852Ee3GJFEeJEd4vN
Note: subscription cancel futures must not be awaited inside testWidgets
fake-async — they never complete there; the kit uses unawaited().

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GpNWM852Ee3GJFEeJEd4vN
…nned against 16.3.0)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GpNWM852Ee3GJFEeJEd4vN
…; AutoRouteDevTools.init kept as shim

Old ext.autoRouteDevtools.* service extensions are removed — the panel now
speaks ext.navigationDevtools.* via the core registry.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GpNWM852Ee3GJFEeJEd4vN
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GpNWM852Ee3GJFEeJEd4vN
…irect badges

NavigationPanel speaks protocol v2 (getRouters + per-router config/stack),
gates every affordance on the selected router's capabilities, and adds
empty/not-instrumented states with per-adapter setup snippets.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GpNWM852Ee3GJFEeJEd4vN
…auto_route_devtools bundle

The panel UI was visually verified against seeded fixtures for both a
full-capability GoRouter view (selector, shell nesting, redirect badges)
and a pop-only Navigator 1.0 view (tree pane replaced by explainer).
lib/main_screenshot.dart is the committed harness for regenerating the
docs/images screenshots.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GpNWM852Ee3GJFEeJEd4vN
…into navigation_devtools_test

flutter_test cannot be imported from a runtime package's lib/ (pub publish
error), so the kit ships as its own dev-dependency package.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GpNWM852Ee3GJFEeJEd4vN
…CI workflow

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GpNWM852Ee3GJFEeJEd4vN
…paired-observer recipe tested and documented

Navigator1Adapter already captures showDialog/showModalBottomSheet as
pageless frames (regression-tested, poppable from the panel). go_router
and auto_route route state never contains pageless routes, so the
documented recipe is pairing their adapter with a Navigator1Adapter
observer on the same navigator — proven by tests in both packages.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GpNWM852Ee3GJFEeJEd4vN
@masreplay
masreplay merged commit aa757d1 into feat/initial-implementation Jul 16, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants