From acfc35af4c0f833ffd1fe2ceb47e4033ee300446 Mon Sep 17 00:00:00 2001 From: Aneurin Barker Snook Date: Fri, 4 Sep 2026 20:47:17 +0100 Subject: [PATCH] Show a dashed drop-area in empty kanban columns and the inbox .kanban__cards:empty (shared by every status column and the sidebar's inbox list) gets a dashed border, transparent background, and a 'Drop cards here' hint, echoing the dashboard's 'Create a project' tile. Pure CSS: both draggables are already always-rendered even when empty, so an empty one is a genuinely childless element and :empty just tracks that -- it steps aside on its own once Sortable inserts a drag-over ghost, and needs no JS empty-state flag. Drops the sidebar's separate 'Nothing in the inbox.' message, now redundant with the box itself. Verified the container really is childless when empty via a DOM dump against a running instance (no screenshot). Co-Authored-By: Claude Sonnet 5 --- web/README.md | 8 ++++++++ web/src/components/AppSidebar.vue | 5 +++-- web/src/style.css | 20 ++++++++++++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/web/README.md b/web/README.md index 0fbfd23..5bfef98 100644 --- a/web/README.md +++ b/web/README.md @@ -78,6 +78,14 @@ project view is currently mounted (`route.name === 'project'`), that project's cards too -- either side of a drag could have been the inbox. A small form under the list adds a card straight to the inbox. +Empty (no cards) is shown as a subtle dashed drop-area rather than blank +space -- `.kanban__cards:empty` in `style.css`, so it's pure CSS keyed off the +real DOM child count. Since a card's kanban column/inbox `` is +always rendered even with nothing in it (see above), that container is +genuinely childless when empty, so the rule applies with no extra markup or +JS state; it steps aside automatically once Sortable inserts its drag-over +ghost. The same rule covers every kanban status column too (below). + ## Project detail `/projects/:id` shows one project. It renders on a **full-width** layout (the diff --git a/web/src/components/AppSidebar.vue b/web/src/components/AppSidebar.vue index 79cb48c..721acce 100644 --- a/web/src/components/AppSidebar.vue +++ b/web/src/components/AppSidebar.vue @@ -139,8 +139,9 @@ async function onInboxChange(change: ColumnChange) {