MD Yandex Viewer · Тёмное чтение Markdown в Яндекс Браузере

Расширение для Яндекс Браузера: открытый файл .md / .markdown превращается в тёмную страницу для чтения с нормальной типографикой, ссылками и картинками.
Возможности
- Автозапуск — content script срабатывает на URL, который оканчивается на
.mdили.markdown(file://,http://,https://). - Базовый Markdown — заголовки, абзацы, списки, цитаты, горизонтальные линии, inline-код и блоки кода.
- Ссылки и картинки — относительные и абсолютные пути резолвятся от текущего URL; внешние ссылки открываются в новой вкладке.
- Бейджи README — для
img.shields.ioесть HTML-fallback, если внешняя картинка не загрузилась. - Тёмная тема — фон, карточка контента, акцентный синий, стили кода через CSS-токены.
Требования
- Яндекс Браузер на Chromium (Manifest V3).
- Права расширения:
file:///*,http://*/*,https://*/*(нужны, чтобы открывать локальные.mdи страницы в сети). - Сборки, Node и интернет для самого рендера не нужны. Сеть нужна только картинкам и бейджам в самом Markdown.
Установка и запуск
- Откройте
browser://extensions. - Включите режим разработчика.
- Нажмите «Загрузить распакованное расширение».
- Укажите папку проекта
@MDYandexViewer. - Откройте любой адрес, который оканчивается на
.mdили.markdown.
Повторно загружать расширение нужно после правок manifest.json, src/content.js или src/theme.css.
Использование
Локальный файл
- Положите
.mdна диск. - Откройте его в Яндекс Браузере (
file:///…/README.md). - Страница перерисуется: оболочка
.mdv-shell, статья.mdv-content.
Файл по HTTP/HTTPS
- Откройте URL вроде
https://example.com/notes/guide.md. - Расширение сработает в конце загрузки документа (
document_end). - Исходный текст берётся из
document.body/document.documentElementи заменяется HTML-просмотром.
Что рендерится
- Блоки:
#…######,-/*списки, нумерованные списки,>,---, fenced`. - Inline: `
код,жирный,*курсив*,ссылка,`.
- Не CommonMark целиком: таблиц и вложенных конструкций в парсере пока нет.
Если страница не сменилась
- Проверьте, что путь URL действительно заканчивается на
.mdили.markdown. - На
file://в карточке расширения должно быть разрешение на доступ к файлам. - Обновите страницу после перезагрузки расширения.
Структура проекта
@MDYandexViewer/
├── manifest.json
├── README.md
├── doc/
│ ├── ARCHITECTURE.md
│ ├── CHANGELOG.md
│ └── AI_RULES.md
└── src/
├── content.js # парсер Markdown и подмена DOM
└── theme.css # тёмная тема viewer
Слои и поток данных — в doc/ARCHITECTURE.md.
Технологии
- Manifest V3 — content scripts, без service worker и без popup.
- JavaScript ES2020 — один файл, без бандлера и зависимостей.
- CSS3 — токены в
:root, тёмныйcolor-scheme. - Яндекс Браузер (Chromium) — те же content scripts, что у Chrome MV3.
Разрешения
file:///*,http://*/*,https://*/*вhost_permissionsи вcontent_scripts.matches— только страницы с расширением.md/.markdown.- Ключей API, аккаунтов и фоновых запросов нет.
История изменений
Формат — Keep a Changelog.
[Unreleased]
Changed
- Документация приведена к шаблону:
README.mdс H1Название · пояснение, полные разделы продукта; канон правил —doc/AI_RULES.md(файлdoc/AIRULES.mdоставлен указателем).
[1.0.0] — 2026-05-28
Added
- Расширение MD Yandex Viewer на Manifest V3.
- Рендер Markdown в
src/content.js. - Тёмная тема в
src/theme.css. - Стартовая документация.
- Картинки
и HTML-fallback бейджейimg.shields.io.
Changed
- Соседние строки текста склеиваются в один абзац.
- Стили fallback-бейджей: фон, отступы, чтобы подпись не обрезалась.
- Inline-код: серый фон и жёлтый текст.
Fixed
- Markdown-ссылки: относительные пути (
doc/...) и абсолютные URL.
Technical Notes
- Резолв путей:
new URL(href, window.location.href).href. - Fallback
img.shields.io— локальный HTML.mdv-badge*при пути/badge/....



