Highlights
perry/mediastreaming playback on every supported platform (#351). Issued shortly after the Subsonic-client ask in #349; lands fully implemented on macOS / iOS / tvOS / visionOS / watchOS / Android / GTK4 / Linux / Windows / HarmonyOS / Web. Lock-screen surfaces wired everywhere except HarmonyOS (AVSession follow-up tracked).- HarmonyOS NEXT — Phase 2 reaches usable shape. TypeScript → ArkUI emission via the new
perry-codegen-arktscrate (#308). v3 callbacks, v3.3 toast/setText, v4 widget set, v5 inline style + ForEach, v6state<T>reactive container, v8/9/10/11/12/13 docs, NavStack, animation/shadow/decoration, LazyForEach, Tabs/Modal/Menu/Grid. - Effect compatibility sweep. Closes #309 (34 GB OOM), #310 (
export * asre-export), #311 (Map/Set as object property), #313 (scalar replacement +this), #314 (closure-call arity 5→16), #315/#316/#317/#319 (String method gaps), #318 (closure-collector walker), #320 (ReadableStream link), #321/#323/#324 (Array.isArray + holes), #336 (same-named classes), #338 (static-field-init closure collector), #350 round 2 (Set/Map class-id collision). - Windows: production-ready surface. Win7/8.1 opt-in compat (#303), shadow paint pass (#210 closes the styling matrix at 43/43), WinGet runtime/stdlib lib auto-discovery (#352), Windows SDK registry-based auto-discovery (#300).
- CI cost cuts. cargo-test/parity/compile-smoke moved to ubuntu-latest (10× → 1×), NJOBS=6 + flock for compile-smoke parallelism, paths-ignore docs-only PRs, doc-tests-macos cross-compile trim. Roughly 60+ multiplier-min/run saved.
Fixes
- #304 / #305 — array.length=N truncate, class-field local alias type
- #307 — JSON.stringify on parsed objects with ≥9 fields
- #228 / #229 — updater HTTPS enforcement + version-binding in signed payload
- #245 Phase 2 — workspace clippy --fix sweep
- #243 — Android geisterhand apply_style dispatcher (Phase D fully cross-platform)
- #242 — visionOS geisterhand fn-pointer block
- #302 — Map/Set on class field for-of, plus #154 using/dispose SIGBUS
- #303 — Win7/8/8.1 compatibility via --min-windows-version
- #322 / v0.5.417 — HarmonyOS Phase 2 v2 + v3 + v2.5 (callbacks, toast, reactive Text)
- #334 — section root URLs no longer 404 on docs.perryts.com
- #337 — fallback __perry_wrap_perry_unknown_func wrapper
- #339 — better-sqlite3 stmt args packed into real ArrayHeader
- #342 —
cond ? await a() : b()no longer evaluates both branches - #343 — closure walker fix
- #344 / #345 / #346 — stdio routing + process.argv prototype
- #348 Phase A — native CommonJS in compilePackages
- #360 item #2 —
processimport resolution +cwddispatch - #365 — Android MediaSessionCompat lock-screen integration
- #366 — GTK4 / Linux MPRIS lock-screen
- #367 — Windows SystemMediaTransportControls
- #368 — watchOS AVPlayer + Now Playing complication
- #369 — HarmonyOS @ohos.multimedia.media.AVPlayer via napi bridge
- #370 — Web
<audio>+ Media Session API (--target web)
Features
- New
perry/mediamodule (createPlayer / play / pause / stop / seek / setVolume / setRate / state callbacks / setNowPlaying), ten backends. - New
perry-codegen-arktscrate emittingIndex.ets+ ArkTS glue for HarmonyOS NEXT. - Standalone HAP signing CLI flags (Phase 2 v7).
- State-driven NavStack for multi-page HarmonyOS apps (Phase 2 v11).
state<T>generic reactive container desugaring to existing setText infra.- Cross-platform showToast + setText (macOS / iOS / tvOS / visionOS / Android / GTK4 / Windows).
- Image/ScrollView/LazyVStack/Picker/ProgressView/Section widgets in ArkTS codegen.
- Tabs / Menu / Grid / Modal placeholder in ArkTS codegen.
- Inline
style: { ... }for ArkUI emission, ForEach via array.map detection. - Real LazyForEach + IDataSource for LazyVStack on HarmonyOS.
- HarmonyOS NEXT documentation + CI smoke job.
perry updater {keygen,sign,verify}sign-side CLI.
Infrastructure
- example-code/ moved to PerryTS/perry-examples (auto-Dependabot-PR cleanup).
- Closes #25 — compile-smoke parallelism restored to NJOBS=6 with flock-based serialization.
- macOS doc-tests cross-compile trimmed (no more redundant web/wasm targets).
- Workflow_dispatch fallback for publish jobs.
- Swatinem/rust-cache@v2 across all jobs.