From 4d762364d59ee76b997b8c6afc667b5698dfc391 Mon Sep 17 00:00:00 2001 From: Tristan Michael Date: Mon, 30 Mar 2026 16:50:15 -0700 Subject: [PATCH] feat(gui): refine layout - compact headers, reorganize panels, improve task UX - Standardize header height (h-11) across detail view and main panel - Move kebab menu below header in task detail view - Move workspace switcher to drawer header with window drag support - Move settings button to drawer footer with label - Add mark-as-completed/restore to kebab menu, remove bottom action bar - Enlarge checkbox hit target without changing visual size - Show checkmark animation before task collapse transition Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/lib/components/TaskDetailView.svelte | 36 ++-- apps/tauri/src/lib/components/TaskItem.svelte | 25 ++- apps/tauri/src/lib/screens/TasksScreen.svelte | 185 +++++++++--------- 3 files changed, 130 insertions(+), 116 deletions(-) diff --git a/apps/tauri/src/lib/components/TaskDetailView.svelte b/apps/tauri/src/lib/components/TaskDetailView.svelte index 259dccc..06863d9 100644 --- a/apps/tauri/src/lib/components/TaskDetailView.svelte +++ b/apps/tauri/src/lib/components/TaskDetailView.svelte @@ -87,7 +87,7 @@
+
+ +
-
+
{#if showMenu} -
+
+
- - - -
- -
- -
- {#if showDatePicker} { const _ = task.status; @@ -31,9 +32,12 @@ async function handleToggle(e: MouseEvent) { e.stopPropagation(); + justChecked = true; + await new Promise((r) => setTimeout(r, 300)); transitioning = true; animateInIds.add(task.id); await new Promise((r) => setTimeout(r, 200)); + justChecked = false; await app.toggleTask(task.id); } @@ -53,9 +57,12 @@ if (Math.abs(swipeX) > 100) { swipeX = 0; swiping = false; - transitioning = true; - animateInIds.add(task.id); - setTimeout(() => app.toggleTask(task.id), 200); + justChecked = true; + setTimeout(() => { + transitioning = true; + animateInIds.add(task.id); + setTimeout(() => { justChecked = false; app.toggleTask(task.id); }, 200); + }, 300); return; } swipeX = 0; @@ -105,11 +112,14 @@
- {#if isCompleted} +
+ {#if isCompleted || justChecked} {/if} +
diff --git a/apps/tauri/src/lib/screens/TasksScreen.svelte b/apps/tauri/src/lib/screens/TasksScreen.svelte index 9f8396e..11c9e68 100644 --- a/apps/tauri/src/lib/screens/TasksScreen.svelte +++ b/apps/tauri/src/lib/screens/TasksScreen.svelte @@ -157,6 +157,83 @@ >
+ + +
+
+ + {#if showWorkspacePicker} + +
+ {#each workspaceNames as name} + {@const ws = app.config?.workspaces[name]} +
+ +
+ + {#if wsMenuName === name} +
+ +
+ {/if} +
+
+ {/each} +
+ +
+
+ {/if} +
+ +
+
{#each app.lists as list (list.id)} @@ -228,93 +305,20 @@
- -
- -
- - {#if showWorkspacePicker} - -
- {#each workspaceNames as name} - {@const ws = app.config?.workspaces[name]} -
- -
- - {#if wsMenuName === name} -
- -
- {/if} -
-
- {/each} -
- -
-
- {/if} -
- - - -
+ +
@@ -339,7 +343,7 @@