Skip to content

0.6.0

Latest

Choose a tag to compare

@foscomputerservices foscomputerservices released this 09 Jul 20:44

The live-invalidation release: screens that stay current by themselves.

⚠️ Breaking (0.x SemVer). The hand-written SwiftUI Localizable overload mirrors are replaced by a complete generated surface: defaultTitle:defaultValue: on TextField inits, any Localizablesome Localizable parameters, and ContentUnavailableView's defaultValue: argument order changed. See the full changelog for every entry and migration note.

Highlights

  • Live ViewModel invalidation@ViewModel(options: [.live]): any bound view re-fetches automatically when another actor commits a change to the data it was served from. No polling, no manual invalidation; degrades to fetch-once where no live connection is configured, so adopting it on a shipped screen is purely additive. Server side: useLiveInvalidation(on:) + liveTransaction { } (transactional writes that notify clients only on commit). Transport is replaceable via the InvalidationChannel seam.
  • Client credentialsClientCredentialProvider (+ stock BearerCredentialProvider) attaches authentication headers to every request, consulted per-request so rotating tokens just work; ClientCredentialMiddleware + ServerCredentialVerifier on the Vapor side.
  • Generated Localizable overload surface — every SwiftUI control that renders text now has a complete, generated Localizable overload set, kept honest by a CI staleness gate.
  • withServedFluentTestApp (FOSTestingVapor) — test streaming/SSE endpoints over a real socket on an ephemeral port.
  • Fixed: X-FOS-Version attaches exactly once per served response.

Full changelog: https://github.com/foscomputerservices/FOSUtilities/blob/0.6.0/CHANGELOG.md