Simplification: one tracking rule
Destination tracking is now governed by a single rule — auto-track by return type, opt out with @ScaffoldingIgnored.
Breaking
- Removed
@ScaffoldingTracked. There is no longer an explicit opt-in mode; destinations are always derived from a function's return type. - Concrete coordinator return types are no longer auto-tracked. A child-coordinator route must return
any Coordinatable; a bare-> LoginCoordinatoris now skipped like any other unrecognised type.
Model
A function is a destination if its return type is in the auto-tracked table (some View, any Coordinatable, or a tab tuple). Everything else — properties, Void helpers, closures, generics, arrays — is ignored automatically. @ScaffoldingIgnored is only for a function that returns a tracked type but isn't a route (e.g. customize(_:)).
Migration
Source-compatible if you already returned any Coordinatable for child coordinators and never used @ScaffoldingTracked. Otherwise: switch concrete-typed coordinator routes to any Coordinatable, and delete any @ScaffoldingTracked annotations.