Tokamak/CHANGELOG.md

34 KiB

0.8.0 (17 August 2021)

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 (3 May 2021)

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 (6 December 2020)

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

0.6.0 (4 December 2020)

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 (28 November 2020)

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:

0.5.2 (12 November 2020)

This is a bugfix release that fixes in-tree updates in cases where type of a view changes with conditional updates. Thanks to @vi4m for reporting the issue!

Merged pull requests:

0.5.1 (9 November 2020)

A bugfix release to improve compatibility with Xcode autocomplete.

Merged pull requests:

0.5.0 (9 November 2020)

This is a compatibility release with small feature additions. Namely the Link view is now available, and our JavaScriptKit dependency has been updated. The latter change now allows you to open Package.swift package manifests of your Tokamak projects with working auto-complete in Xcode. Also, our dark mode implementation now more closely follows SwiftUI behavior.

Many thanks to @carson-katri and @kateinoigakukun for their contributions to this release!

Closed issues:

  • Can't build Tokamak project - carton dev command (#296)
  • Colors should change depending on light/dark color scheme (#290)
  • Pattern for handling global dom events (#284)
  • 0.4.0 upgrade / regression? (#283)

Merged pull requests:

0.4.0 (30 September 2020)

This is mainly a bugfix and compatibility release with a small feature addition. Namely, Slider view is introduced in the DOM renderer, and binding updates for SVG elements are working now. During this development cycle efforts of our team were devoted to recently released JavaScriptKit 0.7 and carton 0.6. Both of those releases are pretty big updates that improve developer experience significantly, and this version of Tokamak requires those as minimum versions.

Many thanks to @j-f1 and @kateinoigakukun for their contributions to these updates!

Closed issues:

  • HTML + Binding (#278)

Merged pull requests:

0.3.0 (19 August 2020)

This release improves compatibility with the SwiftUI API and fixes bugs in our WebAssembly/DOM renderer, included but not limited to:

  • support for App/Scene lifecycle;
  • ColorScheme detection and environment setting;
  • dark mode styles;
  • @StateObject property wrapper implementation;
  • SidebarListStyle, ButtonStyle, GeometryProxy types;
  • NavigationView and GeometryReader views.

Additionally, new TokamakStaticHTML renderer was added that supports rendering stateless views into static HTML that doesn't include any JavaScript or WebAssembly dependencies. This is useful for static websites and in the future could be used together with TokamakDOM for server-side rendering.

Tokamak 0.3.0 now requires 5.3 snapshots of SwiftWasm, which in general should be more stable than the development snapshots that were previously used, and is also compatible with Xcode 12 betas. If you have a .swift-version file in your project, you should specify wasm-5.3-SNAPSHOT-2020-07-27-a in it or a later 5.3 snapshot, otherwise carton 0.5 selects a compatible 5.3 snapshot for you automatically. Allowing carton to select a default snapshot is the recommended approach, so in general we recommend avoiding .swif-version files in projects that use Tokamak.

Many thanks to @carson-katri, @j-f1, and @Outcue for their contributions to this release.

The complete list of changes included in this release is available below.

Closed issues:

  • Command "carton dev" failed (#258)
  • Dark mode detection causes crashes in Safari (#245)
  • Add dark color scheme style (#237)
  • Establish App lifecycle as the only way to start rendering (#224)
  • Runtime issues with dynamic properties in App types (#222)
  • List appearance changes when reloaded (#212)
  • List scrolling does not work on Firefox 78 on macOS (#211)
  • Scrolling broken when List is child of NavigationView (#208)
  • Rectangle frame is not being set properly (#185)
  • Implement SidebarListStyle (#180)
  • Implement GeometryReader/GeometryProxy (#176)
  • @StateObject support (#158)
  • NavigationView/NavigationLink (#129)

Merged pull requests:

0.2.0 (21 July 2020)

This is the first release that supports WebAssembly and browser apps with the new TokamakDOM module. The API now closely follows SwiftUI, while the new React-like API is no longer available. Unfortunately, since older versions of iOS don't support opaque types, and you already can use SwiftUI on iOS versions that do support it, iOS and macOS renderers are no longer available. Many thanks to @carson-katri, @j-f1, @helje5, @hodovani, @Outcue, @filip-sakel and @noontideox for their contributions to this release!

Closed issues:

  • State vars have to be first (#190)
  • Implicit 8 pixel margin added to html body (#188)
  • Unable to set Color value (#186)
  • Crash in protocol conformance code (#167)
  • Extend Path to match the SwiftUI API (#156)
  • Some primitive Views cannot access @Environment (#139)
  • Logo for the project (#132)
  • ZStack? (#111)
  • View has - by default - a Body of type Never. (#110)
  • Getting value of type 'String' has no member 'components' (#108)
  • Does iOS 10 work? (#105)
  • Add Tokamak project linter (#77)
  • Ambiguous reference to member 'node' (#68)

Merged pull requests:

0.1.2 (18 March, 2019)

Update example code in README for CocoaPods page.

0.1.1 (18 March, 2019)

Update rendered README.md on CocoaPods page.

0.1.0 (18 March, 2019)

First release with an iOS renderer for UIKit and a basic macOS renderer for AppKit.