Аппаратное ускорение Chrome вызывает невидимость курсора редактора при наличии onebox для календаря Discourse (Windows 11)

Версия Discourse
2026.1.0-latest (c7e9cddb06)

Браузер
Chrome 143.0.7499.170 (Официальная сборка) 64-бит
(когорта: развертывание 144.0.7559.59)

ОС
Windows 11 Home
Версия 10.0.26200 (Сборка 26200)


Краткое описание

При включенном аппаратном ускорении в Chrome возникает проблема с интерфейсом:

Каретка текста в редакторе становится невидимой (выглядит белой на белом фоне).
Это происходит, когда блоки событий плагина Discourse Calendar были обработаны (cooked).

Проблема немедленно исчезает при отключении аппаратного ускорения в Chrome.

Это указывает на проблему рендеринга GPU/компонента Chrome, взаимодействующего с элементами интерфейса Discourse, а не на регрессию чистого CSS.


Наблюдаемые проблемы

:one: Каретка в редакторе становится невидимой

  • Возникает как в редакторе создания новой темы, так и в редакторе ответа.
  • Каретка выглядит белой / сливается с фоном, из-за чего трудно или невозможно увидеть позицию ввода текста.
  • Происходит периодически, но воспроизводимо при включенном аппаратном ускорении.

Примечательное поведение:

  • Открытие инструментов разработчика Chrome (DevTools) немедленно заставляет каретку отобразиться нормально.
  • Это сильно указывает на пересчет рендеринга/композиции, а не на изменения состояния или CSS.

:two: Блоки событий discourse-calendar не создают превью (onebox) в безопасном режиме

При включенном аппаратном ускорении:

  • В /safe-mode это поведение меняется (что ожидаемо, так как компоненты тем отключены).

Воспроизведение

  1. Используйте Chrome на Windows 11 с включенной опцией «Использовать аппаратное ускорение при наличии»
  2. Откройте сайт Discourse, работающий на версии 2026.1.0-latest
  3. Откройте редактор и начните ввод текста
  4. Наблюдайте невидимую/белую каретку
  5. Вставьте или просмотрите блоки событий discourse-calendar

Невоспроизведение / диагностика

  • :cross_mark: Невозможно воспроизвести в /safe-mode
  • :cross_mark: Воспроизводится в режиме инкогнито (не связано с расширениями)
  • :cross_mark: Настройка пользовательского CSS отсутствует
  • :white_check_mark: Открытие инструментов разработчика Chrome (DevTools) немедленно исправляет проблему с кареткой
  • :white_check_mark: Отключение аппаратного ускорения Chrome полностью решает обе проблемы

Путь:

Chrome → Настройки → Система → 
[ ] Использовать аппаратное ускорение при наличии

После отключения:

  • Каретка отображается нормально
  • Превью событий (oneboxes) работают корректно
  • Проблема не воспроизводится

Примечания / гипотеза

Похоже, что это проблема взаимодействия GPU/компонента Chrome, потенциально связанная с:

  • рендерингом каретки в текстовых полях / ProseMirror
  • таймингом перерисовки или слоями фокуса
  • рендерингом превью (onebox) или расчетом макета при ускоренной композиции

Тот факт, что:

  • безопасный режим меняет поведение,
  • открытие DevTools вызывает немедленную коррекцию,
  • а аппаратное ускорение GPU полностью контролирует воспроизводимость,

сильно указывает на проблему рендеринга на уровне браузера, а не на регрессию Discourse, внесенную последними коммитами.


Предлагаемые подходы к отладке

Поскольку открытие DevTools изменяет поведение рендеринга, может помочь:

  • инспекция с помощью удаленных DevTools, а не локальных
  • тестирование с открытыми DevTools с момента начальной загрузки страницы
  • сравнение поведения с флагом --disable-gpu
  • просмотр вывода chrome://gpu на затронутых системах

Ключевые элементы для инспекции, когда проблема активна:

  • Элементы редактора:
    • textarea.d-editor-input
    • .d-editor .ProseMirror
  • Вычисленный рендеринг каретки (caret-color, слои композиции)
  • Тайминг перерисовки контейнера превью (onebox)

Обходной путь

Для затронутых пользователей на Windows 11:

Отключите аппаратное ускорение Chrome

Это полностью решает как проблему с кареткой в редакторе, так и поведение создания превью (oneboxing) для событий плагина Discourse Calendar.}

1 лайк