Documents the dcat issue workflow rule, bun commands, and the
non-obvious invariants future agents need: dist/ is the single source
of truth for what ships, the Firefox 142 floor and no-gecko.update_url
constraint for AMO-listed distribution, the pinned qrcode-generator
SHA and UTF-8 override, and the popup error-path conventions.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pre-AMO rename. The extension is now "Naiv-QR" everywhere it surfaces
to users (toolbar tooltip, popup title, icon aria-label, README,
package.json). Distribution target is AMO-listed, so the manifest no
longer declares gecko.update_url — Firefox handles auto-updates from
AMO directly for listed extensions, and the field is in fact rejected
by Mozilla's validator outside self-distribution mode.
- manifest.json: name → "Naiv-QR"; gecko.id → naiv-qr@addons.naiv.no;
remove update_url.
- package.json: name → "naiv-qr"; drop --self-hosted from lint script
now that we're back to Mozilla-hosted validation.
- popup/popup.html: <title> updated.
- icons/icon.svg: aria-label updated.
- README: retitled, removed Self-distribution section, updated
Publishing-to-AMO section to spell out the listed-distribution flow.
Build artifact is now web-ext-artifacts/naiv-qr-<ver>.zip (web-ext
derives the filename from manifest.name).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Move the extension ID off the dev-placeholder .local TLD onto the
naiv.no domain so it's stable for any future AMO submission. AMO locks
the ID for the lifetime of a listing, so this needs to happen before
the first listed upload — not after.
No code or behaviour changes. Lint and package both still clean
(0 errors / 0 warnings, ~12 KB zip).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
User-verified that v0.1.0 works in Firefox. Closing out the work with
the documentation the AMO reviewer (and future-me) will want:
- LICENSE: MIT, 2026. Matches the vendored qrcode-generator's license.
- package.json: add license + author fields.
- README: add "What you see" UX section, supported-versions rationale,
ASCII build-flow diagram, AMO publishing notes, permissions table.
- popup/popup.js: top-of-file block documenting the popup lifecycle and
the dataflow from active-tab URL to rendered QR.
- scripts/build.mjs: top-of-file block explaining why dist/ is the
single source of truth for what ships.
Closes dogcat epic firefox-share-as-qr-35mw and all 5 child tasks
(see .dogcats/issues.jsonl).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
MV3 WebExtension that turns the active tab's URL into a scannable QR
code via a toolbar popup. The popup runs locally — no network requests.
Build pipeline: `bun build` bundles popup.js + the vendored
kazuhikoarase/qrcode-generator (MIT, pinned to 83b7e8f) into a single
~23 KB minified ESM file under dist/. web-ext operates on dist/, so
the packaged zip contains only what actually ships (~28 KB).
Scripts:
- bun run build — bundle + copy assets into dist/
- bun run lint — build + web-ext lint (0 errors / 0 warnings)
- bun run package — build + produce a signable .zip
- bun run start — build + launch Firefox with the extension loaded
Tracks dogcat epic firefox-share-as-qr-35mw and its 5 child tasks
(scaffold, vendor lib, popup UI, icons, README).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>