ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m39s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m2s
ci / ts / ts (packages + web) (push) Successful in 1m5s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 39s
- expo-router app in src/app: connect (server check, recent servers), login, mandatory credential / password change, tabs Home / Search / Collection / Profile, album and artist pages, full-screen player - AuthSession per server with the refresh token in expo-secure-store (Android Keystore); language from the profile - player on react-native-track-player: ExoPlayer queue with a notification and lock-screen controls via a playback service, 500 MB stream cache, quality by network (Wi-Fi high, cellular medium), play events with played time, reactions, playback state restore and the endless My Wave with feedback - home: pulsing wave circle driven by BPM / energy in the cover palette, activity and mood chips that switch the wave on the fly - New Architecture is off until react-native-track-player supports it; the release build runs codegen only when it is on; query-string is a direct dependency because expo-router 5.1 imports it undeclared Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
38 lines
1.5 KiB
TypeScript
38 lines
1.5 KiB
TypeScript
import type { ConfigContext, ExpoConfig } from 'expo/config';
|
||
|
||
// Версию проставляет CI из git-тега (scripts/version.mjs): PIPU_VERSION=1.2.3, PIPU_VERSION_CODE=1020399.
|
||
const version = process.env.PIPU_VERSION ?? '0.0.0';
|
||
const versionCode = Number(process.env.PIPU_VERSION_CODE ?? '1');
|
||
|
||
export default ({ config }: ConfigContext): ExpoConfig => ({
|
||
...config,
|
||
name: 'Pipu Music',
|
||
slug: 'pipu-music',
|
||
scheme: 'pipu',
|
||
version,
|
||
orientation: 'portrait',
|
||
userInterfaceStyle: 'automatic',
|
||
// react-native-track-player 4 не поддерживает New Architecture (React Native Directory) — фоновое
|
||
// воспроизведение и уведомление важнее; вернём, когда плеер её поддержит (docs/mobile.md).
|
||
newArchEnabled: false,
|
||
backgroundColor: '#05070D',
|
||
android: {
|
||
package: 'app.pipu.music',
|
||
versionCode,
|
||
edgeToEdgeEnabled: true,
|
||
allowBackup: false,
|
||
permissions: ['REQUEST_INSTALL_PACKAGES'],
|
||
},
|
||
platforms: ['android'],
|
||
plugins: [
|
||
// Маршруты — файлы в src/app (docs/mobile.md).
|
||
['expo-router', { root: './src/app' }],
|
||
'expo-secure-store',
|
||
// Сервер часто живёт в домашней сети без TLS (http://192.168.1.10:8080), а release-сборка
|
||
// Android по умолчанию запрещает незашифрованный HTTP.
|
||
['expo-build-properties', { android: { usesCleartextTraffic: true } }],
|
||
],
|
||
extra: { versionCode },
|
||
experiments: { typedRoutes: false },
|
||
});
|