1238efce13
main landed a lint rule banning refs mirrored from reactive values in an effect — they lag a render and cause stale reads. The lane-collapse override tracker did exactly that with a counts ref. Hold the empty/non-empty signature in state instead. React bails out when it's unchanged, so a poll where no lane's emptiness moved costs no extra render, and the comparison always sees the current value.
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.
None ship in-tree today — reference/demo plugins (the counter example, the
gateway-pill 1:1 rebuild, the runtime-loader hello world) live in the companion
hermes-example-plugins
repo so the shipped app stays uncluttered.
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.