Skip to content

v0.9.17 — FlatLaf Visual Identity for builder, Spinner Crash Fix

Latest

Choose a tag to compare

@mjtrac mjtrac released this 22 Jul 05:10

Highlights

  • New visual identity for builder: FlatLaf-based theme (PbssTheme) — a paper/ink/civic-teal palette grounded in the actual subject matter (paper ballots, official process), flat design, applied before Spring eagerly constructs MainFrame (the previous UIManager.setLookAndFeel() call ran after every screen was already built — a latent no-op).
  • Dashboard step cards (the 1–7 + Print landing screen) each get a distinct color from a warm-to-cool progression — configurable via dashboard.card.colors in application.properties.
  • Numeric spinners no longer stretch to fill their form row — capped to a comfortable ~4-digit width instead of stretching edge-to-edge like a text field.
  • Fixed a real crash/lockup bug, found by hand and confirmed against a real database: candidates created via bBuilder's REST API (test-harness/build_election.py) never set displayOrder, leaving it at Java's default of 0. The candidate table's new Order spinner used a model with minimum 1, so opening the editor on any such candidate threw IllegalArgumentException and left it broken — the spin arrows did nothing, and typing into it produced a system beep instead of accepting input. Fixed the model's bounds, and audited/fixed every other spinner across builder and scanner with the same minimum-vs-possible-zero-stored-value risk (ballot design template's columns/typography/RCV spinners, scanner's DPI spinner) — several of those would have crashed their dialog on open outright. Added a permanent regression test.
  • Fixed a latent hang in ScreenshotGenerator (the dev screenshot tool): it seeded data after Spring had already built MainFrame, so a genuinely fresh database would hang forever on the same blocking-dialog issue fixed earlier for the GUI test suite. Restructured to seed first.

Notes

All thirteen module pom.xml files bumped to 0.9.17. builder-core, counter-core, scanner-core, and all ten dependent apps verified to install/compile cleanly at this version. builder's full suite (21 tests) passes cleanly with no skips on this run.