Skip to main content

Changelog

All notable changes to the LERP (Luau Education for Rive Professionals) course are documented here.


[1.2.7] — 2026-04-27

Added

  • Runtime compatibility baseline page — added rive/runtime-compatibility with both a pinned runtime source snapshot (npm gitHead@5581955 for runtime line 2.37.4, published April 24, 2026 UTC) and the current C++ WASM npm runtime release line (2.37.4 across @rive-app/canvas, @rive-app/canvas-lite, @rive-app/webgl2, @rive-app/canvas-advanced), plus a live/partial/not-exposed matrix for docs-labeled "Coming soon" surfaces.

Changed

  • API pages aligned to runtime baseline — Events now documents ListenerContext payload kinds (pointer/keyboard/text/focus/reported/view-model-change/none), Assets documents AudioSource.duration, and Hierarchy explicitly marks NodeReadData.paint/asPath/asPaint as baseline-validated.
  • System + Glossary output wordingOutput<T> is now documented as not currently exposed in this baseline C++ Luau binding surface.
  • Listener lessons/quizzes updated — ListenerAction and Listeners protocol pages now teach the payload-guard pattern (is... + as...) as the safe default.
  • Metadata and navigation sync — Intro, Quick Reference, Site Map, and sidebar metadata now include runtime baseline tracking links and updated review date.
  • Audit protocol documentation — runtime baseline page now records how verification was executed (npm release checks, runtime commit pin, docs (Coming soon) diffing, and binding-level confirmation) and defines required fields for future changelog runtime-audit entries.

[1.2.6] — 2026-04-26

Fixed

  • OOP Exercise 6 (Read-Only Table) — corrected the exercise to use a proxy-table read-only pattern (source + proxy) so writes to existing keys are properly blocked through __newindex on the proxy. Reported in GitHub issue #1.
  • Exercise registry sync — updated oop-indexmeta-6 hints and explanation to reflect true Luau metamethod behavior from issue #1.

[1.2.5] — 2026-04-26

Added

  • Rive errata tracker review pass — integrated corrections from docs/rive/rive-doc-errata.mdx and marked this batch as resolved in LERP.

Fixed

  • ListenerAction callback guidance — docs now prefer performAction(self, listenerContext) and mark perform(self, pointerEvent) as legacy.
  • Path Effect command checks — replaced runtime CommandType.* examples with editor-validated string comparisons and clarified CommandType is not a guaranteed global Luau table.
  • ViewModel context semantics — corrected context:viewModel() wording to immediate data-context behavior and clarified context:rootViewModel() for root/artboard state.
  • Property listener lifetime warnings — added guidance to retain VM/property handles on self (or use anchored overloads) for long-lived listeners.
  • Node pointer-event consumption guidance — replaced boolean return consume/propagate wording with event:hit() / event:hit(true).

Changed

  • Course metadata — updated Intro snapshot date/counts and sidebar "Last reviewed" date for the errata pass.

[1.2.4] — 2026-03-23

Added

  • Tips and Tricks page — new reference index of proven workarounds and non-obvious patterns: Bus Module Pattern (with use cases for bounds, Input types, and EventBus), advance() return value gotcha, and/or string literal type widening, Sustained-Boolean Pattern (with boolean reset and trigger listener bug note), cubic bezier easing in pure Luau, and debug toggle convention
  • Bus Pattern documentation — new section in Util Protocol explaining intentional shared state via require() caching for cross-script communication, with production-tested code examples (HitboxBus, PathEffect-to-Node data sharing)

Changed

  • Util Protocol reframed — replaced blanket "avoid global state" language with nuanced guidance distinguishing accidental shared state (dangerous) from intentional bus architecture (legitimate pattern); updated quiz explanation, gotcha section, and summary accordingly
  • Sidebar — added Tips and Tricks entry between API Reference and Quick Reference

Fixed

  • Internal contradiction resolved — Listener Protocol already taught EventBus as legitimate shared state via Util scripts, while Util Protocol labeled all module-level state as BAD/WRONG; both pages now present a consistent position

[1.2.3] — 2026-03-14

Added

  • Complete Input type reference — every Input<T> type now has its own section in the API reference with when-to-use explanation, factory default, how-to-read, complete code example, and editor setup steps (for types that need it)
  • Input<Trigger> documentation — new "Trigger Inputs" section in Inputs guide, empirically validated in the Rive editor with 5 test scripts
  • Trigger execution order — documented the ground-truth frame order: trigger fn → advance → update (trigger function is called directly, not through update)
  • Changelog page — new sidebar entry after Trust & Transparency linking to rendered changelog

Changed

  • Input API reference rewritten — replaced bare code-block type list with per-type sections: Input<number>, Input<boolean>, Input<string>, Input<Color>, Input<Data.X>, Input<Artboard>, Input<Trigger>, and Change Handling — all written for non-programmers
  • Trigger moved from Events to Data & InputTrigger is a data input type, not a pointer event; Events page now redirects to the correct location
  • Events page — simplified to PointerEvent only, with redirect link for Trigger
  • Sidebar author metadata — "Last reviewed" updated to March 14, 2026

Fixed

  • Trigger factory default — documented that late() causes runtime error "expected trigger X to be a function"; must use function() end
  • Removed incorrect claimsInput<Trigger>? does NOT hide triggers from the UI; you CAN assign to trigger inputs in init (and it sticks)

[1.2.2] — 2026-03-04

Added

  • Path winding troubleshooting guidance — added a dedicated section in Procedural Geometry covering even-odd fill behavior, contour winding conflicts, cross-product detection, and strategy tradeoffs for multi-contour paths
  • New advanced procedural exercise — added Exercise 8: Fix Conflicting Winding in a Spike Burst with validator ID advanced-procedural-8
  • Debugging cross-reference — added a new common error pattern for "shapes disappear with no runtime error" linking to the winding guidance

Changed

  • Course snapshot metadata — refreshed intro page "Course at a Glance" counts and update date
  • Trust sidebar metadata — updated "Last reviewed" date in the sidebar author meta block

[1.2.1] — 2026-02-27

Added

  • Script capability matrix — new cross-protocol reference page summarizing supported callbacks and APIs by script type
  • AI agent protocol guidance — added internal protocol notes (32-bit numeric bounds, pure Luau runtime rules, none utility semantics, and component-list generation rules)

Fixed

  • Exercise expected outputs — replaced 76 ANSWER: <your result> placeholders with exact validator answers across 20 docs pages
  • ViewModels context API references — removed invalid context:artboard()/context:node() calls and aligned examples with supported context methods
  • Exercise and quiz tracking maps — synchronized docs and local registry/index so all exercise and quiz IDs are mapped correctly

Changed

  • Course consistency pass — resolved cross-page wording and metadata drift discovered during final v1.2 review

[1.2.0] — 2026-02-23

Added

  • Rive AI Agent guide — comprehensive documentation of all 14 tools available to the Rive AI coding assistant, including workflow examples and tips
  • ListenerAction protocol — new script protocol page for state machine listener action scripts
  • TransitionCondition protocol — new script protocol page for custom state machine transition conditions
  • Audio system documentation — AudioSource, AudioSound, and the Audio global API added to API reference
  • Blob type documentation — binary data assets in API reference
  • DataContext type — hierarchy traversal for data binding contexts
  • Vector static methodsVector.cross, Vector.scaleAndAdd, Vector.scaleAndSub and other previously undocumented static methods
  • ImageSampler constructor — proper function constructor documentation replacing placeholder
  • CHANGELOG.md — this file, with reconstituted version history

Fixed

  • Path Effect scope wording — clarified that path effects apply to both strokes and fills (not strokes-only)
  • Vector deprecated methods — instance methods (vec:length(), vec:dot(), etc.) now marked as deprecated with static alternatives shown
  • ImageFilter values — corrected trilinear to bilinear (trilinear does not exist in Rive)
  • ImageSampler API — documented as function constructor ImageSampler(wrapX, wrapY, filter) instead of opaque object
  • Context methods — added missing rootViewModel(), dataContext(), image(), blob(), audio()
  • BlendMode usage — corrected from namespace access (BlendMode.multiply) to string literals ("multiply")
  • PathEffect.update() signature — added missing node: NodeReadData parameter
  • PathCommand point counts — corrected to reflect Vector objects (1, 1, 2, 3) not raw number pairs (2, 2, 4, 6)
  • DataValue type-check methods — corrected from property access to method calls (dv:isNumber() not dv.isNumber)
  • PropertyList:insert parameter order — corrected to insert(vm, index) per API
  • viewModel:getViewModel() return type — corrected to PropertyViewModel?
  • artboard:instance() signature — added optional viewModel parameter
  • artboard:node() return type — corrected to NodeData?
  • Scene Node init() signature — added missing context: Context parameter
  • renderer:drawImageMesh signature — added full parameter list
  • ContourMeasure documentation — expanded to show it has full PathMeasure capabilities, not just iteration
  • NodeReadData missing methods — added asPath() and asPaint()
  • PropertyList missing listeners — added addListener() and removeListener()

Changed

  • Script types count — updated from 6 to 8 to include ListenerAction and TransitionCondition
  • Quick Decision Guide — expanded mermaid chart with new script types
  • Factory Functions table — added ListenerAction and TransitionCondition, removed Listener (not a script type)
  • Glossary — added 8+ new terms (ListenerAction, TransitionCondition, AudioSource, AudioSound, Blob, DataContext, ImageSampler, Output)
  • Strict-mode guidance — removed blanket --!strict assumptions in docs where runtime behavior makes strict mode optional

[1.1.2] — 2026-02-17

Fixed

  • Added .vercel to .gitignore

[1.1.1] — 2026-01-24

Fixed

  • Major audit fixes across documentation based on runtime testing
  • Navigation routing improvements for experience-based paths
  • Untracked .claude folders from the repository
  • Strict mode optionality wording clarified in docs

[1.1.0] — 2026-01-15

Added

  • Rive Luau expert agent with skills integration
  • Beginner-friendly "Your First Script" page
  • Beginner exercise with proper template format
  • Test scripts support added to gitignore

Fixed

  • Categorical claims corrected based on runtime testing

[1.0.1] — 2026-01-15

Added

  • Glossary expanded with 25+ new terms
  • Mat2D wrapped in Term component for consistent linking

Fixed

  • API claims corrected and missing documentation added (#87)
  • Angle bracket escaped in MDX to fix compilation error

[1.0.0] — 2026-01-14

Added

  • Complete exercise system with progress tracking
  • Comprehensive lesson improvements with AE/JS comparisons
  • All lessons migrated to Rive-first format with dark mode fixes
  • Comprehensive lessons for Fundamentals, Types, and OOP modules
  • Complete API reference and quick-reference content
  • CI/CD deployment pipeline
  • LERP brand assets

Fixed

  • Exercise expected-output blocks switched from literal answers to guidance placeholders (later reverted in 1.2.1)
  • Build warnings resolved across all exercises

[0.8.0] — 2026-01-13

Added

  • Migrated to Docusaurus with interactive quizzes
  • Loading indicator and fallback links
  • Code exercises and quiz reset functionality

[0.5.0] — 2026-01-13

Added

  • Split guide into loadable parts
  • Navigation links to reference docs
  • Improved layout and reference documentation

[0.1.0] — 2026-01-13

Added

  • Initial LERP course added to forge platform