v2026.06.16
What's Changed
- ci: add weekly job to pause the CI Fabric capacity by @sdebruyn in #278
- fix(fp): map workspace and root cache rows correctly in DomainItem.from(record:) by @sdebruyn in #282
- fix(host): periodically signal root container so the workspace list refreshes by @sdebruyn in #281
- feat(cache): add debug-level OfemLogger to CacheStore and CacheReader by @sdebruyn in #287
- feat(fpe): debug logging at enumeration boundaries by @sdebruyn in #288
- fix(host): legible needs-sign-in status color + rename action to "Sign In…" by @sdebruyn in #290
- feat(net): debug logging for Fabric/OneLake client requests & pagination by @sdebruyn in #289
- feat(logging): write un-redacted log files in DEBUG builds by @sdebruyn in #295
- fix(host+fpe): refresh workspace list via working set instead of no-op root signal by @sdebruyn in #293
- fix(fabric): hide Fabric item types without OneLake storage from workspace listing by @sdebruyn in #297
- build(project): adopt safe recommended build settings by @sdebruyn in #301
- fix(auth): document FPE redirect URI; classify invalid_client distinctly from interaction-required by @sdebruyn in #300
- chore(deps): bump MSAL, GRDB, and GitHub Actions to latest by @sdebruyn in #303
- chore(fpe): silence Sendable + unused-result warnings in OneLakeFileProvider by @sdebruyn in #304
- refactor(fabric): use a strict allowlist for OneLake-backed item types by @sdebruyn in #306
- build(project): enable REGISTER_APP_GROUPS for app-group registration by @sdebruyn in #310
- feat(fpe): make items read-only except inside a Lakehouse's Tables/Files by @sdebruyn in #308
- refactor(net): replace custom HTTP stack with Alamofire by @sdebruyn in #314
- refactor(build): migrate app and FPE to Swift 6 language mode by @sdebruyn in #311
- fix(net): accept empty 2xx response bodies in Alamofire serializer by @sdebruyn in #316
- fix(fpe): cancel enumerator tasks that race with invalidate() by @sdebruyn in #318
- fix(onelake): map tokenAcquisitionFailed to unauthorized in OneLakeError.from by @sdebruyn in #319
- feat(fpe): add ContainerSignaller and EngineProviding.signal(container:) hook by @sdebruyn in #323
- feat(sync): stale-while-revalidate folder listings with debounced background refresh by @sdebruyn in #324
- feat(fpe): wire revalidation callback to per-container signal; fixes stale/duplicate folders by @sdebruyn in #325
- perf(sync): drain quiesceRevalidations concurrently instead of sequentially by @sdebruyn in #328
- fix(fpe): harden signalEnumerator continuation with resume-once guard by @sdebruyn in #329
- feat(build): inject build timestamp into About window and startup logs by @sdebruyn in #331
- feat(fpe): track materialized container set in cache by @sdebruyn in #335
- docs: add MVP tracking param to Microsoft Learn links by @sdebruyn in #338
- refactor(fpe): replace ad-hoc CH structs with generic UncheckedSendable by @sdebruyn in #339
- feat(engine): refresh materialized container set with etag diff by @sdebruyn in #334
- ci: add CodeQL static analysis for Swift by @sdebruyn in #337
- feat(fpe): working-set poll loop refreshing materialized containers via .workingSet by @sdebruyn in #347
- test(fpe): gated live integration test for working-set freshness (#346) by @sdebruyn in #348
- refactor(fpe): remove per-container signalling (no-op on replicated extension) by @sdebruyn in #349
- refactor(sync): drop stale-while-revalidate; cache = delta baseline + blob cache by @sdebruyn in #351
- chore(ci): add SwiftFormat lint gate and reformat codebase by @sdebruyn in #352
- chore(ci): add SwiftLint gate and fix violations by @sdebruyn in #353
- chore(ci): add periphery 3.7.4 dead-code detection gate by @sdebruyn in #354
- fix(ui): show Dock icon for About; right-align refresh-interval stepper by @sdebruyn in #357
- fix(sync): ignore directory lastModified in change detection; conditional upsert by @sdebruyn in #361
- perf(fpe): O(1) alias→domain lookup in materialized poll loop by @sdebruyn in #355
- test(sync): gated live poll-quiescence test for Delta tables by @sdebruyn in #363
- perf(fpe): exclude Delta internals from materialized poll set by @sdebruyn in #360
- fix(ofemkit): enable warnings-as-errors and fix package warnings by @sdebruyn in #366
- ci: consolidate to a single per-PR build; fold periphery in; tighten CodeQL queries by @sdebruyn in #367
- fix(fpe): stop empty-filename crash-loop + phantom parent-row deltas by @sdebruyn in #369
- fix(fpe): populate created/modified dates so Finder stops showing 1970 by @sdebruyn in #371
- ci: upload JUnit test results to Codecov Test Analytics by @sdebruyn in #373
- fix(fpe): fall back created date to modified and capture real creation time on HEAD/GET by @sdebruyn in #376
- fix(fpe): implement same-directory rename via DFS x-ms-rename-source by @sdebruyn in #377
- fix(sync): ignore directory etag and contentLength in entryChanged by @sdebruyn in #379
- feat(sync): subtree-etag skip-gate for materialized refresh by @sdebruyn in #381
- feat(config): configurable self-heal full-refresh interval (advanced) by @sdebruyn in #382
Full Changelog: v2026.06.15...v2026.06.16