Skip to content

feat(bridge): add Ask UI launch release#30

Merged
drown0315 merged 9 commits into
mainfrom
feat/ask-ui-bridge-launch-release
Jul 11, 2026
Merged

feat(bridge): add Ask UI launch release#30
drown0315 merged 9 commits into
mainfrom
feat/ask-ui-bridge-launch-release

Conversation

@drown0315

Copy link
Copy Markdown
Owner

What Changed

  • Added the Ask UI bridge launch flow, including launch adapters/options/contracts, Flutter machine-output parsing, monorepo web dev launch support, and packaged workbench URL/device handling.
  • Added Ask UI launch skills and expanded bridge/runtime release packaging with changelogs, licenses, README updates, release layout validation, and publish/CI workflow coverage.
  • Fixed launch reliability issues around global bridge command usage and packaged scrcpy server path resolution.

Risk Assessment

⚠️ Medium: The diff is a broad release-oriented launcher/package change with process orchestration and publishing workflow changes, but I did not find a substantiated introduced bug in the reviewed code.

Testing

Ran focused and package-level Dart tests, full Web tests after installing dependencies with a worktree-local npm cache, Flutter runtime tests, release layout validation, and evidence-producing launch/HTTP checks. Reviewer-visible evidence was written to the requested evidence directory; no screenshot was captured because the browser connector reported no available browser, so I captured the served packaged HTML and HTTP artifacts instead.

Evidence: Launch ready JSON contract
{
  "status": "ready",
  "selectedDevice": {
    "id": "emulator-5554",
    "name": "Pixel 6",
    "targetPlatform": "android-arm64"
  },
  "launchIntent": {
    "device": "emulator-5554",
    "flavor": "staging",
    "target": "lib/main_staging.dart",
    "dartDefines": [
      "API_HOST=local"
    ],
    "projectRoot": "/workspace/flutter_app",
    "open": false,
    "webDev": false
  },
  "bridgeUrl": "http://127.0.0.1:8787",
  "sessionId": "session-123",
  "vmServiceUri": "ws://127.0.0.1:40401/ws",
  "projectRoot": "/workspace/flutter_app",
  "flavor": "staging",
  "target": "lib/main_staging.dart",
  "agentCommand": "ask_ui_bridge agent poll --base-url http://127.0.0.1:8787 --session-id session-123",
  "workbenchUrl": "http://127.0.0.1:8787/?bridgeUrl=http%3A%2F%2F127.0.0.1%3A8787&sessionId=session-123&deviceId=emulator-5554&projectRoot=%2Fworkspace%2Fflutter_app&flavor=staging&target=lib%2Fmain_staging.dart",
  "browserOpened": false,
  "nextStep": "Run the returned agent poll command."
}
Evidence: Packaged workbench HTML served by bridge
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Ask UI</title>
    <script type="module" crossorigin src="/assets/index-CKHto2yr.js"></script>
    <link rel="stylesheet" crossorigin href="/assets/index-Cf93crWF.css">
  </head>
  <body>
    <div id="root"></div>
  </body>
</html>
Evidence: Packaged workbench root HTTP response
HTTP/1.1 200 OK
access-control-allow-headers: content-type
transfer-encoding: chunked
access-control-allow-origin: *
access-control-allow-methods: POST, GET, OPTIONS
x-frame-options: SAMEORIGIN
content-type: text/html; charset=utf-8
x-xss-protection: 1; mode=block
x-content-type-options: nosniff

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Ask UI</title>
    <script type="module" crossorigin src="/assets/index-CKHto2yr.js"></script>
    <link rel="stylesheet" crossorigin href="/assets/index-Cf93crWF.css">
  </head>
  <body>
    <div id="root"></div>
  </body>
</html>
Evidence: Packaged JavaScript asset headers
HTTP/1.1 200 OK
access-control-allow-headers: content-type
transfer-encoding: chunked
access-control-allow-origin: *
access-control-allow-methods: POST, GET, OPTIONS
x-frame-options: SAMEORIGIN
content-type: application/javascript; charset=utf-8
x-xss-protection: 1; mode=block
x-content-type-options: nosniff

Evidence: Served workbench/API summary

Root title/assets: <title>Ask UI</title> <script type="module" crossorigin src="/assets/index-CKHto2yr.js"></script> <link rel="stylesheet" crossorigin href="/assets/index-Cf93crWF.css"> API missing response: {"error":"not_found"}

Root title/assets:
    <title>Ask UI</title>
    <script type="module" crossorigin src="/assets/index-CKHto2yr.js"></script>
    <link rel="stylesheet" crossorigin href="/assets/index-Cf93crWF.css">

API missing response:
{"error":"not_found"}
Evidence: Unknown API route remains JSON
HTTP/1.1 404 Not Found
access-control-allow-headers: content-type
transfer-encoding: chunked
access-control-allow-origin: *
access-control-allow-methods: POST, GET, OPTIONS
x-frame-options: SAMEORIGIN
content-type: application/json; charset=utf-8
x-xss-protection: 1; mode=block
x-content-type-options: nosniff

{"error":"not_found"}
Evidence: Release layout validation

Bridge release layout is valid.

Bridge release layout is valid.

Pipeline

Updates from git push no-mistakes

⏭️ **intent** - skipped

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

⚠️ **Review** - medium risk

✅ No issues found.

✅ **Test** - passed

✅ No issues found.

  • cd apps/bridge && dart test test/launch/launch_command_test.dart test/launch/launch_skill_workflow_test.dart test/release/release_layout_validator_test.dart test/server/packaged_web_test.dart
  • cd apps/web &amp;&amp; npm test -- src/session/sessionBootstrap.test.ts scripts/copy-dist-to-bridge.test.mjs (initial run failed because local dependencies were not installed)
  • cd apps/web &amp;&amp; npm ci (setup attempt failed on user-level npm cache permissions)
  • cd apps/web && rm -rf node_modules .npm-cache && npm ci --cache .npm-cache
  • cd apps/web && npm test
  • cd apps/bridge && dart test
  • cd apps/bridge && dart run tool/validate_release_layout.dart
  • cd packages/ask_ui_runtime &amp;&amp; dart test (not applicable; Flutter package requires Flutter SDK)
  • cd packages/ask_ui_runtime && flutter --version && flutter test
  • dart --packages=.dart_tool/package_config.json /var/folders/1b/xbh8qb0d0j11fzyfm0qs0pf40000gn/T/no-mistakes-evidence/01KX83FQRSPFS23VKRA8T74NG5/launch_ready_evidence.dart > /var/folders/1b/xbh8qb0d0j11fzyfm0qs0pf40000gn/T/no-mistakes-evidence/01KX83FQRSPFS23VKRA8T74NG5/launch_ready.json
  • cd apps/bridge &amp;&amp; dart run bin/ask_ui_bridge.dart --host 127.0.0.1 --port 39877 plus curl checks for /, packaged JS asset headers, and /api/missing
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

@drown0315
drown0315 merged commit 2598154 into main Jul 11, 2026
3 checks passed
@drown0315
drown0315 deleted the feat/ask-ui-bridge-launch-release branch July 11, 2026 08:51
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.

1 participant