..
act.ludic
fix(lang): 0.R4 - ludic.ui's UiAct is its own, and a name that meets a package's export says whose it is
2026-09-26 06:57:35 +03:00
anim.ludic
ludic.ui: no number made text to be read back - a style handler returns before any text for a key not its own, grow/alpha/animations/scroll read numbers as numbers, el_secs split once per text, a tooltip translated when its title changes
2026-09-28 10:43:44 +03:00
attr.ludic
ludic.ui: no number made text to be read back - a style handler returns before any text for a key not its own, grow/alpha/animations/scroll read numbers as numbers, el_secs split once per text, a tooltip translated when its title changes
2026-09-28 10:43:44 +03:00
attr_border.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
attr_box.ludic
ludic.ui, runtime, compiler: an expression's Value comes from the screen's pool while it is built (never a state's start or an action's), true and false shared, calc() terms pooled and read in place, a model's list fields filled in place (value_set_ints/strs/floats/bools); reseeded
2026-09-28 01:05:35 +03:00
attr_edge.ludic
ludic.ui: no number made text to be read back - a style handler returns before any text for a key not its own, grow/alpha/animations/scroll read numbers as numbers, el_secs split once per text, a tooltip translated when its title changes
2026-09-28 10:43:44 +03:00
attr_fit.ludic
ludic.ui: splits, words, gradients and keys are made once per text (a bounded memo), sides without a list - benchmark 110 -> 63 KB a frame
2026-09-27 23:38:57 +03:00
attr_inset.ludic
runtime, ludic.ui: a scalar Value is one allocation, not three (lists only for a list or an object); layout and cascade lists kept a depth; small numbers' text made once - benchmark 63 -> 36 KB a frame
2026-09-27 23:43:25 +03:00
attr_more.ludic
ludic.ui: no number made text to be read back - a style handler returns before any text for a key not its own, grow/alpha/animations/scroll read numbers as numbers, el_secs split once per text, a tooltip translated when its title changes
2026-09-28 10:43:44 +03:00
attr_place.ludic
ludic.ui: no number made text to be read back - a style handler returns before any text for a key not its own, grow/alpha/animations/scroll read numbers as numbers, el_secs split once per text, a tooltip translated when its title changes
2026-09-28 10:43:44 +03:00
backend.ludic
ludic.ui: an unmounted component is mounted again rather than made again - its record renewed (a generated renew), its props and model kept; an action's call answers into a ring
2026-09-28 15:25:55 +03:00
build.ludic
ludic.ui: props kept an instance, a call's arguments a depth, a loop's index shared, an absent attribute's text without a Value; runtime Value.clear - benchmark 36 -> 20 KB a frame
2026-09-27 23:46:18 +03:00
build_class.ludic
ludic.ui, runtime, compiler: a component call's answer is written into a pooled record while the screen is built (call(p, name, args, into); value_into_*), a component root's passes pooled, an icon's atlas and name read in place; reseeded
2026-09-28 01:51:56 +03:00
build_more.ludic
ludic.ui: a screen's nodes and envs are pooled and used again - two generations a screen, reset in place, their own lists emptied not replaced; a tree is good until its screen is built twice more (benchmark 256 -> 110 KB a frame)
2026-09-27 23:33:48 +03:00
calc.ludic
ludic.ui, runtime, compiler: an expression's Value comes from the screen's pool while it is built (never a state's start or an action's), true and false shared, calc() terms pooled and read in place, a model's list fields filled in place (value_set_ints/strs/floats/bools); reseeded
2026-09-28 01:05:35 +03:00
calc_fns.ludic
ludic.ui, runtime, compiler: an expression's Value comes from the screen's pool while it is built (never a state's start or an action's), true and false shared, calc() terms pooled and read in place, a model's list fields filled in place (value_set_ints/strs/floats/bools); reseeded
2026-09-28 01:05:35 +03:00
calc_terms.ludic
ludic.ui, runtime, compiler: an expression's Value comes from the screen's pool while it is built (never a state's start or an action's), true and false shared, calc() terms pooled and read in place, a model's list fields filled in place (value_set_ints/strs/floats/bools); reseeded
2026-09-28 01:05:35 +03:00
cascade.ludic
ludic.ui: a screen's nodes and envs are pooled and used again - two generations a screen, reset in place, their own lists emptied not replaced; a tree is good until its screen is built twice more (benchmark 256 -> 110 KB a frame)
2026-09-27 23:33:48 +03:00
cascade_merge.ludic
runtime, ludic.ui: a scalar Value is one allocation, not three (lists only for a list or an object); layout and cascade lists kept a depth; small numbers' text made once - benchmark 63 -> 36 KB a frame
2026-09-27 23:43:25 +03:00
class.ludic
ludic.ui: an unmounted component is mounted again rather than made again - its record renewed (a generated renew), its props and model kept; an action's call answers into a ring
2026-09-28 15:25:55 +03:00
color.ludic
ludic.ui, compiler: a component's model is filled in place into an object its instance keeps (value_set_*); colours, border-images and a class screen's stub made once; object-fit into a kept list - benchmark 20 -> 10 KB a frame
2026-09-28 00:17:47 +03:00
consts.ludic
feat(lang): UI components as files - component Name { ... } beside Name.xml and Name.lss
2026-09-24 16:50:12 +03:00
controls.ludic
ludic.ui, runtime, compiler: an expression's Value comes from the screen's pool while it is built (never a state's start or an action's), true and false shared, calc() terms pooled and read in place, a model's list fields filled in place (value_set_ints/strs/floats/bools); reseeded
2026-09-28 01:05:35 +03:00
controls_build.ludic
ludic.ui, runtime: the last per-frame allocations in the interface - the top popover found without a list, the popover draw list and the clip stack kept, a select's options in a list the node keeps (and matched to its value without writing the index), a number's text kept on its Value until it changes (value_num_set / Value.num_text), a key's label kept per key code until the layout changes it
2026-09-28 11:11:48 +03:00
controls_key.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
controls_key_mouse.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
controls_number.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
controls_parts.ludic
ludic.ui, runtime: the last per-frame allocations in the interface - the top popover found without a list, the popover draw list and the clip stack kept, a select's options in a list the node keeps (and matched to its value without writing the index), a number's text kept on its Value until it changes (value_num_set / Value.num_text), a key's label kept per key code until the layout changes it
2026-09-28 11:11:48 +03:00
dev.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
draw.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
draw_content.ludic
ludic.ui, compiler: a component's model is filled in place into an object its instance keeps (value_set_*); colours, border-images and a class screen's stub made once; object-fit into a kept list - benchmark 20 -> 10 KB a frame
2026-09-28 00:17:47 +03:00
draw_gradient.ludic
ludic.ui: var() values found by their pieces, tpl_words/url/border-image by their text, nine-slices, picking, lifecycle, focus, hover, the event queue and input without a list or record made a frame
2026-09-28 00:10:56 +03:00
draw_nine.ludic
ludic.ui: var() values found by their pieces, tpl_words/url/border-image by their text, nine-slices, picking, lifecycle, focus, hover, the event queue and input without a list or record made a frame
2026-09-28 00:10:56 +03:00
draw_order.ludic
ludic.ui, runtime: the last per-frame allocations in the interface - the top popover found without a list, the popover draw list and the clip stack kept, a select's options in a list the node keeps (and matched to its value without writing the index), a number's text kept on its Value until it changes (value_num_set / Value.num_text), a key's label kept per key code until the layout changes it
2026-09-28 11:11:48 +03:00
dump.ludic
feat(ui): number and key fields, notes, anchored popovers, text-shadow, and pictures as painted
2026-09-24 19:55:20 +03:00
elem.ludic
ludic.ui: a hole's text found by its pieces in the memo (built only when it first reads that way), avals left for the attributes read as text, a class's [root] made once, and a dev build's reload lets go of every file it read only to compare
2026-09-28 01:29:02 +03:00
env.ludic
ludic.ui, runtime, compiler: a component call's answer is written into a pooled record while the screen is built (call(p, name, args, into); value_into_*), a component root's passes pooled, an icon's atlas and name read in place; reseeded
2026-09-28 01:51:56 +03:00
eval.ludic
ludic.ui: an unmounted component is mounted again rather than made again - its record renewed (a generated renew), its props and model kept; an action's call answers into a ring
2026-09-28 15:25:55 +03:00
eval_text.ludic
ludic.ui: a float in a text's hole written to one decimal from kept texts (its whole part from mm_int, its tenth a literal) - a bar's width moving every frame made a new string every frame, and read 7.470598e-07%
2026-09-28 11:29:11 +03:00
expr.ludic
ludic.ui: string matching compares in place - at_alias, lk_in, colours and every s[a..b] == p made a string per position tried, per rule, per element, per frame (a benchmark page: ~3 MB -> 256 KB a frame)
2026-09-27 23:27:02 +03:00
expr_parse.ludic
feat(lang): L11 views and templates - the UI is markup, not code
2026-09-24 15:58:47 +03:00
expr_prim.ludic
feat(lang): L11 views and templates - the UI is markup, not code
2026-09-24 15:58:47 +03:00
focus.ludic
ludic.ui: var() values found by their pieces, tpl_words/url/border-image by their text, nine-slices, picking, lifecycle, focus, hover, the event queue and input without a list or record made a frame
2026-09-28 00:10:56 +03:00
frame.ludic
ludic.ui, runtime, compiler: an expression's Value comes from the screen's pool while it is built (never a state's start or an action's), true and false shared, calc() terms pooled and read in place, a model's list fields filled in place (value_set_ints/strs/floats/bools); reseeded
2026-09-28 01:05:35 +03:00
frame_box.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
hold.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
index.ludic
ludic.ui: a hole's text found by its pieces in the memo (built only when it first reads that way), avals left for the attributes read as text, a class's [root] made once, and a dev build's reload lets go of every file it read only to compare
2026-09-28 01:29:02 +03:00
input.ludic
ludic.ui: var() values found by their pieces, tpl_words/url/border-image by their text, nine-slices, picking, lifecycle, focus, hover, the event queue and input without a list or record made a frame
2026-09-28 00:10:56 +03:00
input_pad.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
instance.ludic
ludic.ui: an unmounted component is mounted again rather than made again - its record renewed (a generated renew), its props and model kept; an action's call answers into a ring
2026-09-28 15:25:55 +03:00
layout.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
layout_box.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
layout_fit.ludic
ludic.ui, compiler: a component's model is filled in place into an object its instance keeps (value_set_*); colours, border-images and a class screen's stub made once; object-fit into a kept list - benchmark 20 -> 10 KB a frame
2026-09-28 00:17:47 +03:00
layout_run.ludic
runtime, ludic.ui: a scalar Value is one allocation, not three (lists only for a list or an object); layout and cascade lists kept a depth; small numbers' text made once - benchmark 63 -> 36 KB a frame
2026-09-27 23:43:25 +03:00
layout_shrink.ludic
runtime, ludic.ui: a scalar Value is one allocation, not three (lists only for a list or an object); layout and cascade lists kept a depth; small numbers' text made once - benchmark 63 -> 36 KB a frame
2026-09-27 23:43:25 +03:00
layout_text.ludic
ludic.ui: splits, words, gradients and keys are made once per text (a bounded memo), sides without a list - benchmark 110 -> 63 KB a frame
2026-09-27 23:38:57 +03:00
layout_wrap.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
lib.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
lib_util.ludic
ludic.ui: string matching compares in place - at_alias, lk_in, colours and every s[a..b] == p made a string per position tried, per rule, per element, per frame (a benchmark page: ~3 MB -> 256 KB a frame)
2026-09-27 23:27:02 +03:00
life.ludic
ludic.ui: var() values found by their pieces, tpl_words/url/border-image by their text, nine-slices, picking, lifecycle, focus, hover, the event queue and input without a list or record made a frame
2026-09-28 00:10:56 +03:00
link.ludic
ludic.ui: string matching compares in place - at_alias, lk_in, colours and every s[a..b] == p made a string per position tried, per rule, per element, per frame (a benchmark page: ~3 MB -> 256 KB a frame)
2026-09-27 23:27:02 +03:00
media.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
memo.ludic
ludic.ui: every bar percentage (0% .. 100% to a tenth) made once when the memo starts, so a bar moving never makes its text in play
2026-09-28 11:46:47 +03:00
memo_join.ludic
ludic.ui, compiler: a component's model is filled in place into an object its instance keeps (value_set_*); colours, border-images and a class screen's stub made once; object-fit into a kept list - benchmark 20 -> 10 KB a frame
2026-09-28 00:17:47 +03:00
native.ludic
ludic.ui: var() values found by their pieces, tpl_words/url/border-image by their text, nine-slices, picking, lifecycle, focus, hover, the event queue and input without a list or record made a frame
2026-09-28 00:10:56 +03:00
node.ludic
feat(ui): flex-shrink, text that wraps beside its siblings, calc(), order, and 0 as a size
2026-09-24 19:54:14 +03:00
node_more.ludic
feat(ui): ui_scale and ui_box, on-submit, zoom (and a length over a length in calc), on-hold
2026-09-25 03:31:38 +03:00
package.ludic
feat(lang): L11 views and templates - the UI is markup, not code
2026-09-24 15:58:47 +03:00
pointer.ludic
ludic.ui: var() values found by their pieces, tpl_words/url/border-image by their text, nine-slices, picking, lifecycle, focus, hover, the event queue and input without a list or record made a frame
2026-09-28 00:10:56 +03:00
pointer_events.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
pointer_pick.ludic
ludic.ui: var() values found by their pieces, tpl_words/url/border-image by their text, nine-slices, picking, lifecycle, focus, hover, the event queue and input without a list or record made a frame
2026-09-28 00:10:56 +03:00
pool.ludic
ludic.ui, runtime, compiler: a component call's answer is written into a pooled record while the screen is built (call(p, name, args, into); value_into_*), a component root's passes pooled, an icon's atlas and name read in place; reseeded
2026-09-28 01:51:56 +03:00
pool_reset.ludic
ludic.ui: a screen's nodes and envs are pooled and used again - two generations a screen, reset in place, their own lists emptied not replaced; a tree is good until its screen is built twice more (benchmark 256 -> 110 KB a frame)
2026-09-27 23:33:48 +03:00
pool_reset_more.ludic
ludic.ui, runtime: the last per-frame allocations in the interface - the top popover found without a list, the popover draw list and the clip stack kept, a select's options in a list the node keeps (and matched to its value without writing the index), a number's text kept on its Value until it changes (value_num_set / Value.num_text), a key's label kept per key code until the layout changes it
2026-09-28 11:11:48 +03:00
popover.ludic
ludic.ui, runtime: the last per-frame allocations in the interface - the top popover found without a list, the popover draw list and the clip stack kept, a select's options in a list the node keeps (and matched to its value without writing the index), a number's text kept on its Value until it changes (value_num_set / Value.num_text), a key's label kept per key code until the layout changes it
2026-09-28 11:11:48 +03:00
popover_anchor.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
popover_within.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
reload.ludic
ludic.ui: a hole's text found by its pieces in the memo (built only when it first reads that way), avals left for the attributes read as text, a class's [root] made once, and a dev build's reload lets go of every file it read only to compare
2026-09-28 01:29:02 +03:00
render3d.ludic
fix(ui): the pointer in the renderer's pixels - macOS reports it in window points, so on Retina every hit landed at half the cursor's position
2026-09-26 23:31:47 +03:00
render3d_image.ludic
ludic.ui, runtime, compiler: a component call's answer is written into a pooled record while the screen is built (call(p, name, args, into); value_into_*), a component root's passes pooled, an icon's atlas and name read in place; reseeded
2026-09-28 01:51:56 +03:00
render3d_nine.ludic
ludic.ui: var() values found by their pieces, tpl_words/url/border-image by their text, nine-slices, picking, lifecycle, focus, hover, the event queue and input without a list or record made a frame
2026-09-28 00:10:56 +03:00
screen.ludic
feat(lang): L11 views and templates - the UI is markup, not code
2026-09-24 15:58:47 +03:00
screen_class.ludic
ludic.ui, runtime, compiler: an expression's Value comes from the screen's pool while it is built (never a state's start or an action's), true and false shared, calc() terms pooled and read in place, a model's list fields filled in place (value_set_ints/strs/floats/bools); reseeded
2026-09-28 01:05:35 +03:00
scroll.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
scroll_bar.ludic
ludic.ui: a screen's nodes and envs are pooled and used again - two generations a screen, reset in place, their own lists emptied not replaced; a tree is good until its screen is built twice more (benchmark 256 -> 110 KB a frame)
2026-09-27 23:33:48 +03:00
scroll_held.ludic
ludic.ui: no number made text to be read back - a style handler returns before any text for a key not its own, grow/alpha/animations/scroll read numbers as numbers, el_secs split once per text, a tooltip translated when its title changes
2026-09-28 10:43:44 +03:00
select.ludic
feat(ui): ludic.ui grows toward HTML, CSS and React (Phase 0.U1-U4)
2026-09-24 16:17:25 +03:00
select_match.ludic
ludic.ui: a hole's text found by its pieces in the memo (built only when it first reads that way), avals left for the attributes read as text, a class's [root] made once, and a dev build's reload lets go of every file it read only to compare
2026-09-28 01:29:02 +03:00
select_nth.ludic
feat(ui): pointer events for natives and elements, with capture; on-down and on-up; hits in painting order
2026-09-24 21:48:02 +03:00
select_parts.ludic
feat(lang): L11 views and templates - the UI is markup, not code
2026-09-24 15:58:47 +03:00
state.ludic
ludic.ui, runtime, compiler: an expression's Value comes from the screen's pool while it is built (never a state's start or an action's), true and false shared, calc() terms pooled and read in place, a model's list fields filled in place (value_set_ints/strs/floats/bools); reseeded
2026-09-28 01:05:35 +03:00
style.ludic
ludic.ui: string matching compares in place - at_alias, lk_in, colours and every s[a..b] == p made a string per position tried, per rule, per element, per frame (a benchmark page: ~3 MB -> 256 KB a frame)
2026-09-27 23:27:02 +03:00
style_rule.ludic
feat(lang): L11 views and templates - the UI is markup, not code
2026-09-24 15:58:47 +03:00
text_fit.ludic
ludic.ui: var() values found by their pieces, tpl_words/url/border-image by their text, nine-slices, picking, lifecycle, focus, hover, the event queue and input without a list or record made a frame
2026-09-28 00:10:56 +03:00
tooltip.ludic
ludic.ui: no number made text to be read back - a style handler returns before any text for a key not its own, grow/alpha/animations/scroll read numbers as numbers, el_secs split once per text, a tooltip translated when its title changes
2026-09-28 10:43:44 +03:00
tooltip_text.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
tpl.ludic
ludic.ui: string matching compares in place - at_alias, lk_in, colours and every s[a..b] == p made a string per position tried, per rule, per element, per frame (a benchmark page: ~3 MB -> 256 KB a frame)
2026-09-27 23:27:02 +03:00
tpl_lines.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
transition.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00
ua.ludic
feat(ui): a scrollbar held where it was taken, a popover that keeps the mouse, easing that lands
2026-09-24 21:39:28 +03:00
units.ludic
ludic.ui, runtime, compiler: an expression's Value comes from the screen's pool while it is built (never a state's start or an action's), true and false shared, calc() terms pooled and read in place, a model's list fields filled in place (value_set_ints/strs/floats/bools); reseeded
2026-09-28 01:05:35 +03:00
units_pieces.ludic
ludic.ui: var() values found by their pieces, tpl_words/url/border-image by their text, nine-slices, picking, lifecycle, focus, hover, the event queue and input without a list or record made a frame
2026-09-28 00:10:56 +03:00
values.ludic
ludic.ui, runtime: the last per-frame allocations in the interface - the top popover found without a list, the popover draw list and the clip stack kept, a select's options in a list the node keeps (and matched to its value without writing the index), a number's text kept on its Value until it changes (value_num_set / Value.num_text), a key's label kept per key code until the layout changes it
2026-09-28 11:11:48 +03:00
view.ludic
feat(lang): UI components as files - component Name { ... } beside Name.xml and Name.lss
2026-09-24 16:50:12 +03:00
zoom.ludic
wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
2026-09-25 15:31:34 +03:00