Files
hermes-agent/apps/desktop/src/plugins
Brooklyn Nicholson a7db531a2a i18n(desktop): move the Bot Mode kickoff and the residual owned strings into the bundle
The intro a new bot is born with was the first line of its forever-chat and
shipped in English, so a non-English user met their bot in a foreign language
and the bot's reply followed the prompt's language. It now resolves through
the plugin bundle in all four locales. Attribution — the other half of #91827
— still needs the lazy or silent birth that issue proposes, since
prompt.submit IS the user-turn API; the intro itself stays, per AGENTS.md.

The rest is the class the review named rather than only the lines it cited:
every user-visible string the group room and the bot-scoped cron pane own now
lives in the bundle. Where core already ships the vocabulary in every locale —
Remove, weekday names, Daily/Hourly — the plugin reuses it instead of shipping
a second, worse translation. The frequency and weekday option lists stop being
module consts frozen at import, which pinned whichever locale loaded first.

Prompts addressed to a model, cron syntax, and the 'You' author marker stay
hardcoded on purpose, each for a stated reason, recorded in the bundle header.
2026-08-28 12:02:16 -05:00
..
2026-08-26 14:38:57 -07:00
2026-08-26 14:38:57 -07:00

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.