siftlode/frontend/src/lib
npeter83 391b8fda33 feat(downloads): share UI — user picker + public watch links + watch page
Rework the share dialog into two clear modes and add the public /watch player page:
- ShareDialog: (A) 'Share with a user' — autocomplete picker over registered users (was a blind
  email box that 404'd on non-users); (B) 'Share a link' — create/list/copy/revoke public links
  with allow-download toggle, optional expiry (1/7/30d), optional password; per-link view count.
- WatchPage: standalone login-free player at /watch/<token> (routed in main.tsx like /privacy),
  self-contained mini-i18n (en/hu/de by browser language); password gate → unlock → play; shows a
  Download button only when the link allows it.
- api: ShareLink/ShareRecipient types + link CRUD + recipients; share i18n (en/hu/de).
Verified end-to-end in a real browser: user picker, link create, public playback, stream-only vs
downloadable, password gate + unlock, no console errors.
2026-07-04 04:32:31 +02:00
..
api.ts feat(downloads): share UI — user picker + public watch links + watch page 2026-07-04 04:32:31 +02:00
chatDock.ts feat(messages): auto-open/flash dock on incoming + persist dock across reload 2026-06-25 22:46:54 +02:00
descriptionLinks.tsx refactor(player): extract description link-rendering into lib/descriptionLinks 2026-06-29 00:24:49 +02:00
e2ee.ts feat(messages): standalone Messages module + floating chat dock 2026-06-25 22:34:24 +02:00
errorDialog.ts refactor(frontend): adopt store/storage helpers; centralize persistence 2026-06-26 03:30:19 +02:00
format.ts feat(downloads): M5 — Download Center frontend 2026-07-03 01:52:58 +02:00
hints.ts fix(state): scope all per-account localStorage by account id 2026-07-02 01:45:16 +02:00
history.ts fix(modal): stop Release Notes modal flashing shut on modal-to-modal handoff 2026-07-01 14:27:41 +02:00
messagesSocket.ts feat(auth): per-tab account — different account per browser tab 2026-07-01 23:43:35 +02:00
messaging.ts fix(messages): gate on server key state, not just local unlock 2026-06-25 22:58:29 +02:00
nav.ts feat(downloads): M5 — Download Center frontend 2026-07-03 01:52:58 +02:00
notifications.ts fix(state): scope all per-account localStorage by account id 2026-07-02 01:45:16 +02:00
onboarding.ts fix(state): scope all per-account localStorage by account id 2026-07-02 01:45:16 +02:00
releaseNotes.ts chore(release): 0.21.0 2026-07-02 02:19:25 +02:00
sidebarLayout.ts fix(state): scope all per-account localStorage by account id 2026-07-02 01:45:16 +02:00
storage.ts fix(state): scope all per-account localStorage by account id 2026-07-02 01:45:16 +02:00
store.ts feat(frontend): add createStore factory + central localStorage registry 2026-06-26 03:30:19 +02:00
theme.ts fix(state): scope all per-account localStorage by account id 2026-07-02 01:45:16 +02:00
urlState.ts feat(downloads): M5 — Download Center frontend 2026-07-03 01:52:58 +02:00
useDebounced.ts fix(feed): stop search-box flicker (keepPreviousData + debounced query) 2026-06-29 02:19:18 +02:00
useDismiss.ts refactor(ui): useDismiss hook for outside-click/Escape close 2026-06-29 00:11:44 +02:00
useLiveQuery.ts fix(scheduler): show progress for any running job with reliable live updates 2026-06-19 02:43:46 +02:00
useUndoable.ts feat(playlists): sort + group-by-channel with reusable undo/redo 2026-06-15 21:52:28 +02:00
version.ts refactor(frontend): adopt store/storage helpers; centralize persistence 2026-06-26 03:30:19 +02:00