Changelog
The plugin auto-updates from the public release repo, so you don’t have to track these by hand — but they’re here for the record. Listed newest first.
v33 — Stability + QOL polish
Section titled “v33 — Stability + QOL polish”A focused bug-and-polish pass across Animate mode, input handling, the Beam Blender, native ParticleEmitter, the inventory, the graph editor, and the theme system.
Animate mode.
- Nested staggered emitters keep their authored
EmitDelayacross Animate loops (was silently zeroing on loop 2+). - Beam Blender plays the correct colours on every loop cycle (cycles 2+ used to be wrong).
- Animated Models with nested Beams stay smooth at small scales.
Inputs.
- Position / Rotation labels refresh on undo and on selection change.
- Garbage typing in number fields (e.g.
abc,66, 66ab) flashes red and restores the previous value, instead of silently overwriting with zeros across ~30 inputs. - Beam / Trail Texture fields reject non-numeric input (was silently clearing the field).
- A single Ctrl+Z reverts a Color Pick.
Beam Blender.
- Add State spreads existing states’ Time values evenly across
[0, 1]—[0, 1]→[0, 0.5, 1]→[0, 0.33, 0.66, 1], and so on. Already-retimed states are preserved (neighbour-midpoint fallback). - Deleting a state renumbers the remaining state names sequentially.
- The
Timefield validates: out-of-range or duplicate values flash red and revert.
Native ParticleEmitter.
- NEW
Gridinput for FlipbookLayout —4for 4×4,5, 4for 5×4,0to disable. - The Mode dropdown now matches Roblox’s
Enum.ParticleFlipbookModeexactly:Loop/OneShot/PingPong/Random(PingPong was missing before).
Inventory.
- Models can opt into
PreloadTexture(the toggle previously only existed for the texture-bearing types). - Bulk JSON import is dramatically faster — a 500-item import that took several seconds now completes sub-second.
- Comma-bearing names persist correctly in favourites and recents.
Graph editor.
- Adding a keypoint in linear-mode segments preserves the authored bezier handles on neighbouring keypoints.
- The Simplify panel reverts on close-without-Minimize.
- Click-without-drag on a keypoint no longer pollutes the undo stack.
Theme.
- Body fonts (inventory, tooltips) survive theme font changes.
- Strokes follow accent-colour changes.
- The font-size slider preserves sub-50% values.
Misc.
- OptCalc registers idle items (count = 0, disabled, no duration) as zero cost — no more false-red warnings.
- Motion Preview variant count is now adaptive: 1 emitter selected = ~20 lines drawn; 5+ emitters share ~20 total.
- Corrupted attribute values fall back safely instead of crashing emit.
v32 — Orientation modes, ZOffset, LinkTrack, WeldWithoutRotation, Linger
Section titled “v32 — Orientation modes, ZOffset, LinkTrack, WeldWithoutRotation, Linger”Per-emitter polish across the lighter types.
- Orientation added on Part / Attachment / Model — Roblox’s
ParticleEmitter.Orientationenum (None,FacingCamera,FacingCameraWorldUp,VelocityParallel,VelocityPerpendicular) now applies to transformed types too. - ZOffset added on Part / Attachment / Model — per-particle offset along the camera’s forward axis. Layered effects no longer z-fight. (
Beamalready exposed ZOffset; v32 brings the workspace 3D types up to parity.) - LinkTrack — per-frame link-CFrame reapply for
PartandModelemits, runs every Heartbeat outside the keyframe-step gate so a linked particle stays glued to its target between step advances. - WeldWithoutRotation added to the LinkMode set — position plus link’s rotated-axis offset, but the particle’s mesh orientation stays independent. See Linking → WeldWithoutRotation.
- Linger extended to screen / light / image types — same
PartLifepost-lifetime extension Part / Beam / Model already had. - v32.05. Inventory texture-load deferred by 2 seconds so the plugin UI mounts before the heavy JSON parse.
- Texture library merge. VFXData + Zonito remainder folded into the inventory; total now 12,852 unique IDs across the original 22 categories.
v31 — Screen types
Section titled “v31 — Screen types”The big new emitter family.
- Blur / Bloom / ColorCorrection / Atmosphere / ImageLabel added as transformable types. Screen-space and UI emitters with their own per-type properties (e.g. Bloom’s Threshold graph, Atmosphere’s dual
Color+Decaygraph, ImageLabel’s polar emission model). LinkSourcedropdown (None/Camera/Object) replaces the previous “Camera as a LinkMode” approach. The Camera link is now resolved at emit time viaworkspace.CurrentCameraso swapping cameras at runtime works correctly. See Linking → Camera linking.- Graph Editor polish — bezier self-intersection clamp, handle grabbability + min-length guards, keypoint drag clamping, envelope overflow + handle sync fixes.
- Edit-time spritesheet sizing. Spritesheet dimensions are stamped onto the source instance at edit time (via
_SheetSize/_SheetAssetattributes) so the runtime emit path reads the stamped value directly without an HTTP call. TexturePinowner-tracked refcounting lets two roots pin the same asset id without trampling each other’s claim — releasing one root keeps the texture pinned via the other.- Auth + bezier fixes.
- v31.01. 1-frame pop on Beam + PointLight emits resolved.
- v31.02. Runtime
Part_Iclesmodule auto-refreshes on plugin load so the script-side API stays current with the plugin without manual reinsertion.
v30 — Position offset + DirMode
Section titled “v30 — Position offset + DirMode”PosX/PosY/PosZ— per-axis random spawn offsets in studs. Replaced earlier “RadiusXYZ”-style inputs with proper ranges.DirMode— frame-of-reference picker (RigidLocal/Local/Global) for how the launch direction is interpreted relative to the source’s rotation. See Motion → Dir. Mode.- Pivot link mode fix — initial rotation now bakes correctly at spawn.
- UX polish across the property panel.
- v30.05.
GlobalDirMode strips the emitter’s rotation but preserves authoredRotX/Y/Zinitial rotation — the two are now orthogonal. - v30.06.
Insert Modulebutton usesPart_Iclesas the inserted module’s name. - v30.31. MotionPreview corrected for purely-vertical emission directions (degenerate cross-product case).
v29.0 — Motion Preview + Asset Bridge
Section titled “v29.0 — Motion Preview + Asset Bridge”The biggest single feature drop since the inventory system.
- Motion Preview tool. Pick an emitter, watch its trajectory variants drawn live in the viewport via
LineHandleAdornments. Reuses the engine’s actual motion routine so what you see is what will emit. Several variants per emitter, debounced, hard cap on items per refresh for large selections. Camera-facing chevrons. - Local inventory Grid. A second tier inside the Inventory panel showing your own Studio assets alongside the cloud library. Scrolls and filters the same way.
- Dissect From Selection. A button in the Dissect dialog that auto-fills the asset-id box with the
.Texturefield of every selectedDecal/Texture/Beamin your Studio workspace. - Asset bridge. New plugin-side infrastructure powers full-resolution dissect of public Roblox assets.
- Full-resolution dissect. No more thumbnail-resolution cap when slicing assets you don’t own.
- Parallel sheet dissection. Multiple dissects run concurrently without backlogging.
- Link mode fixes.
InvertMotionnow respectsFollowandPivotlink modes correctly. - Default Speed = 0 across all types (was a per-type mix). Less surprise on first transform.
- Beam Transform + Fix force
LightInfluence = 0— beams emit visibly under any lighting now without manual adjustment. - Slider overhaul. Log-scale resize/retime sliders (0.5× to 2×), unclamped text input, throttle fix, 5px padding to clear the panel-resize edge handles.
- Double-emit dedup.
validParentsancestor filtering plus aDescendantAddedguard on emitted clones — same particle no longer counts twice when nested emitters are involved.
v28.2 – v28.5 — Stability hardening
Section titled “v28.2 – v28.5 — Stability hardening”A long sequence of small fixes for issues beta testers caught:
- Focus pause with a 10-minute grace window — the plugin pauses emission when Studio loses focus, resumes on regain. Prevents simulation drift while you’re in another window.
- Snapshot + color preview fixes (some properties weren’t restoring on Cancel).
ParticleEmittergraph range — stock PE selections now show a graph row where the plugin would (with appropriate Range fallback for native PE behaviour).- Toggle stability — toggles no longer get out of sync with their backing attribute on rapid clicks.
DisableAPI — scripter-side method to programmatically halt an emitter without writing theEnabledattribute directly.- Anti-double-emission guards for the burst-emit path.
- Comprehensive undo/redo coverage across every Properties panel write.
Ctrl+Zalways works. - Emitted-clone history exclusion — emitted duplicates no longer pollute the undo stack.
- Auto-update install timeout fix — the install path no longer hangs on slow downloads.
- Emit code tool — Toolbench addition for generating ready-to-paste
Particle:Emit()snippets for the current selection. - Beam/PointLight nil safety for selection edge cases.
v26 – v27 — Auto-update bundle + engine fixes
Section titled “v26 – v27 — Auto-update bundle + engine fixes”The shift to a stable update channel and core engine work, before the v28 stability run.
- Modern auto-update channel. New plugin versions deliver through plugin-side infrastructure rather than going through Roblox asset moderation. The legacy delivery path stays as fallback for older installs. Existing copies in
ServerStorageare kept as backup, not destroyed. - Frame-independent beams + emission. Engine math now scales by
dtso emission rates and beam-property animations stay proportional regardless of frame rate. - Nested Model emission. Models containing transformed children emit recursively — descendant emitters fire from each emitted Model clone.
- Memory-leak fix in teardown.
:Deactivatenow releases every per-particle state path on shutdown. - Internal refactor of inventory-side wiring for maintainability.
- Auto-update install hardening — large module writes occasionally hit a Roblox length limit; now caught and retried.
- Banner cleanup for the post-update install message.
- v26.5 — Shirt auth, retime/resize fixes, inventory backup, preload batching. Whitelist channel via Roblox shirt purchase added alongside the existing gamepass route. Retime tool’s interaction with axis-grouped properties tightened. Inventory now backs up to a hidden
ServerStorageModuleScript so a wiped plugin-settings store still recovers your library. Texture decode queue limited to two concurrent loads. - v27 — Internal refactor of the panel-refresh dispatcher for maintainability.
- v27.5 — Bundle compression (~50% smaller), PE Brightness, search fixes, resize beams/trails. Plugin-bundle size halved for faster auto-update over slow connections. Native
ParticleEmitterselections now expose a graph-animated Brightness row. Multi-word panel-search reliability tightened. Resize tool extended to Beam and Trail width/length properties. - v27.75 — Minor bug fixes (silent update — no functional changes user-facing).
v25 — Motion physics + selection model
Section titled “v25 — Motion physics + selection model”The shift from “many small bugs” to “engineered stability.”
- FPS-independent beams/emission. Engine math now scales by
dtso emission rates and beam scrolls don’t drift on framerate. - Bezier persistence — graph editor bezier handles round-trip through save/load without rounding error.
- Flipbook reverse — added
Reversetoggle to all flipbook sections. - Layout overhaul — Properties panel section ordering and spacing tightened.
- Retime fixes — Retime tool’s interaction with axis-grouped properties was off by a factor in some cases.
- Selection-aware Clipboard/Shifter — copy from a multi-selection of mixed types, paste to another mixed selection, only shared properties land.
- Search expand/collapse — Properties panel search auto-expands collapsed sections to show matches; clearing returns sections to their previous state.
BeamLightInfluence— graph-animatedLightInfluencefor beams.- Range input support — fields accept
1,1, 2, or1..2; auto-sort min ≤ max. - Inventory optimisations — smooth scrolling, debounced search, decode batching.
- Auto-update system — plugin checks GitHub release for newer version on every load; downloads + stages in
ServerStoragewith one-click install.
v24 — Full audit
Section titled “v24 — Full audit”A planned bug-hunt session.
- Model scaling for nested-emitter children.
- Flipbook timing math (frame indexing was off-by-one in some configs).
- 13 small bug fixes across various systems.
- Theme fixes — several panels were not registered with the
_themedarray and didn’t retint.
Earlier
Section titled “Earlier”Pre-v24 history is in the plugin’s source-side git log. Versions are continuous — every commit increments. Auto-update tracks the latest tagged version on the release repo, not the per-commit version.
What’s next
Section titled “What’s next”M8 (Launch). Beta feedback addressed, final polish, listing finalised.