v0.3.4 — read_article, discard_tab, private windows, acquire_tab windowId
Bundles everything since v0.3.2: Reader View extraction, tab memory management,
private browsing window support, and windowed tab targeting — plus a native-host
concurrency fix.
Added
- read_article — extract clean article content from a page using Firefox's own
Reader View engine (Mozilla's Readability.js). Returns{title, byline, siteName, excerpt, text, truncated};not_an_articleis a normal outcome for non-article
pages, not a failure. - discard_tab — unload one or more background tabs from memory
(browser.tabs.discard). Tab and history are preserved; Firefox reloads it
automatically next time it's focused. Idempotent, batched, does not require a
lease (only blocks when leased by a different session).list_tabsgained
discarded/lastAccessedfields to support this. - open_private_window — open a new Firefox private browsing window and
auto-lease its initial tab. Requires the extension's "Run in Private Windows"
toggle enabled inabout:addons(no API exists to flip this programmatically);
without it, fails outright withprivate_window_access_denied.list_tabs
gained anincognitofield — private tabs only appear in the list at all once
the toggle is on. - acquire_tab
windowId— open a new tab inside a specific existing window
(e.g. a private window fromopen_private_window), instead of whatever window
Firefox considers "current".list_tabsgained awindowIdfield so windows
can be targeted. Rejects a private-windowwindowIdcombined with
cookieStoreId(Multi-Account Containers don't exist in private windows) with
a dedicatedcontainer_unavailable_in_private_windowerror.
Fixed
- native-host: closed a TOCTOU race in the singleton-lock takeover where two
host processes starting concurrently against a stale lock could both believe
they'd acquired it. Added regression tests exercising real concurrent process
starts. - Each feature above went through use-codex spec/plan review and a final
whole-branch review before merging; see the design specs under
docs/superpowers/specs/for the specific issues each pass caught.
Install
Grab the .xpi below, drag into a Firefox window (or about:addons → gear icon →
"Install Add-on From File..."). Same add-on ID as prior releases, so this upgrades
an existing install in place — no need to remove the old one first.