| Filename | Latest commit message | Latest commit date |
|---|---|---|
The admin-room command stays in #admins' history, so a grant tuwunel ignores must not be re-sent every five minutes. The controller now sends `make-user-admin` at most once per operator per process; an operator still missing from the room on a later pass is logged as "make-user-admin for an operator failed to take" and left alone until the controller restarts. The cap lives in the pure `plan()`. swarm-matrix-client's `user_exists` and `joined_members` read their responses through pure `profile_verdict` / `joined_verdict`, the shape `whoami` / `whoami_verdict` already has, with every branch tested: only M_NOT_FOUND is "no account", and a 403 or a list without `joined` is an error rather than an answer. The bridge's handling after authentication moves into `respond()`, which takes the config and write lock instead of the whole AppState, so a test can drive ListOperators through the real request path and see the 403 without an HTTP client or an authelia. docs/integrations/matrix.md no longer says @swarm is the only homeserver admin. |
||
| .. | ||
| src | ||
| Cargo.toml | ||
| README.md | ||
swarm-matrix-client
The appservice calls against the swarm's homeserver, shared by the two binaries
that make them: swarm-matrix-ctl (inside the matrix container, for a hive's
sender account) and swarm-controller (for each agent's account, with the
swarm's own appservice token).
Three calls, all client-server API: register an account as the appservice, log
in to an existing one as the appservice, and ask a token who it is. Both mints
pin the device id hyperhive-<localpart>, so a second login replaces that
device's token instead of adding a device.
🩸 A secret is a path, never a value
Every error here is built from the response's status and its errcode, never
its body: a successful /register or /login body is an access token, and an
error body is one malformed response away from being the same bytes.