Skip to content

Releases: wolfgang371/crymbleui

v1.11.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 18:11
Release v1.11.0

switching to --release webassemblies

v1.10.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 17:14
Release v1.10.0

FEATURES
- crymble-web build --release is now LLVM-optimized (-O3): in the browser an app's own frame work runs
  2.6 to 5.9 times faster, and pages are about 40% smaller (Embrace 7.9 -> 5.1 MB, 1.85 MB gzipped).
  A release compile takes about 1.7 times longer; builds without --release stay quick (-O0).
- After updating, run bin/crymble-web setup once: the toolchain's compiler is rebuilt (a few minutes).
  crymble-web, tools/wasm/spec.sh and an app's own checks now refuse a toolchain built from anything
  else (tools/wasm/setup.sh --check), naming the stale step.

BUGFIXES
- Web builds could copy an object only partly (dup) or get its size wrong when one of its fields is
  typed by a generic module whose struct appears later in the program - in Embrace, Enter on a
  reference cell crashed the browser tab. A Crystal compiler bug (upstream too, on every target): the
  toolchain patch now computes these sizes from complete types, and a size that would still be wrong
  stops the build with an error naming it.

CLEANUP
- README and docs: the browser version is tested in Chromium and Firefox (Safari not yet).
- tools/wasm/spec.sh and check.sh run every part twice, unoptimized and optimized; new checks for
  exceptions in optimized code and for object sizes typed early.

v1.9.4

Choose a tag to compare

@github-actions github-actions released this 18 Oct 17:54
Release v1.9.4

Documentation only - no code changes.

CHANGES
- README: the links to the web how-to reach it. The New Features entry and the reference section were both
  headed "In a browser", so every link to that section landed on the New Features entry; the section is now
  "Building for the browser".
- README: "Try it in your browser" at the top lists the three apps running in a browser - the showcase,
  Minesweeper (the repository to start a web build from) and Embrace (https://h3o.de/demo); "Used by" links
  Embrace's demo too.

NOTES
- No code changed since v1.9.3; Windows behaviour is the same as v1.9.3.

v1.9.3

Choose a tag to compare

@github-actions github-actions released this 18 Oct 17:45
Release v1.9.3

Documentation only - no code changes.

CHANGES
- README, "In a browser": lists the apps that run in a browser today - the showcase
  (https://wolfgang371.github.io/crymbleui/), Minesweeper (https://wolfgang371.github.io/minesweeper/, a small app
  of its own with crymble-ui as a shard - the repository to start a web build from) and Embrace
  (https://h3o.de/demo, a large desktop app, unchanged).
- README: the browser requirement says "tested in Chromium so far", like the showcase link; Firefox and Safari are
  named as supported engines but not yet tried by hand.
- docs/WEB.md: new section "Apps built with it" - the three apps, and what Minesweeper shows a third-party app needs
  for its web build (a shard.yml target, the repository: the page links as its source, Pages publishing).

NOTES
- No code changed since v1.9.2; Windows behaviour is the same as v1.9.2.

v1.9.2

Choose a tag to compare

@github-actions github-actions released this 18 Oct 16:03
Release v1.9.2

CHANGES
- The default drag ghost shows its label centred, at the size the dragged item shows its own text, and grows to
  fit a label longer than the item - before, the label sat in the top-left corner at the base size and a longer
  one ran out of the ghost. Apps with a draggable's default ghost see this (no API change; a custom preview, such
  as VirtualMatrix's, is untouched).
- The showcase's drag chips carry the payload their labels show ("Text A", "Widget").
- README: crymble-ui in the browser at the very top - a live-demo badge, "Try the showcase in your browser"
  (https://wolfgang371.github.io/crymbleui/); the web how-to moved to the reference part, linked from New Features.

NOTES
- Windows: the whole spec suite type-checks for Windows; runtime behaviour on Windows is verified by CI on this
  release.

v1.9.1

Choose a tag to compare

@github-actions github-actions released this 18 Oct 14:48
Release v1.9.1

The README links the live showcase: https://wolfgang371.github.io/crymbleui/
(mouse and keyboard; tested in Chromium; ~1.5 MB download).

v1.9.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 14:30
Release v1.9.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.

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

NOTES
- v1.8.0's release notes listed the three features and the change above, but v1.8.0 does not contain them - they
  ship with this release.
- 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.

v1.8.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 14:24
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.

v1.7.2

Choose a tag to compare

@github-actions github-actions released this 09 Oct 18:39
Release v1.7.2

BUGFIXES
- Testing::Driver: select_file / open_file now take a path built with File.join. On
  Windows its \ separators made the whole path one row name, so a nested pick failed
  with 'no "dir\sub\x" in ...'. The Driver splits paths the way the platform does.
- Two folder browser specs compared the opened file against a "/" path and failed on
  Windows; they use the platform separator now.

v1.7.1

Choose a tag to compare

@github-actions github-actions released this 09 Oct 18:03
Release v1.7.1

BUGFIXES
- The spec suite did not compile on Windows: the example for a folder locked with
  chmod 000 called LibC.getuid, which Windows does not have. The example is pending
  there (chmod 000 does not lock a folder on Windows); the library itself is unchanged.