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-linkis 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 newduefilter kind. The whole-footer click-to-open is preserved underneath.a604d87 - Person pages at
/people/:usernameshow 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_byPreviouslyNote.completerecorded onlycompleted_at, so a card you finished but did not create could not be attributed to you.completed_byis now written on completion (first completer sticks viaCOALESCE), enabling accurate personal activity going forward. The migration is routed throughmigrate()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
/attentionpage is retired;/attentionnow 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.addand require explicit acceptance. Acceptance callsRequest.resolve("accepted")and decline callsRequest.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.4f61b372bbeca5