7937266262
- Implemented the --project flag in the pcli status command to filter boards based on the specified project name. - Updated the command to resolve project names to IDs using case-insensitive matching. - Adjusted the totalBoards count in the output to reflect the number of boards matching the project filter. - Enhanced command help text and README documentation to include usage examples for the new flag. - Verified functionality through manual testing and ensured default behavior remains unchanged when the flag is omitted. feat(board): expand GetBoard response to include labels and card associations - Modified the Board struct to include Labels, CardLabels, and CardMemberships fields. - Updated the GetBoard method to parse additional fields from the API response. - Enhanced ListCardsByBoard to include label names for each card based on the enriched board data. - Ensured backward compatibility by making new fields optional and preserving existing output structure.
27 lines
1.5 KiB
Markdown
27 lines
1.5 KiB
Markdown
## Why
|
|
|
|
The `GetBoard` API response includes `cardLabels`, `labels`, and `cardMemberships` in its `included` data, but `pcli` only parses `lists` and `cards` — silently discarding the rest. This means there is no way to determine which labels are attached to which cards without making per-card API calls. The kanban sync workflow needs to identify agent-labelled cards from a board listing, and currently must fall back to name-matching because label data is unavailable.
|
|
|
|
## What Changes
|
|
|
|
- Expand the `Board` struct in `model/types.go` to include `Labels`, `CardLabels`, and `CardMemberships` fields
|
|
- Update `GetBoard` in `client/boards.go` to parse these additional `included` fields from the API response
|
|
- Update `ListCardsByBoard` to enrich card output with label names (via `cardLabels` join table + `labels`)
|
|
|
|
## Capabilities
|
|
|
|
### New Capabilities
|
|
|
|
_None — this enhances existing capabilities._
|
|
|
|
### Modified Capabilities
|
|
|
|
- `api-client`: `GetBoard` SHALL parse `labels`, `cardLabels`, and `cardMemberships` from the board response `included` data
|
|
- `card-operations`: `ListCardsByBoard` (card list --board) SHALL include label names on each card
|
|
|
|
## Impact
|
|
|
|
- **Code**: `model/types.go` (Board struct), `client/boards.go` (GetBoard parsing), `client/cards.go` (ListCardsByBoard enrichment)
|
|
- **API**: No new API calls — parsing data already returned by `GET /api/boards/:id`
|
|
- **Breaking changes**: None — new fields are additive; JSON output gains new fields but existing fields unchanged
|