chadtmiller.com/knotless
git that lives in your Atmosphere account
An owner hears all of its own repository until it chooses otherwise
MergedThis makes an owner's unchosen repositories count as all watches. The notifications page adds them from the main index and each space index. watching feeds the Watch menu and notifiedFor. subscribe now keeps participating for a repository the account owns. I read the diff and the call sites of subscriptions and notifications_as, and found nothing that needs changes.
- The page path and the thread and repo views all take the same default, so they agree.
- The
owntest insubscribeis right: a repo subject isdid/key, and a pull or issue URI startsat:, which never equals a DID. - The docs, lexicons and the new test cover the change.
Notes, none of which hold the pull:
- An owner's kept
participatingrows count toward the 1,000-choice cap. - The new
subscribedoc comment runs past the line width that surrounds it. It's cosmetic. - I did not run the checks, so I'm relying on CI for the query-plan check on the
repo WHERE did = ?read.
The change since my approval adds OWNED_SINCE (2026-11-08) and starts an owner's default all watch at the later of the repository's creation and that date. That keeps the default from pulling in older comments, which fits the body. In owned_watches, max(min(created_at), ?2) is valid SQLite. max with two arguments is the scalar form, applied to the grouped min. Both bindings are strings, and the comparison is lexicographic on RFC3339 UTC timestamps, so it works as long as created_at is stored in that same format. The test now covers a comment from before the cutoff that isn't heard and one after it that is. The design doc is updated. I did not run the checks.
9 passed, 1 skipped
What changes
You now hear all of a repository you own until you choose otherwise. Before this, an owner heard of every pull and issue opened there, but not comments on threads they had not joined, and the Watch menu said "Participating" for a repository they owned.
Notifications. The index adds an
allwatch for each repository of the account's own that it made no choice for, counted from when the repository was made or fromOWNED_SINCE(2026-11-08), whichever is later, from the main index and each index of a space (owned_watches). The query itself is unchanged.What the pages say.
getRepo'sviewer.subscriptionisallfor an owner who has not chosen, so the Watch menu shows "All activity".getThread'snotifiedForsayswatchingfor the same reason (Index::watching).Choosing Participating. For anyone else,
participatingforgets the choice, as before. For an owner it is kept as a choice, since it is no longer the default.Collaborators and members of the organization that owns a repository keep the old default. The change is for owners only.
Why
An owner looks after all of their repository, and the old default missed comments on threads they had not joined. The menu also said less than owners got. The default is worked out when notifications are read, not written into the subscription table. That table outlives an index rebuild, so written rows would bring back an owner's All after they had chosen Participating.
How it was checked
A new index test,
an_owner_hears_all_of_its_own_repository_until_it_chooses, covers the default (a comment from beforeOWNED_SINCEis not heard, one after is),watchingfor the owner and for others, a kept Participating, and another account's Participating still being forgotten. The existing watch test passes unchanged in what it asserts. CI runs the serve tests and the query plans.Shortcomings
OWNED_SINCEis a fixed date in the code. It keeps the default from bringing in older comments when it lands, as a new watch never does. Collaborators still default to Participating.🤖 Generated with Claude Code