Skip to content

1.0.1

  • 1.0.1
  • cafb74e
  • Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
  • Choose a tag to compare

  • 1.0.1
  • cafb74e
  • Choose a tag to compare

  • Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature.
@MaksimG82 MaksimG82 tagged this 06 Aug 21:30
* Example app (#2)

* Package fixed

* Snapshot producing fixed

* Example app added

* snapshot capture with UIViewControllerRepresentable + infrastracture (#3)

* style fixed

* style updated

* targt ios version updated

* example app upated

* example app updated

* snapshot capturing updated

* example app project updated

* package updated

* migrate blur snapshot capture to UIViewControllerRepresentable

- Introduced BlurSource<Content> based on UIViewControllerRepresentable,
  isolating background content in a separate _UIHostingView free of
  floating blur-target views
- Added BlurHostingController with onAppear/onDisappear/onLayout closures
  for internal lifecycle management
- Integrated DisplayLinkCoordinator into BlurSource.Coordinator for
  frame-throttled snapshot capture
- Added ScrollTracker nested class using KVO on contentOffset to
  pause/resume display link during scroll
- Connected BlurSnapshotProcessor inside Coordinator for on-the-fly
  blur processing
- Introduced BlurSourceWrapper and BlurSnapshotPreferenceKey to deliver
  processed snapshots up the SwiftUI tree
- Added BlurCoordinatorModifier (.blurCoordinator()) to collect snapshots
  and inject them into the environment for .blurred() descendants
- Updated BlurTargetViewModifier to use global coordinate space and
  blurSourceSize for correct frame-to-snapshot mapping
- Organized sources into Core/Source/Target/Coordinator/Extensions/Legacy folders

* Snapshot tuned and optimised (#4)

* snapshot preference key changed to observable store

* process.processor in captureSnapshot called in background, codestyle

* partial snapshot capture via union of blur target frames (#5)

* code style

* process background call (missed form previous PR)

* build scheme

* profiling stuff

* unused code removed

* Union frames added

* os_signpost profiling added

* codestyle improved

* Example App. Case 1 added (#6)

* remove unused code

* code style

* BarKit package Added

* Content View updated

* ViewModel added

* Example App. Example Screen, Example Section, BarItem added

* Example App. Info Screen added

* Example App. views added

* ExampleApp. Scenarion added

* Source. CoordinatorModifier Fixed

* Style

* CLAUDE.MD added

* Blur Source origin fixed

* Claude Code 1

Use the weak `coordinator` consistently (`coordinator?.captureSnapshot()`),
or drop the pretense and reference `context.coordinator` throughout like
`onAppear`/`onDisappear` do.

* Modified ScrollTracker.swift with the throttle logic.

* Claude.md updated

* Coalesce captureSnapshot triggers into a single per-tick request and removed Task.detache around onSnapshotPrcess

* Demo App: Some minor changes

* Sources: masurements os events.

* Add NavigationBarOverlap: manual choice between layer.render and drawHierarchy

* navigation bar issues (#9)

* WIP

* WIP: direct-write frame propagation replaces PreferenceKey; blink still present on push; multi-target untested

* CLAUDE.MD updated

* Fix blur target frame not registering on bare-root screens

The frame-reporting lifecycle hooks were attached to conditionally-rendered content, which didn't reliably commit on a single SwiftUI render pass outside a NavigationStack. Moved the hooks to unconditional content in the same view hierarchy, added a doc comment explaining why, and kept diagnostic logging in place per CLAUDE.md.

* logging extracted

* BlurSource.Coordinator extracted

* captureSnapshot() refactored

* Refactor Coordinator lifecycle and add trait/foreground change handling

* Remove deferred NavigationStack transition-freeze guard

The isInsideActiveTransition/hasDeliveredAnySnapshot guard in
captureSnapshot() was permanently inert for the plain-screen case and
unverified by anything that runs today. Removing it now and
reconstructing later if/when NavigationStack support is prioritized,
rather than carrying unexercised scaffolding. NavigationBarOverlap is
kept as-is: it's not push/pop-transition-specific and encodes a
real, non-obvious rendering constraint.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FRfddxDVcXU46f7Sv8J6Dd

* project renamed to LiveBackdropKit

* navigation w/o navigation bar

* CLAUDE.MD updated

* Fixed Header offset implemented

* MultiTargetScrollView

* captureMode attempt

* Coordinate fix + tick logs

* Synchronous call of captureSnapShot() in contentOfsset KVO change

* CaptureTrigger, CaptureExecution added

* DEmo app. Backbutton in navigation

* Metal shader for test added

* LayerEffect example added

* API Changes + Examples

* Test layer Effect added

* Gaussian Blur added

* Gaussian parameters adjusted

* color planes, emboss efeects addedd

* Distortion Effects support added, Water effect added

* Wave effect added

* coloreffects, shimmering effect

* shimmering blur improved: angle added

* Demo App initial state updated

* kawase removed as uneffective

* new case added

* Tab irtems added

* bar visibilty

* navigation updated

* Folder structure, scenario views updated

* Settings panel button in GPU scenarios

* cpu-scenarios settings button

* settings panel for Gaussian BLur

* background settings

* gradient removed

* photo background added

* info screen filled

* fixed

* Rename package LiveBackdropKit to Undertow

Renames the Swift package, its target/product, and the Sources/Tests
folders (LiveBackdropKit -> Undertow), and updates all textual
mentions in source comments, doc comments, the OSLog subsystem
string, README, and CLAUDE.md. The Example/ app is intentionally left
untouched — it will be renamed separately by hand.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AtJYbHR4yMiPeFunRByLim

* demo app renamed

* metallib files complied

* shader lbrary extended

* CLAUDE.MD updated

* Snapshot approach removed

* layer effect prefix removed

* Effect renamed

* FrameStore renemd

* frameStore, EffectSourceViewModifier style fixed

* unsused files removed, some docs fixed

* documentation updated

* doc wip

* doc

* metal files commetnaries corrected

* Example app commets cleaned

* AGENTS.MD added

* one shader renamed, some docs fixed

* access level changed

* scheme renamed

* ddoc added

* README.MD

* added Comtributing.MD, License

* AGENTS.MD changed

* yml added

* Lower minimum deployment target to iOS 17

TargetMask now implements Hashable manually instead of relying on
synthesized conformance, since CGSize only gained Hashable in iOS 18.
Updates Package.swift, example app deployment target, and docs
(AGENTS.md, README.md) to match. Marks the library as published in
AGENTS.md.

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Assets 2
Loading