Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hermes Chat Width

A small runtime plugin for Hermes Desktop that lets you control the width of the conversation column and message composer.

Validate License: MIT

This is a community plugin. It is not bundled with Hermes and it is not an official marketplace listing.

Install in one click

Open this link on a computer with Hermes Desktop installed:

Install Hermes Chat Width

Hermes shows a confirmation dialog, checks what the repository contains, and lets you choose the desktop component before installing it. The link does not silently install code.

After installation:

  1. Open Settings → Plugins.
  2. Make sure Chat Width is enabled.
  3. If the status bar is hidden, enable the status bar in Hermes Desktop.
  4. If needed, press Ctrl/Cmd+K and run Reload desktop plugins.

The control appears on the right side of the status bar as a value such as ↔ 52rem.

Install from Git

Some Hermes Desktop builds expose a built-in installer at Settings → Plugins → Install from Git. If that menu exists in your build:

  1. Enter Gohans1/chat-width.
  2. Select the desktop component when Hermes asks.
  3. Confirm the installation.
  4. Enable Chat Width and reload desktop plugins if it does not appear.

If your build does not show that menu, use the one-click link above or the manual installation path below. The one-click link is the reliable current path for the public installer.

Manual installation

The recommended method is the Hermes installer above. Manual installation is useful for older builds or local development.

Copy plugin.js into the active Hermes Desktop plugin directory. The folder name and the plugin id must both be chat-width.

Windows

Default profile:

%LOCALAPPDATA%\hermes\desktop-plugins\chat-width\plugin.js

Named profile:

%LOCALAPPDATA%\hermes\profiles\<profile>\desktop-plugins\chat-width\plugin.js

macOS and Linux

Default profile:

~/.hermes/desktop-plugins/chat-width/plugin.js

Named profile:

~/.hermes/profiles/<profile>/desktop-plugins/chat-width/plugin.js

Then reload desktop plugins from the command palette.

The GitHub checkout can live anywhere. Hermes does not load a plugin merely because the repository is on the Windows Desktop; the runtime file must be in the Hermes plugin directory above.

What it does

  • Adds a status-bar chip that opens a native Hermes popover.
  • Accepts a bounded numeric width with rem, px, or % units.
    • rem: 0.1 to 120
    • px: 0.1 to 2400
    • %: 0.1 to 100
  • Keeps quick presets:
    • Narrow: 44rem
    • Medium: 52rem
    • Wide: 64rem
    • Full: 100%
  • Applies a custom value with the button or Enter.
  • Closes without applying with Escape or by dismissing the popover.
  • Resets to 100%.
  • Remembers the selected preset or custom value across restarts.
  • Adds the presets to the Hermes command palette.

rem is the recommended unit because it follows the app's text scale better than a fixed pixel value. Use % when you want the content to track the available workspace width.

Compatibility

The plugin is a standalone native Hermes Desktop disk plugin. It does not ship an agent-side Python plugin, a dashboard plugin, a backend, or an npm runtime dependency.

It requires a Hermes Desktop build that supports the native Desktop Plugin SDK and the --composer-width layout variable. This release was smoke-tested with the Hermes Desktop build reporting Hermes Agent v0.20.5 in the development workspace.

The plugin uses the documented plugin surfaces for its UI and state:

  • @hermes/plugin-sdk
  • status-bar contributions
  • command-palette contributions
  • Hermes UI components
  • plugin-scoped storage
  • plugin i18n
  • reactive SDK state

The width variable itself is an app layout hook, not a dedicated public SDK setter. Hermes may rename or change that hook in a future release. If that happens, the chip can still load while the width no longer changes; check the compatibility notes and open an issue with the Hermes version.

Security and privacy

A loaded Hermes Desktop plugin runs with the authority of the app's renderer and plugin SDK. A plugin is not a sandbox. Review third-party plugin source before installing it.

The one-click route uses the repository's current default branch. Hermes' current standalone disk-plugin installer does not pin a commit or verify a signature or integrity hash. Review the source before installing. Use the tagged release or its ZIP asset when you need a reproducible copy.

This plugin intentionally:

  • makes no network requests;
  • does not call a Hermes backend;
  • does not read or write files;
  • does not spawn processes;
  • does not access credentials, tokens, cookies, or session content;
  • has no runtime npm dependencies;
  • stores only the selected width in its namespaced Hermes plugin storage.

While enabled, it manages the document-root --composer-width declaration. It records the previous inline declaration and restores it on unload only when the current value is still the value owned by this plugin. That prevents unload from overwriting a value changed by another owner.

See SECURITY.md for reporting guidance.

Troubleshooting

The chip does not appear

  1. Confirm Chat Width is enabled in Settings → Plugins.
  2. Confirm the Hermes status bar is visible.
  3. Run Ctrl/Cmd+K → Reload desktop plugins.
  4. Confirm the file path is exactly: .../desktop-plugins/chat-width/plugin.js.
  5. Confirm the folder name and exported id are both chat-width.
  6. Check the Hermes GUI log with hermes logs gui -f.

The popover opens but the width does not change

The current Hermes build may not expose the --composer-width hook or may have changed its layout precedence. Check the Hermes version, reload the plugin, and open an issue with the version and a sanitized log excerpt.

I want to remove the plugin

  1. Disable Chat Width in Settings → Plugins.
  2. Close Hermes or reload desktop plugins.
  3. Delete the chat-width plugin directory if you installed it manually.

Disabling first lets the plugin run its cleanup path.

Development

The disk plugin is plain uncompiled ESM. There is no build step and no runtime package installation.

npm run verify

The command runs:

  • node --check plugin.js;
  • CSS ownership smoke tests in tests/ownership.test.mjs;
  • width-boundary tests in tests/validation.test.mjs.

For local iteration, copy plugin.js to the active Hermes profile's desktop-plugins/chat-width/ directory. Hermes watches that directory and hot-reloads later saves.

Supported disk-plugin imports are intentionally limited to:

@hermes/plugin-sdk
react
react/jsx-runtime

That is why the file uses jsx() and jsxs() instead of JSX syntax.

Repository layout

plugin.js                         # Hermes Desktop entry point
package.json                      # repository metadata and validation scripts
LICENSE                           # MIT license
CHANGELOG.md                      # release history
SECURITY.md                       # vulnerability reporting policy
CONTRIBUTING.md                   # contribution rules
docs/marketplace.md               # current marketplace/index status
tests/ownership.test.mjs          # CSS ownership smoke tests
.github/workflows/validate.yml    # syntax and test validation

The repository intentionally does not contain plugin.yaml, plugin.json, or Python code. Those belong to other Hermes plugin surfaces and are not needed by this standalone Desktop plugin.

Distribution and marketplace status

The supported public distribution path is this repository and its Hermes install link. Hermes' community plugin index and a Desktop marketplace are still evolving. The current status and source links are recorded in docs/marketplace.md.

If an official index submission process becomes available, this repository can be submitted there. Index inclusion should be treated as discovery metadata, not as a code audit.

License

MIT

About

A Hermes Desktop plugin for adjusting conversation and composer width

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages