What's Changed
- test: refresh card fixtures from live captures; fix(cli): empty Properties block for {} by @dsociative in #25
- feat(client)!: non_exhaustive API types with request initializers; Card.external_links and CardFile.uid; external links without a second request; cargo-semver-checks in CI by @dsociative in #27
Full Changelog: v0.5.0...v0.6.0
Breaking changes in kaiten-client (the CLI and MCP contracts are unchanged)
- All response models and
KaitenErrorare now#[non_exhaustive]. Struct literals such asCard { .. }andmatchonKaitenErrorwithout a_arm no longer compile outside the crate; read fields as before, build values by deserializing. From now on new fields and variants are compatible (minor) changes. - Request types:
CreateCard { board_id, title, ..Default::default() }→let mut req = CreateCard::new(board_id, title); req.description = ..;(CreateCard::default()is gone — it produced an invalid request).UpdateCard { .. }/CardFilter { .. }→::default()+ field assignment. - New fields:
Card.external_links,CardFile.uid;FileRef::Uidnow comes fromuid(url parsing is the fallback) andFileRef::matchesaccepts the wire uid.
Behaviour
card viewprints the card's external links from the card response — no extra request;--include external_links/ MCPinclude: ["external_links"]still work but are deprecated no-ops (one stderr line in the CLI).card viewno longer prints an emptyProperties:block for a card without custom properties.card file list --jsonand MCPFileViewcarryuidfor classic-storage files too.- CI:
cargo semver-checkson every pull request (thebreakinglabel declares an intentional major bump).