Skip to content

Releases: SardorbekR/SafeMediaKit

0.2.1

11 Jun 17:03

Choose a tag to compare

VoiceOver now exposes the default overlay as one text element plus separately focusable Show/Report buttons, instead of a single combined element with custom actions. Matches the UIKit overlay's accessibility shape and makes the actions discoverable without the custom-actions gesture. Found during real-device VoiceOver QA.

0.2.0

11 Jun 11:03

Choose a tag to compare

Custom overlays

  • SafeMediaImage is now generic over its overlay: pass a trailing overlay: closure receiving SafeMediaOverlayState to fully brand the intervention UI
  • SafeMediaOverlayState: resolved copy, canReveal/canReport flags, and a policy-guarded reveal() — custom overlays cannot bypass block or no-reveal policies
  • UIKit: overlayProvider: on SafeMediaImageView.configure(...); the redaction blur always stays beneath custom overlays

Redesigned defaults

  • Per-state SF Symbols (eye.slash.fill, lock.fill, gearshape.fill), headline/footnote typography, capsule buttons
  • Adaptive layout: small frames drop the icon and tighten padding so text wraps instead of truncating

Source note

Explicit SafeMediaImage type annotations must become SafeMediaImage<SensitiveMediaOverlay>; initializer call sites are unaffected.

0.1.0

11 Jun 05:08

Choose a tag to compare

Initial release.

  • Core engine with per-evaluation availability checks and verdict caching
  • Apple SensitiveContentAnalysis adapter (iOS 17+, macOS 14+, Mac Catalyst 17+)
  • Four policy presets: adultMinimal, teenMessaging, childStrict, classroomStrict
  • SwiftUI SafeMediaImage and UIKit SafeMediaImageView with fail-closed blur/reveal/block/report flows
  • SafeMediaKitTesting with mock analyzer and fixtures — test sensitive-media UI without explicit content
  • Xcode 27-gated detectedTypes category mapping
  • No telemetry, no network, media never leaves the device