@bdayadev/flutter-ultra-mcp 1.16.0 → 1.16.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,7 +10,7 @@
10
10
  {
11
11
  "name": "flutter",
12
12
  "description": "Durable cross-platform Flutter automation via 8 specialized MCP servers, in-app mixin binding, and an optional DevTools panel. Replaces marionette_mcp and the official dart mcp-server for Claude Code.",
13
- "version": "1.16.0",
13
+ "version": "1.16.2",
14
14
  "author": {
15
15
  "name": "Bdaya-Dev",
16
16
  "url": "https://github.com/Bdaya-Dev"
@@ -23,5 +23,5 @@
23
23
  "tags": ["flutter", "dart", "mcp", "testing", "automation", "patrol", "cross-platform"]
24
24
  }
25
25
  ],
26
- "version": "1.16.0"
26
+ "version": "1.16.2"
27
27
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
3
  "name": "flutter",
4
- "version": "1.16.0",
4
+ "version": "1.16.2",
5
5
  "description": "Durable cross-platform Flutter automation via 8 specialized MCP servers, in-app mixin binding, and an optional DevTools panel. Replaces marionette_mcp and the official dart mcp-server for Claude Code.",
6
6
  "author": {
7
7
  "name": "Bdaya-Dev",
@@ -4,7 +4,7 @@ description: >-
4
4
  extensions (gesture, screenshot, inspector, screencast, log collection)
5
5
  for the flutter-ultra-mcp Claude Code plugin. Composable with Sentry and
6
6
  other WidgetsFlutterBinding subclasses via the mixin form.
7
- version: 1.16.0
7
+ version: 1.16.2
8
8
  homepage: https://github.com/Bdaya-Dev/flutter-ultra-mcp
9
9
  repository: https://github.com/Bdaya-Dev/flutter-ultra-mcp
10
10
  issue_tracker: https://github.com/Bdaya-Dev/flutter-ultra-mcp/issues
@@ -2,7 +2,7 @@ name: ultra_flutter_devtools
2
2
  description: >-
3
3
  Flutter DevTools extension showing live MCP activity for the flutter-ultra-mcp
4
4
  Claude Code plugin (sessions, recent tool calls, errors, screenshot grid).
5
- version: 1.16.0
5
+ version: 1.16.2
6
6
  homepage: https://github.com/Bdaya-Dev/flutter-ultra-mcp
7
7
  repository: https://github.com/Bdaya-Dev/flutter-ultra-mcp
8
8
  issue_tracker: https://github.com/Bdaya-Dev/flutter-ultra-mcp/issues
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bdayadev/flutter-ultra-mcp",
3
- "version": "1.16.0",
3
+ "version": "1.16.2",
4
4
  "description": "Flutter Ultra MCP plugin monorepo — 8 MCP servers + ultra_flutter Dart packages + skills for Claude Code.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/Bdaya-Dev/flutter-ultra-mcp",
@@ -63,6 +63,7 @@
63
63
  "files": [
64
64
  ".claude-plugin/",
65
65
  ".mcp.json",
66
+ "scripts/ensure-plugin-deps.js",
66
67
  "skills/",
67
68
  "packages/*/dist/",
68
69
  "packages/*/package.json",
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env node
2
+ // Ensures production dependencies (playwright-core) are installed in
3
+ // CLAUDE_PLUGIN_DATA. Strips workspaces/devDependencies from the copied
4
+ // package.json so npm install works in a flat directory.
5
+ const fs = require('node:fs');
6
+ const path = require('node:path');
7
+ const { execSync } = require('node:child_process');
8
+
9
+ const pluginRoot = process.env.CLAUDE_PLUGIN_ROOT;
10
+ const pluginData = process.env.CLAUDE_PLUGIN_DATA;
11
+ if (!pluginRoot || !pluginData) {
12
+ process.exit(0);
13
+ }
14
+
15
+ const srcPkg = JSON.parse(fs.readFileSync(path.join(pluginRoot, 'package.json'), 'utf8'));
16
+ const cleaned = {
17
+ name: srcPkg.name,
18
+ version: srcPkg.version,
19
+ dependencies: srcPkg.dependencies || {},
20
+ };
21
+ const cleanedStr = JSON.stringify(cleaned, null, 2) + '\n';
22
+
23
+ const dstPath = path.join(pluginData, 'package.json');
24
+ try {
25
+ if (fs.readFileSync(dstPath, 'utf8') === cleanedStr) {
26
+ const nmExists = fs.existsSync(path.join(pluginData, 'node_modules', 'playwright-core'));
27
+ if (nmExists) process.exit(0);
28
+ }
29
+ } catch {}
30
+
31
+ fs.writeFileSync(dstPath, cleanedStr);
32
+ try {
33
+ execSync('npm install --production --no-audit --no-fund', {
34
+ cwd: pluginData,
35
+ stdio: 'inherit',
36
+ timeout: 90_000,
37
+ });
38
+ } catch {
39
+ fs.unlinkSync(dstPath);
40
+ process.exit(1);
41
+ }
@@ -116,6 +116,7 @@ git stash pop # if stash was created
116
116
  | List projects | `mcp__plugin_flutter_flutter-ultra-build__list_projects` |
117
117
  | Pub get | `mcp__plugin_flutter_flutter-ultra-build__pub_get` |
118
118
  | Flutter clean | `mcp__plugin_flutter_flutter-ultra-build__flutter_clean` |
119
+ | Static analysis | `mcp__plugin_flutter_flutter-ultra-build__analyze` |
119
120
  | Build runner start | `mcp__plugin_flutter_flutter-ultra-build__start_build_runner_build` |
120
121
  | Build runner poll | `mcp__plugin_flutter_flutter-ultra-build__poll_build_runner_job` |
121
122
  | Build runner result | `mcp__plugin_flutter_flutter-ultra-build__get_build_runner_result` |
@@ -131,6 +132,7 @@ git stash pop # if stash was created
131
132
  | Start patrol test | `mcp__plugin_flutter_flutter-ultra-patrol__start_patrol_test` |
132
133
  | Poll patrol | `mcp__plugin_flutter_flutter-ultra-patrol__poll_patrol_job` |
133
134
  | Get patrol result | `mcp__plugin_flutter_flutter-ultra-patrol__get_patrol_result` |
135
+ | Hot restart | `mcp__plugin_flutter_flutter-ultra-runtime__hot_restart` |
134
136
  | Build (any platform) | `start_build_{platform}` via the build server |
135
137
 
136
138
  ## Output format
@@ -121,13 +121,40 @@ Use this when `evaluate` and `get_runtime_errors` are insufficient to explain ob
121
121
  - `context.read<MyBloc>().state.toString()`
122
122
  - `ProviderScope.containerOf(context).read(myProvider).toString()`
123
123
 
124
- ### 7. Test the fix
124
+ ### 7. Static analysis and auto-fix
125
+
126
+ When the runtime triage points to a code-level issue:
127
+
128
+ - `mcp__plugin_flutter_flutter-ultra-build__analyze` — run static analysis to surface type errors, lint violations, and deprecation warnings related to the bug.
129
+ - `mcp__plugin_flutter_flutter-ultra-build__fix_preview` — preview automated fixes before applying.
130
+ - `mcp__plugin_flutter_flutter-ultra-build__fix` — apply safe automated fixes (`dart fix --apply`).
131
+
132
+ ### 8. IDE-level code navigation
133
+
134
+ Use LSP tools for pinpoint navigation when reading unfamiliar call paths:
135
+
136
+ - `mcp__plugin_oh-my-claudecode_t__lsp_hover` (`dart_hover`) — inspect the type, docs, and inferred value of any expression at a given file:line:col without running the app.
137
+ - `mcp__plugin_oh-my-claudecode_t__lsp_goto_definition` (`dart_go_to_definition`) — jump to the declaration of the method or class under the cursor.
138
+ - `mcp__plugin_oh-my-claudecode_t__lsp_document_symbols` (`get_active_location`) — list all symbols in the current file to map the class/method structure quickly.
139
+
140
+ ### 9. Test the fix
125
141
 
126
142
  1. Apply the code change.
127
143
  2. `mcp__plugin_flutter_flutter-ultra-runtime__hot_reload` (or `mcp__plugin_flutter_flutter-ultra-runtime__hot_restart` if `initState` changed).
128
144
  3. Re-run the appropriate triage step to confirm the error is gone.
129
145
  4. `mcp__plugin_flutter_flutter-ultra-runtime__screenshot` for before/after comparison.
130
146
 
147
+ ## Build and LSP tool reference
148
+
149
+ | Action | Tool |
150
+ | ------------------------- | ----------------------------------------------------------------- |
151
+ | Static analysis | `mcp__plugin_flutter_flutter-ultra-build__analyze` |
152
+ | Preview auto-fixes | `mcp__plugin_flutter_flutter-ultra-build__fix_preview` |
153
+ | Apply auto-fixes | `mcp__plugin_flutter_flutter-ultra-build__fix` |
154
+ | Hover type/docs | `mcp__plugin_oh-my-claudecode_t__lsp_hover` |
155
+ | Go to definition | `mcp__plugin_oh-my-claudecode_t__lsp_goto_definition` |
156
+ | List file symbols | `mcp__plugin_oh-my-claudecode_t__lsp_document_symbols` |
157
+
131
158
  ## Common patterns
132
159
 
133
160
  | Symptom | First tool | What to look for |
@@ -184,6 +184,25 @@ Produce a markdown report with the following sections:
184
184
  | Tiny text | Increase to ≥ 12 dp, or use `textTheme.labelSmall` (14 dp minimum by M3 spec) |
185
185
  | Inconsistent spacing | Use `const EdgeInsets.all(8)` / `16` / `24` — multiples of 4 |
186
186
 
187
+ ## Tool reference
188
+
189
+ | Action | Tool |
190
+ | ------------------------- | --------------------------------------------------------------------------- |
191
+ | Attach | `mcp__plugin_flutter_flutter-ultra-runtime__attach` |
192
+ | Screenshot | `mcp__plugin_flutter_flutter-ultra-runtime__screenshot` |
193
+ | Full design audit | `mcp__plugin_flutter_flutter-ultra-runtime__audit_design` |
194
+ | Responsive audit | `mcp__plugin_flutter_flutter-ultra-runtime__audit_responsive` |
195
+ | Extract design tokens | `mcp__plugin_flutter_flutter-ultra-runtime__extract_design_tokens` |
196
+ | Extract component inventory | `mcp__plugin_flutter_flutter-ultra-runtime__extract_component_inventory` |
197
+ | Widget tree | `mcp__plugin_flutter_flutter-ultra-runtime__get_widget_tree` |
198
+ | Find widget | `mcp__plugin_flutter_flutter-ultra-runtime__find_widget` |
199
+ | Widget details | `mcp__plugin_flutter_flutter-ultra-runtime__get_widget_details` |
200
+ | Count tree nodes | `mcp__plugin_flutter_flutter-ultra-runtime__count_widget_tree_nodes` |
201
+ | Dump render tree | `mcp__plugin_flutter_flutter-ultra-runtime__dump_render_tree` |
202
+ | Dump semantics tree | `mcp__plugin_flutter_flutter-ultra-runtime__dump_semantics_tree` |
203
+ | Toggle debug paint | `mcp__plugin_flutter_flutter-ultra-runtime__toggle_debug_paint` |
204
+ | Evaluate expression | `mcp__plugin_flutter_flutter-ultra-runtime__evaluate` |
205
+
187
206
  ## See also
188
207
 
189
208
  - `flutter-debug` — triage runtime exceptions and layout overflows in detail
@@ -87,21 +87,22 @@ Useful during:
87
87
 
88
88
  ## Tool reference
89
89
 
90
- | Action | Tool |
91
- | ---------------- | ---------------------------------------------------------------- |
92
- | Start server | `mcp__plugin_flutter_flutter-ultra-devtools__start_panel_server` |
93
- | Stop server | `mcp__plugin_flutter_flutter-ultra-devtools__stop_panel_server` |
94
- | Check status | `mcp__plugin_flutter_flutter-ultra-devtools__panel_status` |
95
- | Push event | `mcp__plugin_flutter_flutter-ultra-devtools__push_event` |
96
- | Wait for command | `mcp__plugin_flutter_flutter-ultra-devtools__panel_command` |
97
- | Project info | `mcp__plugin_flutter_flutter-ultra-build__project_info` |
98
- | Add dependency | `mcp__plugin_flutter_flutter-ultra-build__pub_add` |
99
- | Resolve deps | `mcp__plugin_flutter_flutter-ultra-build__pub_get` |
100
- | Overrides set | `mcp__plugin_flutter_flutter-ultra-build__pubspec_overrides_set` |
101
- | VM screenshot | `mcp__plugin_flutter_flutter-ultra-runtime__screenshot` |
102
- | Runtime errors | `mcp__plugin_flutter_flutter-ultra-runtime__get_runtime_errors` |
103
- | Gesture tap | `mcp__plugin_flutter_flutter-ultra-gesture__tap` |
104
- | Patrol result | `mcp__plugin_flutter_flutter-ultra-patrol__get_patrol_result` |
90
+ | Action | Tool |
91
+ | ---------------- | --------------------------------------------------------------------- |
92
+ | Start server | `mcp__plugin_flutter_flutter-ultra-devtools__start_panel_server` |
93
+ | Stop server | `mcp__plugin_flutter_flutter-ultra-devtools__stop_panel_server` |
94
+ | Check status | `mcp__plugin_flutter_flutter-ultra-devtools__panel_status` |
95
+ | Push event | `mcp__plugin_flutter_flutter-ultra-devtools__push_event` |
96
+ | Wait for command | `mcp__plugin_flutter_flutter-ultra-devtools__panel_command` |
97
+ | Dump diagnostics | `mcp__plugin_flutter_flutter-ultra-devtools__dump_diagnostics` |
98
+ | Project info | `mcp__plugin_flutter_flutter-ultra-build__project_info` |
99
+ | Add dependency | `mcp__plugin_flutter_flutter-ultra-build__pub_add` |
100
+ | Resolve deps | `mcp__plugin_flutter_flutter-ultra-build__pub_get` |
101
+ | Overrides set | `mcp__plugin_flutter_flutter-ultra-build__pubspec_overrides_set` |
102
+ | VM screenshot | `mcp__plugin_flutter_flutter-ultra-runtime__screenshot` |
103
+ | Runtime errors | `mcp__plugin_flutter_flutter-ultra-runtime__get_runtime_errors` |
104
+ | Gesture tap | `mcp__plugin_flutter_flutter-ultra-gesture__tap` |
105
+ | Patrol result | `mcp__plugin_flutter_flutter-ultra-patrol__get_patrol_result` |
105
106
 
106
107
  ## Event types reference
107
108
 
@@ -42,6 +42,8 @@ Break the user's request into discrete, verifiable steps. Announce the plan befo
42
42
  | Swipe gesture | `mcp__plugin_flutter_flutter-ultra-gesture__swipe` |
43
43
  | Pinch zoom | `mcp__plugin_flutter_flutter-ultra-gesture__pinch_zoom` |
44
44
  | Drag and drop | `mcp__plugin_flutter_flutter-ultra-browser__drag` |
45
+ | Press key | `mcp__plugin_flutter_flutter-ultra-browser__press_key` |
46
+ | Handle dialog | `mcp__plugin_flutter_flutter-ultra-browser__handle_dialog` |
45
47
  | Multi-touch gesture | `mcp__plugin_flutter_flutter-ultra-gesture__perform_actions` |
46
48
  | Open deep link | `mcp__plugin_flutter_flutter-ultra-native-mobile__dispatch_deep_link` |
47
49
  | Set location | `mcp__plugin_flutter_flutter-ultra-native-mobile__set_device_location` |
@@ -152,6 +152,42 @@ Return the output file path, size in bytes, and format. Suggest next steps:
152
152
  - Upload MP4 as a GitHub release asset
153
153
  - Use WebM in `<video>` tags on web landing pages
154
154
 
155
+ ### Patrol-based recording (integration tests)
156
+
157
+ When the demo needs to follow a reproducible patrol integration test script:
158
+
159
+ 1. `mcp__plugin_flutter_flutter-ultra-patrol__start_patrol_recording` — start video capture tied to the patrol test runner.
160
+ 2. `mcp__plugin_flutter_flutter-ultra-patrol__start_patrol_test` with the target test file.
161
+ 3. `mcp__plugin_flutter_flutter-ultra-patrol__poll_patrol_job` until complete.
162
+ 4. `mcp__plugin_flutter_flutter-ultra-patrol__stop_patrol_recording` — finalize the recording.
163
+ 5. `mcp__plugin_flutter_flutter-ultra-patrol__extract_video_frame` — pull a specific frame for thumbnail or analysis.
164
+ 6. `mcp__plugin_flutter_flutter-ultra-build__convert_recording` — convert the output to GIF/MP4/WebM.
165
+
166
+ Use this path when the demo must exactly match a test scenario for reproducibility.
167
+
168
+ ## Tool reference
169
+
170
+ | Action | Tool |
171
+ | --------------------------- | --------------------------------------------------------------------------- |
172
+ | Discover sessions | `mcp__plugin_flutter_flutter-ultra-runtime__discover_sessions` |
173
+ | Runtime evaluate | `mcp__plugin_flutter_flutter-ultra-runtime__evaluate` |
174
+ | Find widget | `mcp__plugin_flutter_flutter-ultra-runtime__find_widget` |
175
+ | Hot reload | `mcp__plugin_flutter_flutter-ultra-runtime__hot_reload` |
176
+ | Browser new context | `mcp__plugin_flutter_flutter-ultra-browser__new_context` |
177
+ | Browser screenshot | `mcp__plugin_flutter_flutter-ultra-browser__screenshot` |
178
+ | Browser navigate | `mcp__plugin_flutter_flutter-ultra-browser__navigate` |
179
+ | Browser click | `mcp__plugin_flutter_flutter-ultra-browser__click` |
180
+ | Browser fill | `mcp__plugin_flutter_flutter-ultra-browser__fill` |
181
+ | Browser start tracing | `mcp__plugin_flutter_flutter-ultra-browser__start_tracing` |
182
+ | Browser stop tracing | `mcp__plugin_flutter_flutter-ultra-browser__stop_tracing` |
183
+ | Browser close context | `mcp__plugin_flutter_flutter-ultra-browser__close_context` |
184
+ | Patrol start recording | `mcp__plugin_flutter_flutter-ultra-patrol__start_patrol_recording` |
185
+ | Patrol stop recording | `mcp__plugin_flutter_flutter-ultra-patrol__stop_patrol_recording` |
186
+ | Patrol start test | `mcp__plugin_flutter_flutter-ultra-patrol__start_patrol_test` |
187
+ | Patrol poll | `mcp__plugin_flutter_flutter-ultra-patrol__poll_patrol_job` |
188
+ | Patrol extract frame | `mcp__plugin_flutter_flutter-ultra-patrol__extract_video_frame` |
189
+ | Convert recording | `mcp__plugin_flutter_flutter-ultra-build__convert_recording` |
190
+
155
191
  ## Notes
156
192
 
157
193
  - ffmpeg must be installed for `convert_recording`. If not found, the tool returns a clear installation hint.
@@ -140,6 +140,10 @@ Got: InvoiceListLoaded with 0 items
140
140
  | Start widget tests | `mcp__plugin_flutter_flutter-ultra-build__start_run_widget_tests` |
141
141
  | Start golden tests | `mcp__plugin_flutter_flutter-ultra-build__start_run_golden_tests` |
142
142
  | Update goldens | `mcp__plugin_flutter_flutter-ultra-build__start_update_goldens` |
143
+ | Start integ tests | `mcp__plugin_flutter_flutter-ultra-build__start_run_integration_tests` |
144
+ | Poll integ tests | `mcp__plugin_flutter_flutter-ultra-build__poll_run_integration_tests` |
145
+ | Get integ results | `mcp__plugin_flutter_flutter-ultra-build__get_run_integration_tests_result` |
146
+ | Cancel integ tests | `mcp__plugin_flutter_flutter-ultra-build__cancel_run_integration_tests` |
143
147
  | List patrol tests | `mcp__plugin_flutter_flutter-ultra-patrol__list_tests` |
144
148
  | Start patrol test | `mcp__plugin_flutter_flutter-ultra-patrol__start_patrol_test` |
145
149
  | Poll patrol | `mcp__plugin_flutter_flutter-ultra-patrol__poll_patrol_job` |
@@ -92,15 +92,26 @@ Write `tour-report.md` with a markdown table of all routes, screenshot paths, an
92
92
  | Attach | `mcp__plugin_flutter_flutter-ultra-runtime__attach` |
93
93
  | Evaluate Dart | `mcp__plugin_flutter_flutter-ultra-runtime__evaluate` |
94
94
  | VM screenshot | `mcp__plugin_flutter_flutter-ultra-runtime__screenshot` |
95
+ | Widget tree | `mcp__plugin_flutter_flutter-ultra-runtime__get_widget_tree` |
95
96
  | Find widget | `mcp__plugin_flutter_flutter-ultra-runtime__find_widget` |
96
97
  | Widget exists | `mcp__plugin_flutter_flutter-ultra-runtime__widget_exists` |
97
98
  | Platform override | `mcp__plugin_flutter_flutter-ultra-runtime__set_platform_override` |
98
99
  | Runtime errors | `mcp__plugin_flutter_flutter-ultra-runtime__get_runtime_errors` |
100
+ | Tap element | `mcp__plugin_flutter_flutter-ultra-gesture__tap` |
101
+ | Swipe gesture | `mcp__plugin_flutter_flutter-ultra-gesture__swipe` |
102
+ | Scroll to element | `mcp__plugin_flutter_flutter-ultra-gesture__scroll_to` |
103
+ | Enter text | `mcp__plugin_flutter_flutter-ultra-gesture__enter_text` |
104
+ | Multi-touch actions | `mcp__plugin_flutter_flutter-ultra-gesture__perform_actions` |
99
105
  | Wait for settle | `mcp__plugin_flutter_flutter-ultra-gesture__wait_for` |
100
106
  | Responsive shots | `mcp__plugin_flutter_flutter-ultra-gesture__take_responsive_screenshots` |
101
107
  | Screencast start | `mcp__plugin_flutter_flutter-ultra-gesture__start_screencast` |
102
108
  | Screencast stop | `mcp__plugin_flutter_flutter-ultra-gesture__stop_screencast` |
103
109
  | Browser screenshot | `mcp__plugin_flutter_flutter-ultra-browser__screenshot` |
110
+ | Browser navigate | `mcp__plugin_flutter_flutter-ultra-browser__navigate` |
111
+ | Browser click | `mcp__plugin_flutter_flutter-ultra-browser__click` |
112
+ | Browser fill | `mcp__plugin_flutter_flutter-ultra-browser__fill` |
113
+ | Browser press key | `mcp__plugin_flutter_flutter-ultra-browser__press_key` |
114
+ | Browser wait for URL | `mcp__plugin_flutter_flutter-ultra-browser__wait_for_url` |
104
115
  | Browser launch | `mcp__plugin_flutter_flutter-ultra-browser__launch_browser` |
105
116
  | Connect CDP | `mcp__plugin_flutter_flutter-ultra-browser__connect_over_cdp` |
106
117
  | Device screenshot | `mcp__plugin_flutter_flutter-ultra-native-mobile__take_device_screenshot` |