Skip to content

Releases: sdebruyn/onelake-explorer-macos

v2026.07.2

Choose a tag to compare

@github-actions github-actions released this 14 Jul 13:09
03ef1da

What's Changed

  • fix(cask): alphabetize zap trash array to satisfy brew style by @sdebruyn in #485
  • fix(cache): spare concurrently-written blobs from the init-time orphan sweep by @sdebruyn in #483
  • feat(logging): route warn/error to ofem.log and add error-taking overloads (#486) by @sdebruyn in #491
  • fix(onelake): detect CapacityNotActive on 404 and log all non-2xx responses (#487) by @sdebruyn in #494
  • feat(logging): log background activity and token lifecycle (#489) by @sdebruyn in #493
  • feat(file-provider): log FP errors and mutating-op outcomes (#488) by @sdebruyn in #492

Full Changelog: v2026.07.1...v2026.07.2

v2026.07.1

Choose a tag to compare

@github-actions github-actions released this 12 Jul 19:46
ef54387

What's Changed

  • chore(make): add install target for local dogfooding by @sdebruyn in #384
  • fix(sync): detect paused capacity body and stop misclassifying 403 as auth failure by @sdebruyn in #386
  • chore(ci): Bump the github-actions group with 2 updates by @dependabot[bot] in #387
  • docs: fix HTTP client and item-identifier inaccuracies by @sdebruyn in #388
  • ci: run integration tests on real PR head for same-repo PRs by @sdebruyn in #389
  • fix(config,auth): lenient account decode; purge tokens on identity mismatch by @sdebruyn in #392
  • fix(sync): deliver remote deletions incrementally with tombstones and deletion-aware anchor by @sdebruyn in #394
  • fix(fpe): apply telemetry opt-out and cache budget live on setConfig by @sdebruyn in #391
  • fix(sync): stage uploads at a temp path, commit via rename by @sdebruyn in #390
  • fix(auth): serialize in-process writers before cross-process fcntl lock by @sdebruyn in #393
  • refactor(engine): remove dead per-engine OfemAuth, fix stale docs by @sdebruyn in #395
  • fix(sync): bound Retry-After retries, jitter backoff, absorb replayed DELETE 404 by @sdebruyn in #396
  • fix(hardening): clamp date/batch bounds, scrub event name, dedupe GUID check by @sdebruyn in #398
  • refactor(fpe): share decode/delta logic; real empty trash enumerator by @sdebruyn in #399
  • fix(menu): gate auto-refresh on visibility, dedupe debounced setters by @sdebruyn in #397
  • fix(sync): gate discovery upserts to stop phantom workspace/item deltas by @sdebruyn in #400
  • fix(cache): dedup blob eviction accounting and bound the scan by @sdebruyn in #401
  • fix(sync): TTL-gate open() freshness HEAD, thread record through fetchContents by @sdebruyn in #403
  • refactor(net): unify HTTPClientError mapping and request execution by @sdebruyn in #402
  • fix(sync): prevent Int64 overflow traps in resume download and dateToNs by @sdebruyn in #404
  • feat(sync): cache-first item(for:); refresh workspace items via Fabric listing by @sdebruyn in #407
  • refactor(xpc): consolidate host/FPE XPC contract into Shared/ by @sdebruyn in #405
  • refactor(fpe): unify entry-point scaffolding and cache-retry pattern by @sdebruyn in #410
  • refactor(sync): decompose refreshFolder into orchestrated phases by @sdebruyn in #408
  • feat(xpc): add first-class reloadEngine verb, fix version-check hang by @sdebruyn in #406
  • refactor(fpe): move item resolution/creation into OfemKit (F8+S4) by @sdebruyn in #412
  • refactor(sync): decompose refreshMaterialized + bulk-read subtree etags by @sdebruyn in #409
  • docs: sync docs with landed code-review remediation by @sdebruyn in #414
  • fix(sync): discard partial spill on resume overflow so download self-heals by @sdebruyn in #415
  • test(cache): pin ws/ discovery-vs-real identifier collision by @sdebruyn in #417
  • fix(cache): ensure shard dir exists before blob move; de-flake handoff tests by @sdebruyn in #416
  • fix(telemetry,net): cancel all in-flight sends on opt-out; parse Content-Range total by @sdebruyn in #419
  • perf(xpc): add slim getBadgeStatus verb to skip cache scan on badge poll by @sdebruyn in #418
  • feat(cache): bound tombstone growth with a 30-day TTL purge + anchor-expiry guard by @sdebruyn in #420
  • feat(sync): purge orphaned item rows and materialized entries when a Fabric item vanishes by @sdebruyn in #421
  • perf(cache): advance tombstone watermark to max purged deletion, not cutoff by @sdebruyn in #422
  • feat(cache): reclaim orphaned rows + status when a workspace is removed by @sdebruyn in #423
  • ci: single source of truth for the pinned Xcode version by @sdebruyn in #431
  • fix(onelake): honest doStreamRequest doc + temp-file cleanup on all failure paths by @sdebruyn in #434
  • fix(cache): make subtree/prefix LIKE matching case-sensitive by @sdebruyn in #432
  • fix(sync): commit refreshFolder upsert+delete atomically by @sdebruyn in #436
  • fix(telemetry): rebuild sink on config reload for runtime opt-in by @sdebruyn in #435
  • fix(file-provider): redact filenames/path identifiers logged at .public by @sdebruyn in #433
  • ci(release): harden ordering, resumability and notarize budget (M12) by @sdebruyn in #444
  • refactor(file-provider): XPC reply-scaffold helper + track/cancel Tasks by @sdebruyn in #440
  • ci: lint the PR title so the squash-merge subject passes commitlint by @sdebruyn in #443
  • test(file-provider): engine-facing seam for FPE happy paths + XPC allowlist tests by @sdebruyn in #446
  • docs: reconcile contributor build/signing story + document build-ci by @sdebruyn in #439
  • fix(cache): blob dedup index, readonly host handle, honest token-fallback docs by @sdebruyn in #452
  • ci: distinct SPM cache keys, daily capacity-pause, regen on new source file by @sdebruyn in #455
  • fix(net): RetryAfterRetrier idempotency gate + cap buffered response size by @sdebruyn in #451
  • docs: fix SECURITY CLI ref, Discussions hedges, analytics comment, cask zap by @sdebruyn in #456
  • refactor(config): centralize clamp bounds, reach 0=no-limit sentinel (M9) by @sdebruyn in #448
  • docs(file-provider): record FPE watch-list items as design decisions by @sdebruyn in #460
  • test: deterministic enumerator waits, honest throttle test, migration fixture by @sdebruyn in #458
  • feat(file-provider): incremental fetchContents download progress by @sdebruyn in #462
  • refactor: drop redundant @unchecked Sendable, doc AsyncPathMutex by @sdebruyn in #464
  • refactor(cache): split CacheStore.swift into family extension files (M10b) by @sdebruyn in #467
  • refactor(sync): split SyncEngine.swift into family extension files (M10a) by @sdebruyn in #468
  • refactor(app): migrate host view models to @observable + extract doRefresh apply-block by @sdebruyn in #470
  • refactor(file-provider): extract repeated modifyItem parse prologue into one helper by @sdebruyn in #472
  • chore(ci): re-enable SwiftLint size/complexity + force_unwrapping, tighten line-length by @sdebruyn in #474
  • chore(ci): bump github/codeql-action from 4.36.2 to 4.37.0 by @dependabot[bot] in #424
  • refactor(daemon): extract setConfig per-key validation into helpers by @sdebruyn in #478
  • refactor(file-provider): extract modifyItem rename/metadata/content branch helpers by @sdebruyn in #479
  • test(sync): split SyncEngineTests by operation family and tighten test lint limits by @sdebruyn in #480
  • chore(deps): Bump github.com/azuread/microsoft-authentication-library-for-objc from ...
Read more

v2026.06.16

Choose a tag to compare

@github-actions github-actions released this 26 Jun 08:59
dbd1ee1

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

v2026.06.15

Choose a tag to compare

@github-actions github-actions released this 16 Jun 22:45
4c6de3f

What's Changed

  • ci(integration): auto-run on push to main (skip docs); drop weekly cron (#242) by @sdebruyn in #243
  • fix(sync): stop double-stripping itemGUID prefix so refreshFolder reconciles children (#244) by @sdebruyn in #245
  • chore(ci+tests): silence Homebrew tap/hint noise and fix test compiler warnings (#246) by @sdebruyn in #248
  • chore(host+fpe): fix safe compiler warnings; keep Swift-6-mode Sendable noise (#247) by @sdebruyn in #249
  • fix(fpe): implement getProtocolVersion so the control XPC service stops crash-looping (#252) by @sdebruyn in #253
  • fix(cache): use write transaction in orphan sweep to prevent storeBlob race (#250) by @sdebruyn in #251
  • fix(xpc): give Shared payload classes explicit @objc names so XPC replies decode (#254) by @sdebruyn in #255
  • fix(host+fpe): create log dir so Reveal-in-Finder works and the engine writes its log (#256) by @sdebruyn in #258
  • feat(host): show Dock icon while a window is open and focus existing Preferences on re-open (#257) by @sdebruyn in #259
  • chore(logging): DEBUG-only public os_log + write+flush engine file log (#261) by @sdebruyn in #263
  • fix(fabric+auth): Fabric token missing after OneLake-only sign-in causes empty Finder mount by @sdebruyn in #264
  • feat(host+fpe): surface per-account sign-in-required state in menu bar by @sdebruyn in #265
  • fix(menu): replace sendAction with openSettings for reliable Preferences by @sdebruyn in #270
  • fix(net+fabric): disable URLCache so a stale 404 never bypasses a live HTTP round-trip by @sdebruyn in #271
  • feat(host): add Sign In Again action to per-account submenu by @sdebruyn in #267
  • fix(host): gate Sign-In-Again and per-account status on needsSignIn state by @sdebruyn in #274
  • fix(auth): per-process MSAL redirect URI + map all token failures to .unauthorized by @sdebruyn in #275

Full Changelog: v2026.06.14...v2026.06.15

v2026.06.14

Choose a tag to compare

@github-actions github-actions released this 15 Jun 16:30
0150207

What's Changed

  • ci(integration): use runner's preinstalled az via azure/login, drop broken pip pin (#236) by @sdebruyn in #237
  • ci(integration): re-authenticate azure before capacity suspend (#238) by @sdebruyn in #240
  • ci(release): commit rendered cask before brew style/audit so validation hits the new cask (#239) by @sdebruyn in #241

Full Changelog: v2026.06.13...v2026.06.14

v2026.06.13

Choose a tag to compare

@github-actions github-actions released this 15 Jun 15:53
ecfdcc9

What's Changed

  • fix(cache): address all 25 cache-layer code review findings (cache-01–25) by @sdebruyn in #215
  • fix(net): structured gate-slot guarantee + retry/gate correctness (WP-NET) by @sdebruyn in #214
  • fix(logging+telemetry): privacy / redaction hardening by @sdebruyn in #213
  • refactor(config): WP-CONFIG — split god-object, fix concurrency, add validation by @sdebruyn in #216
  • fix(sync): address sync-layer code review findings (sync-01–29) by @sdebruyn in #217
  • fix(clients): OneLake + Fabric + streaming download (net-19, onelake-01–12, fabric-01–07) by @sdebruyn in #218
  • fix(fp+engine+buildinfo): FP models + Engine/BuildInfo sweep (fp-01–09, engine-01–06, tests-02) by @sdebruyn in #219
  • fix(auth): MSAL review findings — coalescing, locking, seams, hardening (auth-01–17) by @sdebruyn in #220
  • fix(shared): XPC correctness — error bridging, strict decode, Sendable, versioning by @sdebruyn in #221
  • fix(fpe): WP-FPE — testability seam, engine lifecycle fixes, callback correctness by @sdebruyn in #222
  • refactor(host): WP-Host sweep — ViewModel/seams, error surfacing, dedup (host-01–27) by @sdebruyn in #223
  • ci: address build review findings (build-01..35) by @sdebruyn in #224
  • test(kit): WP-Tests infra sweep — stub races, force-cast, mock locking, dedup (tests-04–23) by @sdebruyn in #225
  • docs(fpe): correct back-off clock comment to monotonic uptime (fpe-11) by @sdebruyn in #227
  • ci: pin GitHub Actions by version tag instead of commit SHA by @sdebruyn in #228
  • test(helpers): consolidate duplicated gate/temp-file/auth helpers (tests-15) by @sdebruyn in #229
  • ci(build): build/CI hygiene sweep (build-04/06/08/10/16/23/30/35) by @sdebruyn in #234
  • fix(fpe): engine-lifecycle + blob-handoff sweep (fpe-06/12/14/15) by @sdebruyn in #233
  • chore(host): reveal mounts via getUserVisibleURL, drop CloudStorage sandbox exception (#231) by @sdebruyn in #232
  • ci(release): audit rendered cask and retry tap push race before publishing (build-15) by @sdebruyn in #235
  • chore(ci): Bump the github-actions group across 1 directory with 2 updates by @dependabot[bot] in #230

Full Changelog: v2026.06.12...v2026.06.13

v2026.06.12

Choose a tag to compare

@github-actions github-actions released this 14 Jun 20:09
51a7c9a

What's Changed

  • fix(auth): use msauth custom-scheme redirect URI for MSAL Apple SDK by @sdebruyn in #212

Full Changelog: v2026.06.11...v2026.06.12

v2026.06.11

Choose a tag to compare

@github-actions github-actions released this 14 Jun 13:42
3676d43

What's Changed

  • feat(architecture): kick off Swift migration with ADR and OfemKit skeleton by @sdebruyn in #167
  • feat(ofemkit): port config and file token store to Swift by @sdebruyn in #168
  • feat(ofemkit): port MSAL multi-account auth from Go by @sdebruyn in #169
  • feat(ofemkit): port OneLake DFS client and HTTP infra to Swift by @sdebruyn in #170
  • feat(ofemkit): port Fabric REST client to Swift by @sdebruyn in #171
  • feat(ofemkit): port SQLite cache to GRDB.swift by @sdebruyn in #172
  • feat(ofemkit): port logging telemetry and buildinfo to Swift by @sdebruyn in #173
  • feat(ofemkit): port FP domain model and sync engine by @sdebruyn in #174
  • build(xcodegen): integrate OfemKit as host app and FPE dependency by @sdebruyn in #175
  • feat(apple): host OfemEngine in FPE with XPC for host integration by @sdebruyn in #176
  • feat(apple): implement add-account end-to-end via OfemKit and XPC by @sdebruyn in #177
  • refactor(apple): replace CoreBridge consumers with Swift-native paths by @sdebruyn in #178
  • chore(architecture): remove Go daemon and complete Swift migration by @sdebruyn in #179
  • chore(structure): move Swift sources from apple/ to repo root by @sdebruyn in #180
  • docs: rewrite user-facing docs from current-product perspective by @sdebruyn in #182
  • chore(ofemkit): remove unused socketPath from OfemPaths by @sdebruyn in #181
  • feat(apple): observe workspace pause state for menu icon by @sdebruyn in #183
  • chore: strip pre-stable architecture residue across repo by @sdebruyn in #185
  • refactor(xpc): drop redundant control-protocol methods by @sdebruyn in #186
  • fix(net): correct HTTPGate token drain, FIFO, cancellation and registry race by @sdebruyn in #188
  • chore: harden CI/CD pipeline, packaging, and build reproducibility (WP-D) by @sdebruyn in #189
  • test(ofemkit): align identifier tests with shipped slash-less parser contract by @sdebruyn in #192
  • fix(telemetry+logging): WP-E — close store-12 through store-25 / tests-08 by @sdebruyn in #191
  • fix(cache): blob lifecycle hardening (store-01…11, store-26, tests-15/16/20) by @sdebruyn in #190
  • fix(config): WP-B — config ownership, cross-process safety, engine reload by @sdebruyn in #193
  • fix(fp): pin item identifier sentinels to FileProvider framework constants by @sdebruyn in #187
  • fix(host+fpe): WP-J — host app + XPC hardening by @sdebruyn in #195
  • fix(auth): WP-K auth correctness + MainActor decoupling by @sdebruyn in #196
  • docs: forbid piping test/build output to head/tail by @sdebruyn in #198
  • fix(sync): WP-H — SyncEngine correctness + testability by @sdebruyn in #194
  • fix(fpe): WP-I — protocol correctness + remote-change propagation by @sdebruyn in #197
  • refactor(engine+tests): WP-M — per-domain engine dedup + test-quality sweep by @sdebruyn in #199
  • fix(sync+net): WP-G streaming data plane + net-client correctness by @sdebruyn in #200
  • docs(contributing): describe the test setup as it actually is by @sdebruyn in #201
  • test(integration): live Fabric integration suite + CI by @sdebruyn in #202
  • ci(integration): seed warehouse via go-sqlcmd instead of mssql-python by @sdebruyn in #203
  • test(integration+unit): cover remaining Fabric API operations and error branches by @sdebruyn in #204
  • ci(coverage): report OfemKit coverage to Codecov by @sdebruyn in #205
  • ci(coverage): report host-app (OneLakeHostTests) coverage to Codecov by @sdebruyn in #206
  • test(engine): raise OfemKit coverage 77%→86% by @sdebruyn in #207
  • fix(cache): count CacheStore.wipe() from the DB, not a racy filesystem scan by @sdebruyn in #209
  • fix(sync): short-circuit hard-offline errors so the offline fallback fires by @sdebruyn in #208
  • fix(release): assess the DMG as "open", not "install", for Gatekeeper by @sdebruyn in #210
  • fix(release): verify the DMG via stapler validate (it is unsigned) by @sdebruyn in #211

Full Changelog: v2026.06.10...v2026.06.11

v2026.06.9

Choose a tag to compare

@github-actions github-actions released this 07 Jun 12:15
263a959

What's Changed

  • fix(daemon): add launch constraint and spawn constraint by @sdebruyn in #165

Full Changelog: v2026.06.8...v2026.06.9

v2026.06.8

Choose a tag to compare

@github-actions github-actions released this 07 Jun 11:52
376bcae

What's Changed

  • fix(daemon): sign daemon with bundle-style identifier by @sdebruyn in #164

Full Changelog: v2026.06.7...v2026.06.8