Repository navigation
Releases: Breadboio/Reader-Comfort
Release list
v1.8.0 — PDFs, and sharing what you marked up
Two additions, both aimed at studying.
PDFs now work. Chrome's built-in PDF viewer is a plugin no extension can reach into, so every tool went dead on exactly the documents that need them most. Open a PDF and the popup offers Open in Reader Comfort, which reopens it in a bundled PDF.js viewer with two modes:
- Page view — the PDF as it looks, with a text layer so you can still select and highlight it.
- Reading view — the text pulled out and reflowed as ordinary paragraphs, so font, size, spacing and line width finally apply. A fixed PDF layout can't do that, and it's the difference between a document a struggling reader can read and one they can't.
Share what you marked up. "Save as a web page" writes one self-contained .html file holding your highlighted quotes (with the surrounding text for context), your note text, and your ink rendered as SVG. The person you send it to needs no extension and no network — the file loads nothing and reports nothing.
Also in this release: highlights now export in document order rather than creation order, and pdf/ vendors stock pdfjs-dist 5.6.205 unmodified (initialised with isEvalSupported: false).
Both verified end-to-end against a real Chromium with the extension loaded.
v1.6.1 — Firefox minimum version fix
Packaging fix for the Firefox submission — no functional changes.
browser_specific_settings.gecko.data_collection_permissions (which v1.6.0 added, because addons.mozilla.org now requires it) needs Firefox 140 on desktop and 142 on Firefox for Android, but the manifest still declared a minimum of 115. Mozilla's addons-linter flagged it, along with the popup's permissions.request call — the "Allow on all sites" button — which isn't implemented on Firefox for Android 115.
gecko.strict_min_version→ 140.0- new
gecko_android.strict_min_version→ 142.0 (desktop and Android minimums are separate keys)
addons-linter on the Firefox build now reports 0 errors, 0 notices; the 3 remaining warnings are UNSAFE_VAR_ASSIGNMENT notices for static SVG icon strings, which AMO accepts.
This drops support for Firefox 115–139. 140 is the current ESR. If you'd rather keep older Firefox, the key is only a warning at 115, never an error.
v1.6.0 — SVG icons + Firefox data-collection declaration
Replaces emoji/text-only labels throughout the popup and the on-page draw/highlight toolbars with real SVG icons (source set in design/icons/); redrawn toolbar icons to match. Adds browser_specific_settings.gecko.data_collection_permissions to the manifest (required: none, optional: websiteContent) — Mozilla now requires this before AMO will accept a new extension for signing.
v1.5.2 — Chrome Web Store manifest fix
Store-metadata-only patch: shortened the manifest description field from 208 to 124 characters to satisfy the Chrome Web Store's 132-character limit (the v1.5.1 upload was rejected on this). No functional changes.
v1.5.1 — triple-click for the ruler
The page-gesture that toggles the reading ruler is now a triple-click instead of a double-click, so it's much harder to trigger by accident. Still an option (on by default), still ignored on links / buttons / form fields. The keyboard shortcut (Alt+R) and the popup toggle are unchanged.
Full changelog: v1.5.0...v1.5.1
v1.5.0 — works on strict-CSP sites
Fixes "the tools don't work on some websites" — mainly a Firefox issue.
Strict-CSP sites now work
Firefox blocks a <style> element that an extension injects into a page whose Content-Security-Policy restricts style-src (many big sites do). That's why tint / fonts / spacing / highlight colours did nothing on those sites.
Now the static styles ship as a proper manifest stylesheet and the per-setting styles go through chrome.scripting.insertCSS from the background — both bypass CSP. Verified on a style-src 'self' page: everything applies.
"Allow on all sites" prompt
Firefox (and Chrome, when set to "on click") holds back the run-on-every-site permission until you grant it — until then the extension just doesn't run on the sites you haven't allowed. The popup now shows a red "Allow on all sites" banner when that permission is missing; one click fixes it and reloads the tab.
Also
- Re-applies itself if a single-page app wipes its markers
- Double-click ruler toggle is instant now
- README's "Known limits" rewritten — the things that genuinely can't work (browser-internal pages, the PDF viewer, cross-origin iframes, Google Docs' canvas text, Shadow DOM) are now spelled out
Full changelog: v1.4.0...v1.5.0
v1.4.0 — Right-click dictionary
Right-click dictionary
Turn on "Right-click a highlighted word for its definition" in the popup (Highlighter section), then right-click any highlighted word — a small card shows the word, its pronunciation, and a few definitions.
It's off by default. When on, it's the only network request the extension makes: that one word goes to the free, keyless api.dictionaryapi.dev — no page URL, no other text, no cookies. Definitions are cached in memory for the page you're on. The popup spells this out before you enable it, and PRIVACY.md has the full disclosure.
Esc or clicking away dismisses the card.
The Android app's tools panel gets a matching "Dictionary" toggle (long-press a highlighted word on mobile).
Full changelog: v1.3.1...v1.4.0
v1.3.1 — Highlighter toggle + double-click ruler
Highlighter on/off
The highlighter now has an on/off switch (in the popup, next to "Highlighter"). Turn it off and selecting text behaves normally again — no colour bar — and any highlights already on the page disappear until you switch it back on. They're not deleted; they're kept and re-shown on toggle. Esc also dismisses the colour bar.
Double-click to toggle the reading ruler
A double-click anywhere on the page now toggles the reading ruler on/off (and tidies up the word it incidentally selected). It's an option, on by default — uncheck "Double-click the page to toggle the ruler" under the ruler control to disable it. Double-clicks on links, buttons, and form fields are ignored.
Full changelog: v1.3.0...v1.3.1
v1.3.0 — Sticky notes + store packaging
New: Sticky notes
Drop a draggable, resizable note anywhere on a page (Alt+N or the popup). Drag it by its bar, drag the corner to resize, click the dot to recolour, collapse or delete. Notes persist per-URL and come back on reload — same as highlights and annotations.
Store-ready
python3 build.pyproduces clean per-browser packages:dist/reader-comfort-chrome-1.3.0.zipanddist/reader-comfort-firefox-1.3.0.zip(the source manifest carries keys for both engines; the build splits them so there's no "unrecognized manifest key" warning).store/— copy/paste Chrome Web Store listing text + permission justifications, a full publishing walkthrough (Chrome / Edge / addons.mozilla.org, which also covers Firefox for Android), and 1280×800 screenshots.PRIVACY.md— privacy policy. No data collected, no network requests, fonts bundled.
Fixed
The highlighter selection bar and the draw toolbar weren't actually disappearing when dismissed — an #id { display:flex } rule was overriding the [hidden] attribute. They hide properly now.
Full changelog: v1.2.0...v1.3.0
v1.2.0 — Draw / annotate
New: Draw / annotate
A full-page freehand layer, alongside the highlighter — for arrows, circles, scribbles on top of any page.
- Toggle draw mode with
Alt+Dor the popup - An on-page toolbar appears while it's on: colour, thin / medium / thick, pen / eraser, undo, clear
- Drag anywhere to draw; strokes are smoothed
- Turn draw mode off and the page is clickable again — the ink stays put
- Annotations persist per-URL and come back on reload
Limitation: annotations are placed by absolute page coordinates, not anchored to content. They survive reloads, but drift if the page's layout above them changes between visits (responsive reflow, injected banners, lazy content). Good for a quick markup pass, not a durable record.
Verified end-to-end on Chrome (draw / eraser / undo / clear / persist-across-reload). Firefox still spec-only — no Firefox binary to test with.
Full changelog: v1.1.1...v1.2.0