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

1.6 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.

build.rs consumes src/web/js/manifest.txt during Cargo builds. For a standalone syntax check, concatenate the manifest entries in order and run node --check on the resulting .js file.

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.