Implement tonal foundations for Dataface neutrals
Problem
Implement the initial tonal foundation decisions for the Dataface neutral system in the product defaults.
Context
- A design note now captures the intended direction for Dataface neutrals:
darkest default ink at
#1A1A1A, a slightly off-white app canvas, and white cards / primary working surfaces. - This task was created from a docs-only PR that records the tonal rationale and queues the implementation work separately.
- The implementation should preserve the distinction between app-frame colors and white working surfaces, rather than flattening everything to one neutral background.
- The work likely touches theme defaults, config surfaces, and any supporting docs that explain the chosen neutral system.
- The implementation should keep the Dataface chart/style boundary intact: theme owns visual paint decisions, while structure owns scaffold decisions.
Possible Solutions
- Recommended: Update the core default theme/config surfaces to reflect the new neutral frame direction, then document the resulting defaults where users discover styling behavior. This keeps the tonal decision centralized and makes future theme work derive from an explicit baseline.
- Add a separate new theme instead of changing defaults. Trade-off: safer for backward compatibility, but it does not actually establish tonal foundations for the default product frame.
- Limit the work to docs only. Trade-off: captures intent, but leaves product defaults inconsistent with the documented direction.
Plan
- Identify the current default theme/config surfaces that control page background, surface background, and primary ink.
- Update those defaults to reflect the new tonal foundation decisions.
- Review adjacent built-in themes or styling docs for any assumptions that now conflict with the new neutral baseline.
- Verify the updated defaults in docs/examples or targeted tests as appropriate.
Implementation Progress
- 2026-03-23: Task created and marked
readyfrom the tonal-foundations docs PR. No theme or config implementation has shipped yet. - 2026-03-24: Implementation started.
- Core config: Added
page_canvas: "#fafafa"totheme_derivation.defaultsindefault_config.yml, formalizing the off-white page canvas as a named default alongside the existingbackground: "#ffffff"(working surfaces) andtext_color: "#1a1a1a". - Cloud CSS: Aligned
--color-textfrom#111827to#1a1a1ainsuite.cssto match the tonal foundation ink default. - IDE extension: Aligned preview text color in
render-markdown-face.tsand error fallback inpreview-manager.tsfrom#111827to#1a1a1a. - Docs: Updated
styling.mdboxplot example color to#1a1a1a. - Internal tooling: Aligned tasks server and stylesheet text colors.
- Tests: Added
test_tonal_foundations.pyverifying config defaults, theme derivation, and extracted theme colors match the spec. - 2026-03-24 later follow-up: the chart-library M1 neutral-system discussion has
now refined this direction further. The earlier working assumption of pure white
chart/background surfaces is superseded in chart-library planning by adopting
Fivetran
gray-025#FAFAFAas the preferred lightest background/surface tier, and the earlier darkest-ink reference to#1A1A1Ais superseded by Fivetrangray-90#222222. This task remains the implementation record for the initial tonal-foundations change, but the newer M1 chart-library task now carries the more specific token-level direction.
QA Exploration
- [x] N/A — changes are to default color tokens in config, CSS variables, and fallback strings. No new UI flows or interactive behavior introduced.
Review Feedback
- [ ] Review cleared