Skip to content

actx4gh/OpenChorus

Repository files navigation

OpenChorus (beta)

OpenChorus is a browser extension that adds Polycentric-backed comments and replies for the current tab URL.

It runs in a browser side panel (Chromium) / sidebar (Firefox) when available, with a popup fallback when the native panel UI is unavailable.

Features

  • Comment threads keyed by the current page URL
  • Replies, reactions, and delete support
  • Multi-server reads and writes, with a user-editable server list
  • Optional host permissions that are requested only when needed
  • Local caching (IndexedDB) plus an outbox for retrying failed writes
  • Identity import/export using polycentric:// backup tokens

Install (recommended)

If you just want to use the extension, grab a prebuilt dist package from GitHub Releases.

  1. Go to the repo's Releases page
  2. Download the openchorus-<tag>-dist.zip asset
  3. Unzip it
  4. Open chrome://extensions
  5. Enable Developer mode
  6. Click Load unpacked
  7. Select the unzipped folder (it contains manifest.json)

Notes:

  • Chromium browsers will show standard developer mode warnings for unpacked extensions.
  • Updates are manual: download a newer release, unzip, and reload the folder.

Install (unpacked)

Prereqs: Node.js 18+.

npm ci
npm run build:chrome

Then load the extension:

  1. Open chrome://extensions
  2. Enable Developer mode
  3. Click Load unpacked
  4. Select the repo's dist-chrome/ directory

Firefox (unpacked)

npm ci
npm run build:firefox

Then load the extension:

  1. Open about:debugging#/runtime/this-firefox
  2. Click Load Temporary Add-on…
  3. Select dist-firefox/manifest.json

Note: this beta is distributed as source. Loading an unpacked extension is expected to show the standard "Developer mode" warnings in Chromium browsers.

Basic usage

  • Open the side panel via the extension icon.
  • Use the Settings page to configure servers and manage your identity.
  • If you enable canonical URL extraction for a site, OpenChorus will try to use that canonical URL as the thread key.

The special byte marker for filtering

Polycentric events can include a list of references. In the Polycentric API, a reference can be a pointer (type 2) or a raw byte string (type 3, "byte reference").

OpenChorus attaches an extra byte reference to every Post it creates (including replies). The value is the UTF-8 bytes for:

openchorus:v1

This gives other clients (including polycentric.io) a simple way to exclude OpenChorus-originated posts from global views, recommendations, and search indexing.

Note: OpenChorus does not attach this marker to Opinion (like/dislike) events, because many Polycentric clients only index opinions when they have exactly one subject reference.

Privacy and security notes

  • Your private key never leaves the browser unless you export it via a backup token.
  • Posts are signed locally and then submitted to the Polycentric servers you have configured.
  • Grant host permissions only to servers you trust.

Project layout

  • public/manifest.json: active manifest used by npm run build (Chromium by default)
  • public/manifest.chrome.json: Chromium MV3 manifest template
  • public/manifest.firefox.json: Firefox MV3 manifest template (sidebar_action)
  • src/background.ts: background entry (service worker in Chromium; event page in Firefox)
  • src/sidepanel/main.tsx: side panel UI
  • src/options/main.tsx: settings UI
  • src/shared/*: storage, outbox, thread cache, permissions
  • src/polycentric/*: minimal Polycentric wire format utilities

License

BSD 3-Clause License. See LICENSE.

About

OpenChorus is an open-source browser extension that lets you post and read Polycentric comments directly from any webpage, using your Polycentric identity and servers, without relying on a centralized platform.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages