Verstak Browser Extension — Firefox/Chromium, page/text capture, link sending, pending queue, domain bindings
 
 
 
 
Go to file
mirivlad 44ca183f50 Scaffold browser capture extension 2026-06-27 13:44:19 +08:00
chromium Scaffold browser capture extension 2026-06-27 13:44:19 +08:00
firefox Scaffold browser capture extension 2026-06-27 13:44:19 +08:00
scripts Scaffold browser capture extension 2026-06-27 13:44:19 +08:00
shared Scaffold browser capture extension 2026-06-27 13:44:19 +08:00
.gitignore Scaffold browser capture extension 2026-06-27 13:44:19 +08:00
AGENTS.md docs: add AGENTS.md with platform architecture rules 2026-06-16 11:53:22 +08:00
README.md Scaffold browser capture extension 2026-06-27 13:44:19 +08:00
package-lock.json Scaffold browser capture extension 2026-06-27 13:44:19 +08:00
package.json Scaffold browser capture extension 2026-06-27 13:44:19 +08:00

README.md

verstak-browser-extension

Verstak Browser Extension captures pages, selected text, and links and sends them to a local Verstak browser inbox receiver.

The extension does not know Notes, Files, Activity, or Journal internals. It only sends capture events through the public local receiver protocol. If the receiver is offline, captures stay in the extension pending queue.

Build

npm ci
npm test
npm run build

Build output:

  • dist/chromium
  • dist/firefox

Local Receiver Protocol

Default endpoint:

POST http://127.0.0.1:47731/api/browser-inbox/v1/captures

Headers:

  • Content-Type: application/json
  • X-Verstak-Receiver-Token: <token> optional, once pairing is implemented

Payload:

{
  "schemaVersion": 1,
  "captureId": "uuid-or-generated-id",
  "capturedAt": "2026-06-27T00:00:00.000Z",
  "source": "verstak-browser-extension",
  "kind": "page",
  "page": {
    "url": "https://example.com/article",
    "title": "Example Article",
    "domain": "example.com"
  },
  "browser": {
    "name": ""
  }
}

Supported kind values:

  • page
  • selection, with selection.text
  • link, with link.url and optional link.text

Expected success response:

{ "status": "accepted", "captureId": "uuid-or-generated-id" }