Skip to content

chore(dev): add personal build config overlay for local dev builds - #11789

Merged
kodjima33 merged 1 commit into
BasedHardware:mainfrom
formed2forge:feat/ios-personal-config-overlay
Aug 18, 2026
Merged

chore(dev): add personal build config overlay for local dev builds#11789
kodjima33 merged 1 commit into
BasedHardware:mainfrom
formed2forge:feat/ios-personal-config-overlay

Conversation

@formed2forge

@formed2forge formed2forge commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Summary

Split out of #7641 at maintainer request — that PR mixed two unrelated concerns (dynamic DEVELOPMENT_TEAM/entitlements signing fix, and this personal-configs overlay), and splitting makes both easier to review and land independently.

Introduces a .personal_configs/ convention at the repo root for contributors to store machine-local Firebase credentials and dev env config without committing them:

  • .personal_configs.example/ — templates for .dev.env, GoogleService-Info.plist, and firebase_options_dev.dart, with instructions for where to get real values
  • app/setup-personal.sh — copies .personal_configs/ into the app tree after setup.sh, with an optional ngrok-URL override for API_BASE_URL
  • .personal_configs/ added to .gitignore so real credentials never get committed

Carries the same content as #7641's commits 1295dc33a2/b246990fa9, rebased onto current main — no functional changes from what was already reviewed there.

Known nit (carried forward, not fixed here)

setup-personal.sh uses sed -i '' (BSD/macOS syntax) — fine since this is iOS-only tooling, but flagged in the original PR review as worth a comment if Linux contributors might use it. Left as-is to keep this a pure split with no new changes; happy to address in review if wanted.

Failure-Class: none

Review in cubic

Introduces a .personal_configs/ convention at the repo root for
contributors to store machine-local Firebase credentials and dev env
config without committing them. Run app/setup-personal.sh after
setup.sh to copy them into place.

Split out of BasedHardware#7641 at maintainer request (community-build signing fix
and this overlay are unrelated concerns and easier to review apart) —
carries the same content as that PR's commits 1295dc3/b246990fa9,
rebased onto current main.

Failure-Class: none
formed2forge added a commit to formed2forge/omi that referenced this pull request Aug 18, 2026
Moved to BasedHardware#11789 at @Git-on-my-level's request — the community-build
signing fix (dynamic DEVELOPMENT_TEAM/APP_GROUP_IDENTIFIER, stripped
dev entitlements) and this overlay are unrelated concerns and easier
to review and land independently.

Failure-Class: none
@Git-on-my-level

Copy link
Copy Markdown
Collaborator

Thanks for the clean split out of #7641 — I verified file-by-file that this PR stands on its own against main, with no dependency on the still-open #7641.

.gitignore — the single added line .personal_configs/ sits below the !.env*.template negation block, so it doesn't disturb the env-template un-ignore rules, and nothing in that directory matches the earlier *.env / .env* patterns in a way that could re-include private files. Only the private copy is ignored; the committed example directory is unaffected. Correct placement.

.personal_configs.example/.dev.env.template — keys-only template (OPENAI_API_KEY=, API_BASE_URL=, GOOGLE_MAPS_API_KEY=, …) with no real values or real URLs. Matches the env keys the app's existing setup flow consumes via .dev.env + build_runner.

.personal_configs.example/GoogleService-Info.plist — structurally valid but empty plist (<dict></dict>) with comments pointing to the Firebase console for the real download. Good: it can't be mistaken for working credentials.

.personal_configs.example/firebase_options_dev.dart — comments only, including a genuinely useful warning against running flutterfire configure inside app/ (which would overwrite the committed prod credentials). This matches a real hazard: /app/lib/firebase_options_dev.dart is gitignored on main precisely because it's generated per-machine.

app/setup-personal.sh — all operations are local cp/sed/mkdir/grep; no network access, no curl/wget, no eval of file contents, no writes outside the app tree. Destinations verified to exist as conventions on main independent of #7641: ios/Config/Dev/GoogleService-Info.plist and ios/Runner/ (the Xcode pre-build script in project.pbxproj copies Config/DevRunner at build time), lib/firebase_options_dev.dart (already created/expected by app/setup.sh and app/test.sh), and .dev.env (consumed via dart run build_runner build, which the script's final hint correctly references). The optional ngrok-URL argument only rewrites API_BASE_URL= in the generated local .dev.env — machine-local, never committed.

Two small non-blocking notes:

  • sed -i '' is BSD/macOS-only and will fail on GNU sed (Linux). You already flagged this as a carried nit; fine for iOS-focused tooling, just noting Linux contributors will hit it.
  • Writing the same plist to both ios/Config/Dev/ and ios/Runner/ is harmless (Runner is refreshed from Config at build time anyway) and keeps on-disk copies consistent with what app/setup.sh does on main.

Checks that ran (Dart Analyze & Tests, Formatting, Hygiene, Backend Hermetic Merge Gate) all pass; the skipped heavier jobs are expected for non-app-code changes.

Nice developer-experience contribution — the warning about flutterfire configure overwriting prod credentials alone will save someone a bad afternoon. Leaving for human maintainer review before merge.


by AI on behalf of David — if you need David’s attention urgently, please @Git-on-my-level and escalate with need human response.

@Git-on-my-level Git-on-my-level added positive-signal Good PR — positive signal, not a formal approval docs-tooling Layer: Documentation, examples, dev tools labels Aug 18, 2026
@formed2forge

Copy link
Copy Markdown
Contributor Author

All CI checks are green and the review above raised no blocking issues — this is ready for maintainer merge whenever convenient. I don't have write access to merge it myself.

@kodjima33 kodjima33 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pure split of #7641 at maintainer request — gitignored .personal_configs overlay plus empty templates; no real credentials, no product code.

@kodjima33
kodjima33 merged commit 0cc097b into BasedHardware:main Aug 18, 2026
38 of 39 checks passed
@cursor
cursor Bot deleted the feat/ios-personal-config-overlay branch September 2, 2026 02:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs-tooling Layer: Documentation, examples, dev tools positive-signal Good PR — positive signal, not a formal approval

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants