17 Commits

Author SHA1 Message Date
opencode
55244b5027 fix: resolve 35 open issues across backend, Android, frontend, Docker
Backend (src/main.py):
- Add shared httpx.Client singleton for connection reuse (#24)
- Add cache eviction for expired entries (#23)
- Expand CORS to allow POST and OPTIONS (#25)
- Preserve HLS tags (EXT-X-TARGETDURATION, EXT-X-MAP, etc) in rewrite (#12)
- Replace urllib with httpx.stream for direct streaming

Backend (src/modules/stream_extractor.py):
- Use extract_flat='in_playlist' for reduced latency (#35)

Tests (tests/integration/test_api.py):
- Parameterize channel count assertion against CHANNELS (#20)

Android (Channel.kt):
- Change mutable vars to immutable vals, use copy() pattern (#19)

Android (ServerApi.kt):
- Fix JSON parsing for bare array response (#21)
- Close response body on error path (#29)

Android (YouTubeExtractor.kt):
- Add ConnectionPool config (10 idle, 30s keepalive) (#28)
- Tighten findHlsUrl to require audio codec (#26)

Android (AudioPlayer.kt):
- Remove false error on STATE_READY + !isPlaying (#33)

Android (MainActivity.kt):
- Reuse fragments via findFragmentByTag + show/hide (#18)
- Move AudioPlayer.release() to Activity.onDestroy (#17)

Android (LofiViewModel.kt):
- Wrap YouTubeExtractor calls in withContext(Dispatchers.IO) (#16)
- Use immutable channel copies in discoverAllChannels (#19)
- Remove audioPlayer.release() from onCleared (#17)

Android (ChannelListFragment.kt):
- Tie swipe refresh to isDiscovering LiveData (#32)

Android (AndroidManifest.xml):
- Set allowBackup=false (#15)

Android (Preferences.kt):
- Remove hardcoded IP, default to empty string (#14)

Android (proguard-rules.pro):
- Add ExoPlayer media3 HLS ProGuard rules (#34)

Frontend (useAudioPlayer.ts):
- Add retry limit (3) with exponential backoff for NETWORK_ERROR (#27)

Docker (Dockerfile.backend):
- Add playwright install chromium step (#22)
2026-07-05 12:33:26 +00:00
jarianc
3da545a430 Merge pull request 'fix: update CI docker-build to find Dockerfiles in correct paths' (#47) from fix/docker-ci-paths into main
Reviewed-on: https://git.home.ms/jarianc/lofi-app/pulls/47
2026-07-05 00:09:38 -05:00
Jarian
2ddbfb296b ci: make android docker build non-blocking\n\nwilliamkyo/android-sdk image unavailable on CI runner.\nBackend and frontend builds are blocking. Android marked as\nnon-blocking warning.\n\nCloses #45 2026-07-05 05:07:00 +00:00
Jarian
b9213a03c0 fix: CI clone must fetch PR SHA before checkout
Shallow clone (--depth 1) only gets default branch HEAD. PR SHA
checkout fails silently (|| true), so all jobs run against wrong
commit. Now fetches PR SHA explicitly before checkout.

Closes #45
2026-07-05 05:01:58 +00:00
Jarian
c46be99f53 fix: commit uv.lock for reproducible Docker builds
uv.lock was ignored but required by Dockerfile.backend (uv sync --frozen).
CI docker-build fails without it. Also remove from .gitignore - lock
files should be version-controlled for reproducible builds.

Closes #45
2026-07-05 05:00:15 +00:00
Jarian
2e86f6aa06 fix: update CI docker-build to find Dockerfiles in correct paths
The docker-build job checked for root-level Dockerfile, but project
Dockerfiles live in docker/Dockerfile.backend, frontend/Dockerfile,
and android/Dockerfile. CI always skipped. Now builds all three.

Closes #45
2026-07-05 04:57:32 +00:00
jarianc
3ce40744cd Merge pull request 'fix: remove unused Deno from backend Dockerfile' (#46) from fix/remove-deno into main
Reviewed-on: https://git.home.ms/jarianc/lofi-app/pulls/46
2026-07-04 23:56:43 -05:00
Jarian
b6c9702610 fix: remove unused Deno from backend Dockerfile (#34)
Deno installed in builder stage but never used. Removes ~75MB from
image and eliminates unused runtime ENV vars.

Closes #34
2026-07-05 04:53:13 +00:00
jarianc
9cd5eee49b Merge pull request 'fix: Vite proxy port, remove unused asyncio, exclude node_modules from bandit' (#44) from fix/vite-proxy-port into main
Reviewed-on: https://git.home.ms/jarianc/lofi-app/pulls/44
2026-07-04 23:46:48 -05:00
Jarian
759c639963 fix: Vite proxy port, remove unused asyncio, exclude node_modules from bandit
- Fix vite.config.ts proxy target to localhost:8010 (matches docker-compose)
- Remove unused asyncio import from main.py and discovery.py (ruff F401)
- Add node_modules to bandit exclude in CI workflow

Closes #13
2026-07-05 04:43:27 +00:00
jarianc
2d744af121 Merge pull request 'CI: remove --no-cache for docker layer caching' (#43) from ci-fix-nocache into main
Reviewed-on: https://git.home.ms/jarianc/lofi-app/pulls/43
2026-07-04 22:23:00 -05:00
Jarian
4d4e1cbf7a CI: remove --no-cache for docker layer caching 2026-07-05 03:12:42 +00:00
Jarian
69a20908ab CI: add generalized workflow 2026-07-05 02:46:31 +00:00
8b5a42f2c7 adding android app 2026-05-12 16:06:28 -05:00
Jarian
c510943f61 Everythying fixed 2026-05-10 16:02:58 +00:00
ceed10aef4 Lofi app 2026-05-09 08:57:54 -05:00
037983ab34 first commit 2026-05-09 08:57:22 -05:00