fix(kon): task sidebar overlay, Parakeet model management, conditional engine settings

TaskSidebar:
- Changed from flex layout member to fixed overlay with backdrop
- Click backdrop or press Escape to close
- Content no longer shrinks when sidebar opens — buttons stay accessible
- Positioned at z-50 over main content, top offset for titlebar

Settings — Parakeet model management:
- Added Parakeet model state: download, check, load status
- New downloadParakeet() and loadParakeet() functions
- Listens for parakeet-download-progress events
- Parakeet section shows download/load/status controls

Settings — conditional engine sections:
- Whisper model selector only shows when engine === "whisper"
- Parakeet model controls only show when engine === "parakeet"
- Cleaner UI — only active engine's options visible

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
jake
2026-03-16 23:26:27 +00:00
parent 1ad2b55d9c
commit fe3739fdbb
2 changed files with 122 additions and 31 deletions

View File

@@ -98,7 +98,7 @@
});
</script>
<svelte:window onmousemove={handleMouseMove} />
<svelte:window onmousemove={handleMouseMove} onkeydown={(e) => { if (e.key === "Escape" && page.taskSidebarOpen) page.taskSidebarOpen = false; }} />
{#if page.recording}
<div
@@ -113,16 +113,27 @@
{:else}
<div class="flex flex-col h-screen w-screen overflow-hidden grain">
<Titlebar />
<div class="flex flex-1 min-h-0">
<div class="flex flex-1 min-h-0 relative">
{#if page.current !== "first-run"}
<Sidebar />
{/if}
<div class="flex-1 overflow-hidden bg-bg">
{@render children()}
</div>
{#if page.taskSidebarOpen && page.current !== "first-run"}
<TaskSidebar />
{/if}
</div>
</div>
<!-- Task sidebar as overlay — doesn't shrink main content -->
{#if page.taskSidebarOpen && page.current !== "first-run" && !isSecondaryWindow}
<!-- Backdrop -->
<button
class="fixed inset-0 bg-black/20 z-40"
onclick={() => page.taskSidebarOpen = false}
aria-label="Close task sidebar"
></button>
<!-- Sidebar panel -->
<div class="fixed top-[36px] right-0 bottom-0 z-50 animate-slide-in-right">
<TaskSidebar />
</div>
{/if}
{/if}