away mode visibility

This commit is contained in:
Ian Gulliver
2026-10-20 11:19:06 -07:00
parent ef98b1179d
commit 6f3d92e4e2
2 changed files with 49 additions and 13 deletions
+1 -1
View File
@@ -346,7 +346,7 @@ An agent error (a turn that ends in error without a human interrupt, a process t
### Away
A user who is away has byre answer their agents' questions instead of waiting (`internal/agents/away.go`). `users.away`, `away` on `GET /api/me`, is set with `PUT /api/me/away` (`Manager.SetAway`), which records `user.updated`. While it is on, every question filed by `ask_human` in a task the user created is answered at once, as that user, with an `other` response of `awayText`: pick the most likely answer and carry on; fork with the `fork` tool (see "Forking") only when strongly convinced both answers are worth following; don't guess at what only the user can give (a test result, a password, a permission), and carry on with other work or end the turn instead; and no authorization is granted. The tool's result says so, and the answer is delivered like any other, usually mid-turn right after the `ask_human` call, so it gets an `answer` snapshot and the user can **Answer again** with their own answer when back. Turning it on answers the user's tasks' questions already open the same way; turning it off lets new questions wait again. The app's Away button, at the right end of the window's toolbar (a `primaryAction` toolbar item, apart from the server picker), shows on (accent) when the user is away on any connected server and sets all of them to the opposite on click, so a mixed state is always cleared by one click. `sqlite3 byre.db "SELECT login FROM users WHERE away = 1"` lists who is away.
A user who is away has byre answer their agents' questions instead of waiting (`internal/agents/away.go`). `users.away`, `away` on `GET /api/me`, is set with `PUT /api/me/away` (`Manager.SetAway`), which records `user.updated`. While it is on, every question filed by `ask_human` in a task the user created is answered at once, as that user, with an `other` response of `awayText`: pick the most likely answer and carry on; fork with the `fork` tool (see "Forking") only when strongly convinced both answers are worth following; don't guess at what only the user can give (a test result, a password, a permission), and carry on with other work or end the turn instead; and no authorization is granted. The tool's result says so, and the answer is delivered like any other, usually mid-turn right after the `ask_human` call, so it gets an `answer` snapshot and the user can **Answer again** with their own answer when back. Turning it on answers the user's tasks' questions already open the same way; turning it off lets new questions wait again. The app's Away button, at the right end of the window's toolbar (a `primaryAction` toolbar item, apart from the server picker), shows on when the user is away on any connected server, as an outlined warn-coloured "AWAY · click when back" pill, and sets all of them to the opposite on click, so a mixed state is always cleared by one click. While away, each time the app becomes active, and when any server finishes connecting while the app is active (so a launch asks too), it asks "You're still away … Are you back?" in a modal; "I'm back" turns Away off on every server, "Stay away" (or Escape) leaves it on. `sqlite3 byre.db "SELECT login FROM users WHERE away = 1"` lists who is away.
## Notifications