Repository navigation
Releases: wolfgang371/crymbleui
Releases · wolfgang371/crymbleui
Release list
v1.11.0
v1.10.0
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
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
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
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
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
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
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
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
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.