@qxuken/kui 0.1.0-alpha.44 → 0.1.0-alpha.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -21,6 +21,98 @@ listed under both (backlog F61, from the alpha.12 field reports: the list
21
21
  is what the release knows it broke, and a fix it did not think of as one
22
22
  was the first bare bump to break an app in five releases).
23
23
 
24
+ ## 0.1.0-alpha.45 (2026-10-08)
25
+
26
+ **What breaks.**
27
+
28
+ - A menu row whose accelerator would leave its label under 48 px — a
29
+ window narrower than the accelerator with its gaps — draws the
30
+ accelerator cut short with "…" and the label's first glyphs, where it
31
+ drew the whole accelerator past the panel's edge and no label (under
32
+ Fixed, RG154).
33
+ - A `menu_panel` floating in the viewport whose caller declared its
34
+ ceiling as a size expression (`max_width(Bound::Calc(..))`, `"50%"`)
35
+ bounds its labels by that ceiling read against the window, where it
36
+ bounded them by the window alone (under Fixed, RG154). A panel
37
+ anchored elsewhere keeps the window as its labels' bound.
38
+ - A menu bar the app leaves out of a frame while a submenu switch waits
39
+ its 0.3 s starts the wait again when the bar is back, where the switch
40
+ went through at once on the next build (under Fixed, RG154).
41
+ - Windows and Plasma: a `Blur` or `Tinted` window on a desktop with no
42
+ wallpaper kui can read is `Opaque` from its first frame again, as it
43
+ was in alpha.43; alpha.44's `Tinted`-then-`Opaque` is GNOME's alone
44
+ now (under Fixed, RG154).
45
+
46
+ ### Fixed
47
+
48
+ - **The accelerator is bounded too** (backlog RG154, from the alpha.44
49
+ pre-tag pass). A row's label was what the panel's width bounded, and
50
+ its accelerator was drawn whole: in a window narrower than the
51
+ accelerator the label shrank to nothing and the accelerator ran past
52
+ the panel, which is what RG150 set out to stop. The label keeps a
53
+ floor of 48 px (`widgets::MENU_LABEL_MIN`) and the accelerator takes
54
+ what that leaves, ending in "…". And a ceiling declared as a size
55
+ expression on a panel floating in the viewport now caps the labels as
56
+ a px one does, read against the window; a panel anchored to a node
57
+ keeps the window's ceiling for its labels, since the room layout will
58
+ read the expression against is not placed when the rows are built.
59
+ - **A menu bar the app stops drawing owes no frames** (backlog RG154).
60
+ A submenu switch waiting its 0.3 s was cleared by the next build of the
61
+ bar's menu; an app that stopped drawing the bar inside the wait (or
62
+ handed it to the platform) kept the switch, and the frames it owed,
63
+ for good. A frame that builds no menu on a surface drops the switch
64
+ waiting there.
65
+ - **Windows and Plasma: no wallpaper, opaque from the first frame**
66
+ (backlog RG154). RG150 moved finding the wallpaper's path to the
67
+ loader's thread for GNOME's sake, where it is up to three `gsettings`
68
+ processes; on Windows it is one call and on Plasma one file read, so
69
+ the loop asks there and a window with none to draw never reads
70
+ `Tinted` first. GNOME keeps the thread. Windows run on screen;
71
+ Plasma compiled and read.
72
+
73
+ **What you can delete.**
74
+
75
+ - A shorter accelerator chosen for a menu that has to fit a narrow
76
+ window (RG154).
77
+ - A frame an app requested itself after stopping its menu bar, to let
78
+ the core settle (RG154).
79
+
80
+ ### Native verification
81
+
82
+ The by-hand round alpha.6 introduced (backlog R4), on 2026-10-08, over
83
+ RG154 — what alpha.44's pre-tag pass left — with alpha.45's pre-tag pass
84
+ over it on the Windows machine and under WSLg: the mechanical round on
85
+ both, then a read-only review of the diff since alpha.44, each claim
86
+ probed. It filed nothing; its one finding, a `Calc` ceiling read against
87
+ the window for a panel anchored elsewhere, was corrected inside RG154
88
+ before the tag.
89
+
90
+ **Windows**, the pre-tag pass. fmt and clippy are clean; `nu
91
+ scripts/test.nu --node`: **2148 tests over 143 suites**, 0 failed. The
92
+ C round passes (6 checks), and so do the **57 scenes** through Rust,
93
+ Lua, C, Node and Odin; the Odin binding's four steps with CI's pinned
94
+ `dev-2026-09`; Node's tests under `KUI_CONFORMANCE_REQUIRED=1` (**218 of
95
+ 219**, the one skip Windows'), `npm run gen` with no diff, the
96
+ examples' typecheck and the headless round. The windowed round with
97
+ Node's: **53 examples on both bases**, clean on a first run; `counter`
98
+ and `host` opened by hand after `cbuild`, and the backdrop examples
99
+ opened with and without `KUI_BACKDROP_EMULATE`. The bench guard against
100
+ the alpha.44 tag, on a quiet machine: **green**, the eight guarded rows
101
+ −0.7% to +2.1% (`frame_10k_rects_with_access_tree` the high one), the
102
+ worst run-to-run spread 3.5%. A first run beside the WSL round read two
103
+ rows unreadable at 13 and 21% spread, which is why it was run again.
104
+
105
+ **Linux**, under WSLg (llvmpipe), the same commit: fmt and clippy
106
+ clean; `cargo test --workspace`: **1926 tests over 142 suites**, 0
107
+ failed; the C round (5 checks) and the 57 scenes through every adapter,
108
+ Node **219 of 219** with the corpus required, gen clean, the typecheck,
109
+ the headless round. The windowed round under X11 with Node's: **53
110
+ examples on both bases**, clean on a first run, two at a time. The
111
+ backdrop examples under X11 read no wallpaper (WSLg has none to name)
112
+ and went `Opaque`, as they should; Plasma's on-the-loop read is
113
+ compiled and read, not run. No Mac ran this round: the AX audit is CI's
114
+ and the next Mac round's.
115
+
24
116
  ## 0.1.0-alpha.44 (2026-10-08)
25
117
 
26
118
  **What breaks.**
package/howto.md CHANGED
@@ -816,7 +816,8 @@ post the same `item`. A host that shows menus itself reports one with
816
816
  `accel` in the portable spelling (`"mod+shift+n"`) is drawn the
817
817
  platform's way, and the menu widens to its longest row, up to the window
818
818
  less a margin (and never below the metric's menu width), where a longer
819
- label ends in an ellipsis. On the frame
819
+ label ends in an ellipsis — and past the label's 48 px floor, the
820
+ accelerator does. On the frame
820
821
  clock, an open submenu waits 0.3 s before giving way to a row the
821
822
  pointer crosses, so a diagonal path into it does not close it.
822
823
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qxuken/kui",
3
- "version": "0.1.0-alpha.44",
3
+ "version": "0.1.0-alpha.45",
4
4
  "description": "kui for Node: JSX views lowered into the kui IR, Elm-style messages as data",
5
5
  "license": "MIT",
6
6
  "repository": {
Binary file
Binary file
Binary file