5d4aa4fcb2
#101112 made round members take their turns concurrently. That changed what a group chat IS: later speakers in a round no longer saw earlier speakers' replies, so bots answered the user independently instead of building on each other. Group rooms are serial round-robin by design — this restores the pre-#101112 round engine (group-rounds.ts, group-chat.ts, group-chat-view.tsx, their tests, and the docs) byte-for-byte. What stays from #101112: the per-turn poll wakes on the member session's terminal frame (message.complete / error via host.onEvent) instead of sleeping a fixed 2s between session.resume reads; 5s timer kept as backstop. That is a pure latency fix with no change to room semantics. Live A/B (real tui_gateway over WS, 4 members, one serial round): 2s poll 32.5s -> push-woken 22.5s. The remaining time is model latency. Refs #92760
Bundled plugins
Drop a <name>/plugin.{ts,tsx} here that default-exports a HermesPlugin and
it registers automatically at boot (vite glob in ../contrib/plugins.ts), with
the same inventory + live enable/disable contract as runtime plugins.
Keep this tree for real shipped plugins (and the small authoring fixtures that
dogfood the SDK). One-off demos that rebuild a core chrome piece 1:1 do not
belong here — they double the UI and confuse Settings ▸ Plugins. Publish those
in the companion
hermes-example-plugins
repo instead.
User- and agent-authored plugins load at runtime from
$HERMES_HOME/desktop-plugins/<name>/plugin.js (the disk door) — see the
hermes-desktop-plugins skill.