generated from coulomb/repo-seed
Add per-row session delete + Reset all data; fix viewer URL fallback
UX gaps that surfaced while running the demo: - ViewerShell hardcoded `/fixtures/pdfs/<title>` for the PDF URL, ignoring the `document.uri` blob URL that uploaded PDFs carry. The viewer either 404'd or — worse — silently served a fixture whose filename happened to collide. Prefer document.uri when present. - SessionMenu only let you delete the *active* session. Added a small per-row "✕" button next to every session in the Switch-to list so a user can drop a session's data without first switching to it. Same click-to-confirm pattern as the existing Delete action. - Added a "Reset all data…" affordance in both the SessionMenu and the empty-state landing. Calls a new `clearAllSessionData()` helper that wipes every `citation-evidence:*` key from localStorage, then forces a reload so all in-memory caches start fresh. - `attachSessionPersister.writeOnDelete` was leaking the per-session `active-document-id:v1` key on every session delete. Now removed alongside the engine snapshot key. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -44,6 +44,13 @@ export function ViewerShell() {
|
||||
|
||||
const fileUrl = useMemo(() => {
|
||||
if (!document) return null;
|
||||
// CE-WP-0005: uploads + sample sessions stash a `blob:` URL on
|
||||
// `document.uri` via the per-session `PdfByteStore`. Prefer that
|
||||
// over the legacy fixture-path fallback so user uploads don't get
|
||||
// resolved against `/fixtures/pdfs/` (which would either 404 or —
|
||||
// worse — silently return the wrong file when the filename happens
|
||||
// to collide with a bundled fixture).
|
||||
if (document.uri) return document.uri;
|
||||
const titleOrId = document.title ?? document.id;
|
||||
return `/fixtures/pdfs/${encodeURIComponent(titleOrId)}`;
|
||||
}, [document]);
|
||||
|
||||
Reference in New Issue
Block a user