fix(documents): remove bottom panel localStorage persistence
The panel was restoring its open/tab/height state from localStorage, causing the discussion drawer to reopen on every subsequent page visit even without a ?commentId= param. Removed all LS_KEY_* constants, the savedOpen/savedTab/savedHeight restore logic, and the persistence $effect. The panel now always starts closed (or opens to metadata when the document has no file yet), and the discussion tab opens exclusively via the commentId deep-link query param. Also add .svelte-kit-backup/ to .gitignore and .prettierignore to prevent lint failures from the root-owned Docker-generated directory. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -69,32 +69,16 @@ $effect(() => {
|
||||
|
||||
// ── Bottom panel state ────────────────────────────────────────────────────────
|
||||
|
||||
const LS_KEY_HEIGHT = 'doc-panel-height';
|
||||
const LS_KEY_TAB = 'doc-panel-tab';
|
||||
const LS_KEY_OPEN = 'doc-panel-open';
|
||||
|
||||
let panelOpen = $state(false);
|
||||
let panelHeight = $state(0); // set to full height on mount
|
||||
let navHeight = $state(0);
|
||||
let activeTab = $state<DocumentPanelTab>('metadata');
|
||||
let localStorageRestored = $state(false);
|
||||
|
||||
onMount(() => {
|
||||
navHeight = document.querySelector('header')?.getBoundingClientRect().height ?? 0;
|
||||
|
||||
const savedHeight = localStorage.getItem(LS_KEY_HEIGHT);
|
||||
const savedTab = localStorage.getItem(LS_KEY_TAB);
|
||||
const savedOpen = localStorage.getItem(LS_KEY_OPEN);
|
||||
|
||||
if (savedTab && ['metadata', 'transcription', 'discussion', 'history'].includes(savedTab)) {
|
||||
activeTab = savedTab as DocumentPanelTab;
|
||||
}
|
||||
const topbar = document.querySelector('[data-topbar]');
|
||||
panelHeight = window.innerHeight - navHeight - (topbar?.getBoundingClientRect().height ?? 0);
|
||||
if (savedHeight) {
|
||||
const h = parseInt(savedHeight, 10);
|
||||
if (!isNaN(h) && h >= 80) panelHeight = h;
|
||||
}
|
||||
|
||||
if (targetAnnotationId) {
|
||||
// Deep-link into an annotation comment: open the side panel
|
||||
@@ -103,16 +87,12 @@ onMount(() => {
|
||||
// Deep-link into a document-level comment: open discussion tab
|
||||
panelOpen = true;
|
||||
activeTab = 'discussion';
|
||||
} else if (savedOpen === 'true') {
|
||||
panelOpen = true;
|
||||
} else if (savedOpen === null && !doc?.filePath) {
|
||||
// No prior state and no file — open to metadata so the panel is immediately useful.
|
||||
} else if (!doc?.filePath) {
|
||||
// No file yet — open to metadata so the panel is immediately useful.
|
||||
panelOpen = true;
|
||||
activeTab = 'metadata';
|
||||
}
|
||||
|
||||
localStorageRestored = true;
|
||||
|
||||
// Track last-visited document for the dashboard resume strip
|
||||
if (doc?.id) {
|
||||
localStorage.setItem(
|
||||
@@ -134,14 +114,6 @@ onMount(() => {
|
||||
document.addEventListener('keydown', onKeyDown);
|
||||
return () => document.removeEventListener('keydown', onKeyDown);
|
||||
});
|
||||
|
||||
// Persist panel state whenever it changes (after initial restore).
|
||||
$effect(() => {
|
||||
if (!localStorageRestored) return;
|
||||
localStorage.setItem(LS_KEY_HEIGHT, String(panelHeight));
|
||||
localStorage.setItem(LS_KEY_TAB, activeTab);
|
||||
localStorage.setItem(LS_KEY_OPEN, String(panelOpen));
|
||||
});
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
|
||||
Reference in New Issue
Block a user