The import-actions div was a sibling of import-split in a 2-column grid,
causing it to only occupy the right 60% column. Changed .window-body to
a 2-row single-column grid so import-actions sits below import-split
spanning the full width.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Escape creators, year, item_type fields in renderImportItemList and
showItemPreview (was only escaping title and abstract)
- loadImportState uses api() wrapper for proper error handling
- generateSelectedCards uses api() wrapper with try/catch
- Remove duplicate isImportWindowOpen in state object
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Returns pending/done status for each item in a project by checking
selected-items.json against cards.json.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The openImportWindow and closeImportWindow functions referenced
cancelAbstractPreview which was not defined. Added:
- hoverTimerId, hoveredItemKey, previewItemKey to state
- previewPopover to elements object
- cancelAbstractPreview function
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The window-shell was incorrectly placed inside the first .panel section.
.panel creates a stacking context via backdrop-filter/overflow, trapping
the position:fixed window frame. Moving window-shell and minimized-bar
to be direct children of <body> (outside <main class="layout">) so
z-index:40 properly covers all panels.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds WINDOW_SESSION_STORAGE_KEY, readWindowSessionState(),
window state properties to state object, new element references
in elements object, and persistWindowSessionState().
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>