LeoVasanko
7a60ef5384
Implement Ctrl-R/F5 reload handler with intent to allow reloads in GUI build.
2026-09-02 19:42:17 +00:00
LeoVasanko
568605b09a
Add missing file from previous commit
2026-06-02 22:22:49 +00:00
LeoVasanko
b09118c8cb
Clean up series nested context menus and implement keyboard/gamepad navigation for these functions.
2026-06-02 22:17:47 +00:00
LeoVasanko
a4b0cd916a
Use image logo for HDR10+ badge
2026-05-31 02:31:35 +00:00
LeoVasanko
e1a961d21f
Detect and badge HDR10+ (SMPTE ST 2094-40) via ffmpeg showinfo
2026-05-31 02:05:10 +00:00
LeoVasanko
1a6a3f0cf2
Don't show collection where the current movie is the only item we have
2026-05-31 01:51:15 +00:00
LeoVasanko
626fb9a0ae
Unify playback-state read/write via /api/meta/playback-state
2026-05-31 01:43:56 +00:00
LeoVasanko
b6742f0f27
refactor: unify roots updates over single websocket
2026-05-31 00:26:51 +00:00
LeoVasanko
6d0e6d41a7
feat(media): use collection-based recommendations and refine poster display
2026-05-31 00:12:54 +00:00
LeoVasanko
932c5af1ff
fix(frontend): scope synced row scrolling by group
2026-05-30 23:54:11 +00:00
LeoVasanko
eb49eb713e
Hide app scrollbars
2026-05-30 22:59:14 +00:00
LeoVasanko
01f424dbfb
Force reel videos to remount on movie change
2026-05-30 22:33:23 +00:00
LeoVasanko
09e51acd14
Disable spellcheck and autocorrect in search input
2026-05-30 19:18:09 +00:00
LeoVasanko
4926b72167
Add adjacent detail navigation for keyboard and gamepad
2026-05-30 05:35:56 +00:00
LeoVasanko
c75fb30921
Refine scan activity UI and initial-index visibility
2026-05-30 05:18:25 +00:00
LeoVasanko
14b76520a6
Stop eager reel loading in cards
2026-05-30 05:02:36 +00:00
LeoVasanko
c9d2bcfdcc
Fix frontend type mismatches
2026-05-30 04:52:59 +00:00
LeoVasanko
7a0247d78f
Refine hover reel audio fades and idle behavior
2026-05-30 04:38:33 +00:00
LeoVasanko
bb4bd3723f
Improved serie episode preview video handling
2026-05-30 04:28:34 +00:00
LeoVasanko
7675940029
Implement JS-driven season poster sizing from episode grid remainder
2026-05-30 04:19:14 +00:00
LeoVasanko
613b516785
Fix series preview videos to render paused frames and stagger active season
2026-05-30 04:13:05 +00:00
LeoVasanko
2f72d1e7e2
Fix series full view vertical navigation to follow episode rows
2026-05-30 04:05:20 +00:00
LeoVasanko
b51a7ea73d
Separate scrolling for browse and details page even though they are laid out side by side on the layout (with one hidden out of screen).
2026-05-30 04:00:53 +00:00
LeoVasanko
fe5be2087d
Refine movie similar strip and desktop nav flow
2026-05-30 03:50:28 +00:00
LeoVasanko
46eecd8dbf
Add related movies on Series page. Uses heuristics to show serie movies only.
2026-05-30 03:36:35 +00:00
LeoVasanko
c2ee25ba3d
Fix synced row deadzone behavior and isolate cast scroll metrics
2026-05-30 02:57:34 +00:00
LeoVasanko
649992a10a
Align frontend with new cast and people wire format
2026-05-30 02:40:36 +00:00
LeoVasanko
ada61e1400
Remove long hex root ids and use only friendly names
2026-05-30 02:28:58 +00:00
LeoVasanko
3551808351
Fix root-relative playable path normalization
2026-05-30 02:19:33 +00:00
LeoVasanko
0ef6896181
Refactor API to flat root routes and WS/meta structure
2026-05-30 02:09:24 +00:00
LeoVasanko
352835a664
Add logical root asset URLs and harden media path serving
2026-05-30 01:36:47 +00:00
LeoVasanko
900fcea638
refactor index schema and metadata format and directory tree
2026-05-30 01:05:27 +00:00
LeoVasanko
550f67531a
Faster startup by loading existing index without any checks, then incremental scanning to update.
2026-05-29 22:25:13 +00:00
LeoVasanko
cac3348ec1
Fix detail-view focus scope and entry targets
2026-05-29 18:18:30 +00:00
LeoVasanko
0b3cd15589
feat: configurable media player selection with auto-detection
...
Backend:
- Add mediahive/players.py with cross-platform player detection:
- Windows: MPC-BE, MPC-HC, VLC, PotPlayer, mpv (registry + known paths)
- macOS: IINA, VLC (/Applications bundle scanning)
- Linux: VLC, SMPlayer (PATH via which)
- Add GET /api/players endpoint returning detected players
- Extend POST /api/roots/{id}/play to accept player_id and player_custom_cmd
- Make MPC-BE web UI port configurable via ?port= query param
Frontend:
- Add player selection to settings (localStorage, per-client)
- Two-column layout: player list (9.5em) + contextual options panel
- Contextual options: Custom Command input, MPC Web UI Port input
- Empty MPC port disables all Web UI polling/connection attempts
- MPC-BE polling only runs when MPC family player is selected and port is set
2026-05-29 00:44:23 +00:00
LeoVasanko
ed4a5b2900
Route settings dialog to /settings and fix worker null handling
2026-05-27 21:58:09 +00:00
LeoVasanko
1383fc8da3
Add preferred format settings and release preference sorting
2026-05-27 21:52:36 +00:00
LeoVasanko
fe71e1be8b
Remove search worker debug logging
2026-05-27 21:23:48 +00:00
LeoVasanko
a0d1433154
Switch SPA navigation to history paths
2026-05-27 21:21:49 +00:00
LeoVasanko
02a89aee68
Use /search/:term path-based search routing
2026-05-27 21:15:58 +00:00
LeoVasanko
29cda926a2
Improve search-detail back navigation and focus restore
2026-05-27 21:12:39 +00:00
LeoVasanko
81be850e0c
Sliding layout between details and category views.
2026-05-27 20:58:19 +00:00
LeoVasanko
e78774613a
More compact and consistent layout for the release badges. Bluer release group color.
2026-05-27 20:50:43 +00:00
LeoVasanko
96c2d52ee0
perf(frontend): fix resource leaks and disable deep reactivity on media index
...
- useMediaWebSocket: shallowRef mediaIndex/tasks/loading/error/connected
to eliminate Proxy overhead on the entire library data structure.
- useMediaWebSocket: replace per-task setTimeout leak with single 3s
sweep interval for completed task cleanup.
- App.vue: remove {deep:true} watcher on mediaIndex; shallow ref change
is sufficient to trigger search worker sync.
- useGamepadNavigation: rAF only when gamepads are connected; idle
fallback to 500ms setTimeout to stop permanent 60fps CPU drain.
- useKeyboardNavigation: deduplicate synced scroll rAF requests to
prevent overlapping animation frames.
- MediaDetail/SeriesFullView/CollageHero: pause, clear src, and load()
video elements on unmount and before ref replacement to release
decoder/memory resources.
- MediaDetail/SeriesFullView: clear all volume fade intervals on
unmount to stop interval timer leaks.
2026-05-27 20:28:51 +00:00
LeoVasanko
79d3f40162
Unify gamepad repeat model with accelerating hold and analog scaling
2026-05-27 14:40:49 +00:00
LeoVasanko
f982785850
Fix HexKeyboard X/Y gamepad keypress animations
2026-05-27 14:28:08 +00:00
LeoVasanko
4c33cee4ac
Move frontend search to worker and improve people-name matching
2026-05-26 20:43:10 +00:00
LeoVasanko
cf2b90809a
HexKeyboard: refactor to row-based flex layout
...
Replace 39 per-key absolute positioning CSS rules with 4 row divs
using flexbox. Rows overlap via negative margin-top to preserve
honeycomb staggering. Horizontal offsets via 4 margin-left rules.
- Add RowKeyDef with globalIndex for row-based rendering
- Add rows computed to group layoutKeys into 4 arrays
- Remove all .hex-key-N { top; left } positioning rules
- Keys are now flex children, position: relative, fixed width
Also includes prior changes:
- Row-based greyscale gradients (lighter top, darker home row)
- Per-key re-triggerable press animation (DOM reflow reset)
- Green-to-white exponential fade on keypress
- Gamepad repeat: 90ms horizontal/buttons, 140ms vertical
2026-05-26 16:37:12 +00:00
LeoVasanko
43ca8ea1d1
Implement OSD keyboard for gamepads. Using hex tiles of course.
2026-05-26 04:52:13 +00:00
LeoVasanko
8cb7ab5938
Adjust no search results label.
2026-05-26 04:49:28 +00:00