A small Manifest V3 extension for Chromium-based browsers that turns the new tab page into a manual queue of DTF news.
- Shows a personal quick-links toolbar pinned to the top of the new tab page, with a single horizontally-scrolling row of tiles.
- Manages links — add, edit, delete, and reorder — from a settings panel opened with the gear button (closes on Done, Escape, or a click outside).
- Opens saved favorites in the current tab.
- Uses site favicons with letter and custom-image fallbacks.
- Shows exactly one DTF headline at a time.
- Keeps the current card until you explicitly process it.
- Просмотрел advances without leaving the new tab page.
- Перейти opens the DTF article in a new tab and advances the queue.
- Catches up on newer headlines automatically when the local backlog empties.
- Lets you step explicitly into older news with Глубже в архив, one batch at a time.
- Persists queue state locally across browser restarts.
- Supports retry, reset, bounded pagination, and duplicate filtering.
- Performs no background polling and has no analytics.
- Clone or download this repository.
- Open
chrome://extensionsin Chrome or another Chromium-based browser. - Enable Developer mode.
- Click Load unpacked.
- Select the repository directory.
- Open a new tab.
The first launch requests the latest batch from DTF and uses its first item as the start of the queue.
The extension reads https://api.dtf.ru/v2.10/news directly from the new tab page. The first response becomes a local snapshot:
- the first item is
current; - the remaining items are
backlog; - the API cursor is stored as
lastId.
No request is made while an existing card is simply displayed. A new request happens only when the backlog empties (a forward catch-up), when you press Проверить новые or Глубже в архив, or when you press Сбросить.
When the backlog empties, the extension fetches the newest page and shows only headlines you have not seen yet; if that page turns out to be all-duplicate (more news was published since your last check than fits on one page), it keeps paging forward — up to 3 pages per check — until it finds something unread or genuinely runs out. It does not crawl backward by default, so the queue can reach a real end. From the end screen you can press Проверить новые to re-check the top, or Глубже в архив to load one older page at a time. Forward checks never move the archive cursor, so stepping into the archive resumes from where you left off.
The manifest requests only:
storageto persist the queue locally and saved favorites via Chrome Sync;faviconto display site favicons in the favorites bar;- host access to
https://api.dtf.ru/*to read the news feed.
Queue reading-progress is stored in chrome.storage.local, scoped to the
current browser profile. Favorites are stored in chrome.storage.sync, so
they follow you to any other Chromium browser signed into the same Google
account with sync enabled and running this same extension — that's Chrome's
own built-in sync, not a project-run service. They are not Chrome bookmarks.
Two separate "Load unpacked" installs only share sync data if they load the
same manifest.json (this repo pins a fixed key so that's automatic on
git pull).
API requests include DTF credentials so the extension can use the browser's signed-in DTF session. Queue state never leaves chrome.storage.local; favorites never leave Chrome's own sync infrastructure. See Privacy for details.
Requests are sent with credentials: "include", so they carry your existing DTF
session cookies to api.dtf.ru; the extension never reads or copies those cookies.
Requirements: Node.js 20 or newer.
npm test
npm run checkThe test suite covers API normalization, cursor pagination, duplicate handling, persistence validation, retry/reset behavior, cross-tab serialization, URL safety, and manifest privileges.
manifest.json Extension manifest
src/dtfApi.js DTF API client and response normalization
src/dtfUrl.js Allowed DTF URL validation
src/queueStore.js Persistent state and bounded event log
src/queueService.js Queue state machine and pagination
src/newtab.* New tab interface
test/ Node.js unit tests
More detail is available in Architecture.
The extension targets Chromium browsers with Manifest V3, Promise-based extension APIs, and the Web Locks API. It depends on DTF's current v2.10/news response shape, which is not controlled by this project.
