Skip to content

v0.3.0

Choose a tag to compare

@tompassarelli tompassarelli released this 18 Jun 20:05
2a5de96

Dark mode, done right

gjoa is dark-first — and dark mode now ships on by default, driven by your system theme.

  • Per-site hybrid. Sites with a real dark theme (GitHub, Reddit, …) get their own designed dark theme. Everything else is inverted at the engine's style-resolution stage — cached, zero per-frame cost, none of Dark Reader's repaint tax.
  • No flash. A pre-paint polarity flip brings themeless pages up dark on the first paint — no white flash before the invert lands.
  • System-driven, with escape hatches. Follows your OS light/dark setting; discrete on / off / hybrid modes are a keystroke away as overrides.
  • Curated per-site fixes. A registry pins the tricky sites so they look designed, not merely inverted — with a pre-paint seed that kills transient flips. Hacker News in particular is now first-class.
  • Dark Reader → gjoa tool. Ports Dark Reader's per-site fix corpus into gjoa's engine-exact format, so curated coverage can grow fast.

Native tracking & ad blocking, deeper

Beyond network-level blocking, gjoa now neutralizes the class of first-party ad and tracking payloads that network blockers can't reliably reach — those delivered inline from a vendor's own origin. A document-start scriptlet runs in the page's main world (privileged, CSP-immune) and prunes ad descriptors before the page reads them, backed by adblock-rust's full scriptlet engine (use_resources) and the complete uBO scriptlet library — so every +js() rule any filter list ships now works.

A real new tab — and home page

A navigator's station at polar night: the sailboat mark over a cyan aurora, a faint starfield, a monospace chronometer. Forced-dark, pure-CSS, zero per-frame cost, wired at the engine level (AboutNewTab.newTabURL). It's your home / startup page too — the home button, new windows, and home-based startup all land here.

Tabs & spaces

  • Horizontal↔vertical orientation toggle no longer corrupts your tab trees across spaces.
  • Dragging a tab onto a group nests it below the group (was stranding it above).
  • vim T (all-windows tab search) searches every open space.
  • Spaces mirror your niri OS workspace name onto the active gjoa space.
  • Resolved the deferred tab/space audit bugs (session-restore, compact re-entry, …).

Chrome & discoverability

  • : ex-commands are now listed in the ? / :help overlay — the command set is self-documenting.
  • Nav-bar paints the chrome surface under vertical tabs (an FF152 regression); removed the white toolbox seam.
  • Cosmetic ad-blocking coalesces its dynamic-element scanning on script-heavy sites.

Under the hood

  • Intelligent test architecture: fast / slow / network lanes, per-subsystem + changed-file runs, a metrics ledger, and caches that cut the Racket-startup tax on every run.
  • Frozen-build fix: serde_json pinned in Cargo.lock for --frozen builds.

Built on Firefox 152.0.