● Set up · For operators
What you change without code.
And honestly, what needs a new build.
Almost everything users see is a console setting that reaches installed apps the next time they start, without a store update. A few things are compiled into the app or registered with the stores and need a rebuild. This page lists both.
01How a console change reaches the app
- You savein the console. It writes
config/publicin Firestore at once. - The backend serves itas
GET /v1/config, cached for 60 seconds. - The app reads iteach time it starts and keeps a copy for offline starts. Users see the change the next time they start the app (an app that only comes back from the background keeps the configuration it loaded).
02Change in the console, no rebuild
| What | Console page |
|---|---|
| App name inside the app (top bar, empty chat, paywall, Settings, exports), tagline, accent colour, support e-mail | Brand |
| Terms and privacy links, the AI notice under the composer, the image badge text, minimum age, the age check | Legal |
| Which features exist: chat, images, voice, photos, PDFs, assistants, prompts, web search, cloud backup, share, Discover, voice mode, natural voices, transcription, video editor, auto captions, AI video, image edit, image tools, incognito, follow-ups | Features |
| Which sign-in buttons appear (after enabling them in Firebase) | Sign-in methods |
| Default model, title model, context length, web search, follow-up suggestions, the suggestion chips | Chat |
| Chat, image, image-edit, voice and video models: names, badges, order, tier (free or a plan), credit cost, capabilities, which are enabled | Chat models, Image models & styles, Image tools, Voices & transcription, Video |
| Caption styles; Discover categories and feeds | Caption styles, Discover |
| Image styles, assistants, prompt library | Image models & styles, Assistants, Prompt library |
| Provider keys and which provider answers a model | AI providers & keys, Image providers & keys, Voices & transcription, Video |
| Blocked words and the moderation endpoint | Moderation |
| Free limits, rewarded unlocks | Limits |
| Up to 4 plans: names, features, ranks, limits, store product ids, on or off | Plans |
| Paywall layout, texts and timing | Paywall |
| Purchases on or off, Remove-ads and credit-pack product ids, credits per pack | Store & purchases |
| Ads on or off, network or waterfall, every placement and frequency, ad unit ids | Ads, network id pages |
| Push messages to everyone, users on a plan or free users | Push campaigns |
| A user's plan, bonus credits, Remove ads, ban | Users |
03Needs a new app build
| What | Where | Why it cannot come from the console |
|---|---|---|
| App name under the icon on the phone | android:label in android/app/src/main/AndroidManifest.xml, CFBundleDisplayName in ios/Runner/Info.plist, web/index.html and web/manifest.json | The phone reads it from the installed package. |
| Launcher icon | Generated by /usr/bin/python3 tool/gen_icons.py (edit the drawing or replace the PNGs) | Part of the package. |
Application id / bundle id (com.mikodes.museai) | android/app/build.gradle.kts, the Kotlin package folder, Xcode PRODUCT_BUNDLE_IDENTIFIER, then flutterfire configure | Identifies the app in the stores and in Firebase. |
| API address | --dart-define=API_BASE_URL=… | The app needs it before it can load any setting. |
| Firebase project | flutterfire configure | Compiled into firebase_options.dart. |
| AdMob app id | AndroidManifest.xml and Info.plist (Ads) | Google's SDK reads it at start, before any setting. |
| Translations, screen texts, fonts, the onboarding pictures, the 12 style preview tiles, the feature icons of plans, the Nebula colours | lib/l10n/, lib/ui/, lib/core/theme.dart (Localization) | Compiled into the app. |
| The web demo's sample video clip | web/demo/sample-clip.mp4 | Part of the web build. |
| Permission texts (camera, microphone, photos, tracking) | ios/Runner/Info.plist | iOS shows them from the package. |
| Signing key and team | android/key.properties, Xcode Signing & Capabilities | Store requirement. |
Keep the in-app name and the store name the same
If you rename the app in the console, also change the name under the icon and in your store listings in the next build, so users and reviewers see one name.
04Things you should never change by hand
- The Firestore documents
config/publicandconfig/private: the console overwrites them on the next save. - The files in
admin/packages/admin-kit/: they are the Admin Kit; updates replace them. - Users' store plan (
plan), purchased credits, usage and statistics: only the backend writes them.