- DocC catalog (Sources/PlayDate/PlayDate.docc) with a curated landing
page and a Getting Started article; swift-docc-plugin wired up for
`swift package generate-documentation`, and a GitHub Pages deployment
workflow renders docs on every push to main.
- Examples/HelloPlaydate: a minimal game (bouncing box, crank needle,
button handling, system menu item) whose build.sh compiles the game as
a dylib and produces a runnable simulator .pdx via the SDK's pdc.
Verified: the pdx builds and exports the eventHandler entry point.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
System, Display, Graphics, Sprite, Sound, File, JSON, Lua, Scoreboards,
Network, Rect, SystemEvent, and AccessReply now live at module scope
instead of being nested in the Playdate enum; consumers write
System.log(...) instead of Playdate.System.log(...), and can qualify with
the module name (PlayDate.System) on collision. The Playdate enum remains
only as the raw C API bootstrap (initialize(with:), api, apiPointer), and
Playdate.Error is renamed PlaydateError so no top-level type shadows
Swift.Error.
Breaking change for any existing consumers.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Three jobs in GitHub Actions:
- Build & test on macOS against SDK headers fetched from Panic (cached),
with the pkg-config module generated into PKG_CONFIG_PATH.
- A consumer smoke test (Scripts/consumer-test.sh) generating a scratch
package that depends on play-date, guarding setting propagation.
- An Embedded Swift cross-compile for armv7em-none-none-eabi
(Scripts/build-embedded.sh) on a swift.org snapshot toolchain — the
check that enforces the Embedded Swift subset promise. Verified locally:
the full module compiles for the device triple with no violations.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Wraps all ten subsystems of the Playdate SDK 3.1.1 C API (system, display,
graphics, sprites, sound, file, JSON, Lua, scoreboards, network) in
idiomatic Swift: namespaced APIs, wrapper types with ownership semantics,
closures for callbacks, and typed throws. Written within the Embedded Swift
subset so the same code can target the device.
The SDK headers are resolved through a "playdate" pkg-config module
(Scripts/install-pkgconfig.sh), so the package works as a normal SwiftPM
dependency without unsafe build flags.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>