Blank editor + broken buttons root cause: index.js was writing the capture to <userData>/addons-data/screenshot-scratch/<name>.png and passing "?src=file://<that path>" to editor.html. The editor lives at file:///<userData>/addons/screenshot/editor.html — different directory tree under file://. Chromium's file:// origin policy treats those as different origins and quietly refuses the <img> load, so init()'s loadImage() rejects, the canvas never gets an image, and every tool after that operates on a still-empty 300×150 default canvas — the tools appear to work but produce no visible output because the base image never landed. The sidebar version we replaced set `previewImg.src = dataUrl` (a base64 data URL) directly, which has no origin and just worked; the tab version regressed by adding the file hop. Fix keeps the scratch file for the recent-captures ring but hands the raw capture through the add-on's per-add-on kv store (`__pending` key). Same store, same origin scoping, no cross-directory read: index.js writes via api.storage.set from main; editor.js reads via window.silentmode.storage.get through the tab preload (packaged since 0.3.27). Fallback path retained for "openRecent" callers still passing ?src=… — those will need their own fix in a follow-up. Bumped to 0.2.4 and signed for the OTA endpoint — first real independent add-on ship: no Theseus release needed to fix this, 0.3.27 installs pick up 0.2.4 via the boot-time signed-update poll.
20 lines
826 B
JSON
20 lines
826 B
JSON
{
|
|
"id": "screenshot",
|
|
"name": "Screenshot",
|
|
"version": "0.2.4",
|
|
"description": "Capture the current tab — visible viewport, entire scrollable page, or a rectangle you draw. Pick a mode from a toolbar dropdown; the capture opens in a full-tab editor (crop, annotate, redact, save).",
|
|
"author": "Silent Mode",
|
|
"icon": "📸",
|
|
"main": "index.js",
|
|
"capabilities": ["toolbar-menu", "capture-tab", "open-tab"],
|
|
"updateURL": "https://navigate.st/bns/theseus.x/extensions/screenshot/updates.json",
|
|
"toolbar-menu": {
|
|
"title": "Screenshot",
|
|
"icon": "📸",
|
|
"items": [
|
|
{ "id": "visible", "label": "Visible viewport", "icon": "🖼️" },
|
|
{ "id": "full", "label": "Full page", "icon": "📄" },
|
|
{ "id": "region", "label": "Region…", "icon": "✂️" }
|
|
]
|
|
}
|
|
}
|