From dc493f5037d39dd3a5820fb4cc2b252553d67ed9 Mon Sep 17 00:00:00 2001 From: Wally Hackenslacker Date: Mon, 16 Mar 2026 15:57:27 -0400 Subject: [PATCH] docs: improve status readability and record verification outcomes --- AGENTS.md | 13 ++++++++++++- ...board-detail-add-create-filter-implementation.md | 9 +++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 docs/superpowers/plans/2026-03-16-board-detail-add-create-filter-implementation.md diff --git a/AGENTS.md b/AGENTS.md index d0c4fc2..fd554b1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -113,7 +113,18 @@ Kanbn4Droid is an unofficial app to connect to and manipulate data stored in sel - Tapping on the filter by tag or search buttonswhen either of them is applied disables the active filter. - When a card(s) is selected by a long press, the filter by tag and search buttons get hidden by the select all, move card and delete card buttons until all cards are deselected. - When a card(s) is selected by a long press, the back arrow in the title bar and the back system button remove all selections. -- Current status: implemented in `BoardDetailActivity` with `ViewPager2` (one list per page), inline list-title edit, card rendering (title/tags/due date locale formatting and expiry color), FAB flows for both add-list and add-card dialogs, local filter/search behavior (no server roundtrip) with active filter/search icon highlighting, cross-page card selection, selection-mode toolbar action replacement (hide filter/search and show select-all/move/delete), page-scoped select-all, move dialog with list selector, two-step delete confirmation, and back handling that clears selection from both the top-bar back arrow and system back button before navigating. The screen also includes mutation guards while in progress and API-backed reload/reconciliation behavior through `BoardDetailViewModel` and `BoardDetailRepository`. Card move requests try these variants in order for compatibility across Kan.bn API versions: `PUT /api/v1/cards/{cardPublicId}` with `listPublicId`, then a GET+full-body `PUT /api/v1/cards/{cardPublicId}` payload (`title`, `description`, `index`, `listPublicId`, `dueDate`), then `PUT /api/v1/cards/{cardPublicId}` with `listId`, then `PATCH /api/v1/cards/{cardPublicId}` with `listId`. Board detail parsing now prefers public ids (`publicId`/`public_id`) over internal `id` values so follow-up card/list mutations target the correct API identifiers. Label chip border colors are hydrated from the Kan.bn `Get a label by public ID` endpoint (`colourCode`) and cached in-memory by `BoardDetailRepository` so each label color is fetched only once per app process. Selection action icons use local vector drawables (`ic_select_all_grid_24`, `ic_move_cards_horizontal_24`, `ic_delete_24`) with day/night resource variants so dark mode uses light icon fills automatically. Startup blocking dialogs are shown for missing board id and missing session. +- Current status: implemented in `BoardDetailActivity` with `ViewPager2` (one list per page), inline list-title edit, and card rendering (title/tags/due date locale formatting and expiry color). + - FAB flows are implemented for both add-list and add-card dialogs. + - Filter/search behavior is local (no server roundtrip), and active filter/search icons are highlighted. + - Cross-page card selection is implemented. In selection mode, toolbar actions are replaced (filter/search hidden; select-all/move/delete shown). + - Select-all is page-scoped, move uses a list selector dialog, and delete uses two-step confirmation. + - Back handling clears selection from both the top-bar back arrow and the system back button before navigation. + - The screen includes mutation guards while in progress and API-backed reload/reconciliation behavior through `BoardDetailViewModel` and `BoardDetailRepository`. + - Card move requests try these variants for Kan.bn API compatibility: `PUT /api/v1/cards/{cardPublicId}` with `listPublicId`, then GET+full-body `PUT /api/v1/cards/{cardPublicId}` payload (`title`, `description`, `index`, `listPublicId`, `dueDate`), then `PUT /api/v1/cards/{cardPublicId}` with `listId`, then `PATCH /api/v1/cards/{cardPublicId}` with `listId`. + - Board detail parsing prefers public ids (`publicId`/`public_id`) over internal `id` values so follow-up card/list mutations target correct API identifiers. + - Label chip border colors are hydrated from Kan.bn `Get a label by public ID` (`colourCode`) and cached in-memory by `BoardDetailRepository` so each label color is fetched only once per app process. + - Selection action icons use local vector drawables (`ic_select_all_grid_24`, `ic_move_cards_horizontal_24`, `ic_delete_24`) with day/night variants so dark mode uses light icon fills automatically. + - Startup blocking dialogs are shown for missing board id and missing session. **Card detail view** - The view shows the card's title in bold letters. Tapping on the card's title allows editing it. diff --git a/docs/superpowers/plans/2026-03-16-board-detail-add-create-filter-implementation.md b/docs/superpowers/plans/2026-03-16-board-detail-add-create-filter-implementation.md new file mode 100644 index 0000000..cf22dea --- /dev/null +++ b/docs/superpowers/plans/2026-03-16-board-detail-add-create-filter-implementation.md @@ -0,0 +1,9 @@ +# 2026-03-16 Board Detail Add/Create/Filter Implementation + +## Execution Verification + +Recorded at: 2026-03-16T15:56:23-04:00 + +- `./gradlew test` - PASS +- `./gradlew connectedDebugAndroidTest` - PASS +- `./gradlew assembleDebug` - PASS