Skip to content

Express Dimidium as a runtime theme entry #21

Description

@deanjstone

What

Move the Dimidium palette out of apps/web/src/index.css as a hand-edited :root override, and express it as an entry in upstream's runtime theming system (html[data-theme-id], the --app-theme-* token family) so it is selectable from Settings → Appearance like any other theme.

Why

The 2026-09-05 upstream sync (#20) resolved 21 conflicts, and 6 of them were in index.css alone — every one caused by this fork hard-editing the base palette in a file upstream actively develops.

During the six-week gap upstream built a proper runtime theming system and expanded the token set with roles the fork's palette never defined (--toolbar-*, --message-*, --error-surface, --update-*, --placeholder). The sync resolution took upstream's structure whole and appended Dimidium as a default-palette override — correct and working, but it leaves the same conflict surface in place for next time.

Expressing Dimidium as a theme entry instead would make index.css conflict-free on future syncs, since the fork would no longer be editing upstream's palette declarations at all.

The value is realised at the next sync, so this is worth doing before then rather than after.

Notes

  • Current state after chore: sync fork with upstream main (1295 commits) #20: Dimidium is appended last in index.css as a :root block with a @variant dark nested block, deliberately outranking upstream's :root by source order while still losing to html[data-theme-id]:not([data-theme-id=""]) on specificity.
  • Only base role values are overridden; derived roles (--destructive from --error, --ring from --primary, etc.) follow automatically via var() resolution. A theme entry would need to supply the --app-theme-* inputs instead.
  • Reference values are in that block: light #f5f3f1/#1a8e46, dark #141414/#37e57b.
  • Original palette commit: d3257c98a.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions