Skip to content

feat: native ocaml backend - #252

Merged
tiensonqin merged 164 commits into
mainfrom
feat/ml-backend
Oct 21, 2026
Merged

tiensonqin merged 164 commits into
mainfrom
feat/ml-backend

Conversation

@tiensonqin

Copy link
Copy Markdown
Collaborator

No description provided.

Stream store scans, retain unchanged lifecycle sets, and read event admission properties directly. Add allocation and ordering regressions.
Convert values in scoped property observers to reduce retained allocations while preserving borrowed sources and disposal behavior. Add retention, batching, derived-source, and queued-disposal regressions.
Prune disposed fragments and parent links at structural journal boundaries. Ignore stale geometry and interaction hints, and cover viewport teardown, root removal, remounting, and paint equivalence.
Accumulate glyph bounds numerically and skip atlas overlap closures when no atlas pixels changed. Cover allocation limits, fractional and empty bounds, clipping, and mask and color atlas updates.
Return cached paint fragments directly and cover lookup identity and allocation with a regression test.
Walk each current and previous ancestor chain once per update. Cover allocation, reordered dirty nodes, hidden ancestry, and reparenting against a fresh accessibility tree.
Share one operation and glyph snapshot across bounds, damage detection, and tile drawing. Preserve mutable effect parameters and cover scene mutations with pixel and allocation tests.
Discard obsolete measurement generations when percentage edges resolve against a new owner size. Cover retained resize history, fixed offers, unbounded owners, and unchanged measurement reuse.
Track the owner axes used by percentage specs. Reuse unchanged measurement offers while preserving edge, position, gap, and constraint invalidation.
Reuse clipped bounds after the unchanged prefix comparison. Preserve clip traversal for the changed tail and cover allocation limits, atlas updates, resize, and pixel parity.
Construct floating tint only for general glyph blending and compare gamma components without a temporary tuple. Add an allocation regression for integer mask text.
Pass consecutive produced positions through batch restyling instead of rescanning sibling prefixes for each child. Cover linear allocation growth and transparent, hidden, and reordered child expansions.
Capture divider pointer input, mirror scaled pane geometry immediately, and dispatch resize values through the application. Cover nested tracks, release coordinates, clamping, modal admission, and removed nodes.
Expose divider hit testing and capture state for host cursor feedback.
Choose the opposite anchor side when it provides more room, then clamp remaining overflow. Cover all four directions, preferred-side stability, oversized panels, and display scaling.
Measure scroll extents from the viewport origin so padded content remains reachable on both axes. Verify final edges after scrolling through the shared native assembly.
Resolve viewport collisions using final ancestor positions before the final flex pass. Cover menus inside centered dialogs across display scales and window resizing.
Normalize full-rebuild and incremental registration order without reordering unrelated surfaces. Verify an open nested menu remains in bounds after rebuilding.
Keep stored offset and range readers attached to the current scroll state. Cover both axes, range updates, clamping, and reversal.
Animate promoted surface lifecycles with inert exit snapshots. Keep dependent split dragging immediate and enforce pane minimum widths against the available track. Add motion, geometry, pointer, and raster budget regressions.
Preserve Escape dismissal and blur while requiring an explicit quit event to close the window.
Include border widths in native layout and invalidate geometry when they change. Allow dialog surface styling across protocol backends and retain the existing generated interface declaration.

Validate scaled and incremental border layout, dialog property emission, schema consistency, and the complete release suite.
Reserve a trailing icon slot and clip select and combobox labels before it. Request scale-aware indicator images through the existing decode hook and keep disabled opacity consistent.

Cover both backing scales, long labels, narrow controls, and disabled state. The complete release suite passes with the updated deterministic scene checksum.
Use styled line boxes and signed half-leading consistently for measurement, baselines, carets, and hit testing. Include line height in the existing bounded layout cache for plain and rich text on both text backends.

The complete macOS release suite passes, including pitch, cache identity, spans, and invalid-height regressions. Linux runtime tests remain platform-specific.
Crop the source around its center when filling a native image rectangle, matching the existing Apple backend behavior.

Cover wide, tall, and matching source ratios. The complete release suite passes.
Apply the shared 18rem menu cap to dropdowns, context menus and menu popovers. Clamp custom limits to viewport and available height, preserve option sizes, and share scroll and clipping classification.

Cover resize and scale changes, final-option click delivery, and dynamic menu semantics. The complete serialized release build and test suite passes.
Route navigation, activation and typeahead to the active menu. Share pointer and keyboard highlight, reveal options before activation, and report consumed input to document-event hosts.

Preserve input and composition in ordinary editors and embedded menu fields. Cover disabled and nested options, scrolling, detail activation and disposal. The complete release build and test suite passes.
Keep platform text input enabled for menu prefix search. Consume the queued Space commit after activation without editing a background field.
Keep button icons in the content path and preserve stepper chrome. Cover labeled, icon-only, placement, and backing-scale variants.
Support typed padding edges across layout, text placement and hit testing.
Resolve absolute cross-axis alignment after intrinsic measurement and keep
shared platform property handlers in sync.
Save anchored trigger focus before asynchronous surfaces replace their action popovers. Cover the complete loading and dismissal sequence.
Add typed background and border states for focused descendants, invalidate styled native ancestors, and honor explicit Web focus shadows. Cover nested focus, blur, and property removal.
Resolve the existing hover border channel before descendant focus styling. Cover emitted borders across scales, state changes, replacement, and removal.
Transfer a retiring action invoker to the surviving trigger before its replacement surface mounts.
Add independent state border colors for labeled checkbox indicators on Web and native. Preserve primary fill and caption styling; cover state changes, removal and display scaling.
Apply typed cover and contain fitting to bitmap pixels, retain fitting through refresh, and restore stretch when removed. Verify native crops at both display scales.
Keep nested text fragments on one line for nowrap captions while preserving explicit normal overrides and live property removal.
Prevent nowrap fragments from shrinking below their ink width and refresh descendant flow when inherited whitespace changes.
Dispatch pointer entry and exit for all opted-in ancestors while retaining shared owners across child transitions. Cache stable hover chains by hit node and store revision, with boundary and allocation regressions.
Allow shared rich text editors to conceal inline delimiters across hosts.
@tiensonqin tiensonqin changed the title Feat/ml backend feat: native ocaml backend Oct 20, 2026
Share paragraph measurement and painting while preserving retained descendant geometry and invalidation.

Validate text edits, hover, reparenting, resize and inline layout transitions against full redraws.
Add owned Core Text delegates and Pango shape metrics with layout, caret and cache coverage.
Apply typed floating-surface clearance to viewport sizing, side placement and selected-item alignment. Cover resize, bounds, content caps and property updates in native and Web tests.
Restore scroll offsets after temporary side measurements and ignore content-scroll positioning loops. Verify final-row reachability, resize clamping, anchor updates and tracker cleanup.
Apply track size, insets and theme colors to native and Web switch surfaces. Cover property updates and compact geometry at both display scales.
Release unlinked mirror nodes absent from the final transaction tree. Cover retained results passing through a disposed parent at both display scales and disposal orders.
Preserve intrinsic label widths beside shrinkable content while respecting explicit minimums, clipping and maximum widths. Cover retained property changes at both display scales.
Add typed line limits and cached styled truncation with grapheme-safe ellipses. Keep nested reactive anchors transparent to inline layout and preserve explicit paragraph limits without a width constraint.
Allow zero-width dividers while retaining controlled layout and animation. Disable pointer and keyboard resizing, cancel active drags, and cover both backends with regressions.
Allow automatic widths and honor authored split-pane overflow.
Cover native sizing and web property transitions.
Bound nested split rows so intrinsic scroll content cannot enlarge the frame.
@tiensonqin
tiensonqin merged commit 76bab55 into main Oct 21, 2026
11 of 15 checks passed
@tiensonqin
tiensonqin deleted the feat/ml-backend branch October 21, 2026 04:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant