ReadAware

Plugin system

Plugins extend ReadAware with new actions, pages, and — most importantly — new tools for the reading assistant. A plugin is a small JavaScript module; its interface is always rendered by the app's own design system, so plugin features look and feel native.

What a plugin can contribute

  • Selection actions — entries in the reader's text-selection menu. Send a word to Anki, translate a passage, save a quote anywhere.
  • Header buttons — icon buttons on the reader or shelf top bar that open a popover, or (on the shelf) a full page.
  • Commands — entries in the command palette. Every plugin action is reachable there automatically; explicit commands add more.
  • Agent tools — functions the reading assistant can call during chat. This is the highest-ceiling mount point: a plugin can let the assistant query your Anki deck, your RSS backlog, or any service you use.
  • Content providers — virtual books whose chapters the plugin supplies on demand. An RSS feed can sit on your shelf and be read, annotated, and discussed like any book.

Plugins look native, by construction

Plugins never render their own HTML. They declare views from a small vocabulary — markdown, lists, forms, and a few structured blocks — and the app renders them with its own components. Plugin authors give up pixel control and get zero design work and a permanently consistent app in return.

The trust model

Plugins run inside the app with the same JavaScript context — like Obsidian, and unlike a browser extension sandbox. Two honest layers of protection apply:

  • Permissions — a plugin's manifest declares what it uses (network, reading data, AI, clipboard, …), and the API only exposes what was declared. This guards against accidental overreach.
  • Installation is the trust decision. Before anything is copied or executed, the app shows exactly which permissions the plugin asks for, in plain language, and waits for your consent. Install plugins the way you would install software.

The app's own architecture bounds the blast radius: plugin storage is namespaced inside the app's data directory, and the desktop shell grants no arbitrary filesystem access.

Installing plugins

  • Marketplace — Settings → Plugins → Marketplace lists community plugins from the public registry; installation is one click, with the permission summary first.
  • From a folder — Settings → Plugins can install any local plugin folder. This is the development loop: point it at your working directory, reinstall to pick up changes.

You control the layout

Plugins contribute capabilities; you decide where buttons live. Settings → Menus arranges each surface (shelf top bar, reader top bar, selection menu): drag items between the visible row and the overflow menu, reorder them, or reset to defaults. New plugin actions arrive in the overflow menu — quietly — and everything is always reachable from the command palette.

Write one

A plugin is a folder with a manifest.json and a single main.js. The API reference covers the whole contract, and Publishing shows how to ship it to the marketplace.