Member-owned boards and a home page: decisions and order of work #190
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Ponente is moving from "admins make the boards and
/is the default board" to a shape where every member creates and manages their own boards, with a home page as the way in. Further out, once ATProto Spaces is stable, the data moves into lexicons — a board is roughly a space, its member list the space's members. This issue is the record of what was decided and the order the work goes in; each step is its own issue, linked at the bottom.It reverses things
docs/boards-and-permissions.mdanddocs/auth.mdstate as decisions — "a board is not owned", "admins see every board", the default board,LastBoardException, the wordmark'sHomeHref, theAdminpolicy. Those paragraphs get rewritten with the new reason by the step that outdates them, not left to go quietly wrong.Decided
Roles
Allowlist:Admins[], read at runtime rather than only seededBoardMemberBoardMemberrow, or the board being open to everyoneMembersrowMembersallowlist — with the access-request queue and the PDS invite codes that feed it — remains the front door, separate from board access, so the app is not open to the world yet. A board admin shares a board with people already on it. Revisited when the app goes ATProto-native.What
/does once it is the home pageThe browser says whether a page load began outside the site (
Sec-Fetch-Site: none); only those resume./launchstays as an alias for installs that already have it as theirstart_url.Migrating from the old model
Every step that changes the model carries its own migration, to one rule: nobody's access changes on the day it deploys, every address that worked keeps working, and the previous release can still run against the database for one release.
Everyoneboard staysEveryone(#192,AddBoardRoles).Members.Role) is left in place for a release and dropped in a later one — otherwise a rollback has nothing to start on. Left in place; the drop is #219, together with makingBoards.Keyrequired (#197 kept it nullable for the same reason)./admin/{columns,tags,access}[/{id}], the bare board-scoped paths that meant "the default board", bookmarks of/(#193, #194). Since #197, a numbered board link also moves on to the board's key.Decided in #196 (was: parked until the ban and delete design)
Settled on the design posted in #196 and built in #215 and #216:
/admin/board/{key}, reached from the link a report arrives as and never from a list. It shows the name, its admins, how many members, columns, cards and comments it has, and when it was made and last changed. Nothing members wrote besides the name. Each open is logged.BoardPurgedestroys it, the one place a card is ever destroyed. "Deleting a board never deletes a card" became "nothing is destroyed at the moment of pressing."Order of work
In order — each one needs the one before it, except where it says otherwise:
Then a release, so it exists on production.Not released separately: it ships with the rest in the next release./admin(#202)./, members create boards,/resumes from outside (#204).Not scheduled:
docs/lexicons.md(#217). Spaces has existed as an alpha since 2026-08-20 (proposal 0016, Permissioned Data), and #198 stays open until it is stable enough to build against.Along the way: a QA pass over #191–#195 (#212), a guard so a dev sign-in can never act on a real Atmosphere account (#211), the follow-ups it filed (#205, #209, #210, all closed), and the design canvas brought back in step (#206, #208 → #218).
🤖 On it — the reply will link the full session transcript.
⚠️ The run failed: This operation was aborted
⏱ 45m 2s · 505 steps · $1.8885 · tokens: 2705.5k in / 39.5k out (+48764.2k cache-read) · Go: 5h 23% · wk 34% · mo 19%
📜 Full session transcript
Brought up to date: every step through #197 is merged (#200–#218, each named in the list above), the parked questions were decided in #196, and #198's design is in
docs/lexicons.md. Closing as done. What's left lives elsewhere:Members.Roleand makingBoards.Keyrequired, after that release (the migration rule's one-release window).