This release delivers a substantially reworked dashboard — now a full home surface with a personal activity band, teammate person cards, and deep-linked filter chips — alongside a unified settings system shared between board and account panels. The invitation flow is redesigned around approval-first semantics with Plus gating moved to link generation. Internal work includes a deploy marker credential consolidation and a completed_by schema migration.
Breaking changes
- Free owners can no longer generate invite linksPreviously free owners could mint invite links (requests were filed on click). Now
POST /api/boards/:ws/:slug/invite-link is Plus-only; a free owner hitting this endpoint receives a 403. If you rely on free-tier invite link generation, users must upgrade to Plus. 4f61b37
New
- Dashboard ledger chips deep-link to the board pre-filteredEach footer token on a board card (
+added, ✓done, due count, overdue count) is now a link that opens the board filtered to that bucket via a new due filter kind. The whole-footer click-to-open is preserved underneath. a604d87 - Person pages at
/people/:username show shared activity and boardsClicking a person card opens a dedicated page scoped to the boards you both belong to: their identity, a single chronological activity list of cards added and finished, and the shared boards in a grid below. Each shared board tile carries their counts via an optional subject predicate threaded through the existing ledger builders. a604d87 - Notes now record who completed them via
completed_byPreviously Note.complete recorded only completed_at, so a card you finished but did not create could not be attributed to you. completed_by is now written on completion (first completer sticks via COALESCE), enabling accurate personal activity going forward. The migration is routed through migrate() so failures are logged rather than silently swallowed. a604d87
Improved
- Dashboard is now a home surface with your plate, activity, and teammate cardsThe dashboard opens with a two-column band showing what needs you (due and overdue cards) and your recent activity (adds and finishes). Teammates holding your handed-off work appear as person cards using their own colour, texture, and handwriting font — hovering flips the card to show the specific notes they hold. The standalone
/attention page is retired; /attention now redirects to /dashboard, and the bell popover is unchanged. a604d87 - Board settings and account drawer unified into one design systemBoth panels now share a single type scale, a 24 px rail, disclosure-by-weight accordions, Radix tooltips, and one input/button recipe documented in
DESIGN.md. Board backgrounds are migrated to six real values (removed values are grid-migrated). Status is shown as tags with id-preserving rename, the People section always shows join requests, and the account header shows a read-only email (owned by Neologin). 2bbeca5 - Invite link generation is now the Plus paywall; all joins are approval-basedGenerating or rotating a collaborator invite link now requires Plus — a free owner's Invite action opens the upgrade dialog before any token is minted. All joins (including Plus owners) go through
Request.add and require explicit acceptance. Acceptance calls Request.resolve("accepted") and decline calls Request.resolve("declined"); resolved outcomes stay visible to the recipient until dismissed. A declined link cannot recreate its request; rotating the link starts a deliberate new invitation. 4f61b37 2bbeca5