~ knotless Search/
↑↓ move↵ open⇧↵ all results

chadtmiller.com/knotless

git that lives in your Atmosphere account

knotless.dev
1 collaborator

knotless 0.13.0 Latest 2 packages, 1 image

1
10

Bots wear a robot after their name, and on their avatar in a stack

Merged
Merged chadtmiller.com asked to merge into main from chadtmiller.com/knotless:web/bot-mark

What changes

Bots are marked wherever they show. An account whose dev.knotless.profile says 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.

actorView carries bot. dev.knotless.defs#actorView and dev.knotless.getFeed#actorView gain an optional bot. serve fills it in from the index's bot table, which it already keeps of every account for the feed. Every account view goes through one function (actor() in web/actor.rs), so all of them carry it. docs/reference/api.md says 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.mjs and just lex pass here. The index test for the feed's bot filter now also asserts is_bot. The Rust is left to check and test.

No account in the recorded world is a bot, so the shots record nothing new. The pictures attached are just look with bot set: 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

  • The shots world has no bot account, so no recorded page shows the mark.
  • bot is the index's. An appview with no index sends none, and an account's change shows once the feed brings its profile.
  • Commit authors are not marked, as a commit names an email, not an account.

🤖 Generated with Claude Code

bot-header-light.png

bot-header-dark.png

bot-menu.png

bot-pull.png

bot-profile.png

bot-feed.png

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.md were updated with it.
  • bot is skipped when false and None without 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. The bot field 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.

Merged as b1aeb27