Skip to content

feat: per-room modes and 🔖 reaction capture for the archivist#41

Merged
arthware-dev merged 4 commits into
mainfrom
feat/bot-room-config
Jun 26, 2026
Merged

feat: per-room modes and 🔖 reaction capture for the archivist#41
arthware-dev merged 4 commits into
mainfrom
feat/bot-room-config

Conversation

@arthware-dev

Copy link
Copy Markdown
Contributor

Set how the archivist treats a room with !config process react|auto:
react = act only on a 🔖 reaction, auto = file everything. !config
shows the current settings. 🔖 / 📌 bookmarks any message, and processed
messages get ✅ / ❌ next to the 👀 for an at-a-glance result.

Room mode is stored in the bot's room account data, so it needs no
room-admin power and survives restarts.

A room can be set to react-only with `!config process react`: the bot
then ignores plain messages and acts only when a family member reacts
🔖 / 📌 to a message to save it. `!config process auto` restores the
default (process everything as it arrives).

🔖 / 📌 on any message bookmarks it: the same capture the bot makes
automatically, but on demand. A small emoji→handler registry on the
archivist makes adding bindings (🗑 redact, 👎 reclassify) a one-line
change; the dispatcher and reaction plumbing live in MicroBot.

Room mode is stored in the bot's room account data, not a room state
event: writing room state needs moderator power level, which an invited
bot doesn't have, so a state-event write is silently rejected. Account
data is the bot's own, survives restarts, and is read fresh. The
`!config` command reports honestly when a write fails instead of acking.
A bare `!config` now shows the room's current settings and the values
each option accepts, with the active value marked. Both the status view
and the set acknowledgement are generated from a small config-options
registry, so the help text can never drift from what the command
actually accepts. Adding an option is one registry entry.
When a capture or filing finishes, the bot adds ✅ (filed) or ❌ (failed)
to the source message alongside the 👀. Since the detailed reply now
lives in a thread, this gives an at-a-glance outcome in the main
timeline without opening the thread.
Executable contract for `!config process auto|react`, the bare `!config`
status view, 🔖 bookmark capture, the react-mode gate, and the
👀 → ✅/❌ outcome glyph.

Marked `unverified` + `xfail(strict=False)`: the behavior was verified by
hand against a running instance, but this test has not yet been run green
through the stacktests rig (server test.local). It neither blocks the
suite nor is trusted until reconciled. Run it at the end of the iteration
and fix the test or the implementation before tagging the next beta.
@arthware-dev
arthware-dev merged commit fa36874 into main Jun 26, 2026
1 check passed
@arthware-dev
arthware-dev deleted the feat/bot-room-config branch July 1, 2026 07:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant