* Pass preferences up the Fiber tree
* Working preferences (except for backgroundPreferenceValue)
* Initial StateObject support
* Fix layout caching bug
* Support StateObject/EnvironmentObject/custom DynamicProperty
* Add doc comments for bindProperties and updateDynamicProperties
* Use immediate scheduling in static HTML and test renderers
* Add preferences test
* Add state tests and improve testing API
* Attempt to fix tests
* Fix preference tests
* Attempt to fix tests when Dispatch is unavailable
* #if out on os(WASI)
* Add check for WASI to test
* Add check for WASI to TestViewProxy
* #if out of import Dispatch when os == WASI
* Remove all Dispatch code
* Remove address from debugDescription
* Move TestViewProxy to TokamakTestRenderer
* Add memory address to Fiber.debugDescription
* Fix copyright year
* Add several missing types to Core.swift
* Add missing LayoutValueKey to Core.swift
* Fix issues with view trait propagation
* Enable App/SceneStorage in DOMFiberRenderer
* Address review comments
* Revise preference implementation
* Support image and aspect ratio
* Fix measureImage implementation in test renderer
* Improve accuracy of aspectRatio
* Rename intrinsicSize to hide from autocomplete
* Initial pass at Layout protocol implementation
* Move layout into a separate pass
* Split reconciler into separate FiberReconcilerPass-es
* Cleanup reconcile pass
* Simplify cache implementation
* Optimize array capacity and persist cache between runs
* Revert viewChildrenCount
* Improve accuracy of stack layout
* Try caching sizeThatFits
* Revise caching of sizeThatFits
* Cleanup layout files and split up
* Further cleanup
* Add ContainedZLayout
* Add frame layouts
* Add snapshots tests that compare against native SwiftUI
* Perform updates from the top of the view hierarchy for dynamic layout
* Add Package.swift
* Fix reconciler bug
* Add test case for reconciler insert bug
* Respect spacing preferences
* Revise cache and spacing logic to match SwiftUI default implementations
* Allow spacing changes based on adjacent View type
* Support view traits in FiberReconciler (and LayoutValueKey by extension)
* Propagate cache invalidation
* Cleanup attributes
* Simplify LayoutPass and improve accuracy
* Cleanup logs
* Add layoutPriority tests
* Revise conflict with main
* Dictionary performance catch
* Remove unneccesary capacity preservation
* Update TokamakCoreBenchmark to handle LayoutView addition at hierarchy root
* Implement AnyLayout and replace LayoutActions
* Allow VStack/HStack to be created without children
* Fix padding implementation
* Formatting fixes
* Space out ViewArguments.swift properties
* Add backing storage to LayoutSubview to move out of ReconcilePass and slightly optimize stack usage
* Initial Reconciler using visitor pattern
* Preliminary static HTML renderer using the new reconciler
* Add environment
* Initial DOM renderer
* Nearly-working and simplified reconciler
* Working reconciler for HTML/DOM renderers
* Rename files, and split code across files
* Add some documentation and refinements
* Remove GraphRendererTests
* Initial layout engine (only implemented for the TestRenderer)
* Layout engine for the DOM renderer
* Refined layout pass
* Revise positioning and restoration of position styles on .update
* Re-add Optional.body for StackReconciler-based renderers
* Add text measurement
* Add spacing to StackLayout
* Add benchmarks to compare the stack/fiber reconcilers
* Fix some issues created for the StackReconciler, and add update benchmarks
* Add BenchmarkState.measure to only calculate the time to update
* Fix hang in update shallow benchmark
* Fix build errors
* Address build issues
* Remove File.swift headers
* Rename Element -> FiberElement and Element.Data -> FiberElement.Content
* Add doc comment explaining unowned usage
* Add doc comments explaining implicitly unwrapped optionals
* Attempt to use Swift instead of JS for applying mutations
* Fix issue with not applying updates to DOMFiberElement
* Add comment explaining manual implementation of Hashable for PropertyInfo
* Fix linter issues
* Remove dynamicMember label from subscript
* Re-enable carton test
* Attempt GTK fix
* Add option to disable layout in the FiberReconciler
* Re-enable TokamakDemo with StackReconciler
* Restore CI config
* Restore CI config
* Add file headers and cleanup structure
* Add 'px' to font-size in test outputs
* Remove extra newlines
* Keep track of 'elementChildren' so children are positioned in the correct order
* Use a ViewVisitor to pass the correct View type to the proposeSize function
* Add support for view modifiers
* Add frame modifier to demonstrate modifiers
* Fix TestRenderer
* Remove unused property
* Fix doc comment
* Fix linter issues and refactor slightly
* Fix benchmark builds
* Attempt to fix benchmarks
* Fix sibling layout issues
* Restore original demo
* Support overriding visit function in renderer and _ShapeView drawing
* Support background modifier
* Resolve reconciler issues due to Optionals and elementIndex being set at wrong phase
* Remove Brewfile.lock.json
* Attempt to fix rendering tests
* Formatting nits
* Fix Gradient rendering
Co-authored-by: Max Desiatov <max@desiatov.com>
* Initial Reconciler using visitor pattern
* Preliminary static HTML renderer using the new reconciler
* Add environment
* Initial DOM renderer
* Nearly-working and simplified reconciler
* Working reconciler for HTML/DOM renderers
* Rename files, and split code across files
* Add some documentation and refinements
* Remove GraphRendererTests
* Initial layout engine (only implemented for the TestRenderer)
* Layout engine for the DOM renderer
* Refined layout pass
* Revise positioning and restoration of position styles on .update
* Re-add Optional.body for StackReconciler-based renderers
* Add text measurement
* Add spacing to StackLayout
* Add benchmarks to compare the stack/fiber reconcilers
* Fix some issues created for the StackReconciler, and add update benchmarks
* Add BenchmarkState.measure to only calculate the time to update
* Fix hang in update shallow benchmark
* Fix build errors
* Address build issues
* Remove File.swift headers
* Rename Element -> FiberElement and Element.Data -> FiberElement.Content
* Add doc comment explaining unowned usage
* Add doc comments explaining implicitly unwrapped optionals
* Attempt to use Swift instead of JS for applying mutations
* Fix issue with not applying updates to DOMFiberElement
* Add comment explaining manual implementation of Hashable for PropertyInfo
* Fix linter issues
* Remove dynamicMember label from subscript
* Re-enable carton test
* Attempt GTK fix
* Add option to disable layout in the FiberReconciler
* Re-enable TokamakDemo with StackReconciler
* Restore CI config
* Restore CI config
* Add file headers and cleanup structure
* Add 'px' to font-size in test outputs
* Remove extra newlines
* Keep track of 'elementChildren' so children are positioned in the correct order
* Use a ViewVisitor to pass the correct View type to the proposeSize function
* Add support for view modifiers
* Add frame modifier to demonstrate modifiers
* Fix TestRenderer
* Remove unused property
* Fix doc comment
* Fix linter issues and refactor slightly
* Fix benchmark builds
* Attempt to fix benchmarks
* Fix sibling layout issues
* Restore original demo
* Address review comments
* Remove maxAxis and fitAxis properties
* Use switch instead of ternary operators
* Add more documentation to layout steps
* Resolve reconciler issue due to alternate child not being cleared/released
* Apply suggestions from code review
Co-authored-by: Max Desiatov <max@desiatov.com>
* Reuse Text resolution code.
* Add more documentation
* Fix typo
* Use structs for LayoutComputers
* Update AlignmentID demo
* Fix weird formatting
Co-authored-by: Max Desiatov <max@desiatov.com>
* Initial Reconciler using visitor pattern
* Preliminary static HTML renderer using the new reconciler
* Add environment
* Initial DOM renderer
* Nearly-working and simplified reconciler
* Working reconciler for HTML/DOM renderers
* Rename files, and split code across files
* Add some documentation and refinements
* Remove GraphRendererTests
* Re-add Optional.body for StackReconciler-based renderers
* Add benchmarks to compare the stack/fiber reconcilers
* Fix some issues created for the StackReconciler, and add update benchmarks
* Add BenchmarkState.measure to only calculate the time to update
* Fix hang in update shallow benchmark
* Fix build errors
* Address build issues
* Remove File.swift headers
* Rename Element -> FiberElement and Element.Data -> FiberElement.Content
* Add doc comment explaining unowned usage
* Add doc comments explaining implicitly unwrapped optionals
* Attempt to use Swift instead of JS for applying mutations
* Fix issue with not applying updates to DOMFiberElement
* Add comment explaining manual implementation of Hashable for PropertyInfo
* Fix linter issues
* Remove dynamicMember label from subscript
* Re-enable carton test
* Re-enable TokamakDemo with StackReconciler
Co-authored-by: Max Desiatov <max@desiatov.com>