Changelog — browser extension¶
All notable changes to the papio browser extension (Chrome/Firefox MV3,
extension/) are documented here. The extension is versioned and released
independently of the daemon: its version lives in extension/manifest.json
(and must match extension/package.json), and a release is cut with an
ext-v<version> tag. Daemon/CLI changes live in the root CHANGELOG.md.
A change that spans the native-messaging protocol appears in both changelogs — each file describes the behavior change visible to users of that artifact.
History before 0.3.1 was recorded in the root CHANGELOG.md (the extension
and daemon shared a version stream through 0.3.0); see its [0.3.0] section
for the full pre-split extension history.
[0.5.0] - 2026-07-22¶
Added¶
- Stale-SSO detection and recovery on handoff tabs: when a tracked
institutional handoff lands on an identity-provider failure page
(OpenAthens/Shibboleth stale or expired session), the extension reports a
handoff_outcometo the daemon for the job's audit trail and re-drives the tab through the resolver once, minting a fresh sign-in exchange — no page content leaves the browser, only the outcome and the IdP hostname. job_offernow carriesrequires_auth, so the extension can distinguish "open access — just render it" handoffs from ones needing an institutional sign-in (groundwork for surfacing this in the popup).- Inbox access guidance: triage actions now say “open access — no login needed” or “sign in to your institution first” when the daemon has classified their access requirements.
- Citation-style rendering in the inbox: each item now shows a reference-style line (authors, year, hyperlinked DOI) in a user-selected citation style — APA, MLA, or Chicago — persisted across visits. The DOI link is the citation's locator, replacing the separate "Open DOI" row.
- Status glyph column in the inbox: every row leads with a colored glyph for its kind (manual download ↓, browser handoff ↗, verify identity ?, watch hit ✶, retraction !); unknown kinds from a newer daemon degrade to a neutral dot. This replaces the action-kind pill. Hovering a glyph shows its meaning instantly (no native-tooltip delay), and the footer legend spells out all five. The footer (legend + keyboard help) sticks to the viewport bottom, so both stay visible without scrolling.
- Collapsible backend details per inbox row: a quiet "⋯" chip at the end of the actionable status line reveals item id, job id, and revision as three compact columns. Its meaning remains available on hover and as "Backend details" to screen readers.
Changed¶
- Inbox visual overhaul: paper titles are larger, semibold, and clamp to two lines instead of truncating at one; the action-kind pill no longer stretches into a full-width bar; authors/year render as plain metadata prose (labels kept for screen readers); job ids demote to a muted monospace line; quarantine file paths collapse to an ellipsized code span with the full path in the tooltip. "Open" is styled as the primary action on rows where it is the advancing step, while Dismiss/Reject become quiet ghost buttons with a danger hover. The header consolidates to two rows, the counts line omits zero buckets, link labels capitalize properly ("Open DOI"), and rows whose title is just the action kind fall back to the paper's DOI styled as a placeholder. Detail text lost its "DETAIL" label and reads as plain prose, author lists duplicated into a title's " - " suffix are stripped, and the counts line pluralizes correctly.
[0.4.3] - 2026-07-20¶
Fixed¶
- The options page now requests host access for every registered adapter, keeping provider support and Firefox runtime grants in sync.
- Assisted downloads are attributed through the complete adapter registry when exactly one tracked job matches the provider host; ambiguous downloads remain unowned.
- Firefox now ignores broad native/manual download correlation because it cannot steer those files into papio's adoption directory; only exact extension-started downloads are acknowledged, so assisted controls remain manual while direct extension-API downloads remain automatic.
[0.4.2] - 2026-07-20¶
Fixed¶
- Repackages the 0.4.1 tracked-provider-host fix after its store workflow stopped before either upload when Chrome's publishing client added a required API v2 publisher identifier. Extension runtime behavior is unchanged.
[0.4.1] - 2026-07-20¶
Fixed¶
- Tracked institutional handoffs now classify provider landings from the
extension's complete adapter registry instead of relying only on the
protocol-capped
provider_hostsoffer list. Resolver redirects can therefore reach every 0.4.0 adapter family while unregistered hosts remain assisted.
[0.4.0] - 2026-07-20¶
Added¶
- Acquire this page: a popup button (shown only when the connected daemon
advertises the
page_acquirefeature) reads the current tab'scitation_doimetadata under the activeTab grant and asks the daemon to acquire the paper; pages without a DOI show "no DOI found on this page" and send nothing. - Adapters can declare
requiresVisible; their handoff tabs then open in a normal, unfocused window instead of the minimized work window (fix path for providers that under-render while hidden). No current adapter sets it. - 14 new fixture-backed provider adapter families: APA PsycNet, Annual Reviews, Taylor & Francis Online, Emerald Insight, Cambridge Core, Thieme Connect, Nature, Oxford Academic (Silverchair), MIT Press, BMJ, PsychiatryOnline, JAMA Network, Wolters Kluwer/LWW (Ovid journals), and HAL — each registered from an authentic captured page (success plus a denial capture where one was reachable), doubling adapter coverage of the real missing-PDF corpus. Ovid SSO-walled and ISHS Acta Horticulturae member-credit pages stay assisted: no authentic entitled capture exists, so no adapter is registered for them.
scripts/sanitize-fixture.ts: one-command capture sanitation — reads a raw saved page, runssanitizeFixture, verifies the residual-leak guard, and writes the committable fixture with its provenance header.
Fixed¶
- The developer-only fixture-capture tool no longer leaks its filename reservation when Chrome rejects a download; unclaimed reservations expire after one minute.
- Fixture sanitization hardened for the new captures: URL-valued provider
metas (e.g.
citation_pdf_url,wkhealth_pdf_url) keep queryless selector evidence instead of being dropped, comments are emptied without merging adjacent markup, script/style/SVG bodies are always emptied, and the provenance header's provider label is itself guarded against opaque observed-host names.
[0.3.1] - 2026-07-19¶
First version submitted to Firefox Add-ons (AMO, listed channel). Chrome Web Store carries 0.3.0 — the cross-store skew is intentional; the listings are independent.
Fixed¶
- The developer-only "Capture fixture" panel in the popup no longer ships to
store users: it is gated on
chrome.management.getSelf().installType === "development"and appears only for unpacked/dev installs. - The manifest
descriptionwas shortened to fit the Chrome Web Store's 132-character summary limit (an over-limit summary blocks the store upload;web-ext lintdoes not catch it). extension/package.jsonversion brought back in sync withextension/manifest.json(the compat preflight in CI enforces they match).
Changed¶
- papio is now italicised in the extension's own UI, matching the
product-wide brand convention: a
renderPapiohelper (src/dom.ts) wraps the wordmark in<em>across the popup (daemon status, resolver lede), the options page (consent, work-window, and daemon-footer status lines), and the static popup/options HTML.
[0.3.0] - 2026-07-18¶
First store-submitted version (Chrome Web Store). Shared a version stream with
daemon v0.3.0 — see the root CHANGELOG.md [0.3.0] section for the complete
extension changes (library-resolver access grants, daemon version-skew
surfaces, Firefox support, background work window, store submission tooling).