<feed xmlns='http://www.w3.org/2005/Atom'>
<title>hutch.git/Hutch/Extensions/Foundation+Sendable.swift, branch main</title>
<subtitle>ios client for sourcehut. swiftui.
</subtitle>
<id>http://git.krz.sh/krz/hutch.git/atom?h=main</id>
<link rel='self' href='http://git.krz.sh/krz/hutch.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/'/>
<updated>2026-08-07T22:33:46+00:00</updated>
<entry>
<title>Adopt Swift 6 language mode</title>
<updated>2026-08-07T22:33:46+00:00</updated>
<author>
<name>Christian Cleberg</name>
<email>hello@cleberg.net</email>
</author>
<published>2026-08-07T22:33:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.krz.sh/krz/hutch.git/commit/?id=283fbf00fdffd64c924b6cb22c84e803b718f078'/>
<id>urn:sha1:283fbf00fdffd64c924b6cb22c84e803b718f078</id>
<content type='text'>
Flip SWIFT_VERSION to 6.0 (keeping SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor)
and resolve every resulting diagnostic. Mechanical, no behaviour change:

- Models: pure value types in Models/ and utility extensions (Date, DateFormatter,
  SRHTWebURL) marked nonisolated so the nonisolated networking layer can use them.
- App Intents: stored 'static var' (title/description/openAppWhenRun/
  typeDisplayRepresentation/defaultQuery/caseDisplayRepresentations) -&gt; 'static let';
  drop the invalid @retroactive on the in-module LookupType: AppEnum.
- Sendable dicts: 'nil as String? as Any' -&gt; 'nil as String? as any Sendable'.
- UserDefaults: retroactive @unchecked Sendable (documented thread-safe).
- WidgetKit completion handlers rebound nonisolated(unsafe) to cross into Task {};
  TipStoreViewModel task handle is @ObservationIgnored nonisolated(unsafe) for
  its nonisolated deinit.
- Tests run on @MainActor; a few constant fixtures marked nonisolated for use in
  @Sendable stub closures.

Builds and the full suite are clean in Swift 6 mode. Roadmap updated.
</content>
</entry>
</feed>
