Files
RustBox/docs/ROUNDCUBE_SKIN_VALIDATION.md
T
Mateusz Gruszczyński fff8521a17
RustBox CI / rustbox (push) Waiting to run
v0.0.2
2026-10-29 19:28:47 +01:00

1.7 KiB

Roundcube skin validation

This snapshot maps RustBox components onto the official Roundcube Classic and Elastic visual tokens and adds a Larry-compatible fixed interface style.

Source mapping

  • Classic Light: skins/classic/common.css and Classic mail styles: #F6F6F6 page background, #F2F2F2 box background, #CC3333 selected message/accent, #929292 selected folder, square controls, Lucida/Verdana/Arial stack.
  • Classic Dark: upstream Classic has no official dark mode. RustBox preserves the Classic red/gray hierarchy, square controls and gradients while adapting surfaces/text for dark contrast.
  • Elastic Light: skins/elastic/styles/colors.less and variables: #37beff main, #00acff link/accent, #f4f4f4 header, #ddd borders, white list/content surfaces.
  • Elastic Dark: upstream dark tokens: #21292c background, #c5d1d3 text, #4d6066 border, #374549 selected row, #2f3a3f dark header/task surface.

Automated checks

python3 tests/roundcube_skin_contract.py

The test verifies all migrations on a blank SQLite database, interface_skin, saved-response format, unique HTML ids, SVG back-arrow markup, both skin/theme selector pairs, upstream palette tokens, CSS parseability and frontend/backend registration.

scripts/bundle-ui-js.py --output /tmp/rustbox-ui.js followed by node --check /tmp/rustbox-ui.js validates the JavaScript manifest as one build artifact. ui/app.js is the generated standalone snapshot and is checked separately.

The browser fixture in tests/theme_fixture.html is rendered with the real bundled CSS. Validation screenshots in tests/theme-shots/ cover Classic Light/Dark, Elastic Light/Dark and both mobile drawer variants.