chahinebrini 297ad7437b fix(android): adaptive icon — white bg + padded dark logo (was zoomed/clipped)
Old adaptiveIcon was a full-bleed dark logo on a #0a0a0a background → the
launcher mask cropped it ("zoomed in" look). Now: white background (matches
the Play Store listing icon look) + the same logo at ~62% on a transparent
canvas → mask has nothing to clip.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 15:06:12 +02:00

114 lines
3.4 KiB
TypeScript

import { ExpoConfig, ConfigContext } from "expo/config";
export default ({ config }: ConfigContext): ExpoConfig => ({
...config,
name: "ReBreak",
slug: "rebreak",
version: "0.1.0",
orientation: "portrait",
icon: "./assets/icon.png",
scheme: "rebreak",
userInterfaceStyle: "automatic",
newArchEnabled: true,
splash: {
image: "./assets/splash.png",
resizeMode: "contain",
backgroundColor: "#0f172a",
},
ios: {
supportsTablet: true,
bundleIdentifier: "org.rebreak.app",
config: {
usesNonExemptEncryption: false,
},
infoPlist: {
ITSAppUsesNonExemptEncryption: false,
NSMicrophoneUsageDescription:
"Rebreak nutzt das Mikrofon für Sprachnachrichten an Lyra.",
NSPhotoLibraryUsageDescription:
"Rebreak greift auf Fotos zu, damit du sie in deinen Posts teilen kannst.",
NSPhotoLibraryAddUsageDescription:
"Rebreak speichert Bilder in deine Foto-Mediathek.",
},
},
android: {
package: "org.rebreak.app",
versionCode: 2,
adaptiveIcon: {
// Foreground muss in der ~66%-Safe-Zone bleiben (Launcher-Mask clippt den
// Außenring) → adaptive-foreground.png ist das Logo auf transparentem
// 1024er-Canvas mit ~19% Padding. Hintergrund weiss → matcht den
// Play-Console-Look (dunkles Logo auf Weiss), statt dunkel-auf-dunkel.
foregroundImage: "./assets/adaptive-foreground.png",
backgroundColor: "#ffffff",
},
permissions: [
"INTERNET",
"ACCESS_NETWORK_STATE",
"BIND_VPN_SERVICE",
"FOREGROUND_SERVICE",
"POST_NOTIFICATIONS",
"BIND_ACCESSIBILITY_SERVICE",
"RECORD_AUDIO",
],
},
plugins: [
"expo-router",
"expo-localization",
"expo-font",
"expo-web-browser",
[
"expo-build-properties",
{
ios: {
deploymentTarget: "15.1",
useFrameworks: "static",
},
android: {
minSdkVersion: 26,
compileSdkVersion: 36,
targetSdkVersion: 36,
},
},
],
// Xcode 16 + RN 0.79 fmt consteval workaround
"./plugins/with-fmt-consteval-fix",
// Phase 5: NEFilter Extension + Family Controls Entitlements (iOS)
"./plugins/with-rebreak-protection-ios",
// Phase 5: VpnService + AccessibilityService (Android)
"./plugins/with-rebreak-protection-android",
// Rive-Asset (lyra-avatar.riv) als Android raw-resource bundlen
"./plugins/with-rive-asset-android",
],
experiments: {
typedRoutes: true,
},
extra: {
eas: {
projectId: "a4f2186e-8ca5-4d38-921d-82ae96c9c086",
},
apiUrl:
process.env.EXPO_PUBLIC_API_URL ||
process.env.API_URL ||
"https://staging.rebreak.org",
// TEMP: Staging Anon-Key + URL hardcoded für lokales Dev-Testing.
// Anon-Key ist designed für Client-Ship (RLS protectiert DB). Trotzdem:
// BFF-Migration kommt in Phase 5 — dann fliegen diese 2 Zeilen wieder raus.
supabaseUrl:
process.env.EXPO_PUBLIC_SUPABASE_URL ||
process.env.SUPABASE_URL ||
"https://db-staging.rebreak.org",
supabaseAnonKey:
process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY ||
process.env.SUPABASE_KEY ||
process.env.SUPABASE_ANON_KEY ||
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsImF1ZCI6ImF1dGhlbnRpY2F0ZWQiLCJyb2xlIjoiYW5vbiIsImV4cCI6MjA5MTAxODk1NSwiaWF0IjoxNzc1NjU4OTU1fQ.93d2r3pft2E-alf1JezqueD0l0n1dim7dGvhBN0l1Cs",
},
});