Dark mode for status.claude.com — Chrome/Firefox/Safari extension + userscript + GitHub Pages landing page.
GitHub: talkstream/claude-status-dark Landing page: https://talkstream.github.io/claude-status-dark/
Three delivery methods, one codebase:
- Browser extension (
extension/) — MV3, full features (dark CSS + popup + badge alerts + auto-polling) - Userscript (
userscript/) — dark CSS only, works via Tampermonkey/Userscripts - Landing page (
docs/) — install wizard with browser detection, hosted on GitHub Pages
| File | Purpose |
|---|---|
extension/content.css |
Master dark theme — 14 selector groups targeting Atlassian Statuspage classes |
extension/content.js |
MutationObserver for dynamic SVG fills, tooltips, modals |
extension/background.js |
Service worker: alarm polling (2 min), badge text updates |
extension/popup/popup.js |
Fetches /api/v2/summary.json, renders components + incidents |
userscript/claude-status-dark.user.js |
Standalone: anti-flash + CSS injection + SVG recoloring |
docs/index.html |
Landing page with install wizard, share buttons, FAQ |
content.css is the source of truth for all CSS rules.
When editing CSS:
- Edit
extension/content.css - Manually sync changes into
userscript/claude-status-dark.user.js(CSS is embedded in a template string) - Copy userscript to
docs/claude-status-dark.user.js
| Token | Hex | Usage |
|---|---|---|
| bg-page | #1a1816 |
Page background |
| bg-card | #242220 |
Cards, modals |
| bg-elevated | #2a2826 |
Headers, footers |
| text-primary | #e8e4de |
Primary text |
| text-secondary | #9b9790 |
Secondary text |
| text-muted | #5a5852 |
Timestamps, hints |
| border | #3a3734 |
All borders |
| border-hover | #4a4844 |
Hover borders |
| accent | #c8a97a |
Warm gold — links hover, focus rings |
| green | #8cc63f |
Operational |
| yellow | #fbb44c |
Minor / degraded |
| orange | #f07850 |
Major outage |
| red | #ef5555 |
Critical |
| blue | #4a9ce8 |
Maintenance, links |
Real class names used by Atlassian Statuspage (important — don't guess these):
.page-status.status-none/.status-minor/.status-major/.status-critical.component-inner-container.status-green/.status-yellow/.status-orange/.status-red/.status-blue.unresolved-incident.impact-none/.impact-minor/.impact-major/.impact-critical/.impact-maintenance- SVG fills are set inline:
#76AD2A,#FAA72A,#E86235,#E04343,#2C84DB,#B0AEA5,#DEDCD1,#FAF9F5
- Chrome:
chrome://extensions→ Developer mode → Load unpacked →extension/ - Open popup → verify loading animation, component list, refresh button
- Visit status.claude.com → verify dark theme, no white flash, tooltips dark
- Test subscribe modal → verify dark background, input focus styles
- Landing page: open
docs/index.htmllocally or via GitHub Pages
git add -A && git commit -m "..." && git pushGitHub Pages auto-deploys from docs/ directory on push to main.
sed -i ''(BSD sed)- Icon generation requires
librsvg(brew install librsvg) - Safari build requires Xcode