siftlode/frontend/src/lib
npeter83 1a2700d8fc fix(modal): stop Release Notes modal flashing shut on modal-to-modal handoff
useBackToClose eagerly pushed a history entry on mount and called history.back()
on unmount. During a modal->modal handoff (e.g. About -> Release Notes) the two ran
interleaved in one React commit, so the entering modal's popstate listener mistook the
leaving modal's back() for a genuine user Back and closed itself instantly. It also left
the history pointer behind the surviving entry, so a later browser Back walked off the app.

Replace the eager per-mount push/pop with a single shared popstate handler plus a
coalesced microtask that reconciles history depth to the live overlay count once per tick.
A handoff's -1/+1 nets to zero, so the new modal simply reuses the old entry -- no churn,
no flash, and Back closes the modal in-app.
2026-07-01 14:27:41 +02:00
..
api.ts chore: prepare repo for public release — scrub internal infra, rewrite README 2026-07-01 12:46:50 +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 refactor(i18n,format): translate ETA strings; consolidate time/duration formatters 2026-06-29 00:22:21 +02:00
hints.ts refactor(frontend): adopt store/storage helpers; centralize persistence 2026-06-26 03:30:19 +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(messages): auto-open/flash dock on incoming + persist dock across reload 2026-06-25 22:46:54 +02:00
messaging.ts fix(messages): gate on server key state, not just local unlock 2026-06-25 22:58:29 +02:00
notifications.ts refactor(frontend): adopt store/storage helpers; centralize persistence 2026-06-26 03:30:19 +02:00
onboarding.ts refactor(frontend): adopt store/storage helpers; centralize persistence 2026-06-26 03:30:19 +02:00
releaseNotes.ts chore(release): 0.20.1 2026-07-01 12:07:58 +02:00
sidebarLayout.ts polish(sidebar): default widget order — Saved views, Upload date, Your tags, Language, Topic 2026-07-01 04:29:38 +02:00
storage.ts feat(views): saved-views UI — sidebar widget, apply/rename/default/reorder/share 2026-07-01 03:17:36 +02:00
store.ts feat(frontend): add createStore factory + central localStorage registry 2026-06-26 03:30:19 +02:00
theme.ts refactor(frontend): adopt store/storage helpers; centralize persistence 2026-06-26 03:30:19 +02:00
urlState.ts fix(search): include Library source filter in shareable URL 2026-06-29 02:30:37 +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