Give transient UI state an explicit home in the store
TransientBoardState, one per store, holds state by how a reload treats it: item-referencing sets (selection, drag membership, pending cut) share one shape and one constraint rule — members must exist in the current universe — applied in two directions by one primitive, so the search filter's hidden-cards rule and reload survival are one rule expressed once; derived state is stored as its inputs only (the query, never its result set); and the new-card placeholder is a lane-anchored overlay with no UUID until commit, discarded when its lane vanishes or tombstones, handed off when the created card's UUID appears. Trash visibility rides along per-open, never persisted. The decision is written back into DESIGN/02 § Changes from Kanban — the TBD is closed. Full suite 352 tests in 64 suites green. Two findings filed. Claude-Session: https://claude.ai/code/session_018BjQRYBR6jQja3jCRi5S3A
This commit is contained in:
@@ -448,7 +448,7 @@ struct ItemIDValueSemanticsTests {
|
||||
}
|
||||
|
||||
/// The consequence every `Set`/`Dictionary` keyed by `ItemID` inherits — selection
|
||||
/// membership included (`BoardStore.Selection`).
|
||||
/// membership included (`ItemReferenceSet`).
|
||||
@Test func aSetCollapsesTheTwoSpellingsToOneMember() {
|
||||
let set: Set<ItemID> = [ItemID(rawValue: Self.lower), ItemID(rawValue: Self.upper)]
|
||||
#expect(set.count == 1)
|
||||
|
||||
Reference in New Issue
Block a user