Skip to content

Release v0.3.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 08:19
0198012

Added

  • SizeClassCalculator.Compute() (C#) / computeSizeClass() (TypeScript) - computes the current width x height size class from actual available dimensions, shared by every renderer so they all agree on when a class boundary is crossed. (#4)
  • FlowArrangementEvaluator.Evaluate() / evaluateFlowArrangement() - selects the most specific matching when width/height <class> override's tree for the current size class (both dimensions targeted beats one; the last declared wins among equally specific matches), falling back to the base tree when nothing matches. (#4)
  • FreeformArrangementEvaluator.Evaluate() / evaluateFreeformArrangement() - selects the placement variant with an exact size-class match, or nothing - deliberately no fallback, matching the language's own "warn, don't silently pick" design for a size class with no matching variant. (#4)
  • FlowArrangement gained an Overrides list (C#) / overrides (TypeScript) - the model previously had no field at all for Screenplay's when width/height <class> override construct, unlike FreeformArrangement which was already keyed by size class.
  • A shared JSON fixture corpus (layout-evaluation-fixtures.json) asserted independently by both the C# and TypeScript specs, following the same pattern established for the package resolver in #3/#9.

Notes

Per Scene#8's original design (confirmed against its merged PR description), Slot.Arrangement is per-slot, not per-layout - this evaluation engine works against that shape as-is and does not assume every slot in a layout shares one arrangement mode.