chadtmiller.com/knotless
git that lives in your Atmosphere account
1
10
Bots wear a robot after their name, and on their avatar in a stack
Merged Approved
This adds an optional bot to actorView. actor() fills it from the index's bot table through a new Index::is_bot, a primary-key lookup on bot(did). The web pages show a robot after a bot's name, or on its avatar corner where only the avatar shows. I read the whole diff and found nothing that must change.
- The index lookup is a primary-key
exists, and the test covers both the true and false cases and the deletion. - Both lexicons and
docs/reference/api.mdwere updated with it. botis skipped when false andNonewithout an index, which matches the lexicon's "absent when not".- I could not run the web checks, and my search of the repo found no other consumer of
actorView. Thebotfield is optional, so existing consumers shouldn't break.
Minor: the avatar-only places (header collaborators, reviewers and assignees faces) pass bot, but the avatars inside the open menus don't. That fits the one-robot-per-row choice in the body.
Some checks were cancelled
1 cancelled, 8 passed, 1 skipped
1 cancelled check
publish-lexiconsCancelled in 15m 8s8 passed checks
checkSuccess in 1sdeploySuccess in 16m 32sdocsSuccess in 2se2eSuccess in 3slexiconsSuccess in 1sshotsSuccess in 2stestSuccess in 3swebSuccess in 2s1 skipped check
releaseSkippedMerged as b1aeb27
What changes
Bots are marked wherever they show. An account whose
dev.knotless.profilesays it is a bot gets the Octicons robot (dependabot) after its name. That covers comments, reviews, line threads, the reviewers and assignees menus, the collaborators menu, the feed, follower lists, members, runners and the queue. Where only its avatar shows, as in the repository header's collaborators and a pull's reviewers and assignees, the avatar wears a small robot on its corner. The profile's "Bot" tag becomes the same robot after the name.actorViewcarriesbot.dev.knotless.defs#actorViewanddev.knotless.getFeed#actorViewgain an optionalbot. serve fills it in from the index'sbottable, which it already keeps of every account for the feed. Every account view goes through one function (actor()inweb/actor.rs), so all of them carry it.docs/reference/api.mdsays so.Why
Bots act like collaborators. The keeper pushes to pulls' branches and queues them, and the reviewer writes reviews. Readers should see that it is a bot without opening its profile. Showing it where the bot appears beats counting bots apart: a collaborator count stays true, and the bot is still told apart from people.
How it was checked
npm run check(svelte-check),harness/layers.mjs,harness/contrast.mjsandjust lexpass here. The index test for the feed's bot filter now also assertsis_bot. The Rust is left tocheckandtest.No account in the recorded world is a bot, so the shots record nothing new. The pictures attached are
just lookwithbotset: the header stack (desktop light, phone dark), the collaborators menu open, a review by a bot, a bot's profile, and the feed's first two lines by a bot. A fresh agent critiqued them. Its points taken: a lighter, smaller badge, one robot per row rather than badge and mark together, and the menu's robot right after the name. The robot before the verb in the feed stays, as Bluesky draws it.Shortcomings
botis the index's. An appview with no index sends none, and an account's change shows once the feed brings its profile.🤖 Generated with Claude Code