SwiftUI-compatible framework for building browser apps with WebAssembly and native apps for other platforms
This is a minor update to fix building from Xcode 14.1 (#528)
Full Changelog: https://github.com/TokamakUI/Tokamak/compare/0.11.0...0.11.1
This release adds support for SwiftWasm 5.7. It also includes a new reconciler modeled after React's Fiber reconciler. It can provide faster updates and allow for larger View hierarchies. It also includes layout steps that can match SwiftUI layouts closer than CSS approximations.
You can specify which reconciler to use in your App
's configuration:
struct CounterApp: App {
static let _configuration: _AppConfiguration = .init(
// Specify `useDynamicLayout` to enable the layout steps in place of CSS approximations.
reconciler: .fiber(useDynamicLayout: true)
)
var body: some Scene {
WindowGroup("Counter Demo") {
Counter(count: 5, limit: 15)
}
}
}
CONTRIBUTING.md
by @MaxDesiatov in https://github.com/TokamakUI/Tokamak/pull/488
foregroundColor
for TextField
by @carson-katri in https://github.com/TokamakUI/Tokamak/pull/453
App
to choose reconciler by @carson-katri in https://github.com/TokamakUI/Tokamak/pull/495
_ShapeView
and background
modifiers support to Fiber renderers by @carson-katri in https://github.com/TokamakUI/Tokamak/pull/491
_PaddingLayout
support to layout engine by @carson-katri in https://github.com/TokamakUI/Tokamak/pull/485
AnyShape
by @filip-sakel in https://github.com/TokamakUI/Tokamak/pull/497
Layout
protocol for FiberReconciler by @carson-katri in https://github.com/TokamakUI/Tokamak/pull/498
Image
in Fiber renderers by @carson-katri in https://github.com/TokamakUI/Tokamak/pull/500
@StateObject
, @EnvironmentObject
, and custom DynamicProperty
types by @carson-katri in https://github.com/TokamakUI/Tokamak/pull/501
bug_report.md
by @MaxDesiatov in https://github.com/TokamakUI/Tokamak/pull/510
FAQ.md
by @MaxDesiatov in https://github.com/TokamakUI/Tokamak/pull/511
Full Changelog: https://github.com/TokamakUI/Tokamak/compare/0.10.1...0.11.0
This is a small bugfix release, which updates JavaScriptKit dependency to 0.15 and required version of carton
to 0.15.
Merged pull requests:
carton
version in "Requirements" (#481) via @MaxDesiatov
v5.6
version of swiftwasm-action
(#477) via @MaxDesiatov
This release adds support for SwiftWasm 5.6. It also updates JavaScriptKit and OpenCombineJS dependencies. Due to issues with support for older SwiftWasm releases in the carton
/SwiftPM integration, Tokamak now requires SwiftWasm 5.6 or later, while SwiftWasm 5.4 and 5.5 are no longer supported.
Merged pull requests:
This release fixes an issue with EnvironmentValues
, updates CI workflow for SwiftWasm 5.5, and bumps JavaScriptKit dependency to 0.12.0.
Merged pull requests:
rootEnvironment
not merged with .defaultEnvironment
(#461) via @regexident
This release adds support for SwiftWasm 5.5 and bumps the minimum required version to Swift 5.4. It now depends on JavaScriptKit 0.11.1, which no longer requires manual memory management of JSClosure
instances. The downside of that update is that minimum browser version requirements are significantly higher now. See README.md
for more details.
Additionally, a few new features were added to the DOM renderer:
Canvas
and TimelineView
;onHover
modifier;task
modifier for running async
functions;Text
view.Many thanks (in alphabetical order) to @agg23, @carson-katri, @ezraberch, and @mbrandonw for their contributions to this release!
Closed issues:
TextField
Not Rendering the field (#455)CGSize
or CGFloat
type (#450)UnitPoint
constants don't match SwiftUI (#443)Merged pull requests:
task
modifier (#457) via @MaxDesiatov
gtk_macos_build
job (#454) via @MaxDesiatov
Canvas
and TimelineView
to DOM renderer (#449) via @carson-katri
onHover
(#448) via @agg23
NavigationView
(#446) via @ezraberch
@resultBuilder
(#442) via @MaxDesiatov
Text
(#437) via @ezraberch
@ezraberch
to the list of maintainers (#440) via @MaxDesiatov
This release adds support for more SwiftUI types and modifiers, and fixes bugs. Including, but not limited to:
Toolbar
type and toolbar
modifierProgressView
typeAnimation
and related types and modifiersopacity
, scaleEffect
, aspectRatio
, and controlSize
modifiersMaterial
and Gradient
typesHierarchicalShapeStyle
(.primary
/.secondary
/.tertiary
/.quaternary
) typeContainerRelativeShape
typespacing
argument support for initializers of HStack
and VStack
CGRect
, CGSize
(we previously used our own implementation of those, which weren't fully compatible with Foundation)Many thanks to @carson-katri, @ezraberch, and @yonihemi for their contributions to this release!
Closed issues:
NSGeometry
types from Foundation (#404)_domRef
(#326)toolbar
modifier and related types (#316)Merged pull requests:
ShapeStyle
and add Gradient
s (#435) via @carson-katri
Toolbar
implementation for HTML renderer (#169) via @carson-katri
ToolbarItem
and its builder functions (#430) via @MaxDesiatov
controlSize
/controlProminence
modifiers (#431) via @carson-katri
ProgressView
(#425) via @carson-katri
scaleEffect
modifier (#424) via @carson-katri
aspectRatio
modifier (#422) via @carson-katri
Material
to the HTML renderer (#418) via @carson-katri
opacity
modifier (#415) via @MaxDesiatov
spacing
property on HStack
/VStack
(#273) via @MaxDesiatov
Path
SVG layout (#412) via @MaxDesiatov
padding
modifier fusion to avoid nested div
s (#253) via @MaxDesiatov
CGFloat
, CGPoint
, CGRect
from Foundation (#411) via @MaxDesiatov
DOMRenderer.update
(#410) via @ezraberch
ViewDeferredToRenderer
, fix renderer tests (#408) via @MaxDesiatov
This release introduces new view types such as DatePicker
, new modifiers such as shadow
, improves test coverage, updates dependencies, and fixes multiple bugs and crashes. Additionally, a proof of concept GTK renderer is now available in the TokamakGTK
module.
Many thanks to (in alphabetical order) @carson-katri, @filip-sakel @foscomputerservices, @literalpie, @mattpolzin, @mortenbekditlevsen, and @Snowy1803 for their contributions to this release!
Closed issues:
@ObservedObject
is a get-only property (#392)HTML
and DynamicHTML
? (#388)View.body
Visibility (#385)View
with optional content (#362)DatePicker
view in the DOM renderer (#320)TokamakDemo
build failed (#305)Merged pull requests:
@dynamicMemberLookup
to Binding
(#396) via @carson-katri
DatePicker
to the TokamakDOM
module (#394) via @Snowy1803
String(reflecting:)
vs String(describing:)
(#391) via @MaxDesiatov
HTML
and DynamicHTML
(#389) via @MaxDesiatov
_spi(TokamakCore)
to ideally internal public members (#386) via @filip-sakel
CGPoint
, CGSize
and CGRect
var
s instead of let
s (#382) via @mortenbekditlevsen
TestRenderer
(#380) via @MaxDesiatov
macos-latest
agent for the GTK build (#360) via @MaxDesiatov
SecureField
(#363) via @mortenbekditlevsen
TextField
support for GTK using GtkEntry
(#361) via @mortenbekditlevsen
@mortenbekditlevsen
to the list of maintainers in README.md
(#352) via @MaxDesiatov
Link
re-export to TokamakDOM (#351) via @MaxDesiatov
This release fixes autocomplete in Xcode for projects that depend on Tokamak.
This release introduces support for the Image
view, which can load images bundled as SwiftPM resources. It also adds the PreferenceKey
protocol and preference(key:value:)
, onPreferenceChange
, backgroundPreferenceValue
, transformPreference
, and overlayPreferenceValue
modifiers. Many thanks to @carson-katri and @j-f1 for implementing this!
Merged pull requests:
Image
implementation, bump JSKit to 0.9.0 (#155) via @j-f1