Skip to content

Releases: twhitt14/PaperConfetti

0.2.0 — Native particles

Choose a tag to compare

@twhitt14 twhitt14 released this 28 Oct 22:28

Native particles are now PaperConfetti’s default renderer, with 3D tumble and flat appearances. Existing pop() calls continue to work.

confetti.pop() // 3D tumble
confetti.pop(configuration: .init(appearance: .flat))

Changes

  • Independent parabolic rise/fall timing and a softly scattered blast edge.
  • Varied cached starting orientations, shapes, colors and spins.
  • Staged, pre-rolled launch clocks avoid brief cell birth windows during large burst preparation; cancellation also cancels pending launches.
  • Updated example with a 3D/Flat picker and deliberate stress controls up to 5,760 pieces.
  • SpriteKit/atlas experiments removed. Benchmarks exercise the shipping native implementation and retain a frozen 0.1 layer baseline.
  • Expanded one-command physical profiling and visual-review tools, with local results and no package runtime dependencies.

Compatibility and validation

Requires iOS/iPadOS 16+ and Swift tools 5.9+. The method-based SwiftUI/UIKit API remains source-compatible; seeded trajectories intentionally change to the new flight model. Requests are capped at 6,000 particles as a safety bound, not a recommended workload.

Validation covers nine macOS physics tests, 18 iOS package tests, three example UI tests, ten numerical benchmark tests, 33 Python tests, profiling/study smoke tests, Release builds and DocC. The final native implementation passed all three physical iPhone pixel regression tests: repeated five-cannon 5,760-piece emission including a delayed commit, the 5,760-position grid, and the deliberately expired-window negative control with a live reference. Earlier native builds also completed a 12-trial 720/5,760-piece app-only screen. No new physical performance percentage or Instruments hitch result is claimed for the final startup refinement. These are correctness checks on the tested device, not a universal FPS or exact-count guarantee. Native emission is rate-based.

Hosted CI and exact-tag installation verification are recorded below. See VALIDATION.md for scope and evidence. Historical 0.1 CPU comparisons are explicitly labeled and are not claims about the new renderer.

Release verification

  • Successful full preflight on Xcode 16.4 and 26.6 at the exact tagged commit d19d55ed92bea23e6871905a9a2cb190f7c7f8e1.
  • Main CI and tag CI could not start because GitHub reported an account payment/spending-limit block. The owner explicitly approved this release using the successful checks on the identical commit; these blocked runs are not reported as passing.
  • Fresh SwiftPM consumer resolved exact version 0.2.0 to that commit and passed module, default 3D, flat, seeded-trajectory and 5,760-count checks. Bundled attribution matches the source notice.
  • Repository visibility remains private; access is required to resolve the package. No Wordie or App Store deployment is part of this package release.

PaperConfetti 0.1.0

Choose a tag to compare

@twhitt14 twhitt14 released this 26 Oct 07:20

PaperConfetti's first release brings lifelike paper celebrations to SwiftUI and UIKit with a simple method-based API.

Highlights

  • Call confetti.pop() to celebrate and confetti.cancel() to stop. No event counter required.
  • Thirteen festive silhouettes: four stars, four streamers, a hollow ring, and four paper cuts. Three classic shapes are also available.
  • Matching shapes share a randomized descent speed within each burst. Individual pieces spin and tumble independently.
  • Customize colors, shapes, particle counts, dimensions, flight distance, spread, motion, seeds, and independently delayed cannons.
  • Core Animation playback with bounded texture caching, explicit cleanup, Reduce Motion support, scene cancellation, and touch-transparent overlays.
  • Interactive example app, DocC guides, tests, and repeatable simulator captures.
  • No runtime dependencies, networking, analytics, or stored identifiers. MIT licensed, with the original ConfettiSwiftUI attribution included.

Installation

.package(url: "https://github.com/twhitt14/PaperConfetti.git", from: "0.1.0")

Add .product(name: "PaperConfetti", package: "paperconfetti") to your target dependencies, then import PaperConfetti.

The repository is currently private, so GitHub access is required. Rendering supports iOS/iPadOS 16+; the package uses Swift tools 5.9+. macOS 13+ exposes the physics model, without an AppKit renderer.

Validation

Both hosted toolchains, Xcode 16.4 and 26.6, pass 8 macOS physics tests, 14 iOS package tests, 2 example interaction tests, Release builds, and DocC generation. Interaction tests exercise taps, toggles, scrolling, navigation, cancellation, and the Reduce Motion preview.

Physical-device FPS/energy profiling and a minimum-iOS runtime run remain follow-up work. Simulator results are not a device-performance guarantee; the 2,000-particle safety limit is not a recommended particle count.

Release verification: main CI and 0.1.0 tag CI both passed. A fresh consumer resolved exact version 0.1.0, built and imported the product, exercised its physics model, and verified the bundled attribution.