Observations

  1. Monolithic main.lua — all 2084 lines in one file. Layout, drawing, state, input, loading, haptics. Would benefit from modular split (e.g. hub.lua, library.lua, player.lua, haptic.lua)
  2. Hardcoded paths/userdata/roms/ports/AquaSystem/shinju-tori/assets/fonts/, /userdata/videos/mpv, /media/SHARE/music/. These work on Knulli but break on any other system
  3. Async loading has no timeout cleanup — if a thread hangs, loading stays true until 30s timeout
  4. Favorites system is declared but the L2 quick-favorite handler logs “not yet implemented”
  5. Sleep Timer option exists in the menu but is non-functional
  6. Watch-later files use hex filenames (likely MPV’s content-hash naming) — no metadata, just raw file references
  7. Progress arc at hub shows elapsed/total — but track.duration is often 0 (not read from file metadata), so the progress ring stays empty for most tracks
  8. Grid view for video content shows only 1 row (3 cols portrait) — layout may need tuning for larger libraries