vide/CHANGELOG.md
Andrea Fletcher 18c1d02d43
Add tag() action for CollectionService tags
Adds a built-in `vide.tag()` action that wraps `Instance:AddTag()` /
`Instance:RemoveTag()` so tags can be applied through `create()` props.

It accepts a static string or array of strings, or a reactive source
returning either. The reactive variant diffs the previous and new tag
sets so only the delta is applied. All tags added by the action are
removed when the surrounding scope is destroyed.

Includes mock support for `AddTag`/`RemoveTag`/`HasTag`/`GetTags`,
tests, API reference docs, and a closing note in the actions tutorial.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-26 22:10:47 -07:00

3.6 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.


Unreleased

Added

  • tag() action for adding CollectionService tags to instances. Supports static strings and arrays as well as reactive sources for dynamic tag sets. Tags are automatically removed when the surrounding scope is destroyed.

Changed

  • branch() is now allowed to be used within a reactive scope.

Deprecated

  • create() overloads. Supported is now only create(class)(props).

[0.4.0] - 2026-01-17

Added

  • create("ClassName", { props }) and create(Instance, { props }) syntax.
  • cleanup() now accepts thread types.
  • Implicit effects to set children can now recursively create more implicit effects to set children.
  • spring() returns a second value, a setter to set position, velocity and impulse.
  • Improved spring() updating and unscheduling.
  • show() now receives a source to its callback returning the current value of the condition.
  • Ignore false passed as a child.
  • Flag vide.defaults to disable the setting of default properties.
  • Delayed scope destruction for control flow functions: show() switch() indexes() values().
  • Better create() types for the new type solver.

Changed

  • A scope can no longer be destroyed while it is active. Strict mode will check for this.
  • Implicit effects to set children now unparent all children when the effect is destroyed.
  • Error reporting should be improved with better formatting when effects invoke other effects and no more loss of stack traces.
  • Nesting parent properties now work, and they are now also checked for duplicates like other properties.

Removed

  • Aggregate construction when setting properties with create().

[0.3.1] - 2024-10-09

Added

  • Context functions now also return results.
  • version table with current version.

[0.3.0] - 2024-10-06

Added

  • context().

Changed

  • root() now returns its destructor as the first value by default.

Fixed

  • Error stack traces being lost.
  • root() now destroys the scope automatically if an error occurs during call.

[0.2.0] - 2023-11-22

Added

  • Batched updates with batch().

Changed

  • Improved graph updating algorithm.
  • Graph nodes when destroyed no longer destroy children; only owned.

Fixed

  • Graph edge case where a destroyed node can be readded if it was queued for rerun before being destroyed.
  • Some properties not being applied when create() is used recursively.

[0.1.1] - 2023-09-30

Added

  • cleanup() accepts objects with a Destroy() or Disconnect() interface.
  • read() as a utility to read sources or passthrough a non-source value.

Changed

  • Reactive scopes created within reactive scopes are now destroyed on rerun.
  • untrack() can be called outside of reactive scopes.
  • changed() will also run its callback with the initial property value.

Fixed

  • show() and switch() not updating when in strict mode.

[0.1.0] - 2023-09-20

  • Initial release