From 3933944c0025abd427797da5db4cec29b89f45e3 Mon Sep 17 00:00:00 2001 From: CI Date: Fri, 17 Jul 2026 12:17:32 -0500 Subject: [PATCH 1/3] docs(runtimes): runtime changelog + periodic update tooling --- .claude/skills/runtime-announcement/SKILL.md | 243 +++++ .gitignore | 9 +- docs.json | 12 +- game-runtimes/unity/getting-started.mdx | 8 +- runtimes/android/android.mdx | 2 +- runtimes/apple/apple.mdx | 2 +- runtimes/changelog-per-runtime.mdx | 124 +++ runtimes/changelog.mdx | 114 +++ runtimes/flutter/flutter.mdx | 10 +- .../native-version-customization.mdx | 17 +- runtimes/web/inputs.mdx | 2 +- runtimes/web/low-level-api-usage.mdx | 6 +- runtimes/web/web-js.mdx | 6 +- scripts/runtime-changelog/README.md | 132 +++ scripts/runtime-changelog/collect.mjs | 888 ++++++++++++++++++ scripts/runtime-changelog/digest.mjs | 281 ++++++ scripts/runtime-changelog/state.json | 34 + 17 files changed, 1856 insertions(+), 34 deletions(-) create mode 100644 .claude/skills/runtime-announcement/SKILL.md create mode 100644 runtimes/changelog-per-runtime.mdx create mode 100644 runtimes/changelog.mdx create mode 100644 scripts/runtime-changelog/README.md create mode 100644 scripts/runtime-changelog/collect.mjs create mode 100644 scripts/runtime-changelog/digest.mjs create mode 100644 scripts/runtime-changelog/state.json diff --git a/.claude/skills/runtime-announcement/SKILL.md b/.claude/skills/runtime-announcement/SKILL.md new file mode 100644 index 00000000..759477f6 --- /dev/null +++ b/.claude/skills/runtime-announcement/SKILL.md @@ -0,0 +1,243 @@ +--- +name: runtime-announcement +description: Write the fortnightly Rive runtime update entry in runtimes/changelog.mdx. Use when the user asks to generate, draft, or publish a runtime changelog entry, runtime update announcement, or "what shipped in the runtimes" post. +--- + +# Runtime update announcement + +You turn collected release notes into one changelog entry. You do **not** decide what +shipped — `scripts/runtime-changelog/collect.mjs` already did, from the package +registries and repos. Never add a version, date, or URL that isn't in its output, and +never "check GitHub" to fill a gap. A gap is a finding to report, not one to fill. + +## Workflow + +The whole run is: **collect → draft → review → approve → record → (user commits) → +share.** Facts come from the collector; you own only the prose; the user owns approval +and the commit. Walk it in order. + +1. **Collect.** Run `node scripts/runtime-changelog/collect.mjs`. It only writes + `scripts/runtime-changelog/generated/release-data.json`; it never touches state. + If it reports no new releases, stop and tell the user. Don't write an entry. + (`--baseline` exists only for the very first entry, when `state.json` does not yet + exist; the script refuses it once any state is recorded. You will not normally use it.) +2. **Read.** Read `generated/release-data.json` in full — including every `notes` body + and `data.core`, not just the version list. +3. **Draft.** Write the entry per the format and editorial rules below. +4. **Insert.** Place it in `runtimes/changelog.mdx` immediately after the + `{/* RUNTIME_UPDATE_INSERTION_POINT ... */}` line, so newest sits first. Leave the + marker in place and change nothing else on the page. If the marker is gone, stop and + ask — don't guess where the entry belongs. +5. **Preview for review.** Show the user the entry, any `warnings`, and the + `docsVersionUpdates` (the `docs.json` install-version bumps queued for step 6). Also run + `node scripts/runtime-changelog/digest.mjs --since ` and show that too — reviewing the docs entry and the community post together + catches wording that reads fine on the page but oddly out of context. The digest reads + the file on disk, so it reflects the draft you just wrote. Say plainly nothing is + committed and no state has moved. +6. **Record — only after they approve.** Run + `node scripts/runtime-changelog/collect.mjs --advance-state`. This does two things: + records what was announced into `state.json`, and syncs the docs install-version + variables in `docs.json` (`versionApple`, `versionAndroid`, …) to each runtime's + latest version. Never run it before approval: state is the boundary for the *next* + entry, so advancing it early silently skips releases forever. It writes the two files + but does not commit. The collect step (1) already previewed the `docs.json` bumps. +7. **Hand off the commit.** Tell the user to commit `runtimes/changelog.mdx`, + `scripts/runtime-changelog/state.json`, and `docs.json` **together** (one logical + change), after running `mint broken-links`. Never commit, push, or open a PR yourself. +8. **Share.** When they want the community post, run + `node scripts/runtime-changelog/digest.mjs --since `. It reassembles the + changelog into one markdown post grouped by runtime, inheriting the reviewed prose and + the deep per-release links — so the shared post can never diverge from the published + page. The post prints to stdout (show it to the user) and is saved to + `scripts/runtime-changelog/generated/community-post.md` (git-ignored). **Tell the user + that path** so they know where to grab it; that file is for copy-pasting into + Discord/forum/email and must not be committed. Generate it from the finalized entry, + never from raw collected data. + +## Format + +The label is the permalink anchor and cannot be changed later without breaking inbound +links — use `Month D, YYYY` and never edit a published one. Tag every entry with exactly +the runtimes it covers: tags are AND-filtered, and an untagged entry disappears the +moment a reader filters by anything. + +```mdx + + +## Core runtime + +- Fixed the Lua `Data` global being `nil` in scripts, which broke script-driven view model instance creation. + +Shipped in the Apple, Android, and Web releases below. + +[Core runtime](https://github.com/rive-app/rive-runtime) + +## Apple v6.21.1 + +- … + +[Apple release notes](https://github.com/rive-app/rive-ios/releases) + + +``` + +Rules: + +- `## Core runtime` comes first, with no version (see the core section below). Then one + `##` heading per runtime, `## `, using `displayName` and + `versionRange` verbatim from the JSON. Each heading becomes its own RSS entry, which + is why the version belongs in the heading — `## Android v11.7.2` is a good feed title, + `## Android` is not. +- Order runtime sections by how much users care: Apple, Android, Web, React, + React Native, Flutter, Unity, Unreal. Omit any runtime with `hasUpdates: false` + entirely. +- Close each section with a **version-specific** link, never a repo's general releases + index. Every release in `release-data.json` carries a deep `url` already: a GitHub + release-tag page, a pub.dev version page, or a GitHub compare link. Use those. + - Single version: `[Apple v6.21.1 release notes]()`. + - A range (e.g. React Native's five releases): list each version's link on one line, + `Releases: [v0.4.14](url) · [v0.4.15](url) · …`, so each points at its own notes. + - `links.releases` (the general index) is only a fallback if a release somehow has no + `url`, which should not happen. +- `description` and `tags` list the shipping runtimes covered, comma-separated. Core is + not a tag — it isn't something anyone installs, and it appears in nearly every entry, + so it would be a useless filter. +- Don't set `mode` in the page frontmatter and don't add an `rss` prop to the `` + — both suppress features we want. + +## Editorial rules + +Write for a developer deciding whether to upgrade. Technical, plain, no marketing. Lead +each section with what matters most: breaking changes and migrations first, then new +APIs, then meaningful fixes, then everything else. + +Include only what the source notes support. If notes say "fixed a crash," don't write +"major stability improvements." If something is ambiguous, keep the source's neutral +wording or flag it to the user — never resolve ambiguity by inventing detail. + +Never drop a breaking change, even a small one. If the notes hint at one and you're +unsure, surface it to the user rather than omitting it. + +Cut entirely: CI and release plumbing, dependency bumps with no user impact, formatting, +internal refactors with no stated effect. `pin npm down to v11 as latest compatible +version for our node runner` is not an announcement. + +Collapse consecutive versions. Five patch releases in a fortnight usually contain one or +two things a user cares about — write those, not five sections. Never pad a section to +make a runtime look busy; a runtime with one real fix gets one bullet. + +## How the version range is decided + +`scripts/runtime-changelog/state.json` is the committed record of the last version +announced per runtime. It is the boundary for the next entry, which is why it must be +committed in the **same commit** as the entry it describes — and why you never advance it +before the user approves. + +Once a runtime has a recorded version, its range is pure version comparison up to the +latest published release. The two-week window is bootstrap-only and is never consulted +again for that runtime. A runtime added to the config later has no state, so it +bootstraps from the window on its first run — it will not dump its whole history. + +A runtime marked `baselineOnly: true` shipped nothing in the window and is present only +because the first entry establishes a starting point. Say so plainly in its section +("The current Flutter release, included here to set a starting point for this +changelog") rather than implying it just shipped. + +## The core section + +`data.core` holds changes to the shared C++ runtime (`rive-app/rive-runtime`). It is +**derived, not collected**: that repo publishes no releases, so the collector +reconstructs core changes from the upstream commits that Apple, Android and Web each +vendored into a shipped release. Two consequences: + +- Every core change listed has, by construction, actually shipped in a released runtime. + Do not go read `rive-runtime`'s `main` branch to fill gaps — it contains unreleased + work, and announcing that repeats the Flutter `## Upcoming` mistake. +- `## Core runtime` carries **no version**. rive-runtime cuts a tag per commit + (`runtime-v0.1.191`); those numbers are meaningless to users. Don't invent a range. + +Each change has `shippedIn` (which runtimes carried it), `scope`, `type`, and `pr`. Most +are in more than one runtime — that is the whole point of the section. State plainly +which releases carry them, e.g. "Shipped in the Apple, Android, and Web releases below", +using `derivedFrom`. + +**Never repeat a core change inside a runtime's own section.** If Core says the Lua +`Data` global was fixed, Apple's section must not say it again. A runtime's section +covers only its `platformChanges` plus any genuinely platform-specific curated notes. +This is why a runtime section may be very short — Android often has one or two real +changes of its own. That is honest; do not pad it. + +Editor-only commits are already excluded by the collector. A change marked +`ambiguous: true` had a mixed scope like `fix(editor and runtime)` — decide whether the +runtime-facing half is worth announcing, and say so when you report back. + +Core's outbound link is the `rive-app/rive-runtime` repo, since it has no releases yet. +**Future:** rive-runtime will publish official releases, at which point every runtime +will vendor a named core version and Core can link that specific version (and each +runtime section can state which core version it carries). Don't build for that now — a +plain repo link is correct until those releases exist. + +Core still contains plenty of noise the collector deliberately does not judge: `chore`, +`perf(tests)`, `fix(build)`, CI, and test-harness work. Cut it. `perf(tests): Spawn +image_diff.py only once per job` is not an announcement. + +## Runtimes wrap other runtimes — do not double-report + +This is the easiest way to write a bad entry. Several runtimes are thin wrappers, so +their release notes are mostly *bumps of a runtime already covered elsewhere in the +same entry*: + +- **React** wraps the Web (`rive-wasm`) runtime. A React release is often only + `chore(react): bump js runtime to 2.38.5`. +- **React Native** wraps Android and Apple: `bump rive-android to 11.7.1 and rive-ios + to 6.21.0`. +- **Flutter** wraps `rive_native`: `Bumps to rive_native: 0.1.9`. + +When a wrapper's only changes are bumps of something else in this entry, say so in one +line and link across — don't restate the wrapped runtime's changes under the wrapper's +heading. Something like "Updated to the Rive JS runtime 2.38.5 (see Web above)" is +right. Restating Web's fixes under React is wrong: it reads as separate work, and it +inflates the entry. + +If a wrapper *also* has its own changes (a new hook, a platform-specific fix), those are +the real content — lead with them and treat the bump as a footnote. + +## Per-source quirks + +The collector already picks the correct source per runtime, but the notes it hands you +vary wildly in shape and quality: + +- **Apple** — hand-written prose with `## Added` / `## Fixed`. Highest quality; mostly + needs condensing, not rewriting. +- **Unreal**, **Unity** — hand-written prose. Unreal notes may carry a `## Known Issues` + section; that is worth surfacing. +- **Android** — a raw commit list (`fix(Android): Add dirtying to VMI triggers (#13051)`). + Not user-facing English. Translate into what a developer would notice, and if a commit + is too internal to explain in user terms, drop it rather than paraphrasing the commit + message back. Read the linked PR or the Rive docs if you need to understand a term + before writing about it. +- **Web** (`rive-wasm`) — a raw dump of the **whole monorepo's** commits. It contains + work that never touched the web runtime at all: `feat(apple): add semantics support`, + `feature (Unreal) Ore Support`, `chore(editor): add view model uses to dependencies + panel`. Include only what affects the web runtime. This one needs the most filtering. +- **React** — `auto-changelog` output, one commit line per version, usually just a + runtime bump. See the wrapper rule above. +- **React Native** — `semantic-release` output, conventional-commit bullets. Ships very + often; expect to collapse several versions hard. +- **Flutter** — notes come from the version published to pub.dev, which is the only + correctly-versioned copy. Do not read `CHANGELOG.md` on `master`: it keeps released + notes under `## Upcoming` and appends unreleased work to that same block, so it will + hand you changes nobody can install yet. + +## Reporting back + +Along with the entry, tell the user: + +- any `warnings` on a runtime; +- the `docsVersionUpdates` the collector reported — the `docs.json` install-version + variables that `--advance-state` will bump (e.g. `versionApple 6.13.0 -> 6.21.1`). These + are applied automatically on approval; just surface them so the reviewer knows the docs + install snippets are moving too; +- anything you deliberately cut that they might expect to see; +- anything ambiguous you had to make a judgment call on. diff --git a/.gitignore b/.gitignore index fd391e33..5eb9d30f 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,11 @@ Temporary Items # iCloud generated files *.icloud -# End of https://www.toptal.com/developers/gitignore/api/macos \ No newline at end of file +# End of https://www.toptal.com/developers/gitignore/api/macos +### Rive runtime changelog tooling ### +# Collector output: a rebuildable artifact of each run. state.json is NOT ignored — +# it is the committed record of what has actually been announced. +scripts/runtime-changelog/generated/ + +# Personal Claude Code settings. .claude/skills/ is shared and stays tracked. +.claude/settings.local.json diff --git a/docs.json b/docs.json index d22bf106..beb9834a 100644 --- a/docs.json +++ b/docs.json @@ -26,8 +26,12 @@ "pricingVoyagerMonthly": "$39", "pricingVoyagerYearly": "$304", "pricingEnterpriseYearly": "$1,440", - "versionMajorWebGL2": "2", - "versionWebGL2": "2.38.3", + "versionMajorWeb": "2", + "versionWeb": "2.38.5", + "versionApple": "6.21.1", + "versionAndroid": "11.7.2", + "versionFlutter": "0.14.9", + "versionUnity": "0.4.3", "supportForm": "https://forms.rive.app/support?utm_medium=support_page", "supportFormEducational": "https://forms.rive.app/education?utm_medium=support_page" }, @@ -536,7 +540,9 @@ "feature-support", "runtimes/runtime-sizes", "runtimes/choose-a-renderer/overview", - "runtimes/advanced-topic/format" + "runtimes/advanced-topic/format", + "runtimes/changelog", + "runtimes/changelog-per-runtime" ] }, { diff --git a/game-runtimes/unity/getting-started.mdx b/game-runtimes/unity/getting-started.mdx index 9355ac96..d7631bd3 100644 --- a/game-runtimes/unity/getting-started.mdx +++ b/game-runtimes/unity/getting-started.mdx @@ -49,10 +49,10 @@ The **Unity Asset Store** has a simpler installation process and only includes t The [rive-unity package](https://github.com/rive-app/rive-unity) is also available to install from GitHub using a git dependency. - Add it via **Window -\> Package Manager** and choose **Add package from git URL...** (replace `0.0.0` with the [latest release](https://github.com/rive-app/rive-unity/releases)): + Add it via **Window -\> Package Manager** and choose **Add package from git URL...** (pinned to the [latest release](https://github.com/rive-app/rive-unity/releases); change the version tag if you need a specific one): ```bash - https://github.com/rive-app/rive-unity.git?path=package#v0.0.0 + https://github.com/rive-app/rive-unity.git?path=package#v{{versionUnity}} ``` @@ -63,10 +63,10 @@ The **Unity Asset Store** has a simpler installation process and only includes t Unity can occasionally crash when upgrading the packages while the Editor is running. If you experience this, close Unity first, update the version in `Packages/manifest.json`, then reopen the project. - You can add it manually to your project's `Packages/manifest.json` (replace `0.0.0` with the [latest release](https://github.com/rive-app/rive-unity/releases)): + You can add it manually to your project's `Packages/manifest.json` (pinned to the [latest release](https://github.com/rive-app/rive-unity/releases); change the version tag if you need a specific one): ```json - "app.rive.rive-unity": "https://github.com/rive-app/rive-unity.git?path=package#v0.0.0" + "app.rive.rive-unity": "https://github.com/rive-app/rive-unity.git?path=package#v{{versionUnity}}" ``` diff --git a/runtimes/android/android.mdx b/runtimes/android/android.mdx index cd779fcd..6676c2f6 100644 --- a/runtimes/android/android.mdx +++ b/runtimes/android/android.mdx @@ -61,7 +61,7 @@ If you are looking for getting started instructions for the Legacy API, see [Get ```groovy dependencies { ... - implementation 'app.rive:rive-android:' + implementation 'app.rive:rive-android:{{versionAndroid}}' // For initialization, you may want to add a dependency on Jetpack Startup implementation "androidx.startup:startup-runtime:1.1.1" } diff --git a/runtimes/apple/apple.mdx b/runtimes/apple/apple.mdx index 62e4861c..7befec13 100644 --- a/runtimes/apple/apple.mdx +++ b/runtimes/apple/apple.mdx @@ -44,7 +44,7 @@ Follow the steps below for a quick start on integrating Rive into your Apple app ```swift dependencies: [ - .package(url: "https://github.com/rive-app/rive-ios", from: "6.13.0") + .package(url: "https://github.com/rive-app/rive-ios", from: "{{versionApple}}") ] ``` diff --git a/runtimes/changelog-per-runtime.mdx b/runtimes/changelog-per-runtime.mdx new file mode 100644 index 00000000..8056e195 --- /dev/null +++ b/runtimes/changelog-per-runtime.mdx @@ -0,0 +1,124 @@ +--- +title: "Changelog (per-runtime shape)" +description: "TEMPORARY comparison page — same data, one Update per runtime" +rss: true +--- + + + Temporary page for comparing changelog shapes. Same release data as + [Changelog](/runtimes/changelog), but emitted as one `` per runtime instead of + one per fortnight. Try the runtime filters in the right sidebar on both pages. + + +{/* RUNTIME_UPDATE_INSERTION_POINT — new entries are added directly below this line, newest first. Do not remove. */} + + + +Changes to the shared runtime that Rive is built on. These ship inside the runtime releases below, so no separate upgrade is needed. + +- Added 3D vector operations, `Mat4.lookAt` and `Mat4.ortho`, vector buffer writes, and a `GPUBuffer` write source range to scripting. +- Added data binding support for fonts. +- Added `requestArtboardSize`, artboard volume, and a semantics API to the command queue. +- Added the enum name to `getProperties`. +- Updated Luau to 0.728. +- Layout fit is now composed as a separate scale on images, so a scale you set stays independent of it. +- Fixed the Lua `Data` global not being initialized, which left view model constructors such as `Data.MyViewModel.new()` unavailable to scripts. +- Fixed detached view model instances not advancing until the end of the frame. +- Fixed Lua colors being decoded as signed rather than unsigned integers. +- Fixed `bindablePropertyInstance` being used without validation. +- Fixed direct focus resolving to a container rather than the first leaf node. +- Fixed a per-frame update race on the ore buffer, and fixed texture compression. + +[Core runtime](https://github.com/rive-app/rive-runtime) + + + + + +- Added asynchronous view model instance creation via `useViewModelInstance({ async: true })`. +- Fixed a disposed Rive file being re-acquired when a view re-attached. +- Fixed stale property setter calls after dispose, which now no-op instead. +- Fixed data binding `HybridObject` native resources not being released on Android. +- Updated the underlying native runtimes to rive-android 11.7.1 and rive-ios 6.21.0. + +Releases: [v0.4.14](https://github.com/rive-app/rive-nitro-react-native/releases/tag/v0.4.14) · [v0.4.15](https://github.com/rive-app/rive-nitro-react-native/releases/tag/v0.4.15) · [v0.4.16](https://github.com/rive-app/rive-nitro-react-native/releases/tag/v0.4.16) · [v0.4.17](https://github.com/rive-app/rive-nitro-react-native/releases/tag/v0.4.17) · [v0.4.18](https://github.com/rive-app/rive-nitro-react-native/releases/tag/v0.4.18) + + + + + +- Improved time-to-first-frame by drawing the first frame synchronously when resuming from a paused state, rather than waiting on the display link. + +Also includes the core runtime changes above. + +[Apple v6.21.1 release notes](https://github.com/rive-app/rive-ios/releases/tag/6.21.1) + + + + + +- Added locking around the mutation APIs. +- View model instance triggers now mark their bindings dirty, so a fired trigger propagates to bound properties. + +Also includes the core runtime changes above. + +[Android v11.7.2 release notes](https://github.com/rive-app/rive-android/releases/tag/11.7.2) + + + + + +- **Breaking:** `OnRiveReady` has been removed. +- Added RHI GPU Canvas support, and fixed a crash where mouse sync events caused the GPU canvas to draw on the game thread. +- Mouse down and up now respond immediately, and layout fit mode mouse events are fixed. +- Exposed triggers to C++, and Blueprint nodes now produce useful errors when used incorrectly. +- `SetRiveDescriptor` now re-creates artboards, and `SetOwningArtboard` now sets the owned artboard for all nested view models. +- View model defaults now use referenced values instead of creating new ones, and nested artboards default correctly for instances. + +[Unreal v0.4.25 release notes](https://github.com/rive-app/rive-unreal/releases/tag/0.4.25) + + + + + +- Fixed an audio clash between Rive runtimes sharing a page by adding miniaudio to the Closure externs. + +Also includes the core runtime changes above. + +[Web v2.38.5 changes](https://github.com/rive-app/rive-wasm/compare/2.38.4...2.38.5) + + + + + +- Updated to the Rive JS runtime 2.38.5 — see Web for what that includes. + +[React v4.29.5 changes](https://github.com/rive-app/rive-react/compare/v4.29.4...v4.29.5) + + + + + +The current Flutter release, included here to set a starting point for this changelog. + +- Touch and stylus pointer up and cancel now also dispatch a pointer exit, so listeners receive a Pointer Exit when a finger or pen lifts. This keeps enter and exit symmetric on mobile and matches the other Rive runtimes. Mouse and trackpad pointers are unaffected. +- `RiveWidgetController` now advances and applies the state machine with zero elapsed time after pointer down and up events, so intermediate state — such as a view model property set on pointer down — is processed even when both occur in the same frame. Set it to `false` to opt out. +- Shared texture usage is no longer marked experimental. +- Fixed a crash when using `desktop_multi_window` on Windows with MicroProfile GPU init. + +[Flutter v0.14.9 on pub.dev](https://pub.dev/packages/rive/versions/0.14.9) + + + + + +The current Unity release, included here to set a starting point for this changelog. + +- Fixed a crash when assigning `null` to string properties. +- Fixed a crash when updating the package on Windows. +- Fixed an issue with library enums during import. +- Added missing libpng symbol renames for Unity 6.4+ WebGL builds. + +[Unity v0.4.3 release notes](https://github.com/rive-app/rive-unity/releases/tag/v0.4.3) + + diff --git a/runtimes/changelog.mdx b/runtimes/changelog.mdx new file mode 100644 index 00000000..abb5b832 --- /dev/null +++ b/runtimes/changelog.mdx @@ -0,0 +1,114 @@ +--- +title: "Changelog" +description: "Release updates across the Rive runtimes" +rss: true +--- + +Updates to the Rive runtimes, published roughly every two weeks. Each entry covers +every version released since the previous entry. + +For the complete history of any single runtime, see its own release notes: [Web](https://github.com/rive-app/rive-wasm/blob/master/CHANGELOG.md), +[React](https://github.com/rive-app/rive-react/blob/main/CHANGELOG.md), +[React Native](https://github.com/rive-app/rive-nitro-react-native/releases), +[Flutter](https://pub.dev/packages/rive/changelog), +[Apple](https://github.com/rive-app/rive-ios/releases), +[Android](https://github.com/rive-app/rive-android/releases), +[Unity](https://github.com/rive-app/rive-unity/releases), and +[Unreal](https://github.com/rive-app/rive-unreal/releases). + +{/* RUNTIME_UPDATE_INSERTION_POINT — new entries are added directly below this line, newest first. Do not remove. */} + + + +## Core runtime + +Changes to the shared runtime that Rive is built on. These ship inside the runtime releases listed below, so no separate upgrade is needed. + +- Added 3D vector operations, `Mat4.lookAt` and `Mat4.ortho`, vector buffer writes, and a `GPUBuffer` write source range to scripting. +- Added data binding support for fonts. +- Added `requestArtboardSize`, artboard volume, and a semantics API to the command queue. +- Added the enum name to `getProperties`. +- Updated Luau to 0.728. +- Layout fit is now composed as a separate scale on images, so a scale you set stays independent of it. +- Fixed the Lua `Data` global not being initialized, which left view model constructors such as `Data.MyViewModel.new()` unavailable to scripts. +- Fixed detached view model instances not advancing until the end of the frame. +- Fixed Lua colors being decoded as signed rather than unsigned integers. +- Fixed `bindablePropertyInstance` being used without validation. +- Fixed direct focus resolving to a container rather than the first leaf node. +- Fixed a per-frame update race on the ore buffer, and fixed texture compression. + +Shipped in the Apple, Android, and Web releases below. + +[Core runtime](https://github.com/rive-app/rive-runtime) + +{/* Core has no releases of its own yet. Once rive-runtime publishes official releases, this should link the specific core version the runtimes below vendored. */} + +## Apple v6.21.1 + +- Improved time-to-first-frame by drawing the first frame synchronously when resuming from a paused state, rather than waiting on the display link. + +[Apple v6.21.1 release notes](https://github.com/rive-app/rive-ios/releases/tag/6.21.1) + +## Android v11.7.2 + +- Added locking around the mutation APIs. +- View model instance triggers now mark their bindings dirty, so a fired trigger propagates to bound properties. + +[Android v11.7.2 release notes](https://github.com/rive-app/rive-android/releases/tag/11.7.2) + +## Web v2.38.5 + +- Fixed an audio clash between Rive runtimes sharing a page by adding miniaudio to the Closure externs. + +[Web v2.38.5 changes](https://github.com/rive-app/rive-wasm/compare/2.38.4...2.38.5) + +## React v4.29.5 + +- Updated to the Rive JS runtime 2.38.5 — see Web above for what that includes. + +[React v4.29.5 changes](https://github.com/rive-app/rive-react/compare/v4.29.4...v4.29.5) + +## React Native v0.4.14–v0.4.18 + +- Added asynchronous view model instance creation via `useViewModelInstance({ async: true })`. +- Fixed a disposed Rive file being re-acquired when a view re-attached. +- Fixed stale property setter calls after dispose, which now no-op instead. +- Fixed data binding `HybridObject` native resources not being released on Android. +- Updated the underlying native runtimes to rive-android 11.7.1 and rive-ios 6.21.0. + +Releases: [v0.4.14](https://github.com/rive-app/rive-nitro-react-native/releases/tag/v0.4.14) · [v0.4.15](https://github.com/rive-app/rive-nitro-react-native/releases/tag/v0.4.15) · [v0.4.16](https://github.com/rive-app/rive-nitro-react-native/releases/tag/v0.4.16) · [v0.4.17](https://github.com/rive-app/rive-nitro-react-native/releases/tag/v0.4.17) · [v0.4.18](https://github.com/rive-app/rive-nitro-react-native/releases/tag/v0.4.18) + +## Flutter v0.14.9 + +The current Flutter release, included here to set a starting point for this changelog. + +- Touch and stylus pointer up and cancel now also dispatch a pointer exit, so listeners receive a Pointer Exit when a finger or pen lifts. This keeps enter and exit symmetric on mobile and matches the other Rive runtimes. Mouse and trackpad pointers are unaffected. +- `RiveWidgetController` now advances and applies the state machine with zero elapsed time after pointer down and up events, so intermediate state — such as a view model property set on pointer down — is processed even when both occur in the same frame. Set it to `false` to opt out. +- Shared texture usage is no longer marked experimental. +- Fixed a crash when using `desktop_multi_window` on Windows with MicroProfile GPU init. + +[Flutter v0.14.9 on pub.dev](https://pub.dev/packages/rive/versions/0.14.9) + +## Unity v0.4.3 + +The current Unity release, included here to set a starting point for this changelog. + +- Fixed a crash when assigning `null` to string properties. +- Fixed a crash when updating the package on Windows. +- Fixed an issue with library enums during import. +- Added missing libpng symbol renames for Unity 6.4+ WebGL builds. + +[Unity v0.4.3 release notes](https://github.com/rive-app/rive-unity/releases/tag/v0.4.3) + +## Unreal v0.4.25 + +- **Breaking:** `OnRiveReady` has been removed. +- Added RHI GPU Canvas support, and fixed a crash where mouse sync events caused the GPU canvas to draw on the game thread. +- Mouse down and up now respond immediately, and layout fit mode mouse events are fixed. +- Exposed triggers to C++, and Blueprint nodes now produce useful errors when used incorrectly. +- `SetRiveDescriptor` now re-creates artboards, and `SetOwningArtboard` now sets the owned artboard for all nested view models. +- View model defaults now use referenced values instead of creating new ones, and nested artboards default correctly for instances. + +[Unreal v0.4.25 release notes](https://github.com/rive-app/rive-unreal/releases/tag/0.4.25) + + diff --git a/runtimes/flutter/flutter.mdx b/runtimes/flutter/flutter.mdx index 23dd2ed4..422127f1 100644 --- a/runtimes/flutter/flutter.mdx +++ b/runtimes/flutter/flutter.mdx @@ -12,14 +12,6 @@ import { Demos } from "/snippets/demos.jsx"; This guide documents how to use the Rive Flutter runtime to easily integrate Rive graphics in your Flutter apps. - - The latest version of Rive Flutter is currently published as a dev release - `0.14.0-dev.x`. This means that while the package is stable and ready for - production use, we are still actively developing new features and - improvements. We recommend using the latest dev version to take advantage of - the newest features and fixes. - - Already using Rive Flutter? See our [Migration Guide](/runtimes/flutter/migration-guide) for information on adopting the @@ -43,7 +35,7 @@ Follow the steps below to integrate Rive into your Flutter apps. ```yaml # pubspec.yaml dependencies: - rive: ^0.14.0-dev.6 # or latest dev version + rive: ^{{versionFlutter}} ``` diff --git a/runtimes/react-native/native-version-customization.mdx b/runtimes/react-native/native-version-customization.mdx index 1162d641..4eb99be3 100644 --- a/runtimes/react-native/native-version-customization.mdx +++ b/runtimes/react-native/native-version-customization.mdx @@ -13,16 +13,17 @@ This section is for advanced users who need to use specific versions of the Rive ### Default Behavior -By default, Rive React Native uses the native SDK versions specified in `package.json`: +By default, Rive React Native pins the native SDK versions in the library's own +`package.json` under `runtimeVersions`. The current release uses: ```json "runtimeVersions": { - "ios": "6.12.0", - "android": "10.4.5" + "ios": "{{versionApple}}", + "android": "{{versionAndroid}}" } ``` -These versions are tested and known to work well with this version of Rive React Native. +These are tested and known to work with this version of Rive React Native. To confirm the exact versions your installed release bundles, check `runtimeVersions` in `node_modules/@rive-app/react-native/package.json`. ### Customizing Versions @@ -36,7 +37,7 @@ Create or edit `ios/Podfile.properties.json`: ```json { - "RiveRuntimeIOSVersion": "6.13.0" + "RiveRuntimeIOSVersion": "{{versionApple}}" } ``` @@ -51,7 +52,7 @@ cd ios && pod install Add to `android/gradle.properties`: ```properties -Rive_RiveRuntimeAndroidVersion=10.5.0 +Rive_RiveRuntimeAndroidVersion={{versionAndroid}} ``` #### Expo Projects @@ -69,13 +70,13 @@ export default ({ config }: ConfigContext): ExpoConfig => ({ [ withPodfileProperties, { - RiveRuntimeIOSVersion: "6.13.0", + RiveRuntimeIOSVersion: "{{versionApple}}", }, ], [ withGradleProperties, { - Rive_RiveRuntimeAndroidVersion: "10.5.0", + Rive_RiveRuntimeAndroidVersion: "{{versionAndroid}}", }, ], ], diff --git a/runtimes/web/inputs.mdx b/runtimes/web/inputs.mdx index 66dd1dcc..b9bd98bc 100644 --- a/runtimes/web/inputs.mdx +++ b/runtimes/web/inputs.mdx @@ -24,7 +24,7 @@ The web runtime provides an `onLoad` callback that's run when the Rive file is l
- + + ``` If you see a newer major version to upgrade to, ensure your code accounts for breaking changes in the migration guide @@ -46,7 +46,7 @@ See [Canvas vs WebGL2](/runtimes/web/canvas-vs-webgl) for guidance on which pack Alternatively, pin to a specific version for more control over what is loaded in your app. As Rive's feature set grows, you'll want to manually update this version to a newer one to ensure best compatibility. ```html - + ``` This will make a global `rive` object available, allowing you to access the Rive API via the `rive` entry point. Follow the next steps below. @@ -154,7 +154,7 @@ Bringing it all together, here's how to load a Rive graphic in a single HTML fil - +