From f2599772f623f6e058664a27a62cb4255d70a375 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20G=C3=B3mez?= Date: Thu, 18 Dec 2025 12:27:54 +0100 Subject: [PATCH] fix(ui): reorganize bottom bar and clarify preset requirements Changes: - Added TODO comment about IndexedDB unavailability in test runtime - Moved layout preset selector to rightmost side of bottom bar - Moved window settings button to rightmost side as well - Removed per-workspace settings icon (now global button on right) - Added spacer to separate workspace tabs from layout controls - Changed preset descriptions to show "4+ windows" instead of "4 windows" to clarify that presets work with more windows than the minimum - Changed dropdown alignment from "start" to "end" for right-aligned opening The bottom bar now has clearer visual separation: [Workspace Tabs] [+] ................ [Layout Presets] [Settings] Generated with [Claude Code](https://claude.com/claude-code) --- src/components/TabBar.tsx | 73 +++++++++++++++++++----------------- src/lib/nostr-schema.test.ts | 4 ++ 2 files changed, 43 insertions(+), 34 deletions(-) diff --git a/src/components/TabBar.tsx b/src/components/TabBar.tsx index 26e0d99..478ba77 100644 --- a/src/components/TabBar.tsx +++ b/src/components/TabBar.tsx @@ -76,50 +76,54 @@ export function TabBar() { return ( <>
+ {/* Left side: Workspace tabs + new workspace button */}
{sortedWorkspaces.map((ws) => ( -
- - -
+ ))} + +
+ + {/* Spacer to push right side controls to the end */} +
+ + {/* Right side: Layout controls */} +
{/* Layout Preset Dropdown */} - +
Apply Layout Preset
@@ -137,7 +141,7 @@ export function TabBar() {
{preset.name}
{canApply - ? `${preset.slots} windows` + ? `${preset.slots}+ windows` : `Needs ${preset.slots} (have ${windowCount})`}
@@ -147,14 +151,15 @@ export function TabBar() { + {/* Window/Layout Settings */}
diff --git a/src/lib/nostr-schema.test.ts b/src/lib/nostr-schema.test.ts index 816f260..e45c7b7 100644 --- a/src/lib/nostr-schema.test.ts +++ b/src/lib/nostr-schema.test.ts @@ -8,6 +8,10 @@ import { getContentTypeDescription, } from "./nostr-schema"; +// TODO: Some tests in this file fail because IndexedDB is not available in the Vitest runtime. +// The failures are related to Dexie/IndexedDB operations that can't run in the Node.js test environment. +// Future work: Mock IndexedDB or use an in-memory IndexedDB implementation for testing. + describe("nostr-schema", () => { describe("loadSchema", () => { it("should load and parse the schema", () => {