Repository navigation
Releases: twhitt14/PaperConfetti
Release list
0.2.0 — Native particles
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.0to 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
PaperConfetti's first release brings lifelike paper celebrations to SwiftUI and UIKit with a simple method-based API.
Highlights
- Call
confetti.pop()to celebrate andconfetti.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.