Skip to main content

Changelog

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


[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)
  • 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