Files
musicshare/apps/mobile/package.json
T
chrisandClaude Opus 5.5 15ab815df6 Share what's playing in any Android music app
A local Expo module listens to system media sessions (the only way
Android exposes other apps' playback, gated by notification access; we
never read notifications). It filters to known music apps, debounces and
deduplicates changes, sends a heartbeat while playing, and delivers
reports through WorkManager so they survive the app being closed.

- One-screen onboarding that doubles as Google Play's prominent
  disclosure, opening straight to the app's toggle in Android settings
- Only media notifications are pre-ticked on that settings screen
- Device registration is single-flight (several screens react to the
  same permission change) and self-heals if the server revokes a token
- Sign-out revokes the phone's token; resuming sharing re-sends the
  current track immediately
- Pause controls in Settings and on the feed
- Fix invisible tab icons and labels on Android
- Keep Metro out of build output so it doesn't exhaust file watchers

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MzFywujuH9TiuXbr9vjoX8
2026-10-03 17:37:30 -04:00

50 lines
1.4 KiB
JSON

{
"name": "@musicshare/mobile",
"main": "expo-router/entry",
"version": "1.0.0",
"dependencies": {
"@expo/ui": "~57.0.21",
"@musicshare/shared": "*",
"expo": "~57.0.26",
"expo-constants": "~57.0.20",
"expo-device": "~57.0.2",
"expo-font": "~57.0.4",
"expo-glass-effect": "~57.0.4",
"expo-image": "~57.0.5",
"expo-linking": "~57.0.11",
"expo-router": "~57.0.24",
"expo-secure-store": "~57.0.4",
"expo-splash-screen": "~57.0.9",
"expo-status-bar": "~57.0.1",
"expo-symbols": "~57.0.3",
"expo-system-ui": "~57.0.4",
"expo-web-browser": "~57.0.3",
"react": "19.2.3",
"react-dom": "19.2.3",
"react-native": "0.86.3",
"react-native-gesture-handler": "~2.32.0",
"react-native-reanimated": "4.5.1",
"react-native-safe-area-context": "~5.7.0",
"react-native-screens": "~4.26.0",
"react-native-web": "~0.21.0",
"react-native-worklets": "0.10.1",
"swr": "^2.5.1"
},
"devDependencies": {
"@types/react": "~19.2.2",
"@typescript-eslint/parser": "^8.71.0",
"eslint": "^9.0.0",
"eslint-config-expo": "~57.0.2",
"eslint-import-resolver-typescript": "^3.10.1",
"typescript": "~6.0.3"
},
"scripts": {
"start": "expo start",
"android": "expo run:android",
"ios": "expo run:ios",
"typecheck": "tsc --noEmit",
"lint": "expo lint"
},
"private": true
}