From d3f48b0a6f6a021db614a201821298a39e6aa195 Mon Sep 17 00:00:00 2001 From: Developer Date: Fri, 18 Sep 2026 19:07:51 -0400 Subject: [PATCH 1/2] chore(ci): add website relay and backend PR validation --- .github/pull_request_template.md | 50 ++++++++++++++++++++++++++++ .github/workflows/backend-ci.yml | 45 +++++++++++++++++++++++++ .github/workflows/waze-relay-ci.yml | 39 ++++++++++++++++++++++ .github/workflows/website-ci.yml | 51 +++++++++++++++++++++++++++++ 4 files changed, 185 insertions(+) create mode 100644 .github/pull_request_template.md create mode 100644 .github/workflows/backend-ci.yml create mode 100644 .github/workflows/waze-relay-ci.yml create mode 100644 .github/workflows/website-ci.yml diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..1a83e6e --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,50 @@ +## Purpose + + +## Related Issue + +Closes # + +## Changes + + +## Architecture Impact + + +## Risk Boundaries + +- [ ] Telemetry acquisition (FROZEN 20 Hz pipeline) +- [ ] Sensor fusion / lean angle +- [ ] GNSS / speed processing +- [ ] Ride persistence / state machine +- [ ] Database / Drift Schema 7 +- [ ] Authentication / security rules +- [ ] Website (Next.js / Founder Portal / Ops Console) +- [ ] Backend / FastAPI API +- [ ] Routing / Waze relay +- [ ] None + +## Database Impact + +None + +## Validation Actually Executed + +```bash +# Example: +# flutter analyze +# flutter test +# flutter build apk --debug +# npm --prefix website run build +# npm --prefix server/waze_relay test +``` + +## Manual Testing + + +## Review Focus + + +## Documentation +- [ ] Documentation updated +- [ ] Documentation not required for this change diff --git a/.github/workflows/backend-ci.yml b/.github/workflows/backend-ci.yml new file mode 100644 index 0000000..ab7f077 --- /dev/null +++ b/.github/workflows/backend-ci.yml @@ -0,0 +1,45 @@ +name: MotorSignal Backend CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: backend-ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + backend-api-tests: + name: Backend API tests + runs-on: ubuntu-latest + defaults: + run: + working-directory: backend/motorsignal_api + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + cache: 'pip' + cache-dependency-path: backend/motorsignal_api/requirements.lock + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.lock pytest httpx + + - name: Run Firebase Auth signature and claims tests + run: python tests/test_firebase_auth.py + + - name: Run isolated API and Operations unit tests + run: | + pytest tests/test_ops_support.py tests/test_ops_incidents.py tests/test_legacy_admin_retirement.py -v diff --git a/.github/workflows/waze-relay-ci.yml b/.github/workflows/waze-relay-ci.yml new file mode 100644 index 0000000..646df4e --- /dev/null +++ b/.github/workflows/waze-relay-ci.yml @@ -0,0 +1,39 @@ +name: MotorSignal Waze Relay CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: waze-relay-ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + waze-relay-tests: + name: Waze relay tests + runs-on: ubuntu-latest + defaults: + run: + working-directory: server/waze_relay + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Set up Node + uses: actions/setup-node@v6 + with: + node-version: '22' + cache: 'npm' + cache-dependency-path: server/waze_relay/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Run relay tests + run: npm test diff --git a/.github/workflows/website-ci.yml b/.github/workflows/website-ci.yml new file mode 100644 index 0000000..e814a04 --- /dev/null +++ b/.github/workflows/website-ci.yml @@ -0,0 +1,51 @@ +name: MotorSignal Website CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: website-ci-${{ github.ref }} + cancel-in-progress: true + +jobs: + website-build-and-tests: + name: Website build and regression tests + runs-on: ubuntu-latest + defaults: + run: + working-directory: website + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Set up Node + uses: actions/setup-node@v6 + with: + node-version: '22' + cache: 'npm' + cache-dependency-path: website/package-lock.json + + - name: Install dependencies + run: npm ci + + - name: Build Next.js application + run: npm run build + + - name: Run Founder Portal tests + run: node tests/founder-portal.test.cjs + + - name: Run Operations Console tests + run: node tests/ops-experience.test.cjs + + - name: Run Responsive Layout tests + run: node tests/responsive-layout.test.cjs + + - name: Run Navigation and Auth tests + run: node tests/navigation-auth.cjs From ae49814bd70636ad6e8fad89b6f16d91cbb7c82f Mon Sep 17 00:00:00 2001 From: Developer Date: Fri, 18 Sep 2026 21:57:01 -0400 Subject: [PATCH 2/2] fix(android): remove unused MCP toolkit build dependency --- lib/main.dart | 5 -- macos/Flutter/GeneratedPluginRegistrant.swift | 2 - pubspec.lock | 72 ------------------- pubspec.yaml | 1 - 4 files changed, 80 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 2e49012..d9829a9 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -7,7 +7,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:app_links/app_links.dart'; import 'package:firebase_core/firebase_core.dart'; -import 'package:mcp_toolkit/mcp_toolkit.dart'; import 'firebase_options.dart'; import 'core/theme/theme.dart'; import 'core/theme/theme_mode_provider.dart'; @@ -24,10 +23,6 @@ Future main() async { WidgetsFlutterBinding.ensureInitialized(); } - MCPToolkitBinding.instance - ..initialize() - ..initializeFlutterToolkit(); - try { await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 527bde4..f88f581 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -14,7 +14,6 @@ import flutter_tts import geolocator_apple import google_sign_in_ios import in_app_purchase_storekit -import intentcall_platform import package_info_plus import share_plus import shared_preferences_foundation @@ -31,7 +30,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin")) InAppPurchasePlugin.register(with: registry.registrar(forPlugin: "InAppPurchasePlugin")) - IntentCallPlatformPlugin.register(with: registry.registrar(forPlugin: "IntentCallPlatformPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) diff --git a/pubspec.lock b/pubspec.lock index e3600b6..5de8e93 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -297,14 +297,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.0" - dart_mcp: - dependency: transitive - description: - name: dart_mcp - sha256: "852b51da915d679be8d051e2e3b6c68ed19fe685f1c676bb35272a2d73ceac7a" - url: "https://pub.dev" - source: hosted - version: "0.5.2" dart_style: dependency: transitive description: @@ -491,14 +483,6 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.2" - flutter_mcp_toolkit_core: - dependency: transitive - description: - name: flutter_mcp_toolkit_core - sha256: fc61b977983b0615b84c27404db86c18bb703af519867b51fb72136f95682148 - url: "https://pub.dev" - source: hosted - version: "5.1.0" flutter_native_splash: dependency: "direct dev" description: @@ -589,14 +573,6 @@ packages: description: flutter source: sdk version: "0.0.0" - from_json_to_json: - dependency: transitive - description: - name: from_json_to_json - sha256: a29219df65cd20b1b17be8141ee51b3103d1cd95b192b7512139f3ae44775f49 - url: "https://pub.dev" - source: hosted - version: "0.5.0" geoclue: dependency: transitive description: @@ -877,30 +853,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.11+2" - intentcall_core: - dependency: transitive - description: - name: intentcall_core - sha256: "10363edd11dab107d83d5126decec03d07ab6bf9fa4685a62f9f9d9c0af13cea" - url: "https://pub.dev" - source: hosted - version: "0.6.0" - intentcall_platform: - dependency: transitive - description: - name: intentcall_platform - sha256: a14d533b5ab2413c67ce2f943b56ab2a335a1a46b88a00ae62d72fafc6cacf50 - url: "https://pub.dev" - source: hosted - version: "0.6.0" - intentcall_schema: - dependency: transitive - description: - name: intentcall_schema - sha256: "7fd95e20f8d32f5ffe6c9cd4058d3fbf513c52dff69a63d9c4c8f4bf2810f842" - url: "https://pub.dev" - source: hosted - version: "0.6.0" intl: dependency: "direct main" description: @@ -917,14 +869,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.5" - is_dart_empty_or_not: - dependency: transitive - description: - name: is_dart_empty_or_not - sha256: "1454632c2b961175d4c2807310713cbcbd054a51e63c545dc86c3eb9b2b061b0" - url: "https://pub.dev" - source: hosted - version: "0.4.0" jni: dependency: transitive description: @@ -957,14 +901,6 @@ packages: url: "https://pub.dev" source: hosted version: "4.12.0" - json_rpc_2: - dependency: transitive - description: - name: json_rpc_2 - sha256: "82dfd37d3b2e5030ae4729e1d7f5538cbc45eb1c73d618b9272931facac3bec1" - url: "https://pub.dev" - source: hosted - version: "4.1.0" latlong2: dependency: "direct main" description: @@ -1061,14 +997,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" - mcp_toolkit: - dependency: "direct main" - description: - name: mcp_toolkit - sha256: "75713760da19ef3b0b370e572d7714d51346f2411221ecce86fc5555918c0f2b" - url: "https://pub.dev" - source: hosted - version: "5.1.0" meta: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 5dfc41d..fdba60e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -66,7 +66,6 @@ dependencies: flutter_secure_storage: ^10.2.1 in_app_purchase: 3.3.0 marionette_flutter: ^0.6.0 - mcp_toolkit: ^5.1.0 dev_dependencies: flutter_test: