feat(board): read the full agile board settings #146
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/YT-92-board-show"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
yt board show <BOARD>renders the agile board settings screen the web UI keeps behind Board settings: Overview (owner, backlog and its query, orphan handling, board status), Projects, Columns (the driving field plus each column's ordinal, resolved flag, WIP limits and field values), Swimlanes, Sprints, Estimation, Colour coding, Card fields, and Permissions, each as a labelled table. The board name is positional and falls back to theboardconfig value the wayyt sprint --boarddoes, and--jsonemits the deserialized entity. An unknown name fails with the existingboard '<name>' not founderror rather than an empty table.AgileBoardgrows from the two-field stubboard listuses into the typed Agile entity: owner, projects, column settings with WIP limits, swimlane settings, sprint settings, colour coding, card settings, estimation fields, backlog, orphan flags, visibility and update permissions, and status. The swimlane and colour-coding variants are$type-tagged enums with anUnknownarm, so a variant this instance never returned does not fail the whole read. Every added field is optional, soboard listkeeps its cheapid,nameselector and its output shape.api::get_boardresolves the name through the existingresolve_boardand reads/api/agiles/<id>with the full selector, then takesprojectsandsprintsfrom their own pageable subresources because an entity read cannot page its nested collections (YT-83). The live shapes that diverge from the published Agile entity are recorded next to it:cardSettingsis null on every board probed and its subresource 404s,swimlaneSettings.fieldis aCustomFilterFieldrather than aCustomField,explicitQuerysurvivesdisableSprints,AgileColumn.presentationis the comma-joined list of the column's field values, andstatus.idis the constantboardStatus.The MCP mirrors the read as the read-only
get_boardtool, which rejectsdry_runper YT-81.crates/yt-cli/tests/board_show.rsdrives the real binary against a mock server for the happy path, the config-default path, the missing-board path, and the unknown-board error. The board-name resolutionyt sprintcarried moves tocommands::board::resolve_boardso both surfaces share one definition.#YT-92