Skip to content

v1.8.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 14:24
· 7 commits to main since this release
Release v1.8.0

FEATURES
- In a browser: any crymble-ui app builds, unchanged, as a static web page - the same Crystal compiled to
  WebAssembly, drawing on an HTML canvas through a second backend that paints the desktop's pixels. No line of the
  app changes, nothing is compiled conditionally. bin/crymble-web, installed into your app's bin/ by
  `shards install`: `setup` (the toolchain, once; Linux x86_64), `build [TARGET|FILE.cr] [--release] [--local]`,
  `serve`. The result is a folder of static files; the app runs only in the visitor's tab. docs/WEB.md.
- WindowRenderer: the platform-neutral half of the window renderer. A host drives its loop with `start` + `tick`
  (the browser does); SFMLRenderer#run is unchanged.
- CrymbleUI.backend_notices: the lines an app's About should show for the backend it was built with (SFML on the
  desktop, the canvas in a browser) and the embedded font.
- fitted { }: a container that scales its content uniformly to the space it is given; text is rasterised at its
  final size and a click lands where it is drawn. Tutorial 30.
- F6 / Shift+F6 walk the parts of the keyboard's panel - the way out of a grid, which keeps Tab for its cursor.
- window_panel(home_focus: "id"): where the keyboard lands in a panel with no memory of one.
- A shortcut can name the period and comma keys (Ctrl+., Ctrl+Comma).
- A window answers its panel area before its first layout; a build can ask for the window it is building
  (current_window).
- Testing::Driver acts as a press does (focus on click, then the raise); press_title, close_panel; type(text) goes
  to whatever holds the keyboard.

CHANGES (see docs/MIGRATION.md)
- The panel in front holds the keyboard, and Tab stays inside it: a raise (a press, Ctrl+Tab, a panel opened or
  reopened, the panel open at launch) hands the panel the keyboard; panel shortcuts follow the keyboard's panel;
  Enter and Space press a focused button, checkbox, tab or section header first.
- A panel the user never moved lies inside its window on both axes. WindowPanel#user_moved is now user_moved_x,
  beside user_moved_y.
- Only a widget that paints the focus flash is flashed (Button, Checkbox; Widget#paints_focus_flash?): a focused
  grid, text input, combo box, tab or section header no longer redraws every 300 ms for nothing.

BUGFIXES
- A rebuild that changed nothing re-rendered the whole panel holding the keyboard; it re-renders nothing now.
- A panel changed while covered could show stale content once revealed.
- A menu's background did not cover its whole widget.

NOTES
- Windows: the whole spec suite and the examples type-check for Windows; runtime behaviour on Windows is verified
  by CI on this release.
- The web flavour is tested in headless Chromium (pixel conformance against the desktop, browser smoke tests);
  Firefox and Safari not yet by hand.