c757f99e63
Group members run in hidden plumbing sessions, so a member's clarify tool blocked server-side with no surface to answer it — the room showed '@lead is thinking…' until the 300s clarify timeout (salihsungur's report). - The turn poll and the stranded-harvest pass mirror each member's `pending_clarify` resume field into $groupClarify and hold the turn deadline open while a question waits (bounded by the existing hard cap). - The room renders a question card per blocked member — choice buttons, free-text, batch sub-questions — and answers route via clarify.respond through the member's OWN source (requestForBot), so cross-connection members work. The answered exchange echoes into the room log. - needs-you badges the roster row while a question waits; disband/rename clear mirrored cards; older backends without pending_clarify no-op. - 7 new tests incl. an end-to-end blocked-turn drive, sabotage-verified (disabling the poll gate fails the drive test).
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.