Skip to content

Add an experimental doc as a repository for AI agent knowledge #1734

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 18, 2025

Conversation

jonsimantov
Copy link
Contributor

Description

Provide details of the change, and generalize the change in the PR title above.

This experimental document is meant for consumption by AI agents and will be maintained by them as a way to remember repo standards and conventions across tasks.


Testing

Describe how you've tested these changes. Link any manually triggered Integration tests or CPP binary SDK Packaging Github Action workflows, if applicable.


Type of Change

Place an x the applicable box:

  • Bug fix. Add the issue # below if applicable.
  • New feature. A non-breaking change which adds functionality.
  • Other, such as a build process or documentation change.

Notes

  • Bug fixes and feature changes require an update to the Release Notes section of release_build_files/readme.md.
  • Read the contribution guidelines CONTRIBUTING.md.
  • Changes to the public API require an internal API review. If you'd like to help us make Firebase APIs better, please propose your change in a feature request so that we can discuss it together.

This commit reformats the Jules.md AI guide to ensure all narrative
text is wrapped to a maximum of 80 characters per line.

This change improves readability, especially in environments or editors
with limited horizontal space, and aligns with common markdown style
preferences. Code blocks have been preserved with minimal changes
to maintain their integrity.
This commit updates Jules.md, the AI agent guide, with additional
context and details sourced from the official Firebase C++ online
documentation.

Key enhancements include:

-   **Introduction**: Added a link to the Firebase library support by
    platform table and a note on the open-source structure of the C++ SDKs
    (desktop vs. mobile).
-   **Setup Commands**:
    -   Clarified iOS setup to include linking .framework files alongside
        pods.
    -   Added a new "Desktop Platform Setup Details" subsection, covering:
        -   Conversion of iOS `GoogleService-Info.plist` to
            `google-services-desktop.json` using the provided Python
            script.
        -   Search order for desktop configuration files.
        -   Common system library dependencies for Windows, macOS, and
            Linux desktop builds.
-   **API Surface**:
    -   Clarified that `firebase::auth::User` objects are typically
        obtained from `firebase::auth::AuthResult` after successful
        authentication operations.
-   **Best Practices**:
    -   Added a "Platform-Specific Considerations" subsection detailing:
        -   The REST-based nature of the Realtime Database C++ SDK on
            desktop and the consequent need for server-side indexing for
            `OrderByChild()` queries.
        -   Awareness of iOS method swizzling used by some Firebase
            products.

These additions provide more comprehensive guidance for you,
particularly regarding platform-specific nuances and SDK architecture.
The document maintains an 80-character line wrap.
@jonsimantov jonsimantov requested a review from a-maurice June 18, 2025 00:17
@jonsimantov jonsimantov added the skip-release-notes Skip release notes check label Jun 18, 2025
…alization and Future management.

This update incorporates further feedback from you into Jules.md:

1.  **Clarified Analytics Initialization:**
    The "API Surface" -> "Initialization" section now specifies that
    Firebase Analytics uses a different initialization pattern
    (`firebase::analytics::Initialize(app)`) compared to the common
    `GetInstance(app, ...)` pattern of other services. It also notes
    that Analytics functions are typically called globally.

2.  **Added Future Lifecycle Management Guidance:**
    A new point in "Best Practices" -> "Resource Management" emphasizes
    the importance of ensuring `Future` objects complete their course
    (e.g., via `OnCompletion` or by checking results) to prevent
    potential issues with operations not finalizing or resources not
    being cleaned up promptly.

These changes provide more nuanced guidance for interacting with the Firebase C++ SDK.
@jonsimantov jonsimantov enabled auto-merge (squash) June 18, 2025 00:51
@jonsimantov jonsimantov merged commit 5ea2a16 into main Jun 18, 2025
29 checks passed
@github-actions github-actions bot added the tests: in-progress This PR's integration tests are in progress. label Jun 18, 2025
Copy link

github-actions bot commented Jun 18, 2025

Integration test with FLAKINESS (succeeded after retry)

Requested by @jonsimantov on commit 5ea2a16
Last updated: Tue Jun 17 20:26 PDT 2025
View integration test log & download artifacts

Failures Configs
messaging [TEST] [FLAKINESS] [Android] [1/3 os: ubuntu] [1/2 android_device: android_target]
(1 failed tests)  FirebaseMessagingTest.TestSendMessageToToken

Add flaky tests to go/fpl-cpp-flake-tracker

@github-actions github-actions bot added the tests: succeeded This PR's integration tests succeeded. label Jun 18, 2025
@firebase-workflow-trigger firebase-workflow-trigger bot removed the tests: in-progress This PR's integration tests are in progress. label Jun 18, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
skip-release-notes Skip release notes check tests: succeeded This PR's integration tests succeeded.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants