Commit Graph

9 Commits

Author SHA1 Message Date
Daniel Arantes Loverde
c6e9803c75 [lcfeaturecontrol-review-fixes] Fix JWT log leak, drop macOS/tvOS, coalesce requests
- FeatureControlManager/NotificationsClient: pass debug: false at every
  api.request(...) call site — the API default (debug: true) was printing
  Authorization: Bearer <jwt> on every request, release builds included.
- Package.swift: drop macOS/tvOS from platforms — LCEssentials.API (used by
  LCFeatureControl) is iOS/watchOS-only and the vendored xcframework has no
  macOS/tvOS slice.
- FeatureControlManager: coalesce concurrent evaluate() calls on a cold cache
  into a single in-flight request per key instead of firing one per caller.
- FeatureControlManager/NotificationsClient: treat a 200 response carrying
  {"error": true} as a failure instead of caching/returning it as success.
- FeatureControlNotificationsClient: thread a cursor param through list() so
  the already-decoded nextCursor can actually be used to page.
- Tests: 9 new tests (coalescing, envelope-error-on-200, cursor param, a real
  object payload decoded through a full evaluate response, date-decode
  failures) and removed the 7 remaining force-unwraps in test scaffolding.
- Documentation/FeatureControl.md: new guide for the LCFeatureControl product,
  cross-linked from README.md and Extensions.md.
2026-09-16 13:21:10 -03:00
Daniel Arantes Loverde
2ba487a6e8 [sub-spm-optional-products] Add LCECryptoKit and LCFeatureControl as optional sub-SPM products
LCEssentials installs standalone; each sub target-depends on it so linking a
sub's product always pulls LCEssentials in too, without the consumer having to
declare it separately.

- LCECryptoKit: internalized from the remote LCECryptoKitBinary git dependency
  (embedded token URL removed) into a local binaryTarget vendoring
  Frameworks/LCECryptoKit.xcframework. LCECryptoKitManager moved out of
  LCEssentials core into its own LCECryptoKitManager target/product; the
  no-op fallback for when the binary wasn't linked is gone (breaking change
  for existing consumers, see decisions/2026-09-15-sub-spm-optional-products.md).
- LCFeatureControl: new product wrapping Atomenta's Feature Control API
  (flag evaluation with TTL cache + safe-degrade fallback to defaults,
  notifications inbox, batched exposure telemetry). 45 new tests.
2026-09-16 09:23:57 -03:00
Daniel Arantes Loverde
ec3442ed1c [docs] Extensions.md: Encoding & Errors + Core sections (Extensions.md complete) 2026-08-29 19:29:42 -03:00
Daniel Arantes Loverde
4f6a83556d [docs] Extensions.md: Date, Data & Files section 2026-08-29 19:28:35 -03:00
Daniel Arantes Loverde
d16a42fddc [docs] Extensions.md: Numbers & Geometry section 2026-08-29 19:27:31 -03:00
Daniel Arantes Loverde
c459c9eaf6 [docs] Extensions.md: Collections & Sequences section 2026-08-29 19:26:46 -03:00
Daniel Arantes Loverde
1d2c595c78 [docs] Extensions.md: Strings & Text section 2026-08-29 19:25:15 -03:00
Daniel Arantes Loverde
9f1db7c121 [docs] Extensions.md: API overview + Crypto section 2026-08-29 19:23:23 -03:00
Daniel Arantes Loverde
705639b2f5 [docs] Scaffold reference guides + README Documentation section
- Documentation/{Extensions,SwiftUI,UIKit}.md shells with category headings + TOC
- README: Documentation table linking all 4 guides
- footer: drop the second github badge, keep the resume link
2026-08-29 19:22:12 -03:00