Skip to content

Releases: TokamakUI/Tokamak

0.11.0

af81090
Compare
Choose a tag to compare

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)
    }
  }
}

What's Changed

New Contributors

Full Changelog: 0.10.1...0.11.0

0.10.1

Compare
Choose a tag to compare

This is a small bugfix release, which updates JavaScriptKit dependency to 0.15 and required version of carton to 0.15.

Merged pull requests:

0.10.0

6905fdf
Compare
Choose a tag to compare

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:

0.9.1

3c649d5
Compare
Choose a tag to compare

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:

0.9.0

32616fe
Compare
Choose a tag to compare

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;
  • Sanitizers for 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)
  • Can't find CGSize or CGFloat type (#450)
  • UnitPoint constants don't match SwiftUI (#443)

Merged pull requests:

0.8.0

c2ed28c
Compare
Choose a tag to compare

This release adds support for more SwiftUI types and modifiers, and fixes bugs. Including, but not limited to:

  • Toolbar type and toolbar modifier
  • ProgressView type
  • Animation and related types and modifiers
  • opacity, scaleEffect, aspectRatio, and controlSize modifiers
  • Material and Gradient types
  • HierarchicalShapeStyle (.primary/.secondary/.tertiary/.quaternary) type
  • ContainerRelativeShape type
  • spacing argument support for initializers of HStack and VStack
  • support for standard Foundation types, such as CGRect, CGSize (we previously used our own implementation of those, which weren't fully compatible with Foundation)
  • ability to sort HTML attributes when generating static HTML, which is essential for end-to-end tests that cover generated output.

Many thanks to @carson-katri, @ezraberch, and @yonihemi for their contributions to this release!

Closed issues:

  • Is there anyway to compile this from Xcode? (#406)
  • Xcode doesn't compile — gtk/gtk.h not found (#405)
  • Use NSGeometry types from Foundation (#404)
  • Adding padding to a view contained in a Button causes the Button to disappear (#403)
  • .background modifier with contained shape causes view to expand to full vertical size of the screen (#402)
  • Multi-line string handling in Text views (#400)
  • Content with spacer jumps when blurring and focusing the page (#395)
  • Frame sizes do not match expected behavior. (#387)
  • URL hash change demo crashes (#369)
  • Infinite loops w/ 100% CPU usage caused by stack overflows (#367)
  • TokamakDemo breaks after use of _domRef (#326)
  • Add support for toolbar modifier and related types (#316)

Merged pull requests:

0.7.0

Compare
Choose a tag to compare

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)
  • What is the difference between HTML and DynamicHTML? (#388)
  • Reduce View.body Visibility (#385)
  • Verify that type constructor names contain contain module names (#368)
  • Crash when using a View with optional content (#362)
  • Set up code coverage reports on GitHub Actions (#350)
  • Shadow support (#324)
  • Implement DatePicker view in the DOM renderer (#320)
  • TokamakDemo build failed (#305)

Merged pull requests:

0.6.1

b4b0efc
Compare
Choose a tag to compare

This release fixes autocomplete in Xcode for projects that depend on Tokamak.

0.6.0

abceb86
Compare
Choose a tag to compare

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:

0.5.3

cabe5ab
Compare
Choose a tag to compare

A bugfix release that fixes Toggle values not updated when reset from a binding. Additionally, the embedded internal implementation of JSScheduler is replaced with one from OpenCombineJS. This library is a new dependency of Tokamak used in the DOM renderer.

Closed issues:

  • Toggle value not updated when it's reset from a binding (#287)

Merged pull requests: