- Added Hermes Assist, a review-first inline drafting surface for 31 supported writing environments including X, GitHub, Gmail, ChatGPT, Claude, Reddit, Slack, Discord, Outlook, Google Chat, and Atlassian surfaces.
- Added site- and composer-aware primary actions such as Draft a reply, Draft a post, and Draft a message, while retaining useful site-specific secondary actions.
- Added explicit current-session, new-session, and background-session routing for Hermes Assist and context-menu actions.
- Added per-site context controls with private-surface defaults, visible context warnings, bounded extraction, and copy-only fallbacks for framework-owned structured editors.
- Added capability-gated model routing for Hermes Assist: gateways that advertise per-session model locking receive the exact selected provider/model and must acknowledge it; released gateways without that contract use the active Hermes Agent model without sending unsupported override fields.
- Added deterministic local text utilities for formatting cleanup, bullets, text statistics, and diffs without a model call.
- Added Browser Context Protocol v2 turn envelopes and owner/session/turn-scoped companion context storage with bounded retention and consume-on-read isolation.
- Unified Local, Hermes Cloud Preview, and Remote readiness behind one staged connection controller that does not report ready until its required session-binding gate passes.
- Kept automatic API pairing loopback-only. Remote API connections now require an explicitly configured endpoint and token; dashboard connections continue to use Trusted Dashboard Attach.
- Made non-loopback agent discovery permanently credential-free, even when a probed service self-identifies as Hermes.
- Made rich structured editors preview/copy-first by default; safe direct apply remains limited to reviewed, supported composer integrations.
- Added exact target-specific Chromium and Firefox release packaging with versioned archives, SHA-256 checksums, and a machine-readable release manifest.
- Bound browser context to typed turns with owner, conversation, session, and turn identity; enforced TTL, size, redirect, URL-scheme, and redaction limits at trust boundaries.
- Kept Cloud/dashboard tickets short-lived, single-use, memory-only, HTTPS-only, and bound to the exact active signed-in tab and origin.
- Prevented stored bearer credentials from being released during non-loopback discovery and prevented automatic pairing with non-loopback API endpoints.
- Preserved Chat-only enforcement for Cloud and ticketed dashboard transports.
- Fixed X reply context capture so Hermes receives the source post instead of an empty inner reply form.
- Fixed X draft insertion to use one framework-owned paste transaction, preventing duplicate or undeletable ghost text.
- De-duplicated inline result application by request id so retries cannot apply the same draft twice.
- Contained keyboard events inside Hermes Assist so host-page shortcuts cannot steal focus, navigate, or react while a user types a custom instruction.
- Preserved remote dashboard conversations across WebSocket replacement by persisting the gateway's durable session identity, resuming it on reconnect, and routing follow-up RPCs through the fresh live session identity.
- Made Chrome 141+ require a real
sidePanel.onOpenedevent so Arc's hiddenSIDE_PANELcontexts cannot suppress the reusable extension-tab fallback, while retaining context confirmation for Chrome 116-140. - Corrected GPT-5.6 context metadata by provider: OpenAI Codex OAuth models now show the canonical 272k window, direct OpenAI models retain 1.05M, explicit runtime/catalog telemetry remains authoritative, and rows without provider identity no longer inherit the generic 400k GPT-5 guess.
- Folded and hardened the session-identity foundation from PR #35 by @mr-magaia; the proposed profile selector remains deferred until official Hermes advertises and enforces that gateway capability.
- Credited @chinnsenn for the Arc compatibility report in issue #37.
- Added Hermes Web Alpha, a full-page browser workspace backed by canonical Hermes sessions, with a session rail, user-right/Hermes-left messages, safe rich Markdown, model/runtime controls, tools, skills, attachments, voice, active-run steering, generated media, and context/activity inspection.
- Added three explicit connection modes: Local gateway, Hermes Cloud Preview, and Remote gateway, with deterministic dispatch, migration, validation, and mode-specific settings copy.
- Added trusted signed-in Hermes Cloud agent-tab attachment through a one-use ticket transport with Chat-only browser context.
- Added nine Light/Dark themes across the side panel and Hermes Web: Nous, Midnight, Ember, Mono, Cyberpunk, Slate, Senter Space, Aphrodite, and Solstice.
- Added generated-image diffusion reveal plus a lightbox with zoom, reset, open, and explicit download controls.
- Added accurate context-window and compaction telemetry, compact context chips, payload breakdowns, capability fallbacks, and session-gated runtime accounting.
- Added Firefox preview packaging through
npm run build:firefoxand Opera sidebar support. - Added a scoped element picker for explicit page-element context.
- Added refreshed README visual-tour assets for the current side panel, all nine themes, and three Hermes Web states.
- Bound model, provider, reasoning effort, skills, and other runtime options to the active browser session rather than mutating Hermes global defaults.
- Preserved the canonical model catalog across partial gateway updates and hardened backend-acknowledged model locking.
- Improved canonical session continuity, source metadata, context persistence, and duplicate-turn retry prevention across side-panel and Hermes Web surfaces.
- Refined the side-panel header, logo, icon placement, composer controls, connection diagnostics, and runtime/context footer.
- Expanded generated-media rendering, artifact discovery, voice-dictation fallback behavior, and final-image completion handling.
- Updated Local, Cloud Preview, Remote, privacy, permission, security, data-flow, compatibility, and troubleshooting documentation.
- Added one shared decoded credential-URL policy for active, selected, open-tab, pinned-scope, prompt, receipt, and payload-hash surfaces.
- Omitted common API keys, tokens, client secrets, private keys, credentials, signatures, and signed-URL fields even when parameter names are nested or encoded.
- Hardened trusted Cloud dashboard attachment, remote session authentication diagnostics, secret redaction, sealed-token URL handling, and restricted browser-context summaries.
- Kept browser interaction read-only: no click, type, form-submit, checkout, debugger, native-messaging, cookie, history, bookmark, or browser-control permissions.
- Fixed companion-plugin browser-context detection when Hermes user-message content is represented as OpenAI-style content arrays.
- Fixed generated-image completion, session model/context alignment, runtime-option persistence, and duplicate browser-turn retries.
- Fixed element-picker icon consistency and star-history chart URLs with encoded repository paths and sealed tokens.
- Supportability and integration bridge release: read-only foundation, Browser Context Protocol receipts, sanitized context cache, session control, and Browser-scoped model selection.
- Activated
companion-plugin/from skeleton into an optional functional Hermes plugin with four read-only tools:browser_context_status,browser_get_context,browser_clear_context, andbrowser_event_log. - Registered
pre_llm_callandpost_tool_callhooks plus the bundledhermes-browserskill. - Keeps the plugin fail-soft and supplemental: no browser control, no API-server routes, no network calls, no
nativeMessaging, and no dependency required for normal extension use.
- Preserved the prompt-embedded Browser Context Protocol fallback while adding a companion cache that stores only sanitized metadata: protocol id, payload hash, scope, active-tab origin, section counts/availability, redaction count, truncation state, and bounded event diagnostics.
- Hardened parsing so raw page text, selected text, full tab URLs, token-looking values, and private URL paths do not leak into the plugin cache or event log.
- Kept Browser Context Protocol receipts and hashes visible for trust/debugging without introducing browser-control behavior.
- Added
/metawith/metadataand/headaliases for captured-page metadata analysis. - The command is intentionally truthful: it reports only data present in the Browser context and lists metadata classes that were not captured instead of pretending to read raw
<head>HTML. - Added loading skeletons, context-meter glow states, tool-activity fade-in, and command-menu stagger polish behind reduced-motion guards.
- Added compact session controls for Browser workflows: create/switch sessions, copy session IDs, rename sessions through
PATCH /api/sessions/{id}, and smart first-message titles. - Added Browser-scoped model preference and per-session model bindings so Browser model switches do not mutate Hermes global defaults.
- New Browser sessions inherit the last Browser-selected model; existing sessions keep their own model/provider binding.
- Updated Copy Diagnostics/support surfaces for extension origin redaction, selected model/provider, capability flags, and runtime warning states while excluding tokens, cookies, page text, selected text, full tab URLs, and webpage content.
- Updated README, permissions, privacy, security, and data-flow docs for v0.1.10.
- Bumped package/manifests/plugin metadata to v0.1.10 and prepared release packaging.
- Credited PR #31 —
feat(companion-plugin): activate context cache from skeleton to functional pluginby @iruzen-dono: #31 - Credited PR #32 —
feat(commands): /meta command + CSS polish (skeletons, animations)by @iruzen-dono: #32 - Release integration, Browser-scoped session/model controls, supportability fixes, docs, packaging, and ad asset by @abundantbeing.
- Reviewed but not shipped in v0.1.10: PR #29 (
feat: add scoped element picker context) by @bradlishman, PR #30 (feat: add native sidebar support for Opera browser) by @barteqpl, and PR #33 (Security: fix parameter evasion, CWD binary hijacking, and clipboard handling) by @Doom-pixel-alt.
- Extracted Browser Context Protocol v1 into
extension/lib/browser-context-protocol.mjswith a stablehermes.browser.context.v1id, deterministic payload hash, chat-only prompt mode, and literal untrusted-data receipt rendering. - Kept legacy
buildHermesPrompt,browserContextPayloadHash, andbuildContextReceiptwrappers compatibility-preserving for existing chat/session flows.
- Bumped source/package/manifests to v0.1.9.
- Added Copy Diagnostics in Settings so users can copy a redacted support report with browser family, extension/build version, gateway origin, connection state, capability flags, selected model/provider, context scope, extractor mode, and last visible error.
- Added a README compatibility matrix for Chrome/Edge/Chromium, Chromium forks, Firefox/Safari preview status, local/remote Gateway modes, Browser Context Protocol, companion plugin prototype status, and explicitly deferred browser-control/Runs/debugger/nativeMessaging surfaces.
- Extended compatibility rows with Browser Context Protocol, browser context upload fallback, and optional Browser Companion Plugin status.
- Added browser family/origin diagnostics for future Firefox/Safari and cross-browser support triage.
- Added stable Browser runtime/tool event names in
extension/lib/runtime-events.mjsand normalized current Hermes tool-progress aliases into the Tool Activity Strip while keeping browser-control events out of the v0.1.9 surface.
- Added
companion-plugin/as a fail-soft private skeleton with context store, protocol helpers, tools, hooks, policy, install notes, and skill docs. - The skeleton does not register API-server routes, does not assume side-channel availability, and does not include browser-control/page-action channels.
- Added focused tests for Browser Context Protocol, runtime event naming, support diagnostics redaction, v0.1.9 capability rows, and the private companion skeleton.
- Added active-run chat steering from the composer: while Hermes is running, Enter on a text draft steers the active turn, with explicit Queue/Steer/Stop controls in the busy composer.
- Wired the Browser side panel to
/v1/runs/{run_id}/steerfor local API mode andsession.steerover the dashboard WebSocket for remote-dashboard mode. - Added a pure
busyComposerSubmitAction()helper with regressions: text-only active draft + steer available → steer; attachments or no steer → queue; empty → ignore. - Added a pure
shouldAutoFlushQueuedTurn()helper so backend-queued steer fallbacks never auto-send as a normal next prompt. - Surfaced backend
steer.queuedevents: the draft returns to the composer with an explicit "Steer not injected" status instead of pretending the steer was applied or queueing it for after the turn. - Updated steer success copy to "Steer sent to active run" so the Browser stops overpromising when Hermes has no tool injection point in the current turn.
- Replaced raw
[tool]markdown appended to assistant answers with a compact runtime Tool Activity Strip while Hermes streams. - Added shared tool-activity helpers that categorize file/edit/terminal/browser/web/media/meta tool names, sanitize previews (secrets, long lines), and respect reduced-motion preferences.
- New
toolKindCSS variants for file/edit/terminal/browser/web/media/meta, plus scan/stitch/cursor/reticle/orbit/pixel/stack keyframes for the strip animation.
- Made Fast mode strict opt-in: stored string values such as
"false"/"off"no longer producemodel_options.fast: trueor priority service-tier requests. - Hardened
buildHermesModelOptionssoservice_tierandfastare only set when the user actually opts in. normalizeFastModereturns a real boolean, never a truthy string.
- Promoted the runtime payload to a first-class UI meter (Model, Provider, Context, Live 1.24s) in the side panel.
- Added
applyTurnRuntimePayload()plumbing on the chat path so the runtime meter reflects the actual server reply instead of local estimates. - Session-list refresh no longer overwrites a just-confirmed runtime model/provider with stale session-history data.
- Switched model discovery to prefer the connected Hermes API server's
/api/model/optionscatalog before dashboard scraping, with session-history and dashboard fallbacks for older runtimes. - Added a static context-length fallback for GPT-5.5 across known providers (openai-codex 272K, openrouter 1.05M) so picker context windows no longer say "unknown".
- Hardened
/api/model/optionsto never call the slowget_model_context_lengthresolver in the per-model loop; provider-aware fallback only.
- Hardened gateway diagnostics so upstream Hermes runtime/tool tracebacks show as connected-with-warning instead of mislabeling the whole Browser connection as unreachable.
- Added explicit classification for the known Python
NoneType/int()traceback class, with guidance to inspect Hermes logs and runhermes computer-use doctorwhen computer-use/cua-driver appears in the stack. - Wired
gpt-image-2-medium(Codex auth) for the side panel image generator and refinedpairingFailureMessagefor unsupported runtimes.
- Folded browser-behavior switches (auto-name sessions, open tabs, page text, selection, panel residency) into intentional settings cards instead of loose checkbox rows.
- Side-panel CSS hardened: long tab labels, active-tab titles/URLs, pinned scope labels, and bottom model/context controls ellipsize inside narrow panels.
- Pinned tab/session titles are clipped before session creation so the API title limit is respected.
- Chat only no longer creates a new session or message bucket. It preserves the active conversation scope while disabling page/tab/selection capture for the turn.
- Added a separate
previousConversationScopeso the session binding and the transcript key both follow the original tab, not the capture mode. - Tab-attached panels still allow Include all tabs / Page only / per-tab IN-OUT prompt selection; Follow active tab and Unlock pinned tab are hidden when not relevant.
- Prompt-tab IN/OUT toggles preserve the internal tab-list
scrollTopacross rerenders. - Pinning a tab fresh-fetches it via
chrome.tabs.get(id)so stale tab snapshots can't cause weird pinning behavior.
- Voice dictation is capability-gated: Hermes STT when advertised, Browser speech fallback when supported, visible Hermes Voice Dictation extension tab when the side panel mic prompt is suppressed.
- Microphone permission help links directly to
chrome://settings/content/siteDetails?site=chrome-extension%3A%2F%2F<id>%2F. - Drag/drop attachments and clipboard image paste keep working with the new composer controls.
- Inline send button moved to the composer right edge next to the voice button; mic is hidden while a run is active.
- Bumped source, package, root manifest, built
dist/manifest, andbuild-info.jsonfor v0.1.8. - The
scripts/check-manifest.mjsverifier now fails if root manifest,extension/manifest.json,dist/manifest.json, orpackage.jsonare out of sync, preventing the v0.1.5 stale-version bug. - Build metadata is stamped into every supported unpacked load root (root,
extension/,dist/) so update checks see the same loaded commit.
- 139/139 tests passing in
npm run verify. - README refreshed for v0.1.8; remote API setup clarified; troubleshooting covers
/healthreachable + runtime warning, native computer-use, and Connect flow. - Public release hygiene: docs are public-marketing only; private plans, internal notes, and release-prep docs are gitignored.
- Plan slot: public support and compatibility hardening. Old-Hermes-version guards, GitHub-label/Discord triage, compatibility matrix, copy-diagnostics UX, and a stable public support playbook.
- Added tab-attached side panel opening by default, with a settings toggle to keep the panel global across tabs when preferred.
- Preserved tab-attached side panel paths for both supported load-unpacked roots: repo root and
dist//extension/. - Added Chat only context scope so Hermes can run without reading the active tab, open tabs, selected text, page metadata, transcript, or page text.
- Made Chat only short-circuit before browser tab queries and isolated its local message cache from page-context conversations.
- Fixed selected-tab context accounting so the context meter and “What Hermes saw” receipt report tabs actually sent to Hermes, not just tabs open in the window.
- Fixed Remote API connection validation so trusted
http://host:8642API servers work with a token while remote dashboard WebSocket mode stays HTTPS-only. - Added
/rewriteand/action-itemsto match the public docs, while keeping/actionsreserved for listing interactive page elements. - Preserved attachment context for slash-command turns, so commands like
/summarizedo not drop attached text/files. - Updated public privacy, permissions, and data-flow docs for v0.1.7’s Chat only and tab-attached behavior.
- Added built-in quick commands such as
/summarize,/explain,/rewrite,/tabs, and/action-items, with slash dispatch and command suggestions in the side panel. - Added a composer-header tab-context control so Hermes can follow the active tab or pin to a specific tab without adding extra lower composer chrome.
- Isolated pinned-tab conversations with per-tab local message caches and per-tab Hermes session bindings.
- Added selected-tab filtering for the open-tabs context list inside the same upward context card, including all/none controls.
- Added Desktop-style busy composer controls: typing during an active run now reveals separate Queue and Steer buttons, and queued messages expose Steer Now/Delete actions.
- Reworked unpacked-build update checks to compare the loaded build commit against GitHub main instead of mislabeling post-release commits as unpulled.
- Stamped build metadata into every supported unpacked load root so repo-root,
extension/, anddist/installs can all verify commit alignment. - Added privacy redaction for sensitive tab titles/URLs before prompt assembly, including restricted active tabs and open-tab summaries.
- Preserved contributor work from @iruzen-dono's quick-command and multi-tab context PRs, with follow-up hardening and tests.
- Deferred the broad optional-host-permissions migration to a later release so v0.1.6 does not change the permission surface while shipping context-control improvements.
- Added a Hermes compatibility panel backed by
/v1/capabilities, with legacy fallback when older gateways do not advertise feature support. - Made first-run Connect avoid missing pairing routes: unsupported runtimes now go straight to Manual setup with Gateway URL/token guidance.
- Added capability-gated voice dictation: Hermes STT is used when advertised, otherwise the side panel and visible voice page use Browser speech fallback when available.
- Added token hygiene UI with masked token state, connection mode, last-tested timestamp, and one-click token clearing.
- Added a collapsible “What Hermes saw” receipt after each sent turn so users can inspect tab/context/attachment/redaction payloads.
- Gated image upload and profile APIs behind capabilities so missing routes become clear fallback warnings instead of broken UX.
- Added public permissions, data-flow, and privacy docs for shipped behavior.
- Clarified remote API setup so same-LAN
http://host:8642works in Remote gateway mode when an API key is present, while dashboard WebSocket mode remains HTTPS-only. - Documented how to reload/remove/reload unpacked when Chrome still shows an older extension version after update.
- Added editable Hermes session titles, including first-message auto-naming for new Browser sessions.
- Reworked connection state so the side panel uses live gateway reachability instead of treating a saved API key as connected.
- Added commit-aware update checks for unpacked builds, including same-version "unpulled commits" guidance.
- Expanded agent discovery to trusted remote hosts while keeping bearer tokens off non-Hermes probe targets.
- Refined the default Nous palette toward the ink-blue/soft-white Desktop look.
- Added drag/drop attachments directly into the composer, including PDFs and files.
- Added Stop and Queue Message controls while Hermes is responding.
- Added
/and@skill command autocomplete backed by Hermes skills. - Added Agent Profile settings section with graceful fallback for gateways without profile APIs.
- Replaced the large Refresh button with a compact refresh icon.
- Improved streaming completion handling so final answers replace partial deltas.
- First public alpha preparation for Hermes Browser Extension.
- Chrome/Edge MV3 side panel.
- Local Hermes Gateway/API connection.
- Active page context capture.
- Streaming response support with fallback.
- Read-only browser context model.
- Load-unpacked install path; not yet on the Chrome Web Store.