From 81900f4d0619e22552b19010eecef4f34800b507 Mon Sep 17 00:00:00 2001 From: Aneurin Barker Snook Date: Sat, 5 Sep 2026 00:36:38 +0100 Subject: [PATCH] Rename the "All tasks" tab to "Explore" Also refreshed web/README.md while touching this section: fixed the project/project-configure header descriptions to describe the current inline .title-back arrow (they still described the old separate "Back to project" button), and added a "Card detail" section documenting CardView/CardConfigureView/CardManageMenu, which had none. Co-Authored-By: Claude Sonnet 5 --- web/README.md | 46 +++++++++++++++++++++++++++-------- web/src/views/ProjectView.vue | 6 ++--- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/web/README.md b/web/README.md index a4e6bd6..bab6c11 100644 --- a/web/README.md +++ b/web/README.md @@ -138,21 +138,23 @@ ghost. The same rule covers every kanban status column too (below). `/projects/:id` shows one project. It renders on a **full-width** layout (the route sets `meta.wide`, which widens `.app__main` in `App.vue`), so the header spans the full width and the **Manage** menu sits top right. The title is a -plain heading here -- renaming lives on the configuration view (below). Manage +plain heading, with an inline `.title-back` arrow to the dashboard right +before the text -- renaming lives on the configuration view (below). Manage (`ProjectManageMenu.vue`) has a **Configure** link (to that view) and a **Delete project** action that opens a confirmation modal; confirming calls `DELETE /api/projects/:id` and returns to the dashboard. Below the header are two tabs (local `activeTab` state, `v-show` so both stay -mounted). The tab order is fixed — **All tasks** first, **Kanban** second — but +mounted). The tab order is fixed — **Explore** first, **Kanban** second — but `activeTab` initialises to `'kanban'`, so a project opens on the board. -### All tasks +### Explore The flat card list, **sorted by name (case-insensitive)** via a `sortedCards` -computed — there is no manual order here. Each row is an inline-editable text -field (saved on blur), a status chip (`card.status.name` or "No status"), and a -delete button. +computed — there is no manual order here. Each row links to the card's own +view (`/cards/:id` — see [Card detail](#card-detail)) and shows its status +chip (`card.status.name` or "No status") next to the text; a delete button +sits outside that link. ### Kanban @@ -172,10 +174,10 @@ side of the move. ## Project configuration `/projects/:id/configure` (`ProjectConfigureView.vue`) manages a project's -statuses. The header mirrors the project view's — title, then a -"← Back to project" link and `ProjectManageMenu` together, top right, styled -alike (both `.menu__toggle`) (Manage's own Configure link is hidden here, -since it would just point at the current page). +statuses. The header mirrors the project view's — an inline `.title-back` +arrow before the title, this time back to the project, and +`ProjectManageMenu` top right (its own Configure link is hidden here, since +it would just point at the current page). A **Rename project** section (a plain `PATCH /api/projects/:id` form, `{ title }`) sits above **Statuses**. On success it also calls the @@ -200,6 +202,30 @@ delete with `{ reassign_to }`, which reassigns and deletes in one request. The last remaining status can't be deleted (a project card always needs one); its row's delete button is disabled once `statuses.length <= 1`. +## Card detail + +A card's text is no longer inline-editable anywhere it's listed -- the +Explore row, a kanban column, and the sidebar inbox all just link to +`/cards/:id` (`CardView.vue`) instead. Its header follows the same pattern as +every other view now: an inline `.title-back` arrow before the title text, +`Manage` in the actions corner. The arrow goes to the card's project, or the +dashboard for an inbox card (there's no standalone view of the inbox to +return to). Below the header sits just the status badge -- no tabs, since +there's nothing else to show for a single card. + +`/cards/:id/configure` (`CardConfigureView.vue`) mirrors the project +configuration view once more: same header (its back arrow instead returns to +the card view), with a **Rename card** form below it (`PATCH /api/cards/:id`, +`{ text }`). `CardManageMenu.vue` -- the card equivalent of +`ProjectManageMenu.vue` -- provides both views' **Manage** menu: a +**Configure** link (hidden on the configure view itself) and a **Delete +card** action behind a confirmation modal. + +Saving a rename or confirming a delete refreshes whichever store holds the +card -- the `cards` store (for a project card) or the `inbox` store -- so the +board or sidebar it came from picks up the change; deleting also navigates +back to wherever its back arrow points. + ## Auth flow There is no password and no separate sign-up — `LoginView` is an email field diff --git a/web/src/views/ProjectView.vue b/web/src/views/ProjectView.vue index d110af5..2ebdefc 100644 --- a/web/src/views/ProjectView.vue +++ b/web/src/views/ProjectView.vue @@ -21,9 +21,9 @@ const statuses = ref([]) const loadError = ref(null) const actionError = ref(null) -// Tab order is unchanged (All tasks first); Kanban is just the default view. +// Tab order is unchanged (Explore first); Kanban is just the default view. const tabs = [ - { key: 'all', label: 'All tasks' }, + { key: 'all', label: 'Explore' }, { key: 'kanban', label: 'Kanban' }, ] as const const activeTab = ref<(typeof tabs)[number]['key']>('kanban') @@ -191,7 +191,7 @@ async function onCreateInColumn(column: Column) { - +

{{ summary }}