Skip to content

feat: implementation of modular Test Harness UI and native signal refinements#36

Closed
egiray wants to merge 7 commits into
godot-x:mainfrom
egiray:feature/harness-ui-dashboard
Closed

feat: implementation of modular Test Harness UI and native signal refinements#36
egiray wants to merge 7 commits into
godot-x:mainfrom
egiray:feature/harness-ui-dashboard

Conversation

@egiray
Copy link
Copy Markdown
Contributor

@egiray egiray commented Apr 21, 2026

Summary

This PR implements a modular, dashboard-style UI for the Firebase Test Harness. It overhauls the previous monolithic script into a clean ViewStack architecture, allowing each Firebase module (Analytics, Messaging, Remote Config, etc.) to have its own dedicated, isolated interface.

Key Features

  • Dashboard Infrastructure: Introduced a tabbed navigation system and a ViewStack node for efficient context switching between modules.
  • Improved Native Signal Reliability: Refactored the core logic to ensure UI feedback (Success/Failure states) is strictly tied to native-layer confirmations.
  • iOS Safe Area Support: Added dynamic adjustments to ensure the harness remains fully usable on modern iPhone displays.
  • UX Polish: Added a "Copy Log" utility for easier debugging on physical devices and unified button states across all modules.

Dependencies & Context

Important

This PR is Phase 2 of the modernization roadmap. It is built directly on top of PR #34 (Shared Foundation).

Please ensure PR #34 is merged first, as this PR depends on the shared base setup and versioning introduced there.

Modernization Roadmap

  1. Phase 1: Shared Foundation (PR chore: Shared foundation fixes and Test Harness UI improvements #34) ✅
  2. Phase 2: Dashboard UI Infrastructure (This PR) ✅
  3. Phase 3: Remote Config Module (PR feat: Add Native Firebase Remote Config Support (Android & iOS) #37)
  4. Phase 4: Enhanced Messaging: Native data payload support.
  5. Phase 5: Analytics Extension: Advanced tracking and user properties.

Testing Performed

  • Verified consistent behavior across Android and iOS physical devices.
  • Confirmed modular view switching doesn't impact Firebase initialization state.
  • Verified signal propagation from native plugins to the new UI components.

egiray added 7 commits April 19, 2026 17:12
…heck

This signal is iOS-only (APN = Apple Push Notifications). Connecting it
unconditionally on Android throws a script error that halts plugin
initialization for all subsequent plugins in the same function.
Crashlytics requires the com.google.firebase.crashlytics Gradle plugin to
be applied at build time so it can inject a build UUID into the APK. Without
it the app crashes at launch with 'The Crashlytics build ID is missing'.

The export plugin now patches settings.gradle and build.gradle automatically
when firebase/enable_crashlytics is true, so users do not have to edit the
Android build template manually.
@paulocoutinhox
Copy link
Copy Markdown
Contributor

Hi. The gradle com.google.gms.google-services part is already in the documentation. We can't put it fixed because depends of the version the user wanna use in their Android project and compatible with their plugins/tools. It also depends of gradle or kts.

@egiray
Copy link
Copy Markdown
Contributor Author

egiray commented Apr 28, 2026

I am closing this PR. Since I've updated and made a bigger PR:

PR38

@egiray egiray closed this Apr 28, 2026
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