Skip to content

Releases: unsignedapps/Vexil

Vexil 3.0 beta 1

29 Nov 06:25
60f9e83

Choose a tag to compare

Vexil 3.0 beta 1 Pre-release
Pre-release

We've hit our first beta release of Vexil 3!

We're now effectively at feature parity with Vexil 2 with the re-addition of Vexillographer, so we're ready for our first beta release.

To learn more about Vexil 3 and what is changing see the Migrating Guide (which will be fleshed out over subsequent betas).

What’s Changed (since Alpha 3)

Vexil 3 Alpha 3

28 Sep 14:18
a6f1cb3

Choose a tag to compare

Vexil 3 Alpha 3 Pre-release
Pre-release

This is our final alpha release. The rebuilt Vexillographer should be available soon which will mark our first beta release.

What’s Changed

  • Make updating FlagPole's source list thread-safe. @bok- (#137)
  • Calculate flag display names at compile time instead of runtime @bok- (#136)
  • Provide FlagValueSource's with a way to create FlagKeyPaths @bok- (#135)
  • Support public Wigwags @bok- (#134)
  • Added support for omitting the default parameter/initialiser for optional flag types. @bok- (#133)
  • Added correct detection of conformance scopes when inside a public extension @bok- (#132)

🐛 Bug Fixes

  • Fixed support for multi-subscribers @bok- (#138)
  • Don't generate Equatable checking for computed properties @bok- (#131)

Vexil 3 Alpha 2

13 Dec 03:51
d5d55a1

Choose a tag to compare

Vexil 3 Alpha 2 Pre-release
Pre-release

This is our second alpha release of Vexil 3 and fixes a number of smaller issues and notably drops support for Xcode 15.x and earlier.

Important

Vexillographer is not available in Alpha 2.

This is a preview release intended to allow early adopters to assess the impact to their codebase while we work on the remaining pieces in parallel. It has not been tested with production workloads yet (but all unit tests pass).

To learn more about Vexil 3 and what is changing see the Migrating Guide.

🚀 What’s Changed

📝 What's still to come before we go to beta

  • Vexillographer to be available.
  • Swift 6 + Xcode 16 support.
  • swift-testing migration.

Vexil 3 Alpha 1

15 Jul 13:53
f70a47d

Choose a tag to compare

Vexil 3 Alpha 1 Pre-release
Pre-release

This is an initial alpha release of Vexil 3.

Vexil 3 is a ground-up rewrite using Swift Macros and the Visitor Pattern to reduce usage of Mirror and memory usage as well as improving the overall performance.

Important

Vexillographer is not available in Alpha 1.

This is a preview release intended to allow early adopters to assess the impact to their codebase while we work on the remaining pieces in parallel. It has not been tested with production workloads yet (but all unit tests pass).

To learn more about Vexil 3 and what is changing see the Migrating Guide.

🚀 What's Changed

  • A macro replacement for the @Flag property wrapper.
  • A macro replacement for the @FlagGroup property wrapper.
  • A @FlagContainer macro to replace the FlagContainer protocol and generate conformance to the Visitor Pattern.
  • Use of AsyncSequence and AsyncStream under the hood to stream sets of changed flag keys.
  • Lazy lookup of publisher flag values.
  • Strict concurrency support.
  • Dropped support for Flag Diagnostics. You can implement FlagVisitor and walk the hierarchy to collect this information yourself if required.
  • Dropped support for Swift <5.10, iOS <15, tvOS <15, macOS <12, watchOS <8.

📝 What's still to come before we go to beta

  • Vexillographer is not yet available.
  • Swift 6 + Xcode 16 support.
  • swift-testing migration.

Release 2.2.2: Bug fixes 🐛

03 Aug 01:19
9d6165d

Choose a tag to compare

🐛 Bug Fixes

  • Fix navigation issue for nested flags in Vexillographer @patANZx (#112)

🧰 Maintenance

  • Removed deprecated macOS 10.15 and added latest Xcode versions under macOS 12 @bok- (#111)
  • Changed from SwiftLint to SwiftFormat @bok- (#110)

🆕 New Contributors

A huge thanks to new contributors to this project!

@patANZx made their first contribution in #112

Full Changelog: v2.2.1...v2.2.2

Release 2.2.1: Slimming down 🤏

14 Dec 13:23
7165ddf

Choose a tag to compare

What’s Changed

🚀 Features

🧰 Maintenance

🆕 New Contributors

A huge thanks to new contributors to this project!

Full Changelog: v2.2.0...v2.2.1

Release 2.2.0: Flag Diagnostics 🔬

14 Dec 08:01

Choose a tag to compare

What’s Changed

This release is all about diagnostics! With great flexibility sometimes comes complexity, and even with a simple stack of a remote flag value provider and local user overrides it can sometimes be a chore to find out which flags are active and why.

This release adds:

  • Point-in-time diagnostics using flagPole.makeDiagnostics() and try snapshot.makeDiagnostics()
  • Real-time diagnostics using flagPole.makeDiagnosticsPublisher()
  • A read-only view in Vexillographer by passing in nil as the source to edit.

Diagnostics should have almost no overhead unless you're actively using them, and even then it should be minimal. You can read more about Diagnostics in the documentation.

🚀 Features

  • Added a read-only view to Vexillographer @bok- (#102)
  • Added diagnostics for flag resolution and real-time updates @bok- (#101)

🐛 Bug Fixes

  • Fixed ability to subclass the FlagValueDictionary @bok- (#100)

Release v2.1.0: Codable FlagValueDictionaries

09 Dec 03:14
e11cf66

Choose a tag to compare

What’s Changed

  • Add Codable conformance to FlagValueDictionary @bok- (#99)

🚩 Vexil v2

08 Dec 22:10

Choose a tag to compare

What’s Changed

💥 Breaking Changes

This release includes one breaking change:

  • FlagValueDictionary now uses [String: BoxedFlagValue] as its internal storage instead of [String: Any]. This allows better interaction with the flag values, not just the keys, but will be a breaking change for anyone casting directly from Any. (#93)

🚀 Features

  • Changed FlagValueDictionary to use [String: BoxedFlagValue] as its internal storage @bok- (#93)
  • Added Codable support to BoxedFlagValue @bok- (#91)
  • Added support for the standard Swift default setter syntax @bok- (#85)

🧰 Maintenance

  • Fixed invalid destination in DocC generation workflow @bok- (#94)
  • Updated workflows to reflect the release of Swift 5.5 and Xcode 13.0 @bok- (#92)

Release 1.4: FlagValueSource Manipulation 🦥

14 Jun 11:59
7a6c8f9

Choose a tag to compare

What’s Changed

This release adds an optional parameter to FlagPole.snapshot(of:) to allow you to take a snapshot of just the flags that have been set on a specific FlagSource.

It also adds a two new methods:

It also adds a new supported means of publishing real-time flag value changes, in FlagValueSource.valuesDidChange(keys:). If your FlagValueSource knows which flags have changed at any one time you can now emit a Set of their keys and Vexil will re-use an existing Snapshot and only update those keys that have changed. This can cut down on the amount of computation required with large flag hierarchies. FlagValueSource.valueDidChange is maintained for backwards compatibility.

Our documentation website (https://vexil.unsignedapps.com/) is now powered by DocC 🎉

🚀 Features

  • Support FlagValueSources publishing changes to individual flags @bok- (#81)
  • Added support for removing/resetting all flag values in a given FlagValueSource @bok- (#80)
  • Added ability to create snapshots from specific sources, and to copy flag values between sources @bok- (#79)

📚 Documentation Changes

  • Migrated docs and the website (vexil.unsignedapps.com) to DocC @bok- (#82)

🧰 Maintenance