Skip to content

Merge branch 'main' into crashlytics#10171

Merged
andrewbrook merged 95 commits intocrashlyticsfrom
crash1
Mar 25, 2026
Merged

Merge branch 'main' into crashlytics#10171
andrewbrook merged 95 commits intocrashlyticsfrom
crash1

Conversation

@andrewbrook
Copy link
Copy Markdown
Contributor

Merge branch 'main' into crashlytics

lfkellogg and others added 30 commits March 4, 2026 16:25
* Observe the project (ID) flag

* Add AGY workaround - don't check for AGY if we're not going to open it

---------

Co-authored-by: Joe Hanley <joehanley@google.com>
Initial refactor for moving secret logic to index.ts (#10010)
Secret upload apphosting (#10017)
* update fdc emulator to 3.2.1

* changelog

* fix naming
* Flip resolvers flag.

* Update changelog.
* Add support for additional Next.js config file types

- Updated CONFIG_FILES to include "next.config.ts" and "next.config.mts".
- Modified logic in ɵcodegenFunctionsDirectory to handle new config file types.
- Added unit tests for whichNextConfigFile to ensure correct file detection and prioritization.

* cleanup pathExists stub usage in Next.js utils tests

* update comment

* changelog
* GA4 tracking with framework.
* implement --only for emulators:export

* remove console logs

* changelog entry

* change  to be nullable

* add tests to make sure exporting with POST works

* Update CHANGELOG.md

---------

Co-authored-by: Joe Hanley <joehanley@google.com>
This is in preparation for final testing and release of this feature.
* Add support for VPC direct connect in GCF 2nd gen

* Changelog

* Update src/deploy/functions/build.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* NPM run format

* PR feedback RE error checking

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* Add export from zip support'

* Emojis are fun

* More minor fixes
- Added support for specifying a custom PostgreSQL schema name in the configuration.
- Updated the `getIdentifiers` function to return the schema name, defaulting to 'public' if not specified.
- Modified relevant functions to utilize the schema name for database operations.
- Added tests to validate schema name handling in various scenarios.
* Clarify system prompt

* Add line about installing skills if missing

* Update templates/firebase-studio-export/system_instructions_template.md

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* Make AGY insatllation optional in case we can't detect it.
…10060)

* Log console link again after running tests

* Fix tests
* Validate App ID from Gemini

* Include app ID in error message
…10049)

* Extract App Hosting YAML configuration loading into a shared utility function and add environment variable splitting.

By extracting this code, it's possible to re-use the logic in other parts of our cli code.

* Add test verification

* remove unneccesary options/opts

* Get rid of unused SplitEnvVars code (for now)

* Fix linter error (define dynamicDispatch earlier)
* Removing webframeworks questions from init hosting

* Pr fixes

* redirect to init apphosting for webframeworks on init hosting (#9887)

* recommend apphosting for webframeworks on init hosting

When running `firebase init hosting`, run framework detection. If a Node.js webframework is found, terminate the flow with an error directing users to run
`firebase init apphosting` instead.

* simplify message, use mayWantBackend instead

* update tests

* nextjs in test

* redirect to apphosting

* remove redundant comments

* keep imports order

* pr comments

* split framework detection into categories, per-framework tests

* PR comments

---------

Co-authored-by: Leonardo Ortiz <83593673+leoortizz@users.noreply.github.com>
* Include cache configs for sdk generation

* Update src/dataconnect/types.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update types.ts

* Update load.ts to add clientCache configs to connector info

* Update load.ts

* Update load.ts

* Update types.ts

* Update types.ts

* Update load.ts

* Create load.spec.ts

* Update types.ts

* Update load.ts

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
lfkellogg and others added 25 commits March 17, 2026 01:38
* feat: Add dart delegate

* feat: add support for hot reloading

* fix: wait for build_runner initial build to complete

* fix rooting

* emulator update

* update functions.yaml directory

* clean run on emulator

* clear project

* improve runtime checks

* merge fixes

* clean

* Fixing feedback from Gemini

* compile before deploy

* remove placeholder runtime

* cross compiling

* emulator fix

* fix rooting

* fix emulator detection

* skipping compilation in emulator run

* clean output

* prevent duplicate watches

* dart entry point and min dart version enforcing

* change entry point to bin/server.dart

* update template

---------

Co-authored-by: Elliot Hesp <elliot.hesp@gmail.com>
Co-authored-by: Darren Ackers <ackers86@hotmail.com>
* Add explicit genkit versioning for upgrading genkit-cli.
* Add changelog entry for new apptesting:execute command

* Add trailing newline

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…0128)

* If no binary passed to apptesting:execute, use latest App Distribution release

* Simplify if condition

* Fix formatting
* Update fs emulator to 1.20.4

* remove unrelated change

---------

Co-authored-by: Joe Hanley <joehanley@google.com>
Co-authored-by: Kushal Palesha <3357451+kushalpalesha@users.noreply.github.com>
* Add support for setting DataAccessMode in firebase.json

* Dont change defaults

* Regen schema;

* pr fixes
* Initial commit for adding the ability to pass the runtime flag

* Add some unit tests and improve wording

* Fix unit tests, handle undefined runtimes more explicitly

* Use default runtime variable and dedupe test code

* Add ABIU fields to backend creation in our CLI (also includes ability to pass the runtime)

* Fix formatting/linter errors

* Guard this behind an experiment flag

* Update backends:list to only show ABIU in the column if the flag is enabled

* Make it so ABIU flags only show up if the experiment flag is enabled

* Make our logic for runtime more lenient. If it's not defined, assume it is ""

* Improve test coverage, make runtime default to ""

* Default runtime is "nodejs"

* Update runtime to be more risilient to empty string values

* Also display the "runtime" field when listing backends

* Polish fixes

---------

Co-authored-by: Aryan Falahatpisheh <aryanf@google.com>
Co-authored-by: Joe Hanley <joehanley@google.com>
* feat: add functions:export command with internal format support

* PR feedback

* Lint

* Fix merge wonkiness
)

* fix(storage): catch unhandled promise rejection in rules watcher

### Description
Resolves a flaky test issue in the storage emulator integration tests ('Storage Rules Manager should load multiple rulesets on start').
The test was crashing asynchronously due to an ENOTDIR error when reading '/dev/null/storage.rules'. This occurred because chokidar would occasionally fire a 'change' event for the mock file, triggering a synchronous `readFile` call inside an unawaited async event listener. The resulting unhandled promise rejection would crash the Node process and cause the test to fail with 'done() called multiple times'.
This commit wraps the `readFile` call in a try...catch to suppress the error and safely log it as a debug warning instead of crashing.

### Scenarios Tested
- npm run test:storage-emulator-integration

### Sample Commands
- none

* style(storage): use type guard for caught exception
* feat: add functions:export command with internal format support

* PR feedback

* Lint

* feat: add terraform hcl generation utilities

* PR feedback. More comments

* Improve tests

* PR feedback
…ns (#8156)

* Add private flag for disabling eager check for decomissioned functions runtimes

* Formatter
* Zip deploy fixes

* use staging and specify uploading TAR

* Improve docs

* Allow reading of simple env vars (not secrets) and passing them down to the local build process

* Add some fixes for npm parsing issues

* Adding various local fixes/hacks to make local builds work. It includes:

1. Fix for injecting auto-init variables into the build

2. Fixes how we handle dependencies, nodejs paths, modulepaths, etc. This needs closer attention/fixes.

3. Adds env var handling (not secrets) and determines which env vars to pass down to the build

* Follow-up fixes for ensuring we have account access for cloud storage buckets

* formatting fixes

* Get rid of env override

* Temporarily add a test app to easily test changes

* For local builds, explicitly check for apphosting.yaml files (and all variants) and include them in the final artifact

* Add hono to packages

* Get rid of test app

* Get rid of uniformBucketLevelAccess config which was not required

* Fix tarball unit test

* Make local builds less hardcoded by checking if the build config is actually a local build (instead of assuming true.)

* Add a new experiment flag to control local builds (apphostinglocalbuilds)

* Remove references to runtime flag

* Clean up the PR so that we gate by apphostinglocalbuilds experiment more strictly. We also remove some hardcoded values and we generalize the code so that it does not affect source deploys.

The goal is to prepare this PR so that we can safely submit it to main (behind the experiment flag.)

* Make the code for adding service account IAM permission more restrictive. Only run it if it's a local build and the local build experiment flag is enabled.

* remove es2020 dependency

* feat: barebones local build implementation

* Parser fixes

* Undo some unintended changes

* Undo some unintended changes

* Linter fixes

* Linter fixes

* improve unit tests

* update npm shrinkwrap

* Update the shrinkwrap correctly using the correct npm versions

* Remove env handling which wasn't used yet

* Address review comments

* Enforce experiment flag

* Correct failure string

* linter/formatter

* fix tests

* Fix linter warnings

---------

Co-authored-by: Joanna Wang <annajowang@gmail.com>
Co-authored-by: annajowang <31288696+annajowang@users.noreply.github.com>
* Fix storage emulator crash on invalid JWT and add unit tests

* Refactor createAuthExpressionValue to improve type safety and robustness

* Eliminate 'as any' in createAuthExpressionValue using type-safe property check

* gemini feedback
* Prompt to install skills on firebase init

* Parallel wont work

* PR fixes

* Format

* Refactor

* missed a file
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces significant new features and improvements across several Firebase CLI components. Key updates include adding full support for Dart as a Cloud Functions language, enhancing App Hosting with runtime and automatic base image update configurations, and a major overhaul of the Firebase Studio migration tool to better support various web frameworks and Antigravity integration. Additionally, it integrates Agent Skills into the firebase init process, refines Data Connect's SQL schema management, and provides more control over emulator data exports.

Highlights

  • App Hosting Enhancements: Introduced support for specifying runtime and automatic base image updates (ABIU) during App Hosting backend creation, and updated the backend listing table to display these new properties.
  • Dart Functions Support: Added comprehensive support for Dart as a Cloud Functions language, including a new runtime delegate, firebase init setup, and emulator integration with build_runner for development workflows.
  • Firebase Studio Migration Tooling: Significantly enhanced the studio:export command to handle .zip archives, automatically detect project frameworks (Next.js, Angular, Flutter), configure Antigravity MCP servers, upload secrets from .env files, and generate appropriate VS Code launch/task configurations.
  • Agent Skills Integration: Implemented new Agent Skills functionality, including a prompt during firebase init to install skills and a dedicated module for managing their installation.
  • Data Connect Improvements: Expanded Data Connect configurations to include a schema property for PostgreSQL datasources, integrated schemaName into SQL setup and shell commands, and added logic to infer client-side caching settings for generated SDKs.
  • Emulator Export Filtering: Added the ability to specify target emulators for data export via the emulators:export command, allowing for more granular control over exported data.
  • Firestore Data Access Mode: Enabled configuration of dataAccessMode (FIRESTORE_NATIVE or MONGODB_COMPATIBLE) for Firestore Enterprise Edition databases.
  • Cloud Functions VPC Network Interfaces: Added support for configuring VPC networkInterfaces for GCFv2 functions, providing more flexible networking options.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@google-cla
Copy link
Copy Markdown

google-cla Bot commented Mar 25, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Warning

Gemini encountered an error creating the review. You can try again by commenting /gemini review.

@andrewbrook andrewbrook merged commit 75ae814 into crashlytics Mar 25, 2026
42 of 43 checks passed
@andrewbrook andrewbrook deleted the crash1 branch March 25, 2026 14:18
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.