2026-06-11 02:19:47 +02:00
|
|
|
{
|
chore: rebrand Subfeed -> Siftlode
Rename all user-facing references (UI wordmark Sift+lode, titles, app name,
legal pages, onboarding wizard, emails, README/docs) and infra paths
(/srv/subfeed -> /srv/siftlode, image tag, deploy script, backup filenames).
Internal identifiers kept on purpose: Postgres user/db "subfeed", logger
namespace, localStorage keys, and the subfeed_pgdata volume (renaming would
orphan the migrated production data).
2026-06-14 04:40:22 +02:00
|
|
|
"name": "siftlode-frontend",
|
2026-06-11 02:19:47 +02:00
|
|
|
"private": true,
|
|
|
|
|
"type": "module",
|
|
|
|
|
"scripts": {
|
|
|
|
|
"dev": "vite",
|
|
|
|
|
"build": "vite build",
|
|
|
|
|
"preview": "vite preview"
|
|
|
|
|
},
|
|
|
|
|
"dependencies": {
|
2026-06-11 19:21:48 +02:00
|
|
|
"@dnd-kit/core": "^6.3.1",
|
|
|
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
|
|
|
"@dnd-kit/utilities": "^3.2.2",
|
2026-06-11 02:19:47 +02:00
|
|
|
"@tanstack/react-query": "^5.51.0",
|
2026-06-25 19:54:40 +02:00
|
|
|
"@tanstack/react-virtual": "^3.14.3",
|
2026-06-11 02:19:47 +02:00
|
|
|
"clsx": "^2.1.1",
|
feat(plex): P2 player — rich full-page HLS/direct player + watch-state
- backend: GET /api/plex/item/{rk} detail (metadata, cast + intro/credit markers
from Plex, episode prev/next, per-user resume+status); POST /item/{rk}/progress
(resume checkpoint, near-end→watched) + /state (new|watched|hidden).
- frontend PlexPlayer.tsx (lazy, pulls hls.js): full-page player over the Plex
module. Direct files stream raw <video>; remux via hls.js on the seek-restart
session — custom controls map the ABSOLUTE timeline over the session offset, and a
seek beyond the loaded region restarts the session at the target. Play/pause/resume
/restart, ±10s seek, prev/next episode (Shift+←/→), volume, windowed/fullscreen,
full keyboard, Skip intro/Skip credits from markers (shaded on the seekbar),
auto-advance + watched-on-end, resume from saved position, 10s progress checkpoints.
- PlexBrowse: card/episode click opens the player as a history subview (browser Back
returns to the grid/show). api client (plexItem/plexSession/plexProgress/plexSetState)
+ types; plex.player.* i18n en/hu/de. hls.js@^1.6.16.
- Verified over HTTP: detail w/ markers+cast+episode-nav, progress persist. Video
playback itself is pending browser UAT. Subtitle/audio track SELECTION deferred.
2026-07-05 04:28:00 +02:00
|
|
|
"hls.js": "^1.6.16",
|
2026-06-15 00:30:34 +02:00
|
|
|
"i18next": "^23.11.5",
|
2026-06-11 02:19:47 +02:00
|
|
|
"lucide-react": "^0.408.0",
|
|
|
|
|
"react": "^18.3.1",
|
2026-06-15 00:30:34 +02:00
|
|
|
"react-dom": "^18.3.1",
|
|
|
|
|
"react-i18next": "^14.1.2"
|
2026-06-11 02:19:47 +02:00
|
|
|
},
|
|
|
|
|
"devDependencies": {
|
|
|
|
|
"@types/react": "^18.3.3",
|
|
|
|
|
"@types/react-dom": "^18.3.0",
|
|
|
|
|
"@vitejs/plugin-react": "^4.3.1",
|
|
|
|
|
"autoprefixer": "^10.4.19",
|
|
|
|
|
"postcss": "^8.4.39",
|
|
|
|
|
"tailwindcss": "^3.4.6",
|
|
|
|
|
"typescript": "^5.5.3",
|
|
|
|
|
"vite": "^5.3.4"
|
|
|
|
|
}
|
|
|
|
|
}
|