2026-07-13 20:49:05 +10:00
|
|
|
|
# Read it later
|
2026-07-13 11:11:24 +10:00
|
|
|
|
|
|
|
|
|
|
A new-tab page that shows everything you've saved to read later, as a
|
2026-07-14 12:44:17 +10:00
|
|
|
|
sortable grid or list. No account, no server: everything lives in your
|
2026-07-13 11:11:24 +10:00
|
|
|
|
browser's local extension storage.
|
|
|
|
|
|
|
|
|
|
|
|
## How to save something
|
|
|
|
|
|
|
2026-07-14 12:44:17 +10:00
|
|
|
|
- **Click the toolbar icon**: saves the page you're currently on.
|
2026-07-13 11:11:24 +10:00
|
|
|
|
- **Right-click a page** → "Save page for later"
|
|
|
|
|
|
- **Right-click a link** → "Save link for later" (doesn't need to be open)
|
|
|
|
|
|
|
|
|
|
|
|
A ✓ briefly appears on the icon to confirm the save.
|
|
|
|
|
|
|
|
|
|
|
|
## The shelf (new tab page)
|
|
|
|
|
|
|
|
|
|
|
|
- Toggle between **grid** (cards with thumbnails) and **list** (compact,
|
2026-07-14 12:44:17 +10:00
|
|
|
|
bookshelf-spine style), top right.
|
2026-07-13 11:11:24 +10:00
|
|
|
|
- **Sort** by newest, oldest, title, or site.
|
2026-07-14 12:44:17 +10:00
|
|
|
|
- **Search** filters by title, domain, URL, or tag as you type.
|
2026-07-13 11:11:24 +10:00
|
|
|
|
- **Archive** tucks an item away without deleting it; "Show archived"
|
|
|
|
|
|
reveals archived items again.
|
|
|
|
|
|
- **Delete** removes an item, with a 5-second **Undo**.
|
|
|
|
|
|
|
|
|
|
|
|
Thumbnails are captured automatically when you save the *current* page
|
|
|
|
|
|
(a screenshot of what's on screen). Links saved via right-click show a
|
|
|
|
|
|
favicon instead, since the browser hasn't loaded that page yet.
|
|
|
|
|
|
|
2026-07-14 12:44:17 +10:00
|
|
|
|
## Tags
|
|
|
|
|
|
|
|
|
|
|
|
In grid view, click **+ tag** on any card to add one or more free-form
|
|
|
|
|
|
labels (comma-separated, e.g. `css, research`); click the **×** on a chip to
|
|
|
|
|
|
remove it. Tags are grid-only: list view stays the compact bookshelf row
|
|
|
|
|
|
it's meant to be.
|
|
|
|
|
|
|
|
|
|
|
|
Click a tag chip (on a card, or in the 🏷 toolbar button's dropdown, which
|
|
|
|
|
|
lists every tag currently in use) to instantly filter the shelf to it. This
|
|
|
|
|
|
just fills in the search box, so typing a tag name works too, and it
|
|
|
|
|
|
combines with everything search already matches (title, domain, URL).
|
|
|
|
|
|
|
2026-07-13 20:49:05 +10:00
|
|
|
|
## Reminders and auto-delete
|
|
|
|
|
|
|
|
|
|
|
|
The gear icon opens a settings panel (also home to the light/dark/system
|
|
|
|
|
|
theme picker) with two optional timers, both off by default:
|
|
|
|
|
|
|
2026-07-14 12:44:17 +10:00
|
|
|
|
- **Remind me after**: items older than this get pinned to the top of the
|
2026-07-13 20:49:05 +10:00
|
|
|
|
shelf and highlighted, so they don't get buried.
|
2026-07-14 12:44:17 +10:00
|
|
|
|
- **Delete unarchived items after**: silently removes items you never
|
2026-07-13 20:49:05 +10:00
|
|
|
|
came back to. Archiving an item takes it out of consideration entirely.
|
|
|
|
|
|
|
2026-07-14 12:44:17 +10:00
|
|
|
|
The delete period must be longer than the reminder period. This is
|
|
|
|
|
|
enforced both in the settings panel (an inline error if you try to set it
|
|
|
|
|
|
shorter) and as a hard rule in the deletion logic itself, so you're always
|
|
|
|
|
|
warned before anything is removed. Auto-delete runs on an hourly background
|
|
|
|
|
|
alarm (so it still works even if you never open the new tab page), and
|
|
|
|
|
|
again whenever the shelf page is open; when the shelf page does the
|
|
|
|
|
|
deleting, it shows a courtesy toast with an **Undo**.
|
2026-07-13 20:49:05 +10:00
|
|
|
|
|
|
|
|
|
|
## Worth a second look
|
|
|
|
|
|
|
|
|
|
|
|
Above the shelf, a small strip proactively surfaces 2–3 old, forgotten,
|
2026-07-14 12:44:17 +10:00
|
|
|
|
unarchived items each time you open a new tab, on by default and toggleable
|
2026-07-13 20:49:05 +10:00
|
|
|
|
in the settings panel. Unlike a notification, it doesn't nag: the more
|
|
|
|
|
|
times an item gets shown without you opening/archiving/deleting it, the
|
|
|
|
|
|
less often it's picked again (backing off from every few days out to every
|
|
|
|
|
|
couple of months), so nothing gets shown forever, but nothing gets shown
|
|
|
|
|
|
*so* rarely that it's effectively forgotten again either. Archiving or
|
|
|
|
|
|
deleting an item removes it from the strip immediately with no replacement
|
2026-07-14 12:44:17 +10:00
|
|
|
|
until the next refresh, avoiding whack-a-mole.
|
2026-07-13 20:49:05 +10:00
|
|
|
|
|
|
|
|
|
|
"Old enough to matter" uses the same period as the reminder setting above
|
|
|
|
|
|
when reminders are on, or a 14-day default when they're off. It's fine (and
|
|
|
|
|
|
expected) for the same item to show up both pinned/highlighted in the main
|
2026-07-14 12:44:17 +10:00
|
|
|
|
shelf *and* in this strip at once. They're not trying to be non-overlapping,
|
2026-07-13 20:49:05 +10:00
|
|
|
|
just two different nudges.
|
|
|
|
|
|
|
2026-07-14 12:44:17 +10:00
|
|
|
|
## Install on Chrome / Edge (unpacked)
|
2026-07-13 11:11:24 +10:00
|
|
|
|
|
|
|
|
|
|
1. Go to `chrome://extensions` (or `edge://extensions`).
|
|
|
|
|
|
2. Turn on **Developer mode** (top right).
|
|
|
|
|
|
3. Click **Load unpacked** and select this folder.
|
2026-07-14 12:44:17 +10:00
|
|
|
|
4. Open a new tab. You should see the Read it later page.
|
2026-07-13 11:11:24 +10:00
|
|
|
|
|
2026-07-14 12:44:17 +10:00
|
|
|
|
## Install on Firefox (temporary, for testing)
|
2026-07-13 11:11:24 +10:00
|
|
|
|
|
|
|
|
|
|
1. Go to `about:debugging#/runtime/this-firefox`.
|
|
|
|
|
|
2. Click **Load Temporary Add-on…**
|
|
|
|
|
|
3. Select the `manifest.json` file inside this folder.
|
|
|
|
|
|
4. Open a new tab. Firefox will ask permission to let the extension
|
2026-07-14 12:44:17 +10:00
|
|
|
|
override the new tab page the first time. Allow it.
|
2026-07-13 11:11:24 +10:00
|
|
|
|
|
|
|
|
|
|
> Temporary add-ons in Firefox are removed when you close the browser.
|
|
|
|
|
|
> For a permanent install, the extension needs to be signed by Mozilla
|
|
|
|
|
|
> (via [addons.mozilla.org](https://addons.mozilla.org)) or loaded in a
|
|
|
|
|
|
> [Developer Edition / Nightly build](https://www.mozilla.org/firefox/developer/)
|
|
|
|
|
|
> with `xpinstall.signatures.required` set to `false`.
|
|
|
|
|
|
|
2026-07-13 20:49:05 +10:00
|
|
|
|
## Syncing across devices
|
|
|
|
|
|
|
|
|
|
|
|
Read it later keeps full items (including screenshot thumbnails) in
|
|
|
|
|
|
`chrome.storage.local`, and also mirrors a lightweight copy of each item
|
2026-07-14 12:44:17 +10:00
|
|
|
|
(url, title, domain, favicon, dates, archived state, tags, spotlight
|
|
|
|
|
|
backoff counters, never images) to
|
2026-07-13 20:49:05 +10:00
|
|
|
|
`chrome.storage.sync`, one entry per item so each stays well under the
|
|
|
|
|
|
8KB-per-item sync limit. On another device signed into the same browser
|
|
|
|
|
|
account, opening the shelf pulls those in automatically; thumbnails just
|
|
|
|
|
|
aren't part of what syncs, so items saved elsewhere show a favicon instead
|
|
|
|
|
|
until re-saved on that device. Archiving and deleting also sync. This is
|
2026-07-14 12:44:17 +10:00
|
|
|
|
all best-effort: offline, not signed in, or over the (~100KB / 512-item)
|
2026-07-13 20:49:05 +10:00
|
|
|
|
sync quota just means that device keeps working from local storage alone.
|
|
|
|
|
|
|
|
|
|
|
|
Note: `chrome.storage.sync` needs a stable extension ID to work, which
|
2026-07-14 12:44:17 +10:00
|
|
|
|
only applies to a permanently installed, signed add-on, not a Firefox
|
2026-07-13 20:49:05 +10:00
|
|
|
|
"temporary add-on" loaded via `about:debugging` (see install notes above),
|
|
|
|
|
|
which won't persist sync identity across restarts.
|
|
|
|
|
|
|
2026-07-13 11:11:24 +10:00
|
|
|
|
## Notes / things you might want to change
|
|
|
|
|
|
|
2026-07-14 12:44:17 +10:00
|
|
|
|
- Icons in `icons/` are placeholders. Swap them for your own artwork
|
2026-07-13 11:11:24 +10:00
|
|
|
|
any time; sizes 16/32/48/128 are already wired up in `manifest.json`.
|