backend/v1.16.4
on dark host pages the widget flashed an opaque white rectangle while loading. the iframe element carries color-scheme from the theme param, but its document had none until remark.tsx ran, and a mismatched color-scheme makes the embedded canvas opaque instead of transparent. broken since #2023 added the element-side color-scheme to fix a firefox dark-mode bug. set the document's color-scheme from the theme param in an inline head script, before first paint, using the same rule as create-iframe.ts. that closes the long window but not the surface browsers paint before the document is parsed, which webkit renders white and chromium hides behind paint holding. so also create the iframe hidden and reveal it when the document posts inited, with a timeout fallback so a failed bootstrap cannot leave the widget invisible. the reveal lives in createIframe rather than embed.ts so the profile modal, the other caller, gets it too. that modal focuses its iframe on open, and a hidden element cannot take focus, so focus now fires from the reveal instead of a timer. covered by a unit test for the reveal paths and the event.source guard, and by e2e for the document's color-scheme and the iframe's visibility before inited, after inited, and after the fallback.
Remark42

Remark42 is a self-hosted, lightweight and simple (yet functional) comment engine, which doesn't spy on users. It can be embedded into blogs, articles, or any other place where readers add comments.
- Social login via Google, Facebook, Microsoft, GitHub, Apple, Yandex, Patreon, Discord, Telegram and custom OAuth2 providers
- Login via email
- Optional anonymous access
- Multi-level nested comments with both tree and plain presentations
- Import from Disqus and WordPress
- Markdown support with friendly formatter toolbar
- Moderator can remove comments and block users
- Voting, pinning and verification system
- Sortable comments
- Images upload with drag-and-drop
- Extractor for recent comments, cross-post
- RSS for all comments and each post
- Telegram, Slack, Webhook and email notifications for Admins (get notified for each new comment)
- Email and Telegram notifications for users (get notified when someone responds to your comment)
- Export data to JSON with automatic backups
- No external databases, everything embedded in a single data file
- Fully dockerized and can be deployed in a single command
- Self-contained executable can be deployed directly to Linux, Windows and macOS
- Clean, lightweight and customizable UI with white and dark themes
- Multi-site mode from a single instance
- Integration with automatic SSL (direct and via nginx-le)
- Privacy focused
Demo site available with all authentication methods, including email auth and anonymous access.
All remark42 documentation is available by the link.
Contribution
In order to start and work on the project locally in development mode check our contribution documentation for backend and frontend.
If you are interested in adding a new localization please check these docs.
Related projects
Languages
Go
69.4%
TypeScript
22.8%
CSS
3.2%
HTML
1.3%
JavaScript
1.3%
Other
2%
