Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
475 commits
Select commit Hold shift + click to select a range
773331c
Preserve escaped delimiters in compiled variable references
danwalmsley Sep 10, 2026
7e56437
Preserve escaped identifiers in shorthand component scanning
danwalmsley Sep 10, 2026
2838bd9
Ignore escaped identifier punctuation in calc scanning
danwalmsley Sep 10, 2026
6535547
Lower supported color mixes with nested component grammar
danwalmsley Sep 10, 2026
4e1593b
Verify compiled color mix paint and accept interpolation whitespace
danwalmsley Sep 10, 2026
9e90b67
Handle comments and quoted text in CSS component splitting
danwalmsley Sep 10, 2026
aa4a6ab
Share comment scanning across variable and calc lowering
danwalmsley Sep 10, 2026
3b22ad4
Share supported named color validation across compiled values
danwalmsley Sep 10, 2026
feadec3
Share complete CSS named color table between compiler and native parser
danwalmsley Sep 10, 2026
6702b62
Compile literal RGB and RGBA colors into typed constants
danwalmsley Sep 10, 2026
f7db669
Record current Kestrel CSS audit and clarify at-rule diagnostics
danwalmsley Sep 10, 2026
734bd09
Plan integrated CSS gap closure and implement typed two-color mixing
danwalmsley Sep 10, 2026
d4e20b5
Implement compiled solid outlines and native signed offset geometry
danwalmsley Sep 10, 2026
aea7e24
Complete solid outline ordering defaults and live currentColor
danwalmsley Sep 10, 2026
97de722
Run Foco paint regression suite in Native Web integration build
danwalmsley Sep 10, 2026
fe109b9
Compile inset shadows into clipped native paint commands
danwalmsley Sep 10, 2026
80a7cb4
Support shadow component ordering and live default color
danwalmsley Sep 10, 2026
3f1a468
Compile dashed borders into native stroke commands
danwalmsley Sep 10, 2026
4c3336e
Reuse typed color mixing within compiled shadow components
danwalmsley Sep 10, 2026
22f09b1
Emit typed native gradient records and document shared parser reuse
danwalmsley Sep 10, 2026
4187a92
Share typed shadow semantics between compiled and runtime CSS
danwalmsley Sep 10, 2026
6ed084a
Keep frame navigation cleanup available without Inspector
danwalmsley Sep 10, 2026
736907b
Extract V8-independent stylesheet and cascade storage
danwalmsley Sep 10, 2026
0e67cd3
Extract shared Rust-backed CSS declaration service without V8
danwalmsley Sep 10, 2026
2dffe53
Share native CSS selector preparation outside V8
danwalmsley Sep 10, 2026
d289ed2
Share native attribute and positional CSS matching
danwalmsley Sep 10, 2026
47da24a
Share native disabled-control selector matching
danwalmsley Sep 10, 2026
5e06b93
Share native hover and focus selector state
danwalmsley Sep 10, 2026
88288b2
Share native inherited language and direction matching
danwalmsley Sep 10, 2026
8849307
Share native option selection and checked selector state
danwalmsley Sep 10, 2026
997dcec
Share native CSS combinator traversal
danwalmsley Sep 10, 2026
8e8ad5e
Extract host-independent native CSS compound evaluation
danwalmsley Sep 10, 2026
4cde00e
Add native CSS query host with bounded prepared-selector cache
danwalmsley Sep 10, 2026
f0e11d0
Share CSS candidate ordering and root variable rebuilding
danwalmsley Sep 10, 2026
f4d92d3
Share parsed CSS custom-property resolution outside V8
danwalmsley Sep 10, 2026
5d2c9ce
Share native custom-property declaration precedence
danwalmsley Sep 10, 2026
8595c03
Share native margin and padding application with cascade precedence
danwalmsley Sep 10, 2026
7dd9f7a
Share native inset and border value application
danwalmsley Sep 10, 2026
599a251
Share native element and pseudo corner-radius application
danwalmsley Sep 10, 2026
02289c1
Share native CSS transition timing and shorthand configuration
danwalmsley Sep 10, 2026
deccbfc
Share grid and animation values and validate CSS time tokens
danwalmsley Sep 10, 2026
ea251e7
Share native CSS keyframe configuration and verify host clock playback
danwalmsley Sep 10, 2026
7676b85
Share native CSS pseudo-element property application
danwalmsley Sep 10, 2026
35e1026
Share Rust CSS stylesheet ingestion outside V8
danwalmsley Sep 10, 2026
a759c71
Connect shared CSS keyframe parsing to native animation playback
danwalmsley Sep 10, 2026
f6b386b
Share immutable native CSS rule payload preparation
danwalmsley Sep 10, 2026
a617338
Share native stylesheet resource URL resolution
danwalmsley Sep 10, 2026
b0b66c1
Unify native CSS rule preparation and resource resolution
danwalmsley Sep 10, 2026
7ebccf0
Assemble owned native stylesheets and exercise original Kestrel CSS
danwalmsley Sep 10, 2026
5284a35
Share native CSS media evaluation and viewport capabilities
danwalmsley Sep 10, 2026
3dfb7d7
Match prepared stylesheet selectors against live native document state
danwalmsley Sep 10, 2026
8d02d96
Share native CSS declaration precedence metadata
danwalmsley Sep 10, 2026
bd4abb0
Share native CSS all-unset application
danwalmsley Sep 10, 2026
dc45d9a
Share native CSS box declaration application
danwalmsley Sep 10, 2026
db2c962
Share native grid and flex declaration application
danwalmsley Sep 10, 2026
cc1bea4
Share native display positioning and table declaration application
danwalmsley Sep 10, 2026
6460549
Share native CSS paint application and reset background size components
danwalmsley Sep 10, 2026
439c097
Share native CSS visibility overflow and hit-test style application
danwalmsley Sep 10, 2026
4ec97dc
Share native typography application and recognize numeric font weights
danwalmsley Sep 10, 2026
a46e79e
Unify native CSS declaration application outside V8
danwalmsley Sep 10, 2026
ce9eeb3
Connect native CSS variables aliases and declaration application
danwalmsley Sep 10, 2026
9e9e967
Share native stylesheet cascade reset behavior
danwalmsley Sep 11, 2026
aa681ce
Share matched CSS declaration ordering and inline replay
danwalmsley Sep 11, 2026
ee8cfb5
Share native pseudo-element and scrollbar declaration application
danwalmsley Sep 11, 2026
83b852d
Share native CSS candidate matching and pseudo rule separation
danwalmsley Sep 11, 2026
55da34c
Share native CSS font finalization and layout comparison
danwalmsley Sep 11, 2026
94b8a79
Share native CSS selector rule indexing
danwalmsley Sep 11, 2026
5f69772
Share native CSS rule candidate collection
danwalmsley Sep 11, 2026
ebca8c0
Own prepared native stylesheets and refresh media activation
danwalmsley Sep 11, 2026
44c84f2
Apply prepared native stylesheets to document nodes
danwalmsley Sep 11, 2026
2ea786b
Refresh native document cascade and inherited variables
danwalmsley Sep 11, 2026
80bbe0f
Prepare pseudo origin selectors for native cascade matching
danwalmsley Sep 11, 2026
5beac0e
Schedule native stylesheet refreshes through a style session
danwalmsley Sep 11, 2026
4254c4a
Reuse compiled styles for canvas-only native updates
danwalmsley Sep 11, 2026
7c48f89
Reuse native layout for canvas-only scene updates
danwalmsley Sep 11, 2026
2e92d3b
Record rebuilt Foco Kestrel native GPU smoke validation
danwalmsley Sep 11, 2026
8a0e263
Compile native scrollbar width and visibility
danwalmsley Sep 11, 2026
2efe426
Compile scrollbar colors with live custom properties
danwalmsley Sep 11, 2026
3581e6c
Compile full grid column spans into typed native layout
danwalmsley Sep 11, 2026
68650fc
Connect compiled basic cursors to the Foco native host
danwalmsley Sep 11, 2026
31860bc
Compile grab and forbidden cursors for the Cocoa host
danwalmsley Sep 11, 2026
7cfa676
Record Cocoa deferred cursor refresh integration
danwalmsley Sep 11, 2026
3bf0e64
Record text overflow prerequisites and spacing correction
danwalmsley Sep 11, 2026
5050d4c
Handle screen and print media types in native compilation
danwalmsley Sep 11, 2026
385f60c
Compile live reduced-motion media conditions
danwalmsley Sep 11, 2026
c47317d
Propagate Foco reduced motion to compiled native media rules
danwalmsley Sep 11, 2026
175630a
Drive native document transitions from Foco host frames
danwalmsley Sep 11, 2026
a73d011
Compile opacity transitions and deliver cancellation events
danwalmsley Sep 11, 2026
c187580
Handle animation callback disposal and record shared CSS direction
danwalmsley Sep 11, 2026
88d5da4
Connect compiled native documents to optional shared CSS cascade
danwalmsley Sep 11, 2026
9ea9d5e
Generate shared prepared CSS as C++ modules at build time
danwalmsley Sep 11, 2026
c644bdd
Compile HTML stylesheet sources through optional shared CSS backend
danwalmsley Sep 11, 2026
5a69501
Run original Kestrel preview with generated shared CSS and GPU capture
danwalmsley Sep 11, 2026
979a8f7
Apply standard scrollbar styling in the shared native CSS engine
danwalmsley Sep 11, 2026
d8adb78
Project shared CSS stroke widths into native SVG scene data
danwalmsley Sep 11, 2026
544a097
Clear stale SVG paint when shared CSS classes change
danwalmsley Sep 11, 2026
96d70c5
Bind original compiled Kestrel layer rows to native drawing state
danwalmsley Sep 11, 2026
44d54bc
Preserve pointer modifiers and support Shift-click layer selection
danwalmsley Sep 11, 2026
7066421
Preserve keyboard activation modifiers and handle focus disposal
danwalmsley Sep 11, 2026
7e92334
Bridge committed Foco text input into native form-control state
danwalmsley Sep 11, 2026
40f9cb9
Add native text selection and UTF-8-safe deletion keys
danwalmsley Sep 11, 2026
44c5b4e
Filter original Kestrel layer templates from native text input
danwalmsley Sep 11, 2026
d6825dc
Paint native color input values as swatches
danwalmsley Sep 11, 2026
6142982
Port original Kestrel object explorer to compiled templates and C++
danwalmsley Sep 11, 2026
9452e8f
Exercise native object selection in the Foco Kestrel preview
danwalmsley Sep 11, 2026
fae4bc7
Paint authored placeholders in empty native text controls
danwalmsley Sep 11, 2026
6966d9e
Measure hosted Kestrel panning image publication throughput
danwalmsley Sep 11, 2026
618d2b1
Add a thousand-entity hosted Kestrel panning workload
danwalmsley Sep 11, 2026
c94f6f2
Expose compositor presentation counters in the Kestrel pan probe
danwalmsley Sep 11, 2026
e50a0d9
Record missing Metal presentation evidence from hosted panning
danwalmsley Sep 11, 2026
ed435f7
Report pending preview scene changes to the Foco host frame driver
danwalmsley Sep 11, 2026
9394e9b
Distinguish scene publication from compositor presentation in pan dia…
danwalmsley Sep 11, 2026
078c8b1
Record compositor render budget overrun during hosted panning
danwalmsley Sep 11, 2026
4b5ef07
Localize half-rate presentation to repeated retained backing allocation
danwalmsley Sep 11, 2026
23cc220
Identify semantic image resolution failure behind repeated device rec…
danwalmsley Sep 11, 2026
b20ca27
Narrow semantic replay failures to packet resources without GPU images
danwalmsley Sep 11, 2026
d6e718d
Record verified 60fps native panning after attachment retention fix
danwalmsley Sep 11, 2026
67c65f0
Cover native GPU attachment retention through leaf scene updates
danwalmsley Sep 11, 2026
e8d74c7
Avoid stretching obsolete native GPU images during canvas resize
danwalmsley Sep 11, 2026
27351d8
Identify missing native Foco GPU dependency handoff for resize
danwalmsley Sep 11, 2026
5fcc7e8
Forward native GPU producer fences into Foco composition
danwalmsley Sep 11, 2026
dc13c45
Test native Foco GPU fence ownership and validation
danwalmsley Sep 11, 2026
bf0cb7e
Exercise hosted native canvas resize with presentation timing
danwalmsley Sep 11, 2026
a601238
Validate matching GPU allocations on every canvas resize tick
danwalmsley Sep 11, 2026
72510bb
Capture the native resize workload at minimum canvas size
danwalmsley Sep 11, 2026
bb944b2
Embed original Kestrel Courtyard drawing for native model validation
danwalmsley Sep 11, 2026
a7fa00e
Run the original Courtyard drawing in the native Foco preview
danwalmsley Sep 11, 2026
85c6de4
Expose native Canvas text display-list drawing
danwalmsley Sep 11, 2026
d57df03
Render original Courtyard labels through native Canvas overlay
danwalmsley Sep 11, 2026
708d6b9
Measure native Courtyard panning with text overlays
danwalmsley Sep 11, 2026
fa98ada
Wire original Kestrel extents action and match zoom factors
danwalmsley Sep 11, 2026
a43e007
Wire original selection actions to native editable entity state
danwalmsley Sep 11, 2026
709bf69
Connect native erase undo and redo actions to original Kestrel UI
danwalmsley Sep 11, 2026
ae56cd1
Bind the original document tab template to native drawing state
danwalmsley Sep 11, 2026
583a81b
Bind native Kestrel document and renderer status
danwalmsley Sep 11, 2026
e23e35a
Port Kestrel shift-middle orbit navigation to native camera
danwalmsley Sep 11, 2026
9394153
Support native select values and verify hosted Kestrel navigation
danwalmsley Sep 11, 2026
6335e12
Wire native Kestrel view and style dropdown changes
danwalmsley Sep 11, 2026
48de406
Record verified native preview shutdown and failure exit behavior
danwalmsley Sep 11, 2026
8f93249
Add native single-select keyboard navigation and focus
danwalmsley Sep 11, 2026
98b95b1
Verify Kestrel dropdowns through hosted keyboard events
danwalmsley Sep 11, 2026
d547f7e
Port Kestrel panel visibility actions using original CSS
danwalmsley Sep 11, 2026
b44b55c
Hydrate original Kestrel shell icons from compiled SVG templates
danwalmsley Sep 11, 2026
34040cb
Verify original Kestrel panel buttons through Foco pointer input
danwalmsley Sep 11, 2026
4fec28e
Record actual macOS live resize evidence and presentation trace gap
danwalmsley Sep 11, 2026
1557c69
Record transaction presentation timestamp coverage during OS resize
danwalmsley Sep 11, 2026
674878d
Record native window midpoint resize visual evidence
danwalmsley Sep 11, 2026
2fe073b
Port native Kestrel theme switching and fix parentless HTML root matc…
danwalmsley Sep 11, 2026
60b6190
Port undoable native Show all layers command
danwalmsley Sep 11, 2026
aa2ce68
Implement native Kestrel viewport click picking and selection
danwalmsley Sep 11, 2026
7abfc56
Verify native mesh depth and multiline text picking
danwalmsley Sep 11, 2026
7dfc160
Expose cancellable native keydown events for application shortcuts
danwalmsley Sep 11, 2026
2eecd04
Wire native Kestrel editing shortcuts through Foco keyboard events
danwalmsley Sep 11, 2026
5521bf1
Implement native window and crossing selection with original drag rec…
danwalmsley Sep 11, 2026
8e36c63
Verify hosted crossing selection and drag cancellation
danwalmsley Sep 11, 2026
c423e73
Render native no-selection inspector from original compiled templates
danwalmsley Sep 11, 2026
be3959c
Synchronize native Kestrel view workspace and inspector state
danwalmsley Sep 11, 2026
2c5c08f
Add selected-object inspector layer editing with native undo
danwalmsley Sep 11, 2026
1b82967
Default original Kestrel preview to shared CSS and verify inspector undo
danwalmsley Sep 11, 2026
e4a7d6a
Port native inspector linetype lineweight and name editing
danwalmsley Sep 11, 2026
a83d75d
Commit native text edits on Enter and focus departure
danwalmsley Sep 11, 2026
2623e5c
Verify inspector text edits through Foco host events
danwalmsley Sep 11, 2026
5fbaeb7
Restore inspector layer state group labels and number formatting
danwalmsley Sep 11, 2026
4042f3f
Port line endpoint geometry inspector to native templates
danwalmsley Sep 11, 2026
6e79758
Verify hosted line geometry edit GPU update and undo
danwalmsley Sep 11, 2026
604ec63
Port point position inspector editing with compiled coordinates
danwalmsley Sep 11, 2026
11f532f
Port circle arc and ellipse center inspector editing
danwalmsley Sep 11, 2026
b0fcd4c
Port circle and arc radius editing with native axis scaling
danwalmsley Sep 11, 2026
ff3e095
Port native arc angle editing and circle area display
danwalmsley Sep 11, 2026
cb7b964
Record current native Kestrel Metal panning performance evidence
danwalmsley Sep 11, 2026
ae71e5d
Port ellipse radius inspector using native conic axes
danwalmsley Sep 11, 2026
e0a55a6
Add native checkbox checked state and activation semantics
danwalmsley Sep 11, 2026
d2fa4a1
Port polyline closed editing length and plan area inspector
danwalmsley Sep 11, 2026
d1b26b6
Verify polyline checkbox through hosted pointer input
danwalmsley Sep 11, 2026
80a9be3
Paint native checkbox indicators from live checked state
danwalmsley Sep 11, 2026
cd22e39
Port spline degree editing and native inspector metrics
danwalmsley Sep 11, 2026
8efc090
Port native hatch spacing pattern and inspector measurements
danwalmsley Sep 11, 2026
66fb5db
Preserve original hatch row structure and verify native controls
danwalmsley Sep 11, 2026
bda9615
Port native text entity inspector editing
danwalmsley Sep 11, 2026
7a531a9
Verify native text inspector controls and multiline commits
danwalmsley Sep 11, 2026
850d2d0
Port native dimension inspector properties and measurement
danwalmsley Sep 11, 2026
79f9d27
Port native mesh center inspector and bounds readouts
danwalmsley Sep 11, 2026
0aabee4
Verify mesh and dimension edits through compiled inspector controls
danwalmsley Sep 11, 2026
9a581c9
Fix spline degree editing with omitted optional properties
danwalmsley Sep 11, 2026
ebac2d0
Restore native selected color swatch and ByLayer action
danwalmsley Sep 11, 2026
d4736b9
Wire native Foco color picker and record retained rendering gap
danwalmsley Sep 11, 2026
6b8e921
Record native color picker retained rendering verification
danwalmsley Sep 11, 2026
d07c0c0
Record native spectrum rendering verification
danwalmsley Sep 11, 2026
1ce32ca
Record native picker background capture
danwalmsley Sep 11, 2026
84e8776
Keep native Kestrel color picker open during successive edits
danwalmsley Sep 11, 2026
90ad0ed
Verify native color spectrum hit testing and routed pointer dragging
danwalmsley Sep 11, 2026
96e0bb2
Add native MTEXT inspector position height and width editing
danwalmsley Sep 11, 2026
7353e90
Show native MTEXT paragraph counts with original boundary semantics
danwalmsley Sep 11, 2026
17f59aa
Record current native pan presentation including startup gap
danwalmsley Sep 11, 2026
42705b0
Check native pan startup gap across three fresh launches
danwalmsley Sep 11, 2026
b553866
Bundle Dawn in native macOS apps and remove external SDK rpath
danwalmsley Sep 11, 2026
1c7ccc1
Remove unused HTML parser from native app and add bundle audit
danwalmsley Sep 11, 2026
43c57b2
Compare parsed and compiled CSS scene sequences across mutations
danwalmsley Sep 11, 2026
e4e03ff
Propagate native color scheme into shared CSS media evaluation
danwalmsley Sep 11, 2026
bdd759c
Verify compiled CSS media rules across native color scheme changes
danwalmsley Sep 11, 2026
c342603
Port native Ungroup action with editable group membership and undo
danwalmsley Sep 11, 2026
d792d63
Add undoable native group creation for captured dialog selection
danwalmsley Sep 11, 2026
f0779d1
Exclude inert elements from native focus and tab traversal
danwalmsley Sep 11, 2026
5470f14
Expose native modal scopes with focus isolation and cleanup
danwalmsley Sep 11, 2026
be7a9a7
Connect compiled Group dialog and preserve authored template IDs
danwalmsley Sep 11, 2026
acbfbde
Lay out default native modal dialogs within the viewport
danwalmsley Sep 11, 2026
9164c66
Exercise compiled Group through hosted text pointer submit and undo
danwalmsley Sep 11, 2026
fb05cf3
Match original Group name Unicode whitespace trimming
danwalmsley Sep 11, 2026
aa49389
Activate associated native controls from HTML label clicks
danwalmsley Sep 11, 2026
7c4e06a
Render shared CSS dialog backdrop colors above native GPU content
danwalmsley Sep 11, 2026
a18bae8
Share backdrop color application across native and V8 CSS cascades
danwalmsley Sep 11, 2026
c2faf09
Verify V8 backdrop scene lifecycle and dynamic CSS overrides
danwalmsley Sep 11, 2026
56cc5e1
Verify native group creation and undo through grouped picking
danwalmsley Sep 11, 2026
c1d4196
Port continuous Line command state to native C++
danwalmsley Sep 11, 2026
b031783
Connect original Kestrel Line action to native viewport input
danwalmsley Sep 11, 2026
99013f8
Verify original Line tool through hosted Foco input
danwalmsley Sep 11, 2026
1c511d6
Connect native Line command input options and verify Undo continuation
danwalmsley Sep 11, 2026
f1a9c70
Add native absolute relative and polar drafting coordinate parsing
danwalmsley Sep 11, 2026
03e68b1
Wire typed native Line coordinates and verify hosted relative entry
danwalmsley Sep 11, 2026
cbdb0bf
Align native drafting numeric forms with JavaScript Number
danwalmsley Sep 11, 2026
7ba7080
Expose native Canvas line strokes for drafting overlays
danwalmsley Sep 11, 2026
dd5178e
Draw native Line rubber-band feedback in the original Canvas overlay
danwalmsley Sep 11, 2026
9eb50b0
Clip native Line preview before expanding dash commands
danwalmsley Sep 11, 2026
9ac4442
Verify and capture native pending Line overlay through Foco input
danwalmsley Sep 11, 2026
21832bb
Keep native Line preview attached to pointer across camera updates
danwalmsley Sep 11, 2026
43a36f4
Port native grid ortho and polar drafting constraints
danwalmsley Sep 11, 2026
838d4d5
Share native Line pointer constraints between preview and commit
danwalmsley Sep 11, 2026
cb3cf47
Verify hosted Shift-constrained Line preview and committed endpoints
danwalmsley Sep 11, 2026
a9f7dac
Forward Foco key releases to native WebScene documents
danwalmsley Sep 11, 2026
2e0ec36
Verify stationary preview updates through Foco key-release forwarding
danwalmsley Sep 11, 2026
1863d9f
Map Foco modifier keys into native WebScene and verify Shift release
danwalmsley Sep 11, 2026
0dfaf56
Compile original Kestrel status controls and wire native drafting tog…
danwalmsley Sep 11, 2026
01f094f
Verify native drafting status toggles and synchronize Grid state
danwalmsley Sep 11, 2026
4008813
Add native nearest geometry snap candidate selection
danwalmsley Sep 11, 2026
f11e256
Retain native object snap geometry across pointer and camera movement
danwalmsley Sep 11, 2026
e2232c8
Index retained object snap candidates in screen-space cells
danwalmsley Sep 11, 2026
357a739
Port intersection snaps and connect original OSNAP to native Line input
danwalmsley Sep 11, 2026
2365357
Render native object snap marker shapes and labels
danwalmsley Sep 11, 2026
46dc2b5
Prepare complete Kestrel script set for compiled-template hybrid migr…
danwalmsley Sep 11, 2026
555daab
Expose checked shared native document access for optional runtime ada…
danwalmsley Sep 11, 2026
cacb079
Add optional hybrid compiled-document runtime foundation
danwalmsley Sep 11, 2026
5c6964f
Run compiled hybrid Kestrel with native templates on the shared WebSc…
danwalmsley Sep 11, 2026
07edfc7
Point application platform documentation to AppScene
danwalmsley Sep 11, 2026
950098a
Service V8 foreground maintenance while native documents are idle
danwalmsley Sep 11, 2026
0731602
Package reusable native and JavaScript SDK consumers
danwalmsley Sep 11, 2026
91a0393
Await asynchronous host visibility in document contracts
danwalmsley Sep 11, 2026
5ad5d09
Merge remote-tracking branch 'origin/main' into codex/native-web-first
danwalmsley Sep 11, 2026
97419b9
Verify the compiled-package ABI and keep private SDK production in Ap…
danwalmsley Sep 11, 2026
87a0d24
Merge PR 60 from main and preserve SDK ABI coverage
danwalmsley Sep 11, 2026
2801211
Pack DOM style flags within the cross-library memory budget
danwalmsley Sep 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -260,3 +260,10 @@ safe renderer for arbitrary untrusted websites or scripts.
The repository uses the terms in [LICENSE](LICENSE), including its Restricted Party
Clause. Describe it as a custom source-available license, not unqualified MIT or an
OSI-approved open-source license.

## Native Web: compiled HTML/CSS and C++

The [Native Web sample](samples/NativeWeb/README.md) compiles HTML/CSS into C++ and
runs C++ application logic on WebScene's native DOM/layout with Foco's Cocoa/Metal
host, without deploying V8 or runtime UI parsers. This is an initial, explicitly
bounded compiler profile. See the [architecture and future binding note](docs/design/native-web.md).
58 changes: 58 additions & 0 deletions docs/architecture/adr/0014-mixed-language-compiled-applications.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# ADR 0014: Mixed-language application logic over compiled views

Status: Accepted design; mixed-language implementation is subsequent work.
Date: 2026-09-10

## Decision

Compiled HTML/CSS does not prescribe the language of application logic. WebScene
must support C++ and optional JavaScript/TypeScript logic together on the same
native document. Developers can migrate an existing application incrementally,
component by component, while retaining its compiled views and templates.
TypeScript is compiled to JavaScript by application tooling; it is not a separate
runtime or an automatic TypeScript-to-C++ conversion path.

Use WebScene's annotation-driven interop generator for typed calls, callbacks and
native object access in both directions. Both language paths must operate on the
same document, node identities, events, CSS/layout engine and Canvas/WebGPU
resources. Adding JavaScript must not create a parallel DOM, duplicate scene,
second renderer or require runtime HTML/CSS parsing of compiled views.

Application state remains outside generated views. Each state object has an
explicit owner; generated bridges expose access and change notifications rather
than silently copying authoritative state between languages. This also leaves a
seam for future typed C++ view models and HTML bindings.

## Required integration contracts

- Preserve node identity through native handles and JavaScript wrappers.
- Define ownership, weak references, callback disposal and runtime shutdown so
neither language can retain usable references to disposed native objects.
- Respect document thread affinity; cross-thread calls require explicit dispatch.
- Define error propagation and reentrancy for native-to-JS and JS-to-native calls.
- Keep document mutation, event ordering and rendering behavior consistent across
languages. Native Canvas/WebGPU objects must be exposed through the same backend.
- Generated view APIs use C++20 modules; interop remains a language-neutral seam
and does not require other languages to consume C++ module binaries.

## Deployment and migration

Pure-native applications continue to require no JavaScript runtime, V8 linkage,
initialization or deployed runtime assets. The mixed-language profile opts into
those dependencies explicitly. Interop wrappers are optional dependencies of the
native document engine, not prerequisites for compiled view construction.

A migration can retain existing JS/TS controllers, use compiled templates for
view creation, and replace individual controllers/services with C++ behind typed
interop contracts. Converting application logic must not require replacing the
view or changing its document identity. Arbitrary runtime HTML construction is
outside the compiled-view contract; dynamic native UI uses predefined templates.

## Scope and verification

This decision expands the platform design, not the current Kestrel acceptance
criteria. Kestrel remains an HTML/CSS/C++ application with no JavaScript runtime
and no runtime HTML parsing. Mixed-language support must later be verified with
bidirectional calls, shared-node mutations, events, lifetime/cleanup tests and a
real incremental migration example. This ADR does not claim those tests or the
complete integration exist today.
11 changes: 11 additions & 0 deletions docs/design/evidence/hybrid-kestrel/pan.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"actual_presentations": 719,
"pan_seconds": 11.999957999985781,
"presentation_hz": 59.91625597367178,
"median_interval_ms": 16.66675000160467,
"p95_interval_ms": 16.66683300572913,
"max_interval_ms": 33.33350000320934,
"submit_to_present_median_ms": 47.388667007908225,
"rss_after_pan_kib": 297872,
"note": "Submit-to-present is not input-to-photon latency. RSS sampled after benchmark, not peak."
}
29 changes: 29 additions & 0 deletions docs/design/evidence/hybrid-kestrel/parity.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
[
{
"width": 1280,
"height": 800,
"theme": "dark",
"tab": "Home",
"parsed_nodes": 376,
"compiled_nodes": 376,
"differences": []
},
{
"width": 980,
"height": 620,
"theme": "dark",
"tab": "Text",
"parsed_nodes": 298,
"compiled_nodes": 298,
"differences": []
},
{
"width": 1440,
"height": 900,
"theme": "light",
"tab": "Drafting",
"parsed_nodes": 311,
"compiled_nodes": 311,
"differences": []
}
]
183 changes: 183 additions & 0 deletions docs/design/evidence/hybrid-kestrel/smoke.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
{
"checks": [
{
"ribbon": "Home",
"buttons": 30
},
{
"ribbon": "Insert",
"buttons": 17
},
{
"ribbon": "Annotate",
"buttons": 18
},
{
"ribbon": "Model",
"buttons": 27
},
{
"ribbon": "View",
"buttons": 25
},
{
"ribbon": "Manage",
"buttons": 19
},
{
"ribbon": "Drafting",
"buttons": 22
},
{
"ribbon": "Solids",
"buttons": 30
},
{
"ribbon": "Parametric",
"buttons": 17
},
{
"ribbon": "Assembly",
"buttons": 10
},
{
"ribbon": "Blocks",
"buttons": 11
},
{
"ribbon": "Text",
"buttons": 19
},
{
"ribbon": "Exchange",
"buttons": 10
},
{
"ribbon": "Productivity",
"buttons": 10
},
{
"command": "layers",
"ok": true,
"title": "Layer manager"
},
{
"command": "new-layer",
"ok": true,
"title": "Create layer"
},
{
"command": "units",
"ok": true,
"title": "Drawing units & precision"
},
{
"command": "help",
"ok": true,
"title": "Welcome to Kestrel CAD"
},
{
"command": "diagnostics",
"ok": true,
"title": "Renderer diagnostics"
},
{
"command": "palette",
"ok": true,
"title": "Renderer diagnostics"
},
{
"command": "group",
"ok": false,
"error": "Error: Select at least 2 editable objects first."
},
{
"command": "text",
"ok": true,
"title": "Create text"
},
{
"command": "dimension",
"ok": true,
"title": "Create text"
},
{
"command": "hatch",
"ok": true,
"title": "Create text"
},
{
"command": "array",
"ok": false,
"error": "Error: Select an editable object first."
},
{
"command": "transform3d",
"ok": false,
"error": "Error: Select an editable object first."
},
{
"command": "dwg-setup",
"ok": true,
"title": "DWG codec status"
},
{
"command": "mtext",
"ok": true,
"title": "Create rich MTEXT"
},
{
"command": "dimstyles",
"ok": true,
"title": "Dimension styles"
},
{
"command": "leader",
"ok": true,
"title": "Create leader"
},
{
"command": "table",
"ok": true,
"title": "Create table"
},
{
"command": "stretch",
"ok": true,
"title": "Stretch crossing vertices"
},
{
"command": "layout-manager",
"ok": true,
"title": "Scaled paper layouts"
},
{
"command": "ucs-manager",
"ok": true,
"title": "User coordinate system"
}
],
"startup": {
"entities": 265,
"nodes": 781,
"backend": "Canvas 2D \u00b7 Compatibility"
},
"strict": true,
"mtext_preview": {
"nodes": 4,
"report": "2 lines, 120.00 \u00d7 16.67 mm. "
},
"history": {
"n": 265,
"added": 266,
"undone": 265,
"redone": 266
},
"worker_available": true,
"dxf_export": {
"length": 53542,
"eof": true
},
"caught_failures": [],
"errors": []
}
Loading
Loading