Rosewash is a lightweight Manifest V3 browser extension that tints harsh white web pages with restrained, curated color palettes. The current MVP ships with Rose Pine Dawn and Moon.
The first version is intentionally small: it does not try to become a full dynamic theme engine. It finds pure-white and near-white backgrounds, replaces them with warm paper tones, adjusts neutral dark text, and leaves media and code surfaces alone.
- Auto / Dawn / Moon mode.
- Global enable switch.
- Per-site block list.
- Near-white background and border tinting, including default transparent page canvases used by older sites such as jmlr.org.
- Page-level headers and navigation bars blend into the active page base,
including colored top bars such as arXiv's and Zhihu
AppHeadershells (forced even when styled via CSS-in-JS). - Dark-only page detection that adapts dark native sites to Dawn in Auto-light or manual Dawn mode.
- CSS Color 4 tone detection for modern
lab(),oklab(),lch(), andoklch()authored pages. - Moon mode turns dark neutral text into Rose Pine Moon text, even when the text sits on a transparent child element.
- Media, canvas, SVG, inputs, editors, and code block protection.
- No runtime dependencies or build step.
| Site | Dawn | Moon |
|---|---|---|
| Wikipedia | ![]() |
![]() |
| GitHub Docs | ![]() |
![]() |
| Python Docs | ![]() |
![]() |
| arXiv | ![]() |
![]() |
Rosewash is not on the Chrome Web Store. Install from a GitHub Release instead. Works in Chrome, Edge, Brave, Helium, and other Chromium browsers.
- Open the latest release.
- Download
rosewash-vX.Y.Z.zip(for examplerosewash-v0.1.0.zip). - Extract the zip to a stable folder you will keep (do not delete it later; Chromium loads the extension from that path).
- Open the extensions page:
- Chrome / Brave / Helium:
chrome://extensions - Edge:
edge://extensions
- Chrome / Brave / Helium:
- Enable Developer mode.
- Click Load unpacked and select the extracted folder that contains
manifest.json(not the zip itself).
To update later: download the newer release zip, replace the extracted folder contents, then click Reload on the extension card. Reload any already-open tabs once so pages pick up the new content script.
Chrome may show a developer-mode warning on each browser restart. That is expected for sideloaded extensions and is safe to dismiss.
For local development:
- Clone this repository.
- Open
chrome://extensions(or the equivalent page above). - Enable Developer mode.
- Load unpacked and select this project folder (the one that contains
manifest.json).
After reloading the unpacked extension, reload any already-open test tabs once. Chrome leaves old content scripts in existing page contexts after extension reloads; Rosewash guards new scripts against that state and clears stale Rosewash inline styles when the new script starts, but old injected scripts cannot be patched in place.
just test
just validate
just check
just packagejust package writes .tmp/rosewash.zip.
GitHub Actions publishes a release zip whenever a version tag is pushed:
git tag v0.1.0
git push origin v0.1.0The workflow runs just package, then uploads rosewash-v0.1.0.zip to the
matching GitHub Release. It can also be run manually against an existing tag
from the Actions tab.
| Token | Dawn | Moon |
|---|---|---|
| Base | #faf4ed |
#232136 |
| Surface | #fffaf3 |
#2a273f |
| Overlay | #f2e9de |
#393552 |
| Muted | #9893a5 |
#6e6a86 |
| Text | #575279 |
#e0def4 |
Rosewash only changes the parts of a page that are likely to be eye-straining white surfaces, plus dark-only pages that expose no light appearance for Auto-light or Dawn users. It samples common document roots and SPA app roots so Tailwind-style pages can be classified without URL-specific rules. Complex app-specific theme engines, filter inversion, and site-specific rule packs are left for later versions. Future versions should add more theme presets through a shared palette registry instead of site-specific or theme-specific branches.
MIT.







