Skip to content

v0.3.4 — read_article, discard_tab, private windows, acquire_tab windowId

Choose a tag to compare

@raychao-oao raychao-oao released this 06 Aug 06:23
· 16 commits to main since this release

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_article is 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_tabs gained
    discarded/lastAccessed fields 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 in about:addons (no API exists to flip this programmatically);
    without it, fails outright with private_window_access_denied. list_tabs
    gained an incognito field — 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 from open_private_window), instead of whatever window
    Firefox considers "current". list_tabs gained a windowId field so windows
    can be targeted. Rejects a private-window windowId combined with
    cookieStoreId (Multi-Account Containers don't exist in private windows) with
    a dedicated container_unavailable_in_private_window error.

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.