From a6c12ee01fca7df10af209018dffec6ac4ff80cb Mon Sep 17 00:00:00 2001 From: bboysoul Date: Tue, 15 Sep 2026 15:53:46 +0800 Subject: [PATCH] fix: align overdue task swipe motion --- frontend/src/App.vue | 2 +- frontend/src/style.test.ts | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 52b9039..effdcfb 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1498,7 +1498,7 @@ onUnmounted(() => {
diff --git a/frontend/src/style.test.ts b/frontend/src/style.test.ts index 119fc42..240e903 100644 --- a/frontend/src/style.test.ts +++ b/frontend/src/style.test.ts @@ -256,6 +256,18 @@ describe('completion feedback motion', () => { expect(css).toContain('@keyframes completion-slide-out') }) + it('gives overdue tasks the same right-swipe completion motion as regular tasks and habits', () => { + const overdueBlock = app.slice(app.indexOf('
= 64") + expect(overdueBlock).toContain("'--swipe-x': `${taskSwipeOffsets[node.task.id] ?? 0}px`") + expect(overdueBlock).toContain('@pointerdown="startTaskPointer(node.task, $event)"') + expect(overdueBlock).toContain('@touchstart.passive="startTaskSwipe(node.task, $event)"') + expect(overdueBlock).toContain('@click="selectTaskUnlessSwiped(node.task)"') + expect(overdueBlock).toContain('@keydown.space.prevent="selectTaskUnlessSwiped(node.task)"') + }) + it('animates only transient just-completed rows and respects reduced motion', () => { expect(css).toContain('.task-row.just-completed,.habit-row.just-completed{animation:completion-row-settle .34s cubic-bezier(.2,.85,.3,1)}') expect(css).toContain('.task-row.just-completed .task-check-mark,.habit-row.just-completed .task-check-mark{animation:completion-check-pop .38s cubic-bezier(.2,1.4,.35,1)}') @@ -561,11 +573,11 @@ describe('task and habit row decoration', () => { expect(purgeBlock).toContain("await mutateTrashTask(task, () => api(`/trash/${task.id}`") }) - it('supports pointer dragging for desktop visible task completion', () => { - expect(app.match(/@pointerdown="startTaskPointer/g)?.length).toBe(1) - expect(app.match(/@pointermove="moveTaskPointer/g)?.length).toBe(1) - expect(app.match(/@pointerup="finishTaskPointer/g)?.length).toBe(1) - expect(app.match(/@pointercancel="cancelTaskPointer/g)?.length).toBe(1) + it('supports pointer dragging for desktop task completion in regular and overdue rows', () => { + expect(app.match(/@pointerdown="startTaskPointer/g)?.length).toBe(2) + expect(app.match(/@pointermove="moveTaskPointer/g)?.length).toBe(2) + expect(app.match(/@pointerup="finishTaskPointer/g)?.length).toBe(2) + expect(app.match(/@pointercancel="cancelTaskPointer/g)?.length).toBe(2) }) it('supports pointer dragging for desktop habit rows in Today and Habits views', () => {