cb750b22 ยท zzmq.dev@gmail.com/zz
Commit
cb750b2233b4b91eddb967023cd75ea577fd90db
Redesign zz work --assist: default to a lane picker, not a flat ask list New flow: pick a lane (LaneList, now showing an ask count per lane) -> see all its asks (LaneDetail, now a real cursor-navigable picker) -> enter views an ask's full detail, c claims it and starts a work session directly from either the list or the detail view, n posts a new ask into that lane. The old flat "every claimable ask across every watched repo" screen is still reachable -- LaneList always appends an "unclaimed (across all watched repos)" pseudo-lane as its last row, selecting it shows that same list through the identical ask-list UI (just with posting disabled, since it has no single target lane). LaneDetail's ask list is now built as a unified ClaimableEntry[] regardless of source (one real lane's own history, wrapped with claimHolder-derived alreadyClaimed, vs. the unclaimed pseudo-lane's already-ClaimableEntry[] shape), so viewing/claiming/rendering never branches on which mode produced a row. onViewAsk/onClaimAsk are both optional and unused by zz top's own read-only lanes tab, which stays exactly as it was. Also fixed in the same pass: a multi-line ask description's embedded newlines were rendering as real line breaks in the list row despite wrap="truncate-end" (that prop only truncates one too-long line, it doesn't collapse "\n"s) -- now only the first line shows there, same as the old flat picker's own convention. Verified live against the deployed Worker: lane picker with correct per-lane ask counts -> a real lane's ask list -> detail -> back -> c claims and starts a session directly from the list; separately, the unclaimed pseudo-lane shows the full cross-repo list with posting correctly disabled and esc returning to the lane picker. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q8tksS4bucUkJguqksSVYR
Troy Howard <thoward37@gmail.com> -- 2026-10-13T20:51:00.000Z