Изменения
Что менялось в каждой версии расширения, новые сверху.
4.2.0 — 2026-10-08
О расширении
- Убран канал для агента внутри браузера (WebMCP): он работал только с экспериментальным флагом Chrome. Агенты подключаются к расширению через локальный MCP-сервер, как и раньше
- Расширение больше не будит браузер каждые 30 секунд без дела: фоновая проверка идёт, только когда есть работа, — меньше расход процессора и батареи
- «Что нового» рассказывает о главном в версиях 4.0–4.2 вместо изменений из версий 3.x
- Список использованных библиотек показывает актуальные версии: вместо убранного в 4.0 Ace — CodeMirror 6
- Из обращения автора убрано обещание открыть исходный код на GitHub
Стили
- Препроцессор Sass можно выключить для правила: пункт «Препроцессор Sass» в меню «…» панели стилей
- Инструменты агента читают и меняют режим полем
syntax - Галочка «!important» больше не ломает
@import - Стили можно не внедрять во вложенные фреймы: пункт «Применять во вложенных фреймах» в том же меню. По умолчанию, как и в 4.0, CSS идёт во все фреймы. Настройка «Все фреймы» для CSS из версий 3.x не переносится
- Без режима разработчика (Chrome) и без разрешения на пользовательские скрипты (Firefox) стили ставятся только в саму страницу: раньше правило с включённым в 3.x «Все фреймы» клало стиль и в чужие встроенные фреймы
- Инструменты агента меняют охват полем
allFramesCss - Стили можно применять внутри веб-компонентов: пункт «Применять в shadow DOM» в меню «…» панели стилей. Работает для открытых корней shadow DOM, по умолчанию выключено. Агент меняет его полем
shadowDomCss - Стиль включённого или нового правила, а также правила с новым адресом сайта появляется на открытых вкладках сразу, без перезагрузки. Раньше сразу срабатывали только правка текста и выключение
- Firefox 136–146 без разрешения на пользовательские скрипты: при переходах внутри одностраничного сайта, без перезагрузки страницы, стиль правила ставится и снимается по новому адресу. Раньше — только после перезагрузки. С разрешением в тех же версиях при таких переходах обновляется счётчик правил на значке
- Правка стиля на открытой вкладке больше не попадает во встроенные фреймы чужих адресов до перезагрузки
- «Автоматический !important» или «Препроцессор Sass», переключённые во время сохранения, больше не теряются из стиля до следующего сохранения
- Если во время сохранения перейти к другому правилу, после перезагрузки страницы больше не пропадают ни только что сохранённый код, ни набранный или переключённый в это время («Автоматический !important», «Препроцессор Sass»)
Библиотеки
- Внешние библиотеки обновляются сами раз в день или раз в неделю: настройка «Обновление библиотек» в панели «Расширение». По умолчанию — вручную, как раньше
- Пустой ответ или веб-страница вместо файла библиотеки (например, страница входа в Wi-Fi сети) считается ошибкой загрузки, а не новой версией
- В окне библиотеки видна дата скачивания файла: по ней понятно, что библиотека давно не обновлялась
- «Скачать повторно» при сбое сети или ошибке сервера оставляет прежнюю версию библиотеки: раньше файл затирался пустым, и правила с ней переставали работать
Правила
- Любое правило можно сделать шаблоном: пункт «Сделать шаблоном новых правил» в меню правила. Новые правила начинаются с его кода JS и стилей и переключателей панелей. Сбросить — пункт «Сбросить шаблон новых правил»
- Прошлые версии кода правила: пункт «Прошлые версии» в меню правила. Расширение хранит 10 последних версий на каждое правило — код до каждого сохранения, в том числе до правки агентом. «Вернуть в редактор» открывает выбранную версию несохранённой. Версии хранятся только в этом браузере: в облачный бэкап и экспорт не попадают. Агент по MCP видит те же версии и может сам вернуть правило к одной из них
- Агент по MCP видит адреса сайтов, которые браузер не принимает, и у уже сохранённого правила: в чтении правила, списке правил и диагностике. Раньше — только в ответе на свою запись
- «Загрузить JSON» открывает окно со списком правил и библиотек из файла: можно добавить только отмеченные. Правила, нужные отмеченным, отмечаются сами. Правило с тем же id заменяется, его прежний код остаётся в «Прошлых версиях». Прежняя полная замена — кнопка «Заменить всё» в том же окне
- Удаление правила больше не показывает ошибку, если правило удалилось, а браузер не дал сразу отключить его код на сайтах: правило уходит из списка, тост предупреждает, что код ещё работает, и расширение отключает его само
- Кнопка «+ Добавить новое» в пустом списке открывала редактор, который не сохранял правило, а сообщал, что оно удалено в другом окне
Интерфейс
- Страница настроек открывается быстрее: «Авто-форматирование» загружается, только когда им пользуются
- Подсказки, уведомления и сообщения об ошибках переписаны короче: что произойдёт, без технических подробностей
- Фразы со ссылками в окне режима разработчика и на странице «О расширении» читаются целиком на обоих языках; документация Chrome по режиму разработчика открывается на языке браузера
- Кнопка в попапе называется «Новое правило: сайт» вместо «Добавить: сайт»
- Пункты меню сортировки списка правил выровнены по левому краю
Доступ к сайтам
- Если у расширения нет доступа ко всем сайтам, страница настроек и попап предупреждают об этом и предлагают кнопку «Разрешить». Раньше правила в Firefox без доступа молча не работали, а браузер показывал только зелёную точку «требуется разрешение» на иконке
4.1.0 — 2026-10-01
URL-паттерны
- Паттерн в формате браузера (
https://site.com/*) больше не расширяется молча на все поддомены: правило срабатывает наsite.comиwww.site.com, как и показывает попап. То же дляhttp*://site.com. Нужны поддомены — напишите*.явно:https://*.site.com/* - Адрес без пути (
https://site.com,https://site.com?x=1) тоже больше не расширяется на поддомены - Старые паттерны без схемы работают так, как их всегда показывал попап.
site.com,*site.com*и*.site.com— это сайт и его поддомены наhttpиhttps,www.site.com—www.site.comиsite.com. Раньше JS по*site.com*и*.site.comна самом сайте не выполнялся, хотя попап показывал правило./admin— раздел на любом сайте - Попап, счётчик на иконке и CSS без разрешения на пользовательские скрипты (Firefox без разрешения, Яндекс без режима разработчика) теперь определяют сайты правила ровно так же, как браузер для JS. Паттерн вида
*site.com*больше не срабатывает на чужих адресах, гдеsite.comвстречается в query - Паттерн, который браузер не примет (звёздочка внутри хоста, например
https://customer*.site.com/*, или схема, в которую расширение не внедряется, напримерchrome-extension://), помечается красным в поле URL и в списке правил. Раньше он молча выключал всё правило, теперь пропускается только он, а остальные паттерны правила работают. Попап и счётчик на иконке такое правило на этих адресах не показывают - Если браузер не примет исключение (
!https://login*.site.com/*), правило по-прежнему не выполняется нигде — иначе оно сработало бы на исключённых адресах, — но теперь поле URL и список правил говорят, какое исключение исправить - Явное исключение
!https://www.site.com/*больше не задеваетsite.com: исключения уходят браузеру как написаны - Убраны пометка «устаревший формат URL» и жёлтые подсказки конвертации: период перехода на MV3 прошёл, паттерны без схемы расширение переводит само. Убран и строгий режим URL (флаг старых правил и API агента): все паттерны конвертируются одинаково
- Кириллические домены в паттернах (
пример.рф,https://пример.рф/*) работают: расширение переводит их в punycode - Firefox: паттерн с портом (
localhost:3000,http://localhost:*/*) работает. Раньше:*выключал всё правило, а номер порта не срабатывал нигде. Firefox не различает порты, поэтому в нём такое правило срабатывает на всех портах хоста, а исключение с портом снимает правило со всех портов. Паттерн вида*://*:8080/*(любой сайт на конкретном порту) в Firefox помечается красным: без порта он означал бы все сайты - Паттерн с заглавными буквами в схеме или домене (
HTTPS://Site.com/*) больше не выключает правило: схема и домен приводятся к нижнему регистру
Библиотеки
- Библиотека, чей файл не скачался, помечена красным значком в списке библиотек, а правила, которые от неё зависят, — в списке правил. Раньше такая библиотека молча выпадала из правила, и на странице появлялось
$ is not definedпри включённой галочке jQuery - Сбой «Скачать повторно» показывает ошибку с причиной (например,
HTTP 404) вместо сообщения об успехе - Смена адреса библиотеки в редакторе сразу скачивает файл с нового адреса. Раньше правила продолжали получать код прежнего файла, пока библиотеку не удалишь и не создашь заново
- «Скачать заново» в редакторе библиотеки качает сохранённый адрес. Раньше он качал набранный, но не сохранённый адрес, и после «Отмены» правила получали файл, которого в списке нет
Инструменты агента
list_rulesсinclude: ["digest"]отдаёт и флагimportant: сверка правил со своей копией обходится одним вызовом, безget_ruleна каждое правило- MCP-сервер при закрытом браузере отвечает на запрос списка инструментов за 4 секунды, а не за 45. Раньше
claude mcp listписалtools fetch failed, хотя сервер работал, а сессия агента стартовала на полминуты дольше. Браузер, открытый позже, подхватывается сам: сервер сообщает агенту о новых инструментах
Правила
- Меню параметров правила в редакторе (включение, облако, общее правило, отмена изменений, удаление) и меню «Модули» открываются с клавиатуры: Tab до кнопки, Enter — фокус на первом пункте, Esc — назад. Раньше они открывались только наведением мыши, и удалить правило с клавиатуры было нельзя. Сортировка списка правил и окна подтверждения тоже держат фокус внутри и закрываются по Esc
- Наведение на меню «Модули» или параметры правила больше не уводит фокус из поля, в котором вы печатаете
- Клик мимо окна подтверждения удаления закрывает его как отказ
- Удалённое правило больше не может остаться работать на сайтах. Раньше, если правило удаляли в момент, когда фон перерегистрировал скрипты, его скрипт в редком случае возвращался и внедрялся до следующей полной перерегистрации
- Новый адрес правила или набор библиотек, сохранённые в редакторе или агентом, применяются сразу. Раньше при медленной записи правило изредка регистрировалось со старым адресом и работало так до следующего сохранения
4.0.0 — 2026-09-26
Редактор
- Переход с ACE Editor на CodeMirror 6: улучшенная производительность, поддержка мобильных устройств, современная архитектура расширений
- Enter в редакторе снова просто переводит строку. Раньше подсказку автодополнения принимал Enter, и при наборе кода вместо новой строки вставлялось случайное имя свойства или переменной. Теперь подсказка принимается по Tab
- Поиск и замена (Ctrl+F) переехали в собственную панель над кодом: поле поиска со счётчиком совпадений («1 из 6»), переходы по Enter и Shift+Enter, режимы «учитывать регистр», «регулярное выражение», «слово целиком», замена одного совпадения и всех сразу. Панель на языке интерфейса, в теме редактора
- Панель поиска больше не перекрывает нижние элементы редактора — переключатели режима запуска и красную панель ошибок компиляции. Это касается и диалога перехода к строке (Ctrl+Alt+G)
- Найденные совпадения подсвечиваются акцентным цветом расширения вместо кислотно-циановой подсветки по умолчанию; текущее совпадение выделено ярче остальных
- Подсказки автодополнения оформлены как остальные всплывающие панели: скруглённые углы, фон и шрифт редактора
CSS
- Удалена опция «Программное подключение CSS» (isoCSS) — CSS теперь всегда внедряется через DOM (
<style>), что обеспечивает стабильную отрисовку и предсказуемый каскад - CSS Live: обновление стилей на открытых вкладках без перезагрузки — после сохранения CSS изменения применяются мгновенно
Firefox
- Поддержка Firefox MV3 (Firefox 136+)
- В Firefox снова компилируются SCSS и SASS. Раньше политика безопасности страницы расширения блокировала компилятор, и стили не собирались
- В Firefox загрузка JSON, сброс и «Скачать из облака» больше не заканчиваются красным тостом ошибки при правилах, где есть и JS, и CSS. Данные при этом записывались, но скрипты не перерегистрировались, и на страницах работали старые версии правил
Список правил
- Строка правила перестроена: название и адрес слева, переключатель и значки состояний — справа, каждый на своём уровне. Список читается по колонкам, а не сплошной массой
- Вместо URL-паттерна целиком под названием теперь стоят только сайты —
youtube.com,jira.company.com. Схема, путь и звёздочки одинаковы почти у всех правил и мешали читать список; полный паттерн показывается по наведению - Переключатель включённого правила больше не мозолит глаза: он появляется при наведении на строку. Выключенное правило видно всегда — переключатель на месте, а сама строка приглушена
- Состояния («черновик», «общее правило», «устаревший формат URL») стали аккуратными значками с подсказкой вместо цветных точек, значение которых приходилось угадывать
- Красным помечается только правило с ошибкой компиляции: единственное состояние, требующее вмешательства
- Правило со сломанным SCSS получает отметку ошибки и после загрузки JSON или восстановления из облака — когда стиль в файле ещё не собран (бэкап старой версии, JSON без css) или отметка в нём разошлась с ошибкой. Раньше отметки не было, и правило со сломанным стилем выглядело рабочим
- Переключатель стал полноценной кнопкой: по нему можно попасть мышью, дойти табом и нажать с клавиатуры; на сенсорных экранах он виден всегда
- По всей странице настроек вернулась видимая рамка фокуса — без неё работа с клавиатуры была вслепую. У полей ввода по клику мышью остаётся одна жёлтая рамка, без второго кольца поверх неё
URL-паттерны
- Новый редактор URL-паттернов: textarea с построчным вводом и inline-валидацией вместо popup с документацией
- Цветные индикаторы для каждого URL: зелёный — валидный V3-паттерн, жёлтый — будет сконвертирован
- Убрана опция «Не конвертировать» из UI (конвертация всегда включена)
Интерфейс
- Шрифт интерфейса стал компактнее: 13px в основном тексте и 11px в подписях вместо 14 и 12. На экран помещается больше правил и настроек, а плотность списка и отступы не изменились
- Размер шрифта в редакторах кода не затронут: он остаётся тем, что выставлен в настройках редактора
- Сообщение об ошибке говорит, что не удалось и почему: «Не удалось импортировать JSON» и текст причины вместо одного слова «Ошибка» — при импорте, сбросе, работе с облаком, скачивании библиотеки, форматировании кода, копировании и загрузке данных на старте. Такая ошибка остаётся на экране, пока её не закроешь, и её текст можно выделить и скопировать. Одна и та же ошибка не размножается, а на экране их не больше трёх
- «Хранилище только для чтения» и «не удалось сохранить изменения» держатся 7 секунд вместо 3 и помечены значком предупреждения, а не галочкой успеха
- Уведомления снова появляются внизу по центру и по ширине текста, а не в левом верхнем углу во всю ширину окна
- В настройках инструментов для агентов больше нет служебной приписки «(no_api)» после «недоступно»
- Поля в настройках перестроены: подпись стоит над полем, а само поле и выпадающий список занимают всю ширину панели. Длинное значение — название шрифта, тема редактора — больше не обрезается на середине
- Галочка теперь стоит перед своей подписью, а не в конце строки: видно, что включено, одним взглядом сверху вниз
- До чекбоксов в панели настроек теперь можно дойти табом и переключить пробелом. Раньше Tab их пропускал
- Размер шрифта и размер отступов редактора стоят в одной строке — две настройки перестали занимать два экранных ряда
- Текстовые поля держатся лёгким фоном вместо постоянной рамки; рамка проявляется по наведению. Панель настроек перестала выглядеть решёткой из рамок
- Углы полей ввода и выпадающих списков скруглены слабее — 4px вместо 8px, как у кнопок
- Галочки стали мельче (18px вместо 24px), а у выключенной рамка теперь серая, не жёлтая: жёлтый контур у каждой снятой галочки читался как «требует внимания»
- Панель настроек разделена: MCP и подключение агентов вынесены на отдельную вкладку, резервные копии и синхронизация — на вкладку «Хранилище». В настройках расширения остались язык, счётчик и редактор
- Заголовки групп в левой панели лишились серой полосы: группы разделяет тонкая линия, а треугольник складывания стоит у правого края
- В попапе правила отсортированы по точности попадания: сначала написанные для раздела этого сайта, затем для сайта целиком, в конце — работающие везде. Раньше порядок был случайным (по дате создания), и правило, написанное специально для открытой страницы, уезжало в хвост за спины универсальных и попадало под скролл — казалось, что его нет
- В строке правила сайт, из-за которого правило сюда попало, стоит первым и не приглушён. У правила на десяток доменов сработавший домен больше не прячется в хвосте «+N»
- Попап стал выше (600px вместо 400): список правил реже упирается в скролл
Интеграция с ИИ-агентами
- Новая настройка «Разрешить MCP-подключения» (по умолчанию выключена): внешние MCP-клиенты — Claude Code, Cursor и другие — через локальный сервер, а пока открыта страница настроек и агент в браузере, могут просматривать правила, создавать, править, включать и удалять их
- Агент видит, какие правила применяются к конкретному адресу и какие подходят, но выключены — обычный ответ на вопрос «почему правило не работает»
- Правило, открытое в редакторе с несохранёнными правками, агенту недоступно на запись: сначала нужно сохранить или закрыть его
- Разрешение не переносится бэкапом: восстановление данных на другом устройстве не включает доступ агента автоматически
- Внешние агенты (Claude Code, Cursor) подключаются через локальный MCP-сервер: команда для подключения показывается прямо в настройках, открытая страница расширения при этом не нужна
- Сервер устанавливается одной командой из npm (
npx -y user-js-css-mcp) — путь к файлам расширения больше не нужен. Тем, у кого стоит bun, подходит иbunx user-js-css-mcp: раньше под bun мост молча зависал - Агент может завести, переименовать и удалить библиотеку; удаление библиотеки, от которой зависят правила, отклоняется с перечислением этих правил
- Агент видит, какие правила зависят от правки: при изменении общего правила в ответе перечисляются те, чьё поведение тоже изменится
- Новый отчёт «чем я не пользуюсь»: сколько раз каждое правило подошло к открытой странице, какие библиотеки не нужны ни одному правилу. Считаются только совпадения — адреса страниц не сохраняются, счёт идёт лишь при включённой настройке «Разрешить MCP-подключения»
- В диагностике видны библиотеки, которые не скачались: частая причина «правило сохранено и не работает»
- Вкладка MCP показывает состояние подключения цветной точкой: не подключено, подключено (с названиями клиентов), требуется переподключение или обновление сервера — у каждого одно действие, а под заголовком — что проверить или почему отказ. Раньше отказ был виден только в консоли
- Всё на вкладке MCP видно сразу, без свёрток, по порядку установки: клиент, способ запуска, команда и её копирование, секрет. Пока подключения не разрешены, поля видны, но неактивны
- Установка сервера под свой клиент: готовая команда для Claude Code, Codex и Gemini CLI, JSON для Claude Desktop и прочих, установка в один клик для Cursor и VS Code; запуск через npx или bunx. Команда видна сразу — секрет в ней скрыт, но копируется настоящий. Для Claude Code и Gemini CLI есть галка «Установить только в папку проекта»
- Секрет моста скрыт на экране (страницу настроек показывают на скриншотах); рядом кнопки показать, скопировать и заменить, если он утёк
- Агент может выгрузить полный бэкап прямо в файл и заново зарегистрировать все скрипты, если браузер отказал в регистрации
- Агент может восстановить данные из файла бэкапа: целиком либо слиянием по id — правила из файла ложатся поверх текущих, остальные остаются на месте
- Несколько сессий агента работают одновременно: вторая и последующие подключаются к той, что заняла порт, вместо того чтобы остаться без инструментов
- Поиск по коду правил: агент находит, в каком правиле определена функция или вызов, не вычитывая правила подряд
- Пакетная правка правил одним вызовом: набор проверяется целиком до первой записи
- Правка правила может быть защищена отпечатком: если человек изменил правило в браузере, пока агент готовил правку, запись отклоняется вместо молчаливой перезаписи
Исправления
- Переключатель правила на странице настроек снова выключает правило сразу. Раньше он менял только отметку в списке, а скрипт продолжал внедряться на сайт, пока правило не открыли в редакторе
- Загрузка JSON и восстановление из облака пересобирают стили из SCSS заново, а не берут готовый CSS из файла. Раньше стиль, собранный в файле с ошибкой или по старой версии исходника, приезжал как есть и чинился только правкой правила
- Правило, у которого стёрли весь код или адрес, перестаёт работать на сайте. Раньше продолжала действовать его прежняя версия
- Счётчик на иконке расширения больше не учитывает выключенные правила
- Правило, подключённое модулем к другому правилу, и библиотека, общая для нескольких правил, выполняются на странице один раз. Раньше такой код запускался повторно: второе правило падало с «Identifier has already been declared», а библиотека перезагружалась и теряла подключённые к ней плагины
- Синтаксическая ошибка в модуле больше не останавливает код правила, которое его подключило, а номера строк в ошибках правила совпадают с редактором и не сдвигаются длиной модулей
- После обновления расширения в консоли уже открытых вкладок больше не появляется «Extension context invalidated» при каждом переходе внутри сайта
- Облачный бэкап занимает на ~7% меньше квоты синхронизации: данные кодируются плотнее (Z85 вместо base64). Бэкапы в старом формате восстанавливаются как раньше. Бэкап, выгруженный этой версией, не прочитает устройство со старой версией расширения — его нужно обновить
- URL-паттерны со схемой (
https://site.com/*) теперь привязаны к началу адреса — правило больше не срабатывает ложно, если домен встретился в query-строке другого сайта - Защита от потери данных: при сбое миграции хранилища данные на диске больше не затираются пустым состоянием
- Корректная обработка ошибок при восстановлении из облака — повреждённые данные не вызывают неинформативный сбой
- Внешние модули-библиотеки загружаются только по http(s) (блокировка
file:/data:/javascript:) - Длительность дебаунса сохранения снова учитывается в popup (50 мс)
- Защита от двойного сохранения правила и гонки с автосохранением черновика
- Устранено дублирование CSS на SPA-сайтах после выгрузки Service Worker: трекинг применённых стилей сохраняется в session storage и восстанавливается при перезапуске SW
- Ошибки синхронизации с облаком (повреждённые/несовместимые данные) теперь показываются уведомлением, а не приводят к молчаливому сбою с закрытием диалога «как будто успешно»
- Popup: предупреждение «нет доступа» больше не мигает на обычных страницах при открытии и не показывается на системных (chrome://, файлы, новая вкладка) — только когда инъекция действительно недоступна
- Устранена запись черновика в чужое правило: при быстром переключении между правилами (в окне автосохранения 500 мс) код правила A мог перезаписать правило B
- Замена данных хранилища стала атомарной: при сбое записи (квота облака, ошибка браузера) старые данные больше не стираются — восстановление из облака и миграция не могут оставить хранилище пустым
- Перед загрузкой в облако размер данных проверяется на актуальность, а не по значению на момент открытия страницы
- Несохранённые правки правила (имя, флаги) больше не откатываются при одновременной работе в popup и на странице настроек
- Chrome: правила теперь применяются при SPA-навигации через
history.replaceState(раньше — толькоpushStateи переходы по истории) - Chrome: включение Developer mode теперь подхватывается автоматически в течение 30 секунд — раньше детект не переживал выгрузку Service Worker и требовал пересохранения правила
- SCSS-правила без скомпилированного CSS (например, после миграции со старых версий) теперь докомпилируются при открытии страницы настроек — раньше стиль молча не применялся до пересохранения правила
- Закрыта дыра в матчинге URL: паттерны
*://site.com/*,http*://site.com/*и*://*.site.com/*больше не срабатывают, когда целевой адрес встроен в query-строку чужого URL (wildcard схемы/хоста не пересекает://и/) - Если миграция данных со старой версии не удалась, расширение переходит в режим «только чтение» вместо записи новой версии поверх старых данных — миграция повторится после исправления, данные не теряются
- Сбой восстановления из облака или импорта больше не оставляет все скрипты отключёнными: перерегистрация происходит только после успешной замены данных
- Повторное нажатие «Сохранить» во время долгого сохранения (SCSS-компиляция) больше не игнорируется — сохранения выполняются последовательно
- Загрузка в облако при остатках старого legacy-бэкапа больше не блокируется навсегда по квоте: при нехватке места старые данные освобождаются и запись повторяется
- Режим «только чтение» при сбое миграции теперь распознаёт все старые форматы данных (v1–v10), показывает пользователю уведомление и не мешает восстановлению: сброс хранилища, импорт бэкапа и восстановление из облака работают и снимают блокировку
- Восстановление из облака больше не подхватывает случайно уцелевший древний бэкап старого формата, если рядом лежит новый
- Паттерны со схемами вида
chrome-extension://тоже якорятся к началу адреса - Устранены гонки при одновременной работе: создание/удаление правила больше не теряется при записи из попапа, отложенное сохранение не коммитит черновик другого правила после переключения, фоновая докомпиляция SCSS не затирает свежесохранённые правки
- Паттерн без пути (
https://example.com) больше не срабатывает на похожих доменах (example.com.evil.com) - Сохранение правила, поставленное в очередь перед переключением на другое правило, теперь доводится до конца, а двойное нажатие «Сохранить» на новом правиле не создаёт пустой дубль
- Восстановление/импорт/сброс применяются целиком — несохранённые локальные правки больше не «переживают» явное восстановление
- Учтён формат ошибки квоты Firefox при загрузке в облако
- Если чанковый облачный бэкап оказался повреждён (оборвавшаяся запись), восстановление использует уцелевший старый бэкап вместо ошибки
- Сбой сохранения нового правила больше не «ломает» кнопку сохранения навсегда: черновик остаётся черновиком, показывается уведомление об ошибке, повторное сохранение работает
- После восстановления из облака открытый редактор перечитывает контент правила — раньше он мог записать старый код поверх только что восстановленных данных
- Удалённое правило больше не «воскресает» пустым, если в момент удаления попап или второе окно записали изменения
- Тоггл правила из попапа больше не откатывается молча, когда это же правило открыто и правится на странице настроек (слияние по полям вместо «целиком»)
- Несохранённые правки библиотек и настроек больше не затираются записью из другого окна (та же защита, что была у правил)
- Если миграция данных не удалась, страница настроек больше не ломается на legacy-данных: показываются дефолты в режиме «только чтение», данные на диске не тронуты
- Провал загрузки хранилища в фоне больше не приводит к снятию рабочих скриптов: перерегистрация пропускается до успешного старта
- Восстановление из облака и сброс хранилища у пользователей без Developer mode больше не показывают ложную ошибку при успешной операции; удаление правила без dev mode больше не оставляет «зомби» в списке
- Незакомпилированный SCSS больше не теряется, если компиляция при открытии настроек не удалась (сбой sandbox/записи) — повтор произойдёт при следующем открытии, а не при случайном перезапуске SW; добор запускается и если настройки открыты раньше, чем фон успел выставить маркер
- Импорт бэкапа и восстановление из облака больше не выключают «Разрешить MCP-подключения»: настройка описывает браузер, а не данные, и в бэкап не попадает — раньше её приходилось включать заново руками
- Временный сбой обновления стилей вкладки больше не стирает трекинг применённого CSS — устаревший стиль корректно снимается после восстановления
- Индикатор «сохранено» в редакторе больше не загорается при сбое записи — правило остаётся помеченным как черновик до успешного сохранения
- Новое правило больше не открывается с чужим JS/CSS: черновик больше не читается с диска, а мусорный ключ черновика, записанный старыми версиями, удаляется при старте
- Ctrl+S теперь сохраняет правило на любой раскладке, включая русскую и альтернативные латинские (Dvorak, Colemak)
- Починено скругление углов попапа расширения (подсказки в попапе при этом больше не обрезаются)
- Восстановление из облака, импорт и сброс теперь доходят до всех открытых окон: раньше вторая вкладка настроек или попап могли вернуть на диск своё старое состояние, а открытый редактор — записать поверх восстановленного правила старый код
- Удаление правила больше не сбивает сохранение изменений, идущее в этот момент из другого окна
- Настройки больше не падают на данных старого формата, если миграция не удалась: список правил и регистрация скриптов работают с валидными значениями
- Импорт бэкапа применяется одной операцией — двойное применение сбивало восстановление открытого в редакторе правила
- SCSS, который компилируется в пустой CSS (например, из одних комментариев), больше не заставляет настройки при каждом открытии заново гонять компиляцию
- Открытие страницы настроек стало легче: докомпиляция стилей читает только нужные правила, а не всё хранилище целиком
- Сообщение о режиме «только чтение» больше не появляется, если расширение просто ещё дообновляет данные, и не советует сброс хранилища — он уничтожил бы данные, которые нужно восстановить
- Загрузка в облако перестала архивировать данные дважды за клик; при нехватке места показывается уведомление, а не молчаливое бездействие кнопки
- Сбой сохранения правил, библиотек или настроек теперь всегда виден: раньше при ошибке записи изменение оставалось на экране, но пропадало после перезагрузки страницы
- Если облачный бэкап повреждён и восстановление идёт из старой резервной копии, об этом сообщается — раньше показывалось обычное «готово»
- Правило с SCSS, который компилируется в пустой CSS, больше не заставляет расширение перекомпилировать его каждые полминуты
- Сбой очистки устаревших ключей при импорте или сбросе больше не выглядит как провал миграции и не оставляет расширение в режиме «только чтение» с уже корректными данными
- Изменение правила из попапа больше не теряется, если оно было создано в настройках в тот же момент
- Если миграция данных не удалась, переключение Developer mode больше не снимает все зарегистрированные скрипты
- Страница настроек, открытая во время обновления данных, больше не может остаться в режиме «только чтение» до перезагрузки
- Сбой автосохранения кода в редакторе теперь виден: раньше набранный текст молча не сохранялся
- Докомпиляция стилей при открытой странице правила больше не откатывается автосохранением редактора
- Ctrl+S на раскладках Dvorak и Colemak больше не перехватывает Ctrl+O
- Загрузка в облако собирает бэкап после подтверждения — правки, сделанные во время диалога, тоже попадают в копию
- Правило с адресом без пути, но с параметрами (
https://example.com?utm=1), снова срабатывает на адресах с более длинной query-строкой - Переименование правила в одном окне больше не теряется, если в другом в этот момент шло автосохранение кода
- Страница настроек больше не может залипнуть в режиме «только чтение» из-за совпадения по времени с обновлением данных в фоне
- Счётчик на иконке расширения снимается, если данные не загрузились, — раньше мог висеть устаревшим
- Ctrl+Shift+S больше не перехватывается редактором
- Уведомления теперь показываются и в попапе: сбой сохранения при переключении правила больше не остаётся незамеченным
- Сбой загрузки CDN-модулей больше не останавливает применение стилей во всех вкладках
- Паттерн с подстановкой в домене (
https://*.example.com) больше не срабатывает, когда целевой адрес спрятан в параметрах чужой ссылки - Перетаскивание библиотек больше не откатывается, если в этот момент пришло изменение из другого окна
- Исправлена потеря правил при обновлении с версий 2–8: данные старого формата стирались до того, как миграция успевала их прочитать
- Кнопка «Загрузить в облако» заблокирована, пока данные не мигрированы: раньше ею можно было затереть рабочий бэкап неисправными данными
- Восстановление из уцелевшей старой копии срабатывает и когда облачный бэкап повреждён в середине
- Трекинг применённых стилей больше не упирается в лимит служебного хранилища при широких правилах и множестве вкладок
- Включение Developer mode подхватывается и в браузерах без session storage
- Стили SCSS, докомпилированные при открытии настроек, теперь сразу применяются на страницах — раньше требовалось пересохранить правило вручную
- После восстановления данных из облака (или сброса) расширение снова начинает применять стили без перезапуска браузера
- Время изменения правила больше не теряется, если во время сохранения пришло изменение из другого окна
- Правки, сделанные в настройках, больше не теряются при одновременном изменении из попапа: результат слияния теперь дописывается на диск, а не остаётся только на экране
- Ошибка сохранения показывается один раз, а не потоком уведомлений при каждой правке
- Удалённое в другом окне правило больше не всплывает обратно, если его контент читался в этот момент
- Переключение «!important» больше не откатывается следующим нажатием клавиши: пересобранный стиль остаётся в редакторе и на диске
- Сбой компиляции стиля при автосохранении больше не отменяет сохранение набранного кода
- Если правило удалили в другом окне, редактор сообщает об этом, а не делает вид, что сохранил изменения
- Откат расширения на более старую версию больше не перезаписывает данные нового формата: они остаются нетронутыми в режиме «только чтение»
- Остатки данных очень старых версий убираются с диска и больше не занимают место в облачной копии
- Восстановление из облака больше не сбрасывает пометки «черновик» и «ошибка» у открытого правила
- Ошибка при загрузке файла бэкапа или сбросе хранилища теперь показывается, а не проходит незаметно
- Импорт неполного файла бэкапа больше не ломает работу расширения до перезагрузки страницы
- Сохранение правила, начатое до восстановления из облака, больше не записывается поверх восстановленных данных
- Если компиляция стиля не удалась при сохранении, правило больше не остаётся с CSS от предыдущей версии кода: пересборка выполнится при следующем открытии настроек
- Только что созданное правило больше не исчезает из списка, если в этот момент пришла запись из другого окна
- Настройки редактора, изменённые одновременно в двух окнах, больше не откатывают друг друга
- Загрузка не того файла в «Загрузить JSON» больше не стирает все правила: пустой или неподходящий файл отклоняется с ошибкой
- Импорт файла без части данных больше не оставляет в списке правила, которых уже нет
- Страница настроек больше не остаётся пустой, если данные не удалось загрузить — показываются дефолты и уведомление об ошибке
- Восстановление из облака во второй вкладке больше не стирает библиотеки и настройки, которых оно не касалось
- Повреждённый файл бэкапа отклоняется до записи, а не после того, как данные уже заменены
- Уведомления, возникшие в момент открытия страницы, больше не теряются
- Страница настроек открывается и после импорта файла без блока настроек — берутся значения по умолчанию
- Импорт файла без библиотек больше не отменяется вторым открытым окном
- Правило, сохранённое после переключения на другое, больше не остаётся помеченным как черновик
- Переключение между правилами больше не переносит пометку «черновик» на предыдущее правило
- Файл бэкапа с повреждёнными записями правил отклоняется целиком, а не после записи на диск
- Импорт бэкапов, сделанных старыми версиями расширения, снова работает
- Восстановление из облачной копии старого формата снова работает
- Настройки, изменённые в другом окне, больше не откатываются, если на диске их ещё не было
- AltGr+S (польская и похожие раскладки) снова печатает букву, а не сохраняет правило
- В режиме «только чтение» удаление правила больше не стирает данные, которые расширение защищает от перезаписи
- Только что добавленная библиотека больше не исчезает при одновременной записи из другого окна
- Ошибка удаления правила теперь видна, а не проходит незаметно при закрытии диалога
- Сбой восстановления из облака показывает настоящую причину, а не сообщение о режиме «только чтение»
- Если данные не удалось загрузить, изменения больше не сохраняются вообще: раньше первая же правка могла стереть список правил (сами правила при этом оставались на диске). Показывается уведомление с просьбой перезагрузить страницу
- После успешного восстановления из облака сохранение снова работает без перезагрузки страницы
- Импорт очень старых бэкапов (версии 2–8) снова работает
- Ошибка удаления библиотеки теперь видна; удаление библиотеки, отсутствующей в списке, больше не удаляет другую
- Галочка «лигатуры» в настройках редактора снова соответствует тому, как выглядит код
- Если библиотеку не удалось удалить, она остаётся в списке — и попытку можно повторить
- Переключение «!important» при недоступной компиляции больше не оставляет правило с прежним стилем навсегда — пересборка выполнится при следующем открытии настроек
- Разрешение на инструменты для ИИ-агентов больше не сбрасывается при перезагрузке страницы настроек
- Секрет моста к MCP-серверу переживает импорт, сброс и восстановление из облака — подключённый агент не теряет доступ молча
- Секрет моста больше не меняется при открытии страницы настроек — подключённый MCP-сервер не теряет доступ
- Команда подключения MCP-сервера на странице настроек запускает его под node: под bun мост молча не поднимался
- ИИ-агент видит и меняет настройки расширения и поведение правил (запуск до загрузки страницы, изолированный мир, вложенные фреймы, строгий URL, исключение из облака)
- Инструменты для ИИ-агентов больше не роняют ошибку в консоль на сайтах, которые используют document.domain
- ИИ-агент видит, почему правило не работает: браузер отказал в регистрации скрипта или не собрался стиль
- Скрипты правил названы в DevTools по имени правила — в консоли сразу видно, какое из них выдало ошибку, вместо
<anonymous>
Исправления интеграции с агентами
Импорт через агента с заменой (
import_storage) отмечает правила, чей SCSS не собрался:get_diagnosticsнаходит их по этой отметке, а раньше пропускалget_diagnosticsбольше не сообщает об отказе регистрации скрипта, который на самом деле стоит. Раньше импорт или перерегистрация от агента, совпавшие с сохранением правила или со страницей настроек, давали ложный отказ «duplicate id»Библиотека, скачанная фоном (первый запуск, восстановление из облака, импорт), сразу попадает в правила: раньше правило продолжало работать без её кода до ручного «Обновить» в карточке библиотеки
ИИ-агент видит библиотеку, которая числится в списке, но ни разу не скачалась:
get_diagnosticsназывает её причиной,list_librariesпоказывает размер кэшаСтиль, исправленный ИИ-агентом, пересобирается: раньше правка SCSS или флага important через агента сохранялась, а на страницах оставался стиль от прежнего кода
Стиль правила, записанного внешним агентом через MCP, собирается сразу, а не при следующем открытии страницы настроек. То же с импортом через агента и со стилем, чья сборка однажды сорвалась: расширение добирает его само при следующем запуске. Ошибка в таком стиле видна значком в списке правил и в диагностике агента
Отказ регистрации инструментов у агента в браузере пишется в консоль один раз и текстом, а не двадцать раз; настройки не называют WebMCP работающим, пока он отклонён