macOS · Safari extension Safari extension build

FreeDark

A Safari dark-mode engine with per-site controls, tone tuning, schedules, and a privacy-first local posture.

Briefly

A small Safari extension that tries to make dark mode useful without turning into another tracking layer.

FreeDark is a Safari dark-mode extension that themes pages locally without adding tracking. The README has moved well past a toy extension: content scripts, toolbar popup, options UI, schedules, tone controls, per-site rules, and stylesheet handling are all part of the design.

The interesting part is the engine work. It tries CSS-variable remapping and page-level styling first, has fallbacks when a site is messy, and treats external stylesheet fetching as something that needs guardrails rather than blind trust.

The page shows the extension from local files and a controlled before/after capture, not a public release.

What I built

  • Manifest V3 extension with content scripts, background worker, popup, options, and Safari wrapper work.
  • Per-site controls let dark mode be useful on real sites instead of pretending one global setting fits everything.
  • Tone controls and scheduling make the extension feel more like a daily tool than a visual filter.
  • Stylesheet fetching is designed with SSRF-style guardrails, and the privacy story stays local-first.

A few notes

  • The extension already has Safari before/after theming, toolbar popup, options, and per-site controls.
  • The README describes dynamic theming, CSS variable handling, fallback filters, schedules, tone controls, and privacy posture.
  • The extension description is privacy/local-first: dark mode without accounts, tracking scripts, or analytics.