Skip to main content
Personas were retired in Sundial 2.0. This page documents what replaced the system this URL used to describe.
Sundial 1.0 let a selected persona recolor the app through five accent palettes (plum, apricot, olive, damson, cherry). Sundial 2.0 removes that axis entirely: the app has one accent — brand Lavender Blue — and themes vary only by brightness.

What changed

  • AccentPalette and the ten per-persona AccentColors statics are deleted. Two instances remain: AccentColors.lavenderLight / .lavenderDark, wired into AppTheme.light / .dark.
  • AppTheme.fromPalette(palette, brightness) is gone — construct with AppTheme.light or AppTheme.dark.
  • ThemeOverride is brightness-only: it flips a subtree light/dark (dark chrome over a photo, a dark-locked sheet) and no longer accepts a palette.
  • Server-driven UI ignores palette hints: the SDUI themeOverride component honors brightness and drops ACCENT_PALETTE_* values (the proto enum survives — resolver cases are never deleted — but every palette resolves to lavender).

Why

Persona expression moves to content — voice, illustration, conversation — rather than repainting the interface. One accent keeps the bright-solid grammar coherent (a pale solid taking dark content only works if the solid is known), makes contrast guarantees provable once, and lets brand color carry recognition consistently across every surface.

If you need per-surface color

Brand expression on cards and spotlight surfaces uses the mode-invariant brand surface tokens (surfaceBrandGreen, surfaceBrandOrange, …) with their paired on-brand inks — a per-card choice, not a theme axis.