Incisor® Release Notes
This document is part of the compiled knowledge base for the Incisor® Software Development Platform.
Any use of this content is subject to the INCISOR® end user license and terms of use agreement.
https://www.incisordev.com/eultua
2026.09.25.12.50.59






----------------------------------------------------------
TABLE OF CONTENTS:
----------------------------------------------------------
Section 1: 2026.09.25.00.00.00
Section 2: 2026.09.24.00.00.00
Section 3: 2026.09.22.00.00.00
Section 4: 2026.09.14.00.00.00
Section 5: 2026.09.10.00.00.00
Section 6: 2026.08.26.00.00.00
Section 7: 2026.08.22.00.00.00
Section 8: 2026.08.13.00.00.00
Section 9: 2026.08.07.00.00.00
Section 10: 2026.08.06.00.00.00
Section 11: 2026.08.05.00.00.00
Section 12: 2026.08.04.00.00.00
Section 13: 2026.08.03.00.00.00
Section 14: 2026.07.27.00.00.00
Section 15: 2026.07.25.00.00.00
Section 16: 2026.07.24.00.00.00
Section 17: 2026.07.21.00.00.00
Section 18: 2026.07.15.00.00.00
Section 19: 2026.07.09.00.00.00
Section 20: 2026.07.06.00.00.00
Section 21: 2026.06.30.00.00.00
Section 22: 2026.06.15.00.00.00
Section 23: 2026.05.21.00.00.00
Section 24: 2026.05.18.00.00.00
Section 25: 2026.05.14.00.00.00
Section 26: 2026.05.12.00.00.00
Section 27: 2026.05.09.00.00.00
Section 28: 2026.05.04.00.00.00
Section 29: 2026.05.03.00.00.00
Section 30: 2026.04.30.00.00.00
Section 31: 2026.04.29.00.00.00
Section 32: 2026.04.23.00.00.00
Section 33: 2026.04.21.00.00.00
Section 34: 2026.04.19.00.00.00
Section 35: 2026.04.17.00.00.00
Section 36: 2026.04.15.00.00.00
Section 37: 2026.04.03.00.00.00
Section 38: 2026.03.25.00.00.00
Section 39: 2026.03.20.00.00.00
Section 40: 2026.03.19.00.00.00
Section 41: 2026.03.17.00.00.00
Section 42: 2026.03.14.00.00.00
Section 43: 2026.03.11.00.00.00
Section 44: 2026.03.05.00.00.00
Section 45: 2026.03.03.00.00.00
Section 46: 2026.02.26.00.00.00
Section 47: 2026.02.23.00.00.00
Section 48: 2026.02.20.00.00.00
Section 49: 2026.02.19.00.00.00
Section 50: 2026.02.18.00.00.00
Section 51: 2026.02.16.00.00.00
Section 52: 2026.02.12.00.00.00
Section 53: 2026.02.10.00.00.00
Section 54: 2026.02.05.00.00.00
Section 55: 2026.02.02.00.00.00
Section 56: 2026.02.01.00.00.00
Section 57: 2026.01.31.00.00.00
Section 58: 2026.01.30.00.00.00
Section 59: 2026.01.29.00.00.00
Section 60: 2026.01.28.00.00.00
Section 61: 2026.01.27.00.00.00
Section 62: 2026.01.12.00.00.00
Section 63: 2026.01.11.00.00.00
Section 64: 2026.01.08.00.00.00
Section 65: 2026.01.05.00.00.00
Section 66: 2026.01.04.00.00.00
Section 67: 2025.12.08.00.00.00
Section 68: 2025.12.01.00.00.00
Section 69: 2025.11.30.00.00.00
Section 70: 2025.11.26.00.00.00
Section 71: 2025.11.12.00.00.00
Section 72: 2025.10.28.00.00.00
Section 73: 2025.10.25.00.00.00
Section 74: 2025.10.24.00.00.00
Section 75: 2025.10.23.00.00.00
Section 76: 2025.10.18.00.00.00
Section 77: 2025.10.15.00.00.00
Section 78: 2025.10.03.00.00.00
Section 79: 2025.10.01.00.00.00
Section 80: 2025.09.29.00.00.00
Section 81: 2025.09.27.00.00.00
Section 82: 2025.09.25.00.00.00
Section 83: 2025.09.24.00.00.00
Section 84: 2025.09.26.00.00.00
Section 85: 2025.09.20.00.00.00
Section 86: 2025.09.19.00.00.00
Section 87: 2025.09.15.00.00.00
Section 88: 2025.09.10.00.00.00
Section 89: 2025.09.08.00.00.00
Section 90: 2025.09.04.00.00.00
Section 91: 2025.09.02.00.00.00
Section 92: 2025.08.28.00.00.00
Section 93: 2025.08.27.00.00.00
Section 94: 2025.08.24.00.00.00
Section 95: 2025.08.16.00.00.00
Section 96: 2025.08.10.00.00.00
Section 97: 2025.07.09.00.00.00
Section 98: 2025.07.08.00.00.00
Section 99: 2025.06.29.00.00.00
Section 100: 2025.06.28.00.00.00
Section 101: 2025.06.13.00.00.00
Section 102: 2025.06.11.00.00.00
Section 103: 2025.06.10.00.00.00
Section 104: 2025.06.07.00.00.00
Section 105: 2025.06.06.00.00.00
Section 106: 2025.05.30.00.00.00
Section 107: 2025.05.29.00.00.00
Section 108: 2025.05.27.00.00.00
Section 109: 2025.05.20.00.00.00
Section 110: 2025.05.13.00.00.00
Section 111: 2025.05.05.00.00.00
Section 112: 2025.04.30.00.00.00
Section 113: 2025.04.29.00.00.00
Section 114: 2025.04.25.00.00.00
Section 115: 2025.04.23.00.00.00
Section 116: 2025.04.22.00.00.00
Section 117: 2025.04.21.01.00.00
Section 118: 2025.04.21.00.00.00
Section 119: 2025.04.17.00.00.00
Section 120: 2025.04.16.00.00.00
Section 121: 2025.04.09.00.00.00
Section 122: 2025.04.04.00.00.00
Section 123: 2025.04.02.00.00.00
Section 124: 2025.03.31.00.00.00
Section 125: 2025.03.27.00.00.00
Section 126: 2025.03.26.00.00.00
Section 127: 2025.03.25.00.00.00
Section 128: 2025.03.21.00.00.00
Section 129: 2025.03.20.00.00.00
Section 130: 2025.03.14.00.00.00
Section 131: 2025.03.12.00.00.00
Section 132: 2025.03.08.00.00.00
Section 133: 2025.03.05.00.00.00
Section 134: 2025.03.04.00.00.00
Section 135: 2025.02.27.12.29.02
Section 136: 0000.00.00.00










----------------------------------------------------------
Section 1: 2026.09.25.00.00.00
----------------------------------------------------------


TITLE:
Live View: Camera Selector
DESCRIPTION:
A new 'camera' menu in the Live View panel shows the view through any standard or precomp camera, with the Heads-Up Display attached for inspection. A toggle button shows a checkerboard behind the camera's transparent areas.











----------------------------------------------------------
Section 2: 2026.09.24.00.00.00
----------------------------------------------------------


TITLE:
Loading Tiers: Loading Progress
DESCRIPTION:
Exposed the previously internal 'loadingProgress' on LoadingTierDefinitions - a value from 0 to 1 for driving loading bars. The Loading Tiers panel's progress bars now show this same value.











----------------------------------------------------------
Section 3: 2026.09.22.00.00.00
----------------------------------------------------------


TITLE:
New Window: Project Gallery
DESCRIPTION:
The control center now opens a Project Gallery in place of the plain Open Project dialog, listing example projects by category alongside your recent ones, each with a thumbnail and a description. Clicking an example project that is not on this computer downloads it, 'Browse...' still opens the old dialog for anything the gallery does not list, and Ctrl/Cmd G opens the gallery at any time.

TITLE:
Project Gallery: Blank New Projects
DESCRIPTION:
A blank new project can be started from the gallery as 2D or 3D and in JavaScript or TypeScript, where the 3D option differs only in starting on a perspective main camera.

TITLE:
Project Gallery: Recent Projects Carry a Picture
DESCRIPTION:
Recent projects are now listed with a picture of the inspector as you last left it, taken a few seconds after a project connects and again each time you leave the window.

TITLE:
Project Gallery: Projects Open in a Scratch Directory
DESCRIPTION:
An example or blank new project opened from the gallery is put in a 'Project Scratch' directory rather than asking where it should go first, so there is nothing to answer before trying it. The first save writes in place and then asks where the project should live, and anything left in scratch is cleared out after a week.

TITLE:
Extensions: Project and ToolTip Functions
DESCRIPTION:
'nce.openProject', 'nce.getRecentProjects', 'nce.saveProject' and 'nce.addToolTip' are now available in every extensions scope, along with 'nce.getSearchFilterScore' for scoring text the way Incisor's own search fields do.

TITLE:
PixelsObjects: No Longer an Optional Code Module
DESCRIPTION:
PixelsObjects are no longer an optional code module, and are now always included in every project.

TITLE:
WaitThens: No Longer an Optional Code Module
DESCRIPTION:
WaitThens are no longer an optional code module, and are now always included in every project.











----------------------------------------------------------
Section 4: 2026.09.14.00.00.00
----------------------------------------------------------


TITLE:
Swoopers: Omitted Components Are Left Alone
DESCRIPTION:
A component left undefined in 'swoop.each' is now left untouched, so anything else is free to animate it on its own timing. Previously the Swooper pinned that component to the value it held when the swoop began, silently overriding any other swoop on it.











----------------------------------------------------------
Section 5: 2026.09.10.00.00.00
----------------------------------------------------------


TITLE:
GraphicObjects: Redundant Layer Assignments Are Free
DESCRIPTION:
Setting a GraphicObject's 'layer' or 'subLayer' to the value it already holds no longer triggers a recalculation, so 'setLayers' and 'setSubLayers' across a large subtree cost nothing when nothing has actually changed. Layer values are now also refreshed when an object moves to another Scene or is given new Materials, which could previously leave them stale.

TITLE:
New Panel: Sounds
DESCRIPTION:
A new 'Sounds' panel lists every Sound in the project with playback controls, a mainVolume slider and a mute toggle, so any of them can be auditioned, re-leveled or silenced while the project runs. The list can be searched by name, narrowed to only what is playing, and ordered alphabetically or by what played most or least recently.

TITLE:
New Panel: Loading Tiers
DESCRIPTION:
A new 'Loading Tiers' panel lets you block selected loading tiers so their assets are never requested, or add a delay to every tier's request, so you can watch how a project holds up when its content is late or missing. Unblocking a tier sends its request there and then, and the panel also shows each tier's loading state, its progress, and the AssetComponents it carries.

TITLE:
Template Library: Now Lives on Disk
DESCRIPTION:
The Template Library has moved out of the application and into a 'Template Library' directory inside Incisor's Application Support folder, where every item is an ordinary folder of files that can be read, edited, and added to. Installing an update merges the shipped library into the installed one item by item, so anything you have put there yourself is left alone.

TITLE:
Template Library: Browsed in a Popup
DESCRIPTION:
The top-level 'Template Library' menu has been replaced by 'Project - Import - From Template Library...', which opens a searchable browser with the library's folders on one side and the selected item on the other. It is also reachable directly with Ctrl/Cmd Shift L.

TITLE:
Template Library: Previews, Descriptions and Examples
DESCRIPTION:
Every item now carries a written description, an animated preview of what it does, and example code that runs as-is when pasted into a new project. Items also show badges for whether they can be edited in the GUI, animated in Timelines, and reached from the Code API.

TITLE:
Spine Import: Moved Into the Project Menu
DESCRIPTION:
'Spine Animation...' has moved from its own top-level 'Import' menu to 'Project - Import - Spine Animation...', alongside the Template Library.

TITLE:
Spine Import: No Longer Marked Experimental
DESCRIPTION:
The notice warning that Spine support is experimental and may require animations to be re-imported has been removed from the import windows.











----------------------------------------------------------
Section 6: 2026.08.26.00.00.00
----------------------------------------------------------


TITLE:
Ux Supervisors: Sync On Demand
DESCRIPTION:
Every Ux supervisor now has a 'sync' method, matching the one UxListSupervisor already had, which brings it up to date with the values it supervises instead of waiting for the next fixedUpdate. Use it wherever a value has just been set and the supervisor has to show it before the frame ends.

TITLE:
Timeline: Sound Playback Keyframes No Longer Carry a Volume
DESCRIPTION:
A 'play' or 'playOnce' keyframe no longer takes a mainVolume of its own - keyframe 'mainVolume' directly instead, which blends by weight and returns to its NeutralState as every other animated value does. A playback keyframe previously forced the volume to full whenever it carried no value, so a Sound whose volume you set elsewhere is now left alone.

TITLE:
Tooltips: No Longer Appear Mid-Drag
DESCRIPTION:
A tooltip already counting down when a drag begins no longer surfaces during it, and a drag anywhere suppresses them rather than only one in this software's own scene.

TITLE:
Construct Editing: Fewer Redundant File Updates
DESCRIPTION:
A Construct is no longer written mid-drag. Edits settle for longer before committing, and a drag in progress holds the commit off entirely, so one gesture produces one undo step rather than a run of them.

TITLE:
Timeline Panel: Property Controls Regrouped
DESCRIPTION:
The per-property controls are now divided into groups - the continuation pair, then keyframe navigation and graph mode, then the keyframe dropper on its own.

TITLE:
Timeline: Keyframe Collisions Resolve Correctly
DESCRIPTION:
Dragging a keyframe onto another no longer depends on what happens to be selected, and a keyframe merged away is properly retired rather than left as a stale reference.

TITLE:
Timeline: New Timelines Adopt the Project's Time Step
DESCRIPTION:
A Timeline created with 'New Timeline...' now takes its timeStep from the project's 'defaultTimelineTimeSnap' setting, rather than always being born on the legacy 1/60 grid.

TITLE:
Timeline: Sound Volume Is Keyframed Deliberately
DESCRIPTION:
A Sound's 'mainVolume' is no longer keyframed by watching its value change - a Sound is shared with the whole project, so code, another Construct, or a 'swoopVolume' could each have moved it. Its value field in the Timeline panel now writes keyframes directly instead: adjusting it sets the keyframe at the playhead, or places one there if the property has none.











----------------------------------------------------------
Section 7: 2026.08.22.00.00.00
----------------------------------------------------------


TITLE:
Incisor Is Now Crimson
DESCRIPTION:
Incisor has officially transitioned to the Crimson version set, which has been in development since mid-March, so every release note since then describes work that belongs to Crimson.

TITLE:
FlowController: Flow State Change Callbacks
DESCRIPTION:
'FlowController.addFlowStateChangeCallback' now works as documented, firing on every change of the controller's current FlowState with the new FlowState and the previous one.











----------------------------------------------------------
Section 8: 2026.08.13.00.00.00
----------------------------------------------------------


TITLE:
Select GraphicAsset: Rename the GraphicObject to Match
DESCRIPTION:
The GraphicAsset selection window has a new 'rename GraphicObject' option, checked by default, which renames the object - or every selected object - to the GraphicAsset it is given. It is unavailable where the graphic is not the object's identity, as with a SpriteSetter's keyGraphicAsset or a ParticleSystem's graphic.

TITLE:
Knowledge Base and API Docs Ship with Incisor
DESCRIPTION:
The Knowledge Base and the API documentation now install alongside Incisor itself, so the docs you are reading are always the docs for the version you are running. Updating Incisor updates them with it, and there is no longer any question of which release a page is describing.

TITLE:
Timeline: Animate Sounds
DESCRIPTION:
A Timeline can now drive the project's Sounds. Right-click the Construct's own row in the Timeline panel to find them - 'mainVolume' animates like any other value, and 'play', 'playOnce', 'pause' and 'stop' are invoke properties whose keyframes fire as the playhead crosses them. A play or playOnce keyframe can carry its own mainVolume, and one that names none plays at full volume.

TITLE:
Timeline: Animate Custom AppEvents
DESCRIPTION:
A Timeline can now trigger any AppEvent defined with 'nc.defineAppEvent', which is how an animation hands a moment back to code. These sit on the Construct's own row as well, and 'custom AppEvent...' lets you name one that has yet to be written - the Construct records it as a requirement and reports it when added, so animation never has to wait on code. Incisor's own built-in AppEvents are not offered, as they are all fired by the software itself.

TITLE:
Timeline: Keyframe Parameters
DESCRIPTION:
Keyframes on an invoke property can now carry parameters. A property that already knows its own - a Sound's 'playOnce', for instance - shows a field for each in the keyframe's context menu. A custom AppEvent's parameters are yours to declare: 'add parameter' takes a name, a type and a default, every keyframe of that property then gets a field for it, and the callback receives them all as a single object with defaults filled in for anything a keyframe leaves out.

TITLE:
Timeline: Invocation timing corrected
DESCRIPTION:
Invoke keyframes now fire when they should, and only when they should. A keyframe sitting exactly on a Timeline's start time fires when that Timeline starts playing, where before it was stepped over. Stopping a Timeline, or dragging its playhead, no longer fires every keyframe passed along the way. And a Timeline playing at zero weight no longer banks the invocations it skipped, only to fire them all at once when its weight returns.

TITLE:
Construct: Sound and AppEvent requirements
DESCRIPTION:
A Construct that animates a Sound or an AppEvent now records it as a context requirement, so adding that Construct somewhere the Sound or AppEvent doesn't exist reports it - the same way a missing GraphicAsset or Layer always has.











----------------------------------------------------------
Section 9: 2026.08.07.00.00.00
----------------------------------------------------------


TITLE:
KeyframedValue Supervisor: Add a Keyframe Where You Right-Click
DESCRIPTION:
The graph's own context menu now offers 'add keyframe', placing one at the time and value under the cursor that opened the menu.

TITLE:
KeyframedValue Supervisor: Edit a Keyframe's Time and Value In Its Menu
DESCRIPTION:
Right-clicking a single keyframe now puts its time - and its value, where that value is a number - at the top of the menu as editable fields. Either can be dragged as well as typed, moving the keyframe at the same rate as dragging it on the graph.

TITLE:
KeyframedValue Supervisor: Guides
DESCRIPTION:
A supervisor can now be given vertical and horizontal guide lines, in a color of its own, to mark meaningful times and values behind the curve.

TITLE:
SymbolReels: Per-Property Motion Curves
DESCRIPTION:
A KeyframedValue can drive any property of a symbol as it travels the reel - position, scale, rotation, color - sampled at the symbol's own position, so a keyframe sits on a symbol slot rather than on a moment in time.

TITLE:
SymbolReels: Windup and Bounce
DESCRIPTION:
Separate curves shape the overshoot as a reel starts and as it settles, each with its own duration and magnitude.

TITLE:
SymbolReels: Custom Symbol Motion
DESCRIPTION:
A callback can take symbol placement over entirely, for reels whose motion the built-in path evaluation doesn't cover.

TITLE:
Fixed: Sounds Distorted While a SpeedControl Changed
DESCRIPTION:
Changing a SpeedControl restarted the buffer of every Sound in the project - including Sounds that never subscribed to that SpeedControl, and Sounds whose own rate had not moved. A Sound now only restarts when its own playback rate actually differs. This supersedes the 2026.08.06 fix, whose guard also compared the buffer's start offset against the advancing playhead and so never held for a Sound that was playing.

TITLE:
Constructs Save Their Material Settings
DESCRIPTION:
A Construct now stores each Material's faceCulling, depthTest, depthWrite, transparent and Texture selections, so a Material customized past its GraphicAsset's presets survives a save. Set them in the Object Panel's new 'draw settings' section on each Material.











----------------------------------------------------------
Section 10: 2026.08.06.00.00.00
----------------------------------------------------------


TITLE:
SymbolReels: Spinning and Stopping
DESCRIPTION:
'beginSpin', 'beginStop' and 'slam' move a reel through its states, and 'setTarget' names the symbols it lands on. Its current state can be read at any time, or subscribed to.

TITLE:
SymbolReels: Reel Data
DESCRIPTION:
A reel takes the strip it spins through up front, or assembles it on the fly as it goes.

TITLE:
Fixed: Sounds Glitched When a SpeedControl Was Set
DESCRIPTION:
Setting a SpeedControl or 'nc.softwareSpeed' restarted every playing Sound's buffer, even when the rate and position were unchanged, which was audible as a click. A Sound now only restarts when its rate or position actually differs.

TITLE:
Timeline Panel: Set a Keyframe to its NeutralState Value
DESCRIPTION:
A keyframe's right-click menu can now set the whole keyframe selection back to each property's NeutralState value. A stepped keyframe has both of its sides set, so it stays flat.

TITLE:
Fixed: Precomp Graphics Were Blank In The Editors
DESCRIPTION:
A GraphicObject using a precomp-based GraphicAsset drew as nothing in the Construct and Timeline editor scenes. It now renders.

TITLE:
Timeline Panel: Continuation Controls On Every Property
DESCRIPTION:
Two icon menus on each Animated Property row set how it evaluates outside its keyframe range - hold, extrapolate, loop or ping-pong - for the left and right sides independently.

TITLE:
Timeline Panel: Copy And Paste Animated Properties
DESCRIPTION:
Properties copy without their keyframes. Selected SceneObjects each receive the whole set - with nothing selected, each property returns to the object it came from.

TITLE:
Timeline Panel: Shift-Click Selects a Range
DESCRIPTION:
Shift-clicking selects every row between the first item selected and the one clicked, matching the Hierarchy panel. SceneObjects and Animated Properties select separately.

TITLE:
Animate Menu: Every Property In One Searchable List
DESCRIPTION:
The Animate menu can now be searched instead of navigated. 'search all properties...' opens every animatable property of the selection as one flat list, each named by its full path, so 'mat red' finds Material0's red. Holding Alt while opening the menu goes straight there with the caret already in the field. The organized sub-menus are unchanged.

TITLE:
Fixed: UxMenu Search Field Drew On The Wrong Layer
DESCRIPTION:
A searchable UxMenu builds its search field on demand, and the field was left on the default layer rather than the menu's. It went unnoticed while only drop-down menus used it, and showed up once a context menu became searchable.

TITLE:
Disposal Is Much Faster
DESCRIPTION:
Disposing a large object tree - a deep context menu, a panel, a Construct instance - no longer stalls. Each disposed object used to sweep every callback registered to every AppEvent in the software looking for its own, and a single SceneObject triggers that sweep six or more times once its materials and material master are counted, so the cost scaled with the size of the whole application rather than the size of what was being disposed. An object's callbacks are now found through the index it already keeps on itself. Disposal removes exactly what it removed before. All three edits carry a '2026.08.06' comment and can be found by searching for that date: 'AppEvent._appEvent_dispose' in 'AppEvents.js' is the rewrite, and 'SceneObjects.js' holds a guard in '_disposeThisSceneObject' around the ancestor 'enabledStateChangeDependants' walk plus a fix to 'removeDisposalCallback', which tested its index with 'if(_idx-1)' and so removed the last disposal callback whenever the one being removed was not found.











----------------------------------------------------------
Section 11: 2026.08.05.00.00.00
----------------------------------------------------------


TITLE:
SymbolReels
DESCRIPTION:
A new SceneObject that owns a set of symbol objects and moves them along a reel path to make a spinning reel. It builds, owns and disposes its own symbols, so they never appear in a Construct.

TITLE:
SymbolReels: Symbol Classes
DESCRIPTION:
A reel builds its symbols from a class handed to it in code, which need only implement 'setSymbol'. Until one is supplied a built-in placeholder stands in, so a reel being laid out in the inspector is visible right away.

TITLE:
Inspector: New Panels Adopt the Current Timeline
DESCRIPTION:
A new Timeline or Construct panel opens on whatever its counterpart is already editing.

TITLE:
Timeline Panel: Default Timeline Checkbox
DESCRIPTION:
An 'isDefaultTimeline:' checkbox in the panel header sets which Timeline controls its Construct. Unchecking hands it back to NeutralState.

TITLE:
Inspector: Manage Timelines Rebuilt
DESCRIPTION:
Adding, duplicating, renaming, reordering and removing Timelines now applies immediately and is undoable. A Construct selector at the top lets the window open from the Manage menu as well as from the Construct panel.

TITLE:
Fixed: A Removed Timeline Could Come Back
DESCRIPTION:
A Timeline removed while a panel was still viewing it was written back into its Construct by that panel's next change poll.

TITLE:
Inspector: Manage Constructs Rebuilt
DESCRIPTION:
Adding, duplicating, renaming and removing Constructs now applies immediately rather than requiring a save and reload, and every change is undoable. A new Construct is scrolled to in the list and switches the unlocked Construct and Timeline panels.

TITLE:
Project Files Can Be Deleted And Renamed Undoably
DESCRIPTION:
A deleted project file is marked for removal rather than erased, so an undo brings it back and it only leaves disk on the next save. A rename carries the file's content and its '.ncData' across in a single undo step.

TITLE:
Timeline Panel: Option-Drag Duplicates Keyframes
DESCRIPTION:
Holding Option while dragging a keyframe now duplicates the whole keyframe selection and drags the copies, leaving the originals in place. Copies become the new selection immediately.

TITLE:
KeyframedValue: The 'Keyframe' Class Is Now 'ValueKeyframe'
DESCRIPTION:
The 'Keyframe' class has been renamed to 'ValueKeyframe'. Its old name collided with the DOM's built-in 'Keyframe' interface from the Web Animations API, and since the generated 'IncisorAPI.d.ts' declares its classes globally, TypeScript merged the two and reported six errors against the class in every TypeScript project. Every member and method name is unchanged - 'KeyframedValue.addKeyframe', 'keyframes', 'keyframeType' and 'constants.keyframeTypes' all keep their names. Existing Constructs are unaffected, as the class type tag was never written into serialized blueprints.











----------------------------------------------------------
Section 12: 2026.08.04.00.00.00
----------------------------------------------------------


TITLE:
Older Spine-Imported Constructs Are Detected On Load
DESCRIPTION:
Constructs produced by a Spine importer that predates the 'spineImportVersion' stamp can no longer be built, and previously took the whole project down while loading. They are now detected as predefined Constructs are populated and replaced by empty placeholders so the rest of the project still loads. The inspector lists every affected Construct as soon as it connects, no save path will write over their '.construct' files while they are in that state, and publishing is blocked until they are resolved. Each affected animation must be removed by deleting its imported directory in full — the '.construct' file, the generated '.codeAsset.js', and the images and geometries the import wrote — after which it can be imported again from its original Spine files.

TITLE:
Legacy Spine Code Assets No Longer Break Startup
DESCRIPTION:
The older Spine importer wrote a '<constructName>.codeAsset.js' beside each animation it produced, calling an 'nc.spineManagement' API that has since been removed. Those calls ran early in startup and failed before the incompatible-animation report could be shown. The three functions are restored as a compatibility shim: effect nodes and controllers are handed to the current Spine module, which still produces every name the old importer emitted, and the custom-item call is inert since the classes it registered no longer exist. The code asset sits in the animation's imported directory and is removed along with it.











----------------------------------------------------------
Section 13: 2026.08.03.00.00.00
----------------------------------------------------------


TITLE:
Inspector: New Timeline Panel
DESCRIPTION:
The Timeline panel has been rebuilt: a searchable construct/timeline selector, three columns (names, value + controls, keyframe track), header playback controls, per-property keyframe drop / prev-next nav / graph toggle, filtering and sorting, and a lock for editor or live timelines.

TITLE:
Inspector: Legacy Timeline Panel Removed
DESCRIPTION:
The old Timeline panel and its components are gone; the new panel is now simply 'Timeline'.

TITLE:
Inspector: Timeline Editing Without the Construct Panel
DESCRIPTION:
A construct's timeline can now be edited from a Timeline panel alone — the Construct panel no longer needs to be open.

TITLE:
Inspector: Construct & Timeline Lock and Sync
DESCRIPTION:
The Construct and Timeline panels now stay in sync both ways, each with a lock button to opt out of the automatic connection.

TITLE:
Inspector: Construct Panel Playback Controller
DESCRIPTION:
A playback controller overlays the Construct panel's scene view while editing a timeline state, scrubbing that timeline's playhead.

TITLE:
Inspector: Animate Context Menu
DESCRIPTION:
Right-clicking an object in the Timeline panel lists the properties it can animate, grouped by object type, with materials and components on their own sub-menus.

TITLE:
Inspector: Copy, Cut, and Paste Keyframes
DESCRIPTION:
Keyframes can be copied, cut, and pasted via menus or the keyboard; paste re-anchors to the playhead and matches targets by id then name.

TITLE:
Engine: Animated Property Value Coercion
DESCRIPTION:
Keyframe and property values are coerced to the property's type, so a wrong-type edit or paste no longer stores a mismatched value.

TITLE:
Engine: Animated Property Recipient Validation
DESCRIPTION:
Adding an animated property now checks the path is animatable on the target object; a new nc.incr_internal._getAnimatablePropertyMap enumerates what an object supports.

TITLE:
Engine: Finalized Timeline timeSnap Model
DESCRIPTION:
KeyframedValue timeSnap defaults to 0.02; a Timeline's timeSnap drives all its properties and seeds from the new nc.defaultTimelineTimeSnap setting; absent = legacy 1/60.

TITLE:
Inspector: Timeline Actions Menu
DESCRIPTION:
New actions bake a non-1 playback rate into keyframe times ('Normalize Playback Rate') and re-time all keyframes onto a new grid ('Change Time Step').

TITLE:
Inspector: Layers Panel and Manage Layers Rebuilt
DESCRIPTION:
Both were rebuilt with add/remove/reorder/rename, fixing a bug where a construct's layer vanished on refresh when a same-named layer was added elsewhere.

TITLE:
Inspector: Header-less Panels
DESCRIPTION:
Panels can now have a body with no header strip; the Layers panel uses this for a cleaner full-height list.











----------------------------------------------------------
Section 14: 2026.07.27.00.00.00
----------------------------------------------------------


TITLE:
API: nc.getSearchFilterScore
DESCRIPTION:
New nc.getSearchFilterScore(filterString, candidateStrings, candidateStringWeights) exposes the standardized search scorer. The filter is tokenized on spaces so multi-word searches match across candidates (e.g. 'hero jump' matches 'Hero-JumpTimeline'); candidateStrings may be one or more strings, with optional parallel per-candidate weights.

TITLE:
Inspector: Searchable menus use the standardized search
DESCRIPTION:
Searchable UxMenus, in both regular and large-list mode, now score with the shared token-aware algorithm, so multi-word filters match. A single implementation now backs the menus and the inspector panels' search.











----------------------------------------------------------
Section 15: 2026.07.25.00.00.00
----------------------------------------------------------


TITLE:
KeyframedValue: timeSnap / valueSnap
DESCRIPTION:
'snapInterval' renamed to 'timeSnap' (old name kept as a deprecated alias); new optional 'valueSnap' snaps numeric values to a grid. AnimatedProperties default both to 0.01; existing content is unchanged.

TITLE:
Inspector: Keyframe Tangent Handle Coupling
DESCRIPTION:
Dragging a tangent handle now couples the opposite handle: default keeps it rotation-locked, Option moves only the dragged handle, Cmd/Ctrl also matches its length, Shift flattens it.

TITLE:
Inspector: Dragging Keyframes Onto an Occupied Time
DESCRIPTION:
Dragging a Keyframe across or onto another's time no longer deletes the overlapped one; an intentional drop-on-top still overwrites.

TITLE:
Inspector: Keyframe Tooltip
DESCRIPTION:
Keyframes now show a tooltip covering selection, dragging, steps, handles, and the right-click menu.











----------------------------------------------------------
Section 16: 2026.07.24.00.00.00
----------------------------------------------------------


TITLE:
KeyframedValue: Stepped Keyframes Defined by a Single Keyframe (secondaryValue)
DESCRIPTION:
A stepped discontinuity in a KeyframedValue (or AnimatedProperty) is now expressed with a single Keyframe carrying the new 'secondaryValue' property, rather than a coincident 'left'/'right' Keyframe pair. A Keyframe's 'keyframeType' is still 'standard' (default), 'left', or 'right': for a 'left' keyframe the primary 'value' governs the left side of the step and 'secondaryValue' governs the right; for a 'right' keyframe 'value' governs the right and 'secondaryValue' governs the left. Sampling exactly at a Keyframe's time always returns its primary 'value', for every type. 'secondaryValue' is ignored while 'keyframeType' is 'standard', and falls back to 'value' until explicitly set, so a fresh step reads flat until edited. No two Keyframes may share a time. Left/right bezier handles now measure their value offset from the boundary value on their side (the primary value, or 'secondaryValue' on a step's far side). Blueprints round-trip 'secondaryValue'.

TITLE:
Inspector: Keyframe Graph Shows Both Sides of a Step
DESCRIPTION:
In the keyframe graph, a stepped Keyframe now renders as two dots — its primary value and its secondaryValue — joined by a vertical connector, each independently draggable and each carrying its own bezier handle; the recessive (secondary) side is dimmed to distinguish it from the dominant side. The secondary dot, its hit target, and the connector are created lazily and appear only for a step Keyframe while the graph is drawn. The keyframe right-click menu's 'split' converts a standard Keyframe into a step in place (a 'right' step, flat until dragged), and a new 'type' sub-menu sets the selection to standard, left, or right.

TITLE:
KeyframedValue: continueLeft / continueRight
DESCRIPTION:
New 'continueLeft' and 'continueRight' properties control how a KeyframedValue (or AnimatedProperty) evaluates beyond its keyframe range: 'constant' (default), 'extrapolate', 'loop', or 'pingPong' (see constants.continueModes). Default is not serialized; both round-trip through blueprints.

TITLE:
Inspector: Keyframe Graph — Background Context Menu
DESCRIPTION:
Right-clicking a keyframe graph's empty background opens a whole-KeyframedValue menu at the cursor, with 'continueLeft'/'continueRight' sub-menus (the active mode checkmarked). It is extensible by an owning panel, and the shared context-menu helper gains an opt-in to open at the cursor with no anchor or outline.











----------------------------------------------------------
Section 17: 2026.07.21.00.00.00
----------------------------------------------------------


TITLE:
FileIO: Now an Optional Code Module (no longer subscription-gated)
DESCRIPTION:
nc.fileIO has been converted from a subscription-gated, development-only feature into a standard optional code module named 'fileIO'. The fileIO permission requirement has been removed everywhere, so file IO is now available to all users regardless of subscription tier. Like any optional module, 'fileIO' can be excluded per configuration in ProjectSettings to reduce published download size, and file access remains governed by the application-level 'allowUniversalFileIO' safety setting for paths outside the project directory.

TITLE:
FileIO: Now Available in Published Electron Builds
DESCRIPTION:
nc.fileIO can now be used in published Electron applications, not only while developing in Incisor. Each fileIO call is packaged into a canonical request and routed through a transport layer that targets the Incisor server during development and the Electron runtime (native Node file access) once published — the request and response format is identical in both. To enable it, include the new 'fileIoElectron' optional code module alongside 'fileIO'. In the published app, relative paths resolve within the application's own data directory (Electron's userData location); access to other locations is controlled per-build via the Electron package options below.

TITLE:
Electron Publishing: 'incisorFileIoLayer' and 'allowUniversalFileIO' Package Options
DESCRIPTION:
The Electron auxiliaryPublishingPackage now exposes two options that govern published file IO, both editable in ProjectSettings and documented in the API spec. 'incisorFileIoLayer' (default true) determines whether the build includes the native fileIO layer. 'allowUniversalFileIO' (default false) determines whether the build may read and write outside its own application data directory; when false, non-relative paths are refused with an explanatory dialog. This is the published-Electron counterpart to the existing application-level 'allowUniversalFileIO' setting that governs file IO while developing.

TITLE:
Inspector: Tooltips for All Optional Code Modules
DESCRIPTION:
Every optional code module listed in the ProjectSettings popup now shows a descriptive tooltip explaining what that module provides. The 'fileIO' and 'fileIoElectron' tooltips, together with the Electron 'incisorFileIoLayer' and 'allowUniversalFileIO' option tooltips, cross-reference one another to make clear how published file IO is turned on and scoped.











----------------------------------------------------------
Section 18: 2026.07.15.00.00.00
----------------------------------------------------------


TITLE:
Inspector: Transcript Panel — Detect Pairings
DESCRIPTION:
A new 'detectPairings...' button in the Transcript Panel header opens a popup that scans all project constructs for TextBox and TextAssembly objects, listing any phrase–font pairs not yet registered in font definitions. Pairs can be toggled and applied in bulk.

TITLE:
Inspector: Object Panel — Add to Transcript
DESCRIPTION:
A new 'addToTranscript' button appears in the Text Info section next to the phraseID field, active only when no phraseID is assigned. It prompts for a phrase ID, adds it to the ProjectTranscript using the object's current string, and assigns the phraseID to all selected text objects.

TITLE:
Inspector: Object Panel — Clear phraseID via '(none)'
DESCRIPTION:
The phraseID dropdown in the Object Panel's Text Info section now includes a '(none)' option at the top of the list, which clears the phraseID on all selected text objects back to undefined.











----------------------------------------------------------
Section 19: 2026.07.09.00.00.00
----------------------------------------------------------


TITLE:
Inspector: Filter Fields Overhauled
DESCRIPTION:
A new shared '_filterScore' method on CommonInspectorUiTools tokenizes filter strings by spaces and scores each token against weighted candidates. All inspector filter fields now use it, gaining multi-keyword support and score-ranked results.

TITLE:
Inspector: Transcript Panel Rebuilt
DESCRIPTION:
The Transcript panel has been rebuilt using UxListSupervisor with pooled phrase elements, each exposing an ID field, language dropdown, phrase text field, and a collapsible 'include in fonts' section with per-font toggles. The header adds a multi-keyword filter, open/close all, and Font Reduction shortcut.











----------------------------------------------------------
Section 20: 2026.07.06.00.00.00
----------------------------------------------------------


TITLE:
Inspector: SceneObject Context Menu Overhauled
DESCRIPTION:
The right-click context menu on scene objects in the Inspector — both in the scene object list and in the HUD viewport — has been rebuilt using the UxMenu system. All 'Add' options are now grouped into a single 'Add' submenu, each entry carrying a type icon sourced from the TypeGraphicRegistry. Enable and Disable items have been added to the top-level menu, using the show/hide eye icons, and are automatically deactivated when the entire selection is already in the target state. All top-level items now display a left icon. The item order has been revised to: Add, Duplicate, Copy, Paste, Enable, Disable, Capture as Construct, Remove. The Remove label changes to 'Remove Objects' when multiple objects are selected. Right-clicking in the HUD viewport positions the menu at the cursor rather than at a fixed anchor.











----------------------------------------------------------
Section 21: 2026.06.30.00.00.00
----------------------------------------------------------


TITLE:
PlaybackController: autoplayMode default changed to 'none'
DESCRIPTION:
The default value of PlaybackController.autoplayMode has changed from 'loop' to 'none'. PlaybackControllers added to a Construct will no longer automatically loop on instantiation unless autoplayMode is explicitly set to 'loop' or 'once'.











----------------------------------------------------------
Section 22: 2026.06.15.00.00.00
----------------------------------------------------------


TITLE:
Spine Import Rebuilt
DESCRIPTION:
The Spine importer has been rewritten from the ground up and now covers virtually the whole of Spine's feature set rather than a subset of it. Bone-weighted meshes, deform animation, IK, transform and path constraints, clipping attachments, tint black, linked meshes, sequences, draw order and attachment switching all come across, as do skins that carry bones and constraints of their own. Imports target Spine 4.3, and the skeleton's own exported version is read so that a file authored in an earlier release keeps the behavior it was authored with. Every import is stamped with the importer version that produced it, which is what lets Incisor recognize an animation brought in by an older importer and tell you about it rather than failing at load.

TITLE:
Spine Import: Runtime Physics
DESCRIPTION:
Physics constraints are imported and simulated live, so hair, cloth, capes and anything else driven by physics in Spine behaves the same way in Incisor instead of arriving frozen. Inertia, strength, damping, mass, wind, gravity, mix, limit and the per-axis influences are all carried over, along with the constraint's own simulation rate and its scaleY mode. Damping and inertia defaults changed between Spine 4.2 and 4.3, and an exported file omits a value it considers default - so the defaults are chosen from the version that wrote the skeleton, and a 4.2 animation no longer over-damps when read by a 4.3-aware importer.











----------------------------------------------------------
Section 23: 2026.05.21.00.00.00
----------------------------------------------------------


TITLE:
CustomBlendingMode
DESCRIPTION:
Added support for fully configurable WebGL blending via 'nc.defineCustomBlendingMode'. A CustomBlendingMode exposes independent control over the blend equation and source/destination factors for both RGB and alpha channels, and can be assigned directly to a Material's 'blending' property. Defined modes are stored in 'nc.customBlendingModes' and appear as live entries in the inspector's autocomplete documentation, updated immediately on each call to 'nc.defineCustomBlendingMode'.











----------------------------------------------------------
Section 24: 2026.05.18.00.00.00
----------------------------------------------------------


TITLE:
Object Panel: Timeline Editor Scene Awareness
DESCRIPTION:
When selected objects reside in a Timeline Editor Scene, the Object Panel now dims and deactivates its body section to indicate that direct property editing is unavailable in that context. The type supervisor and lock button are hidden, and the header shows an alert message alongside an 'Edit in NeutralState' button that navigates the scene back to its NeutralState.

TITLE:
Object Panel: Construct Info Hidden for Root Construct Instance
DESCRIPTION:
The Construct Info section is no longer shown when the selected object is the root construct instance of the currently open Construct Editor Scene or Timeline Editor Scene. Because the timelines of that instance are already under artificial weight constraints in those scenes, surfacing them for editing would be misleading.

TITLE:
UxStringSupervisorMenu: Added overrideWidth
DESCRIPTION:
New property that fixes the mainText boxWidth when a real (non-dash) value is displayed. By default the boxWidth is set to 0 when a value is shown, allowing the text to size naturally. Setting overrideWidth to a number forces a consistent fixed width regardless of value content, complementing the existing dashWidth property which controls width in the indeterminate '-' state.

TITLE:
TextBox: upDownArrowEndsEditing and leftRightArrowEndsEditing
DESCRIPTION:
Two new boolean properties on TextBox. When upDownArrowEndsEditing is true, pressing ArrowUp or ArrowDown ends the current editing session; when leftRightArrowEndsEditing is true, ArrowLeft or ArrowRight does the same. In both cases, if a UiKeyboardNavigator is active, the appropriate directional navigation (goTowards) is triggered automatically. Both default to false.

TITLE:
singularFocusButtonPressRequirements: All Non-Listed Button Input Now Suppressed
DESCRIPTION:
When nc.singularFocusButtonPressRequirements is populated, all button input — including cursorIn and hover events — is now ignored for any Button not in the array, in addition to the existing behavior of relinquishing focus when a press occurs outside the listed Buttons. This prevents other interactive elements from visually or functionally responding to the cursor while a TextBox or UiTextField is focused.











----------------------------------------------------------
Section 25: 2026.05.14.00.00.00
----------------------------------------------------------


TITLE:
Inspector: Top Bar Menus Overhauled
DESCRIPTION:
The top bar menus (Incisor®, Project, Manage, View, Template Library, Import, and any extension-added menus) have been rebuilt to more closely mirror standard menu bar UI conventions. Clicking a menu button now sets keyboard focus to the menu bar, enabling hover-to-switch between menus without additional clicks. Arrow-key navigation moves between top-level menu buttons. Pressing a menu button or navigating to it via keyboard while the menu bar is focused opens the associated menu. Clicking the background dimmer closes all open menus and releases focus. Extension-added menus (via nce.addInspectorMenuItem) participate in the same focus, hover-switch, and keyboard navigation behavior as built-in menus.

TITLE:
Keyboard Navigation: Arrow Key Support Added
DESCRIPTION:
UiKeyboardNavigator now supports spatial arrow-key navigation via the new 'goTowards' method. Pressing the left, right, up, or down arrow keys moves the keyboard outline to the nearest UiKeyboardNavigable item in the corresponding direction relative to the currently outlined item. If nothing is currently outlined, arrow navigation falls back to the standard next-item behavior.











----------------------------------------------------------
Section 26: 2026.05.12.00.00.00
----------------------------------------------------------


TITLE:
UxMenu: Added configureLargeListMode
DESCRIPTION:
New method that puts a UxMenu into large-list mode. In this mode, menu items are managed asynchronously by an internal UxListSupervisor rather than being populated manually via addMenuItem or addMenuItemWithSubMenu. The provided callback must return an array; each element is converted to a string and used as a menu item name. Items are created and pooled incrementally across fixed-update frames, avoiding the synchronous performance cost of building a large list on open. Searching works normally in this mode — the filter is applied inside the callback passthrough, and the supervisor handles element activation and deactivation naturally. Must be called before the menu is first opened. addMenuItem, addMenuItemWithSubMenu, and clearMenuItems must not be called once large-list mode is active.

TITLE:
UxMenu: Fixed background collapsing when search filters all items
DESCRIPTION:
When a searchable UxMenu had all of its items filtered out by the search field, the menu background and scrolling panel would collapse to near-zero width because the background size was derived solely from item widths. The layout now enforces a minimum width sufficient to keep the search field fully visible regardless of how many items remain after filtering.











----------------------------------------------------------
Section 27: 2026.05.09.00.00.00
----------------------------------------------------------


TITLE:
Object Panel: Multi-Object Supervision
DESCRIPTION:
The Object Panel has been rebuilt to support supervising multiple selected objects simultaneously. Edits to any supervised property are applied to all selected objects at once. When supervised values diverge across the selection, a '-' placeholder is shown in text fields and an indeterminate state is shown in checkboxes and other binary controls.

TITLE:
Object Panel: Delta Mode
DESCRIPTION:
Numeric supervisors in the Object Panel can now be switched into delta mode when multiple objects are selected. In delta mode, entering a value applies it as an offset relative to each object's current value rather than overwriting all selected objects with the same absolute value.

TITLE:
Object Panel: New Construct Info Section
DESCRIPTION:
A new Construct Info section has been added to the Object Panel. When a Construct instance is selected it lists all timelines defined on that Construct, each with its current weight and a playback controller where applicable. The 'takeWeight' button animates the selected timeline's weight to 1 while reducing all other timelines to 0 over one second (hold Shift for 0.25s or Cmd/Ctrl for 5s). The 'playOnceAndTakeWeight' button takes weight from all other timelines and plays the selected timeline from the beginning once.

TITLE:
Tooltips Overhauled
DESCRIPTION:
Tooltips have been redesigned as self-contained timed popups that appear directly over the hovered element rather than in a dedicated tooltip panel. Multiple tooltips can now be stacked on a single element - all registered entries are displayed together in a single popup, ordered from most to least specific. The tooltip panel is no longer required and has been removed. Tooltips can now be toggled on or off entirely from Application Settings, and the display delay before a tooltip appears can also be adjusted there.

TITLE:
Numeric Supervisors: Mathematical Expression Support
DESCRIPTION:
Numeric supervisor text fields now accept mathematical expressions. Entering an expression containing +, -, *, or / (e.g. '90+45' or '100/3') will evaluate the result and apply it as the new value.











----------------------------------------------------------
Section 28: 2026.05.04.00.00.00
----------------------------------------------------------


TITLE:
Hierarchy Panel: show disabled state is now persistent per panel
DESCRIPTION:
The state of the 'show disabled' toggle in the Hierarchy panel is now saved as part of the panel's stateInfo and restored when the session is reloaded. Each Hierarchy panel instance saves its own setting independently.

TITLE:
PlaybackController.autoplayWhenInConstruct is becoming PlaybackController.autoplayMode [DEPRECATION ID 2026.05.04.00]
DESCRIPTION:
autoplayWhenInConstruct is being replaced by autoplayMode, which accepts a string ('none', 'loop', or 'once') instead of a boolean. Setting true converts to autoplayMode 'loop'; setting false converts to autoplayMode 'none'. The old property still works but logs a deprecation warning. Phase 2 target: end of 2026.

TITLE:
Added SpriteSetter.keyGraphicAsset
DESCRIPTION:
New property on SpriteSetter. The setter calls setKeyGraphicAsset and stores an internal reference to the chosen GraphicAsset; the getter returns that reference. Equivalent to calling setKeyGraphicAsset directly.











----------------------------------------------------------
Section 29: 2026.05.03.00.00.00
----------------------------------------------------------


TITLE:
Added UxPlaybackControllerSupervisor
DESCRIPTION:
New Ux supervisor that provides a play/pause toggle button, a playOnce/pause toggle button, and a stop button for supervising PlaybackController objects. When a single PlaybackController is supervised, a ranged slider is shown with its range driven automatically from the owner's startTime and endTime. When multiple PlaybackControllers are supervised simultaneously, a text field is shown instead. The label displayed next to the value supervisor reads 'time:' for timeline-based controllers and 'value:' for value-based ones. The play and playOnce buttons swap to a pause icon while the relevant owners are in a playing state.

TITLE:
ColorPicker: Fixed live multi-color array editing and Cancel restoration
DESCRIPTION:
The ColorPicker popup now correctly supports being opened with an array of live Color objects. Changes are applied live during editing; pressing Cancel restores all colors to their original values. Alpha channel visibility is now managed dynamically — the alpha row is shown or hidden based on whether the current color mode includes alpha, and the layout is rebuilt cleanly when this changes. The hex field automatically selects its text when the popup opens. A crosshair cursor and input blocker are shown during sample (eyedropper) mode.











----------------------------------------------------------
Section 30: 2026.04.30.00.00.00
----------------------------------------------------------


TITLE:
LayoutStack: Added borderExpansion
DESCRIPTION:
New property that offsets the size of the border in all directions relative to the LayoutStack's content bounds. A positive value expands the border beyond the content bounds; a negative value contracts it. The value is pre-uiZoom and is scaled automatically. Has no effect unless displayBorder is true. Defaults to 0.

TITLE:
LayoutStack: Added backgroundPanelExpansion
DESCRIPTION:
New property that offsets the size of the backgroundPanel in all directions relative to the LayoutStack's content bounds. A positive value expands the panel beyond the content bounds; a negative value contracts it. The value is pre-uiZoom and is scaled automatically. Has no effect unless displayBackgroundPanel is true. Defaults to 0.

TITLE:
Fixed Intermittent Crash on Browser Refresh
DESCRIPTION:
An ObjectDisposedException could occur in the HTTP server when a browser refresh caused the client to disconnect before the server finished sending its response. The response-write path is now guarded against disposed connection objects.

TITLE:
UiTextField: Added displayExButton and exButton
DESCRIPTION:
New properties that add an optional clear button to UiTextField. Setting displayExButton to true lazily creates a UiLinkButton (exButton) at the right edge of the text area. The button is visible only when the field is non-empty and clears the text when pressed.

TITLE:
Added UxStringSupervisorButton
DESCRIPTION:
New Ux supervisor that extends UiButton and displays a supervised string property as its mainText. When multiple diverging values are supervised a '-' is shown. No property manipulation is built in — add a trigger callback to respond to button presses with custom behavior.











----------------------------------------------------------
Section 31: 2026.04.29.00.00.00
----------------------------------------------------------


TITLE:
Added UxVectorSupervisorTextField.singularFocusTarget
DESCRIPTION:
New property that restricts keyboard focus so that only one component text field holds focus at a time within the specified target. Setting this property automatically propagates the value to all current and future component UxNumberSupervisorTextFields.

TITLE:
UxCollapsibleStack: Safety Guard Added to Trigger Callbacks
DESCRIPTION:
A crash that could occur when open/close callbacks were triggered before the callback array was initialized has been fixed.

TITLE:
Fixed Incisor Failing to Launch on Intel-based Macs
DESCRIPTION:
A bug was causing Incisor to fail on OSX machines running Intel processors. This has been fixed.











----------------------------------------------------------
Section 32: 2026.04.23.00.00.00
----------------------------------------------------------


TITLE:
Introducing UxCollapsibleStack
DESCRIPTION:
A vertical LayoutStack with a header row containing an open/close toggle button. Triggering the button enables or disables a body LayoutStack, allowing sections of inspector UI to be neatly collapsed. Supports optional border display and open/close callbacks.

TITLE:
Introducing UxStandardListViewElement
DESCRIPTION:
A horizontal LayoutStack that serves as a standard visual container for a single item within a list view. Exposes a 'bodyStack' for custom item content and optional built-in utility controls for reordering, duplicating, adding, and removing list items.











----------------------------------------------------------
Section 33: 2026.04.21.00.00.00
----------------------------------------------------------


TITLE:
Introducing UxBooleanSupervisorCheckbox
DESCRIPTION:
A supervisor for boolean properties, displayed as a labeled checkbox. Checking or unchecking the box writes the new value to all supervised owners. When multiple diverging values are supervised simultaneously, an indeterminate '-' state is shown.

TITLE:
Introducing UxVectorSupervisorTextField
DESCRIPTION:
A supervisor for Vector properties, displayed as a row of per-component UxNumberSupervisorTextFields (x, y, z, w). Component supervisors are created on demand as the dimensionality of the supervised Vector is determined. Edits component values in-place rather than replacing Vector references.











----------------------------------------------------------
Section 34: 2026.04.19.00.00.00
----------------------------------------------------------


TITLE:
Introducing UxStringSupervisorTextField
DESCRIPTION:
A supervisor for string properties, displayed as an editable text field. Committing a new value writes it to all supervised owners. When multiple diverging values are supervised simultaneously, a '-' placeholder is shown.

TITLE:
Introducing UxStringSupervisorMenu
DESCRIPTION:
A supervisor for string properties that presents its value choices as a UxDropDownMenu. Selecting a menu item writes the chosen value to all supervised owners. When multiple diverging values are supervised simultaneously, a '-' placeholder is shown.











----------------------------------------------------------
Section 35: 2026.04.17.00.00.00
----------------------------------------------------------


TITLE:
Introducing UxNumberSupervisorTextField
DESCRIPTION:
A supervisor for numeric properties, displayed as an editable text field with an optional drag-to-scrub interaction. Supports value validation, custom setters, singular focus targeting, and multi-owner supervision with a '-' shown when supervised values diverge.

TITLE:
Introducing UxNumberSupervisorRangedSlider
DESCRIPTION:
A supervisor for numeric properties that fall within a defined min/max range, displayed as a draggable slider. Provides a visual representation of a value's position within its range and writes changes to all supervised owners.











----------------------------------------------------------
Section 36: 2026.04.15.00.00.00
----------------------------------------------------------


TITLE:
Introducing UxMenu, UxMenuItem, and UxDropDownMenu
DESCRIPTION:
Three new Ux objects that together provide a styled, keyboard-navigable menu system for use in extensions. UxMenu is a vertical LayoutStack that manages a list of UxMenuItems and supports optional search filtering and nested sub-menus. UxMenuItem is the individual row element. UxDropDownMenu is a button that anchors and toggles a UxMenu.











----------------------------------------------------------
Section 37: 2026.04.03.00.00.00
----------------------------------------------------------


TITLE:
Deprecated Timeline.influence, .swoopInfluence, .playOnce_swoopInfluence, .play_swoopInfluence...
DESCRIPTION:
Now use weight, takeWeight, swoopWeight, playOnceAndTakeWeight, playAndTakeWeight...

TITLE:
Added 'maintain current EffectNodes' checkbox to GraphicAssetSelectionPopupWindow
DESCRIPTION:
Allowing user to maintain the EffectNodes currently set on the GraphicObject whose GraphicAsset is being set.











----------------------------------------------------------
Section 38: 2026.03.25.00.00.00
----------------------------------------------------------


TITLE:
Further Bug Fixes to UxListSupervisor
DESCRIPTION:
More edge cases producing visual duplicates are fixed.











----------------------------------------------------------
Section 39: 2026.03.20.00.00.00
----------------------------------------------------------


TITLE:
Additional SlotReel Validation
DESCRIPTION:
A check has been added to ensure that the 'symbolDefinition' provided to SlotReel is a class that implements 'setSymbol'.











----------------------------------------------------------
Section 40: 2026.03.19.00.00.00
----------------------------------------------------------


TITLE:
UxListSupervisor Repeat Item Bug Fix
DESCRIPTION:
Repeated items in source lists were causing bugs with the UxListSupervisor

TITLE:
ScrollingPanel: Camera.autoRender Toggled Based On Enabled State
DESCRIPTION:
The autoRender state of a ScrollingPanel is now dependant on the ScrollingPanel being enabled.

TITLE:
Disallowing Invalid State Changes in SlotReel
DESCRIPTION:
Until now, it was allowed to be in the 'stopping' or 'stopImminent' states and call 'beginStop'. Now in that case the call is disregarded.

TITLE:
Fixed Video Dynamic Documentation Bug
DESCRIPTION:
The text replacement tag was being left in the IncisorAPI reference doc when a project has no compressed videos.











----------------------------------------------------------
Section 41: 2026.03.17.00.00.00
----------------------------------------------------------


TITLE:
Fix to Electron Builds Missing Dependencies
DESCRIPTION:
Now, Incisor automatically runs 'npm install' on the Electron project workspace before building so that any dependencies are installed before every electron publish.











----------------------------------------------------------
Section 42: 2026.03.14.00.00.00
----------------------------------------------------------


TITLE:
Fixed Bug with Layer Validation
DESCRIPTION:
In some cases, using setLayers would report that a layer doesn't exist when it does - this has been fixed.

TITLE:
IncisorAPI Trailing Commas Documentation
DESCRIPTION:
Fixed an issue where dynamic documentation for nc.appEvents, and nc.precomps was including trailing commas.











----------------------------------------------------------
Section 43: 2026.03.11.00.00.00
----------------------------------------------------------


TITLE:
Fixed Issue with ScrollingPanel.ScrollTo
DESCRIPTION:
Scrolling to a disabled SceneObject was causing craziness. A validation warning has been added











----------------------------------------------------------
Section 44: 2026.03.05.00.00.00
----------------------------------------------------------


TITLE:
Bug with Open/Close Hierarchy Items Fixed
DESCRIPTION:
Sometimes the caret would appear to be open or closed erroneously when it is first displayed. This has been fixed.

TITLE:
Electron Publishing Validation and Publishing Stability Refactoring
DESCRIPTION:
There were many issues surrounding Incisor's validation of the electron and electron-builder dependencies that have been fixed.











----------------------------------------------------------
Section 45: 2026.03.03.00.00.00
----------------------------------------------------------


TITLE:
Fixed Live View Layering Issue
DESCRIPTION:
Fixed bug where making a panel small enough so that the body disappears allows the LiveView to show through to the front outside of its panel area.











----------------------------------------------------------
Section 46: 2026.02.26.00.00.00
----------------------------------------------------------


TITLE:
Introducing UxListSupervisor
DESCRIPTION:
Object for laying out dynamic lists in the GUI for extensions.

TITLE:
Latent Hierarchy Bug Fixed
DESCRIPTION:
There was a bug that allowed old disposed hierarchies to be visible after a project refreshed - this has been fixed.

TITLE:
Dynamic Cursor Changing
DESCRIPTION:
The cursor now changes based on what it's hovering over.

TITLE:
Added Default Inspector Panel Layout Preset
DESCRIPTION:
The same layout as a brand new project is now available within the presets as 'Default'.











----------------------------------------------------------
Section 47: 2026.02.23.00.00.00
----------------------------------------------------------


TITLE:
Open Project Popup Location is now Persistent
DESCRIPTION:
For ease of use.

TITLE:
ParticleSystem Trailing Comma Issue Fix
DESCRIPTION:
A trailing comma found at the end of a list of parameters in a function call was causing problems for the UC Browser. This has been fixed.

TITLE:
Introducing Panel Layout Presets
DESCRIPTION:
Now you can save the layout of the inspector panel and recall it easily from within the 'View' menu. The data is stored within the ApplicationSettings.json file.











----------------------------------------------------------
Section 48: 2026.02.20.00.00.00
----------------------------------------------------------


TITLE:
Timeline.influence Edge Case Fixed
DESCRIPTION:
An edge case has been fixed where changing the influence of a Timeline would cause the influence of other timelines' influences to become NaN.











----------------------------------------------------------
Section 49: 2026.02.19.00.00.00
----------------------------------------------------------


TITLE:
Improved fileIO.delete Validation
DESCRIPTION:
Empty quotes are no longer an acceptable path to provide 'fileIO.delete'.

TITLE:
FileIO.delete Behavior Changed
DESCRIPTION:
If the item to be deleted is not present, a 'blue error' will no longer be generated in the client, and the message explaining that the item wasn't present has been moved to the payload property of the returned response instead of the original error member.











----------------------------------------------------------
Section 50: 2026.02.18.00.00.00
----------------------------------------------------------


TITLE:
Improved Pivot Point Adjuster Validation
DESCRIPTION:
PivotPointAdjusters are not supported on TextBoxes, but previously there was no logging or validation to prevent it.











----------------------------------------------------------
Section 51: 2026.02.16.00.00.00
----------------------------------------------------------


TITLE:
Fixed UiDropDown Positioning Bug
DESCRIPTION:
In certain instances UiDropDown menu positioning was off, this has been fixed.

TITLE:
More Robust Error Feedback for Electron Publishing
DESCRIPTION:
We are now looking through the stdOut from the 'electron-builder' process for errors and logging them for the user. Also the publishing output is now dumped to a PublishingLog.txt file in the publishing workspace.

TITLE:
Changed the 'Open Project' Keyboard Shortcut
DESCRIPTION:
It is now [Cmd/Ctrl][Alt][O], since some browsers are already using [Cmd/Ctrl][O] to open a new window.











----------------------------------------------------------
Section 52: 2026.02.12.00.00.00
----------------------------------------------------------


TITLE:
Items in Publishing Popup Made Persistent
DESCRIPTION:
The current configuration and the other checkboxes are now persistent in the publishing popup window.

TITLE:
Added Keyboard Shortcuts for the Publishing Popup, the ProjectSettings Popup, and the Application Settings Popup
DESCRIPTION:
For quick access...











----------------------------------------------------------
Section 53: 2026.02.10.00.00.00
----------------------------------------------------------


TITLE:
Improved Duplicate Asset Name Messaging
DESCRIPTION:
Now if you have more than one asset with the same name in your project, Incisor gives you their paths in the associated red error.











----------------------------------------------------------
Section 54: 2026.02.05.00.00.00
----------------------------------------------------------


TITLE:
Introducing AuxiliaryPublishingPackages in ProjectSettings
DESCRIPTION:
You can now define extra publishing options such as Electron publishing packages and tie them to configurations.

TITLE:
Restructuring Electron Publishing
DESCRIPTION:
Whenever the given Electron publishing package is defined and used during publishing, a directory is created under the package's name in the project at Utilities/AuxiliaryPublishingSupport, and that directory is where the components for the given package are collected for publishing.











----------------------------------------------------------
Section 55: 2026.02.02.00.00.00
----------------------------------------------------------


TITLE:
Timeline.playOnce_swoopInfluence Timing Bug Fix
DESCRIPTION:
The related fix on 2026.01.29 contained an edge case issue.











----------------------------------------------------------
Section 56: 2026.02.01.00.00.00
----------------------------------------------------------


TITLE:
Asset Configuration Bug Fix
DESCRIPTION:
Applying asset configuration filters to images was causing red errors in some scenarios. This has been fixed.











----------------------------------------------------------
Section 57: 2026.01.31.00.00.00
----------------------------------------------------------


TITLE:
GUI: EffectController Color Vector Supervisor Bug Fix
DESCRIPTION:
In some cases the color picker box on color supervisors in the GUI were displaying the wrong color. This has been fixed.











----------------------------------------------------------
Section 58: 2026.01.30.00.00.00
----------------------------------------------------------


TITLE:
Number Format Bug Fix
DESCRIPTION:
Incisor was experiencing a collection of visual bugs when it was running on machines that have default number formatting other than the 'en-US' formatting.

TITLE:
Spine Glitchiness Bug Fix
DESCRIPTION:
A small defect in the Spine bezier curve evaluation was creating some glitchiness in certain imported Spine animations. Animations should not need to be re-imported to be improved.

TITLE:
Better Defaulting for 'nc.mainModifierKey'
DESCRIPTION:
Incisor was doing a bad job at detecting when it was running on OSX and was therefore making nc.mainModifierKey = 'Control' in most cases. This is fixed now.











----------------------------------------------------------
Section 59: 2026.01.29.00.00.00
----------------------------------------------------------


TITLE:
Timeline.playOnce_swoopInfluence Bug Fix
DESCRIPTION:
Timeline.playOnce_swoopInfluence was not properly taking the playbackRate of the given timeline into account when doing its return swoop.

TITLE:
Refactored the Internal Storage of Installation Support
DESCRIPTION:
In order to fix a bug that was limiting the ability to add more JS to Incisor.











----------------------------------------------------------
Section 60: 2026.01.28.00.00.00
----------------------------------------------------------


TITLE:
Matrix4 and Matrix4Array EffectController Fixes
DESCRIPTION:
These two EffectController types were not working properly with regards to their placement onto MaterialMaster and CharacterMaterial objects. Also, defaults for the types were not properly being applied in general.

TITLE:
FlowController/FlowState Dynamic Documentation Bug Fixed
DESCRIPTION:
The user choosing to omit the 'flowController' optional code module was causing replacement tags to be left in the IncisorAPI dynamic documentation. This has been fixed.











----------------------------------------------------------
Section 61: 2026.01.27.00.00.00
----------------------------------------------------------


TITLE:
JS Keyword Removal Bug Fixed
DESCRIPTION:
The 'default' keyword was being removed erroneously.

TITLE:
Internal Incisor Publishing Pipeline Refactored
DESCRIPTION:
For faster, more reliable, publishing of Incisor app with better flow for codesigning.











----------------------------------------------------------
Section 62: 2026.01.12.00.00.00
----------------------------------------------------------


TITLE:
GUI: Focused TextBoxes and UiTextFields Ignore Panel Hot Zones
DESCRIPTION:
Previously, rolling over a panel would steal focus from TextBoxes and UiTextFields, which created issues with usability. Now the user has to exit text editing entirely (via a click or by pressing enter etc...) for panel focus zones to have any effect.











----------------------------------------------------------
Section 63: 2026.01.11.00.00.00
----------------------------------------------------------


TITLE:
New SceneObject EffectController Inheritance Bug Fix
DESCRIPTION:
Fixed an issue where new children added (post-init) failed to inherit effect controller values.

TITLE:
GUI: EffectController Supervisors - Live Updating
DESCRIPTION:
Now the EffectControllers available in the Object panel for any SceneObject or Material are correctly reflected, even if they changed live in code.

TITLE:
Object Panel: PerspectiveCamera
DESCRIPTION:
Supervisors have been added to the Object panel for PerspectiveCameras.











----------------------------------------------------------
Section 64: 2026.01.08.00.00.00
----------------------------------------------------------


TITLE:
DropDown Menu Overflow Adjustments
DESCRIPTION:
Improving the behavior of menus that are too big for the window. This is still a bit of a patch... a menu overhaul is on the roadmap.

TITLE:
Keyboard Navigation Outline Bug Fix
DESCRIPTION:
An issue with keyboard navigation outlines not being properly displayed has been fixed.











----------------------------------------------------------
Section 65: 2026.01.05.00.00.00
----------------------------------------------------------


TITLE:
Added 'perspective' Option for 'mainCameraType' to ProjectSettings Popup
DESCRIPTION:
To be able to change the main camera type from the ProjectSettings window.











----------------------------------------------------------
Section 66: 2026.01.04.00.00.00
----------------------------------------------------------


TITLE:
Introducing PerspectiveCamera (experimental)
DESCRIPTION:
New Camera with a perspective frustum.

TITLE:
Runtime Project Memory Footprint Improvements
DESCRIPTION:
An overlooked feature of Incisor object class inheritance was causing some EffectController getters and setters to be added at the instance level instead of at the prototype level. This has been fixed.

TITLE:
Camera vs OrthographicCamera Reorganization
DESCRIPTION:
To prepare for PerspectiveCamera some restructuring of Camera and OrthographicCamera was required.

TITLE:
Spine Initialization Bug Fixed
DESCRIPTION:
A race condition allowed for a sporadic issue with Spine animations. This has been fixed.

TITLE:
New AdaptiveCameraModes: preserveViewAngleVertical and preserveViewAngleHorizontal
DESCRIPTION:
Values used with the new PerspectiveCamera.











----------------------------------------------------------
Section 67: 2025.12.08.00.00.00
----------------------------------------------------------


TITLE:
Introducing Support for Compressed Video (experimental)
DESCRIPTION:
Now you can include '.mp4' and '.webm' assets in your project and have the associated video content appear on GraphicObjects within Incisor. This functionality is not universally supported on all browsers, and special considerations must be taken when using this functionality.

TITLE:
Timeline Panel: Shift-Lock for Keyframe Dragging in Graph Editor
DESCRIPTION:
Now you can hold shift while dragging keyframes in the Graph Editor to lock to the nearest axis.

TITLE:
Timeline Panel: New Ease Standards
DESCRIPTION:
Now when selecting one of the built-in ease options, the ease handle is located at 30% of the span instead of 40% of the span.

TITLE:
Added 'nc.cursorMode' and Deprecated 'nc.isTouchCursor'
DESCRIPTION:
The determination of which mode (touch or mouse) a given project is in, automatically defaults to the first type of event received, but can be changed via 'nc.cursorMode'.











----------------------------------------------------------
Section 68: 2025.12.01.00.00.00
----------------------------------------------------------


TITLE:
Added x, y, and z Axes to the HUD in the Incisor Inspector
DESCRIPTION:
A clear indication of where the origin is...











----------------------------------------------------------
Section 69: 2025.11.30.00.00.00
----------------------------------------------------------


TITLE:
Added Material.depthTest, Material.depthWrite, and Material.faceCulling.
DESCRIPTION:
Exposing these material properties for use in conjunction with OBJs.

TITLE:
Added ContourShading to the TemplateLibrary
DESCRIPTION:
A basic shading EffectNode to make OBJ contour visible.

TITLE:
Added RegisteredProperty.displayInGui
DESCRIPTION:
Flag determining if a given registered property will be displayed with a Supervisor in the GUI.











----------------------------------------------------------
Section 70: 2025.11.26.00.00.00
----------------------------------------------------------


TITLE:
Fixed Bug with Empty-Quote-Named Construct Objects
DESCRIPTION:
Fixed a superficial, red-error generating bug related to making the name for items equal to empty quotes.

TITLE:
Introducing preliminary OBJ support (experimental)
DESCRIPTION:
You can now include OBJ files in the Assets directory of your project and they will automatically appear in the nc.GraphicAssets, and nc.Geometries dictionaries in the project.

TITLE:
Many Documentation Fixes
DESCRIPTION:
In the process of reworking the Incisor Documentation site, and creating the pipeline for the Incisor Raw Knowledge Base, many small issues were found in the documentation and corrected - too numerous to enumerate.











----------------------------------------------------------
Section 71: 2025.11.12.00.00.00
----------------------------------------------------------


TITLE:
Added TextBox.addStartEditCallback
DESCRIPTION:
A new callback that can be created whenever a TextBox's editingMode changes to 'editing'.

TITLE:
Added TextBox.htmlBacking
DESCRIPTION:
A means to allow keyboard input from mobile devices by creating a hidden text element that accepts mobile keyboard entry.











----------------------------------------------------------
Section 72: 2025.10.28.00.00.00
----------------------------------------------------------


TITLE:
Added 'ProcessConfiguration' for runProcess, runCmd, and runBash
DESCRIPTION:
A new class with properties pertaining to the running of processes.

TITLE:
Cleared many unnecessary documentation classes.
DESCRIPTION:
Several classes were converted to object expressions in the documentation to reduce clutter.











----------------------------------------------------------
Section 73: 2025.10.25.00.00.00
----------------------------------------------------------


TITLE:
Template Library Generated Extensions Bug Fix
DESCRIPTION:
Some of the names within the exported extensions from the template library weren't being substituted correctly.











----------------------------------------------------------
Section 74: 2025.10.24.00.00.00
----------------------------------------------------------


TITLE:
Fixed Bug with Gradient2Color, Gradient3Color, Gradient4Color
DESCRIPTION:
Those EffectNodes had effect controllers that attempted to use a disallowed component name. They have been fixed and validation has been added to clarify what is happening when this issue is encountered in the future.











----------------------------------------------------------
Section 75: 2025.10.23.00.00.00
----------------------------------------------------------


TITLE:
Fix to the PingPong Motion Type
DESCRIPTION:
Prior to this fix, if the upper bounds weren't larger than the lower bounds, there were issues.

TITLE:
Spine Import Fixes
DESCRIPTION:
Too numerous to itemize, many are related how multiple constraint-style spine features work together.











----------------------------------------------------------
Section 76: 2025.10.18.00.00.00
----------------------------------------------------------


TITLE:
Template Library Effect Nodes Made Safer
DESCRIPTION:
All of the variables declared in the open fragment and vertex shader scopes are now prepended with the user-specified effect node name. Also, associated EffectControllers are now made to be lowercase if they are not already.

TITLE:
Added the ShapifyStroke EffectNode to the TemplateLibrary
DESCRIPTION:
Add a built-in stroke to a shapified GraphicObject.

TITLE:
Added nc.definePrecomp
DESCRIPTION:
Allowing the for the creation of a Precomp in the target software from within extensions via 'nce.projectNC.definePrecomp'.

TITLE:
Fixed EffectNode Default Values Bug
DESCRIPTION:
In certain scenarios the default values were not being applied to the material when a new EffectNode was being added.











----------------------------------------------------------
Section 77: 2025.10.15.00.00.00
----------------------------------------------------------


TITLE:
Added SlotReel.numSymbols
DESCRIPTION:
... for quick reference

TITLE:
SlotReels can now accept a CustomObjectDefinition for the 'symbolDefinition' parameter.
DESCRIPTION:
To make the interface between the SlotReel and its symbols more intuitive and less verbose.

TITLE:
Added SlotReels.symbolPathOverrideMode.
DESCRIPTION:
Now the positioning of the symbols along the reel path can be completely overriden.











----------------------------------------------------------
Section 78: 2025.10.03.00.00.00
----------------------------------------------------------


TITLE:
Added nce.runBash and nce.runCmd
DESCRIPTION:
For the ability to run terminal commands easily through extensions without having to specify the process location.

TITLE:
Introducing Electron Integration
DESCRIPTION:
Look for options to publish native apps in the 'Publish Project' popup window.

TITLE:
Fixed SlotReel.getSymbols Bug
DESCRIPTION:
It previously wasn't returning correctly.











----------------------------------------------------------
Section 79: 2025.10.01.00.00.00
----------------------------------------------------------


TITLE:
Added the nc.addScene
DESCRIPTION:
Exposing the factory function which can be used in addition to the standard constructor.











----------------------------------------------------------
Section 80: 2025.09.29.00.00.00
----------------------------------------------------------


TITLE:
Added the 'StretchBetween2D' CustomAddOn to the TemplateLibrary.
DESCRIPTION:
Stretch any GraphicObject in the middle such that it reaches between the two points you provide.











----------------------------------------------------------
Section 81: 2025.09.27.00.00.00
----------------------------------------------------------


TITLE:
Added 'numHorizontalGridSegments' and 'numVerticalGridSegments' to the Object panel, and also made those items Construct-savable.
DESCRIPTION:
To be able to manipulate the number of grid segments from within the GUI.











----------------------------------------------------------
Section 82: 2025.09.25.00.00.00
----------------------------------------------------------


TITLE:
Fixed Post Publish Bugs
DESCRIPTION:
There was a race condition that caused the inspector to need to be refreshed after publishing projects.

TITLE:
Fixed ParticleSystem.stopEmitting Documentation Issue
DESCRIPTION:
Fixed the parameter type.











----------------------------------------------------------
Section 83: 2025.09.24.00.00.00
----------------------------------------------------------


TITLE:
Introducing SlotReel
DESCRIPTION:
To create spinning reels for a casino slot game with ease.

TITLE:
Introducing Matrix4, SceneObject.worldMatrixOverrideMode, SceneObject.localMatrixOverrideMode, SceneObject.worldMatrix, and SceneObject.localMatrix
DESCRIPTION:
Unlocking the ability for the user to work around the built-in 'arrangement' properties and manipulate the rendering matrices directly for custom effects.

TITLE:
Introducing Spine Import (Experimental)
DESCRIPTION:
Users can now import Spine animations.

TITLE:
Added GraphicObject.frustumCulling
DESCRIPTION:
Boolean determining if the GraphicObject is automatically omitted from rendering when it is entirely outside of the Camera's viewing area (its frustum).

TITLE:
Added WaitThen.duration
DESCRIPTION:
Read-only property indicating the current duration of the WaitThen.











----------------------------------------------------------
Section 84: 2025.09.26.00.00.00
----------------------------------------------------------


TITLE:
Added nc.defineFlowController, FlowController, FlowState, FlowStateElement, and the 'Flows' panel.
DESCRIPTION:
For implementing and visualizing state flows within the project...

TITLE:
Hierachy Panel: Hold 'Alt' to Reparent while Maintaining Global Position
DESCRIPTION:
This feature was accidentally removed in an earlier version.











----------------------------------------------------------
Section 85: 2025.09.20.00.00.00
----------------------------------------------------------


TITLE:
Added New Color Themes, Including a new Default Color Theme
DESCRIPTION:
If you have already been using Incisor, you may need to wipe out your ApplicationSettings.json to see the new colors.

TITLE:
Fixed copy/paste TextBox Bug in ConstructEditor
DESCRIPTION:
Now a freshly pasted TextBox will display properly immediately in the ConstructEditor.

TITLE:
Fixed Error in nc.defineEffectNode and nc.definedEffectController Documentation
DESCRIPTION:
These documentation errors were resulting in misleading TypeScript compilation errors.

TITLE:
Fixed Bug Related to Layers Changing In Construct
DESCRIPTION:
Now if a construct item's layer disappears, nothing bad happens (except the requisite warnings).











----------------------------------------------------------
Section 86: 2025.09.19.00.00.00
----------------------------------------------------------


TITLE:
Runtime Memory Usage Reduction
DESCRIPTION:
Several changes have been made to reduce runtime memory including removing the 'asset data stash', freeing asset list 'bulk' data, and making internal EffectNode support objects be generated on an 'as-needed' basis.

TITLE:
Removed 'SampleGlobalExtensions' and 'SampleProjectExtensions'
DESCRIPTION:
All of these examples have been moved to the 'TemplateLibrary' menu.











----------------------------------------------------------
Section 87: 2025.09.15.00.00.00
----------------------------------------------------------


TITLE:
Live View Cursor Input Bug Fixed
DESCRIPTION:
Now cursor input is only sent through the Live View panel if it is in focus.

TITLE:
Missing Sub-Construct Bug Fixed
DESCRIPTION:
Incisor was failing in an unrecoverable way when attempting to place a non-existent Construct within a Construct, no you just get the standard warning.











----------------------------------------------------------
Section 88: 2025.09.10.00.00.00
----------------------------------------------------------


TITLE:
Added 'nc.canvasElement'
DESCRIPTION:
For direct access to the project canvas element.

TITLE:
Added FontReduction Window
DESCRIPTION:
Accessible via a new button in the Transcript Panel. In this you window can see which characters will be included with each font when the project is published. You can also export an informational JSON file for external use if needed.











----------------------------------------------------------
Section 89: 2025.09.08.00.00.00
----------------------------------------------------------


TITLE:
Added builtInHeaderMenus to Custom Color Themes
DESCRIPTION:
For increased flexability.

TITLE:
Fixed Publishing Bug: Font Character Assets split out by Language
DESCRIPTION:
There was an issue font characters were not being split into language-specific asset data files.

TITLE:
Added Header to Live View Panel
DESCRIPTION:
Now all of the control buttons are in the header.

TITLE:
Live View Panel: Added Full Scren Toggle
DESCRIPTION:
Now you can toggle fullscreen for Live View.

TITLE:
Live View Panel: Added View Modes
DESCRIPTION:
Modes allow you to specify the aspect ratio of the live view. You can include additional view modes in ProjectSettings.

TITLE:
Live View Paused Bug Fixes
DESCRIPTION:
Pausing the Live View was causing some bugs, including issues with the Construct Editor, and issues with stepping a single frame.











----------------------------------------------------------
Section 90: 2025.09.04.00.00.00
----------------------------------------------------------


TITLE:
Added nce.reloadProject
DESCRIPTION:
Functionality for reloading the project (same as pressing the refresh button in the live view) from within extensions.











----------------------------------------------------------
Section 91: 2025.09.02.00.00.00
----------------------------------------------------------


TITLE:
Added ApplicationSettings.colorTheme, and ApplicationSettings.customColorThemes
DESCRIPTION:
Now you can create custom color themes for Incisor.

TITLE:
Timeline Keyframe Scaling Bug Fixed
DESCRIPTION:
Fixed bugs with keyframe handle scaling related to uiZoom

TITLE:
Upgraded Incisor/Browser Protocol
DESCRIPTION:
Optimized communications protocol between Incisor and the client browser, elminating multiple Cson/Json interpretations per communication and reducing the overall size of communications.











----------------------------------------------------------
Section 92: 2025.08.28.00.00.00
----------------------------------------------------------


TITLE:
Added FileBrowser.refresh
DESCRIPTION:
Method to refresh the FileBrowser so it can reflect file system changes.

TITLE:
Added Color Supervisor Button and Color Window
DESCRIPTION:
Now you can see a swatch of a given color next to its EffectController. Clicking the swatch opens a window that allows you to visually choose a color.

TITLE:
Added UiPopupWindow.isMovable
DESCRIPTION:
Windows can now now be moved by dragging the header.

TITLE:
Added nc.visualFocusDimmerAmount
DESCRIPTION:
The strength of the dimmer can now be changed dynamically.

TITLE:
Rebuilt 'Layers' Manager
DESCRIPTION:
The LayersManager has been visually reconstructed and is now accessable from the layers menu in the Object panel, in its own panel, and from within the 'Manage' menu. Keystroke shortcuts have also been added.

TITLE:
Rebuilt 'Masks' Manager
DESCRIPTION:
The MasksManager has been visually reconstructed and is now accessable from the masking menu in the Object panel, and also from within the 'Manage' menu. Keystroke shortcuts have also been added.











----------------------------------------------------------
Section 93: 2025.08.27.00.00.00
----------------------------------------------------------


TITLE:
Upgraded Project File System
DESCRIPTION:
Changes made to project files while a project is open are now reflected in the Incisor project and are part of the 'undo/redo' stack.











----------------------------------------------------------
Section 94: 2025.08.24.00.00.00
----------------------------------------------------------


TITLE:
Added nce.runProcess
DESCRIPTION:
A means to run external executable processes from within extensions code.

TITLE:
Fixed Asset Package Scale Bug with SpriteSheets
DESCRIPTION:
When publishing with multiple asset package scales, images in sprite sheets were reusing geometry from other asset packages erroneously.

TITLE:
Rebuilt the Hierarchy Inspector
DESCRIPTION:
The hierarchy inspector has been rebuilt visually, and now uses the 'ItemRepStack' method that the file browser uses.

TITLE:
Asset Browser and Asset Settings have been combined
DESCRIPTION:
Now the inspector has a single 'Assets' panel, which makes for easier access.











----------------------------------------------------------
Section 95: 2025.08.16.00.00.00
----------------------------------------------------------


TITLE:
Added 'nce.addFileBrowser'
DESCRIPTION:
A new tool for file system viewing within extensions.

TITLE:
Added 'nce.showPathQueryPopup'
DESCRIPTION:
Another standardized popup for acquiring a path from the user via visual interface.

TITLE:
Added a root selector to the Open Project and New Project popup windows.
DESCRIPTION:
Now you can change the root to different locations and drives from within the popup window.

TITLE:
AssetBrowser panel and AssetSettings panel have been combined into the 'Assets' panel.
DESCRIPTION:
Easier access in one, split panel. A searchbar has also been added.

TITLE:
Added nc.incisorApp.pauseProjectDirectoryWatcher and nc.incisorApp.resumeProjectDirectoryWatcher
DESCRIPTION:
A way to pause and resume the auto-reload-on-file-change functionality.

TITLE:
Fixed Issue with TextBox.BoxHeight and TextAssembly.BoxHeight
DESCRIPTION:
In some situations, with wrapToFit=false, the box size properties were not having the desired effect on the text layout.

TITLE:
Added More Detection for Project Minification Reservations
DESCRIPTION:
Added auto-detection of asset names and other keywords referenced in Constructs, Layers, ParticleSystems, Masks, and Transcripts.











----------------------------------------------------------
Section 96: 2025.08.10.00.00.00
----------------------------------------------------------


TITLE:
SoftwareSpeed Sound PlaybackRate Bug Fixed
DESCRIPTION:
Incisor was failing to adjust the PlaybackRate of sounds when SoftwareSpeed was adjusted in some scenarios.

TITLE:
Inspector Live View Aspect Ratio Slippage Fixed
DESCRIPTION:
Within the inspector, the LiveView was sending the previous aspect ratio to the target software instead of the current aspect ratio.











----------------------------------------------------------
Section 97: 2025.07.09.00.00.00
----------------------------------------------------------


TITLE:
Added Info-Object Parameters to Publish Actions
DESCRIPTION:
nce.addPrePublishCallback, and nce.addPostPublishCallback now sends info objects (PrePublishInfoObject and PostPublishInfoObject) to the callbacks.











----------------------------------------------------------
Section 98: 2025.07.08.00.00.00
----------------------------------------------------------


TITLE:
Added nc.appEvents.visibilityChange
DESCRIPTION:
Event associated with a change in the visibility of the browser/app running Incisor.

TITLE:
Added SceneObject.addUiZoomCallback and SceneObject.removeUiZoomCallback
DESCRIPTION:
Provides a new way to get a callback from a uiZoomChange event, such that callbacks associated with SceneObjects with higher 'hierarchy depth' values occur earlier.

TITLE:
Inspector Optimizations
DESCRIPTION:
Many of the UI objects have been optimized to not populate certain components unless needed. Also recursion has been removed from several internal processes.

TITLE:
HierarhcyPanel Rework
DESCRIPTION:
SceneObject representatives are now populated asynchronously to avoid performance issues with large Scenes. A search bar has also been added, as well as an 'expand/collapse all' button.

TITLE:
Added nc.maxReconciliationTime, and nc.maxHiddenReconciliationTime
DESCRIPTION:
Values to limit 'computational pile-ups' for projects with heavy computational tasks.











----------------------------------------------------------
Section 99: 2025.06.29.00.00.00
----------------------------------------------------------


TITLE:
Added SceneObject.excludeChildrenFromBlueprint
DESCRIPTION:
A way to ensure that automatically populated children are accidentally duplicated in Constructs.











----------------------------------------------------------
Section 100: 2025.06.28.00.00.00
----------------------------------------------------------


TITLE:
Introducing Transcript Panel
DESCRIPTION:
Now you can add, edit, and remove transcript phrases from within the new 'Transcript' panel.











----------------------------------------------------------
Section 101: 2025.06.13.00.00.00
----------------------------------------------------------


TITLE:
AppEvent Rework
DESCRIPTION:
AppEvents have been reworked and unified internally in Incisor. New features include ordered AppEvents, as well as 'consumable callback' AppEvents. It should be noted that the parameters for AppEvent.addCallback have been changed in a way that may not be backwards compatible.











----------------------------------------------------------
Section 102: 2025.06.11.00.00.00
----------------------------------------------------------


TITLE:
TypeScript Generation: Remove Previously Generated TypeScript Bug Fixed
DESCRIPTION:
There was an issue with the package.json file that was causing the removal of old files to fail.

TITLE:
HUD Scroll Selection Stability
DESCRIPTION:
New scroll-select algorithm produces a more stable and usable interface.

TITLE:
Auto_Select Timeline on Open
DESCRIPTION:
Now when you open a new Timeline panel it opens the Timeline that is currently open in any other Construct panels, if applicable.

TITLE:
Alphabetized Construct Menu, Construct-Timeline Menu
DESCRIPTION:
For increased usability...











----------------------------------------------------------
Section 103: 2025.06.10.00.00.00
----------------------------------------------------------


TITLE:
Fixed Issue with New-Member Signup
DESCRIPTION:
Issue related to email confirmation resolved.











----------------------------------------------------------
Section 104: 2025.06.07.00.00.00
----------------------------------------------------------


TITLE:
Added nc.appEvents.start and nc.addLateStartCallback
DESCRIPTION:
These AppEvents/callbacks are useful within CustomAddOns that are used in Constructs to be able to ensure that everything is 'set up' before the code in question runs.











----------------------------------------------------------
Section 105: 2025.06.06.00.00.00
----------------------------------------------------------


TITLE:
Template Library Rework
DESCRIPTION:
Library items are now built as templates, with the user determining the name when they add them to the project. Also, templates for extensions, CustomAddOns, and CustomObjects.

TITLE:
CodeAssets Now Available in TypeScript
DESCRIPTION:
You can now have a '.codeAsset.ts' file in your Assets directory, and the resulting code asset will be converted into an associated JavaScript when the TypeScript is compiled.

TITLE:
Construct 'Sub-Name' Bug Fix
DESCRIPTION:
There was a bug that caused one Construct to overwrite another Construct upon saving changes if their names ended in the same characters. This bug has been fixed.











----------------------------------------------------------
Section 106: 2025.05.30.00.00.00
----------------------------------------------------------


TITLE:
Button.addReleaseCallback bug fix
DESCRIPTION:
When published and run on touch devices, Button.addReleaseCallback was experiencing issues.











----------------------------------------------------------
Section 107: 2025.05.29.00.00.00
----------------------------------------------------------


TITLE:
Added Sound.swoopVolume
DESCRIPTION:
...Interpolates the volume over the designated period of time.











----------------------------------------------------------
Section 108: 2025.05.27.00.00.00
----------------------------------------------------------


TITLE:
Introducing CustomObjects
DESCRIPTION:
CustomObjects have been added... Define a new class that inherits from any of the standard hierarchy-bound objects (such as SceneObject, GraphicObject, etc...) and then register that object with Incisor to enable your custom object to be added to Constructs within the GUI.











----------------------------------------------------------
Section 109: 2025.05.20.00.00.00
----------------------------------------------------------


TITLE:
Bug Fix: Post-Enabled EffectController Reset
DESCRIPTION:
In certain situations, enabling objects would cause effect controllers to have 'stuck' values. Effect controller values are now 'dirtied' upon an object being enabled

TITLE:
Bug Fix: 'Number' Effect Controllers Getter Wrong at Instantiation
DESCRIPTION:
Efforts made to sync the primary and passdown controller values for 'number' typed controllers were previously broken, causing issues in some situations.

TITLE:
Bug Fix: Minification Combined with 'RunBeforeInit' Sections
DESCRIPTION:
Such sections weren't being pulled through into the compiled file when minification was turned on.

TITLE:
Default TypeScript Compilation Target Changed to ES2017
DESCRIPTION:
This cleans up the typescript generated code for asynchronous functions a lot without raising serious compatibility concerns.

TITLE:
PlaybackController.autoplay is becoming PlaybackController.autoplayWhenInConstruct
DESCRIPTION:
For clarity.











----------------------------------------------------------
Section 110: 2025.05.13.00.00.00
----------------------------------------------------------


TITLE:
ProjectSettings: UiTextField Focus Fallback Bugs Fixed
DESCRIPTION:
Certain UiTextFields in the ProjectSettings popup were causing focus issues when they were edited.

TITLE:
Introducing CustomAddOns
DESCRIPTION:
CustomAddOns can now be defined in code assets and added to various SceneObjects using the inspector.

TITLE:
Restored Undo/Redo Functionality for TextBoxes
DESCRIPTION:
While typing in a TextBox, you can undo and redo. This functionality was accidentally disabled in January and has been restored.

TITLE:
TextBoxes: 'Hold Shift for New Line'
DESCRIPTION:
Now, if a TextBox's 'returnEndsEditing' property is true, you can still hold 'shift' to get a new line.

TITLE:
Added TextAssembly.getCharacters
DESCRIPTION:
Returns an array of GraphicObjects...











----------------------------------------------------------
Section 111: 2025.05.05.00.00.00
----------------------------------------------------------


TITLE:
Added: nc.useNearestPixelRenderingForAllUiItems
DESCRIPTION:
A way to set the default value of 'useNearestPixelRendering' for all of the 'UI' objects at once.

TITLE:
Project Settings Popup: Loading Tier Removal Bug Fix
DESCRIPTION:
A bug related to removing loadingTiers in the ProjectSettings is fixed.

TITLE:
SpriteSetter: Key GraphicAsset Selection Updated
DESCRIPTION:
Now uses the improved GraphicAsset selection popup...

TITLE:
Constructs: Buttons can now be added Directly to Constructs
DESCRIPTION:
The option to add Buttons is now in the GUI, and Constructs will reproduce the Buttons correctly.











----------------------------------------------------------
Section 112: 2025.04.30.00.00.00
----------------------------------------------------------


TITLE:
LiveViewPanel: Single Step 'screenUpdate'
DESCRIPTION:
To ensure that all of the callbacks associated with a given live-view-single-step (when the user presses the single step button) Incisor now forces a screen update in the target project with each step.

TITLE:
MaskGroup Predefinition Files
DESCRIPTION:
MaskGroup definitions can now be stored in the 'main.maskGroups' file within the Assets directory.

TITLE:
MaskGroups Management in GUI
DESCRIPTION:
MaskGroups can now be managed from within the GUI via ObjectPanel->masking->maskGroups.

TITLE:
JavaScript Strict Mode No Longer Enforced
DESCRIPTION:
In previous versions, Incisor enforced JavaScript 'strict mode'. Now the user can add that restriction if they want.











----------------------------------------------------------
Section 113: 2025.04.29.00.00.00
----------------------------------------------------------


TITLE:
GraphicObject: Masking API Change
DESCRIPTION:
Masking-related items are now accessible through GraphicObject.masking. See updated documentation for more information.

TITLE:
Timelines Panel: Stray Keyframe Dropping Bug Fix
DESCRIPTION:
In some scenarios, scrubbing the playhead could cause a random keyframe to drop. This has been fixed.

TITLE:
AssetSettings Panel: Erroneous Red Error Removed
DESCRIPTION:
Projects with more assets would produce a red error on load if the AssetSettings panel was open. This has been fixed.











----------------------------------------------------------
Section 114: 2025.04.25.00.00.00
----------------------------------------------------------


TITLE:
Pdfs: Added PdfSection.setMargins
DESCRIPTION:
For ease of use.

TITLE:
Pdfs: Added the ability to add Tables to TextFrames.
DESCRIPTION:
New functionality...

TITLE:
ParticleSytems: Added the '.particleSysDef' asset format.
DESCRIPTION:
ParticleSystemDefinitions are no longer meant to be solely stored as '.codeAsset' files (but they still can be). Now you can use the 'create new' button in the GUI to create a new ParticleSystemDefinition (based on any existing ParticleSystemDefinition or one of several templates), which is stored in an associated 'particleSysDef' file in the project's 'Assets' directory. Any ParticleSystemDefinition backed by a '.particleSysDef' file has full undo/redo functionality in the GUI.

TITLE:
Object Panel: Timeline Editor Scene Objects Blocked from Editing
DESCRIPTION:
Most of the functionality in the Object panel has no permanent affect on objects inside of a Timeline Editor Scene, so to help users avoid what has been a super common mistake, we've blocked the Object panel entirely when such an object is selected, and added a 'go to NeutralState' button, which is where the associated changes can be made correctly.

TITLE:
Deprecation Schedule Actions Taken
DESCRIPTION:
Deprecations made current through to today, with the next round scheduled for 2025.06.01. See the 'DeprecationSchedule' for more information.











----------------------------------------------------------
Section 115: 2025.04.23.00.00.00
----------------------------------------------------------


TITLE:
nc.loadingTiers auto-complete bug fixed
DESCRIPTION:
Auto-complete for 'nc.loadingTiers' was connected to the index values of the loading tiers instead of being connected to the numeric tier designations themselves. This has been fixed.











----------------------------------------------------------
Section 116: 2025.04.22.00.00.00
----------------------------------------------------------


TITLE:
ProjectSettings Popup Window: Font Definitions
DESCRIPTION:
Fonts definitions can now be edited from within the project settings popup window.

TITLE:
ProjectSettings Popup Window: Loading Tier Definitions
DESCRIPTION:
Loading Tier definitions can now be edited from within the project settings popup window.

TITLE:
ProjectSettings Popup Window: Font Reduction Settings
DESCRIPTION:
Font reduction settings can now be edited from within the project settings popup window.











----------------------------------------------------------
Section 117: 2025.04.21.01.00.00
----------------------------------------------------------


TITLE:
Re-open Control Center Feature Removed
DESCRIPTION:
Now, as soon as all Incisor tabs are closed, the app closes...











----------------------------------------------------------
Section 118: 2025.04.21.00.00.00
----------------------------------------------------------


TITLE:
TimelinePanel: Graph Editor Alignment Bug Fix
DESCRIPTION:
Bug fixed: the graph editor was mis-aligned with the keyframe graphic objects.











----------------------------------------------------------
Section 119: 2025.04.17.00.00.00
----------------------------------------------------------


TITLE:
Timeline: Double Tap Timescale
DESCRIPTION:
Now you can double tap the time scale bar to zoom the timeline into full visibility within the timeline editor.











----------------------------------------------------------
Section 120: 2025.04.16.00.00.00
----------------------------------------------------------


TITLE:
Application Settings GUI Rework
DESCRIPTION:
Completely new panel - streamlined look and improved usability.

TITLE:
Project Settings GUI Rework
DESCRIPTION:
Completely new panel - streamlined look and improved usability.

TITLE:
Switching Timelines in Construct Panel Changes Selected SceneObject
DESCRIPTION:
Now if you choose a different Timeline in the Construct panel or choose to add a new Timeline the Construct instance in the associated editor is automatically selected.

TITLE:
Timeline Panel: Default Filtering Off
DESCRIPTION:
An issue where the filtering button may be left on when creating a new Timeline was thought to have been fixed but persisted in some scenarios. This has been fixed now.

TITLE:
ApplicationSettings: maxUndoStates bug fixed
DESCRIPTION:
It is now functioning correctly.

TITLE:
LayoutStack.border Documentation Fix
DESCRIPTION:
It was listed twice, which was affecting the TypeScript API.

TITLE:
nc.phrases and nc.phraseIDs Restored in TypeScript
DESCRIPTION:
These members were missing from autocomplete in TypeScript and are no longer missing.

TITLE:
ProjectSettings: 'usingTypeScript' indicator set correctly
DESCRIPTION:
The indicator erroneously always displayed as true. This has been fixed.

TITLE:
ProjectSettings: New Configuration Name Bug
DESCRIPTION:
If the auto-generated name already existed, no new configuration was created. This has been fixed.

TITLE:
ProjectSettings: 'limitPublishedBuildsKept' is now a Project-Wide Setting
DESCRIPTION:
Previously it was a per-configuration setting. Now you can set the value and it just manages the total number of published builds











----------------------------------------------------------
Section 121: 2025.04.09.00.00.00
----------------------------------------------------------


TITLE:
Timeline Management Popup Added to Construct Panel
DESCRIPTION:
Now you can add timelines, remove timelines, duplicate timelines, and set the default timeline for a given Construct by clicking 'Manage Timelines'

TITLE:
TextBox Drag, Double Click, and Triple Click Bug
DESCRIPTION:
There were several associated bugs with TextBoxes caused by a low level malfunction in button drag functionality related to removing the requirement for drag threshold. This has been fixed.

TITLE:
TextBox Copy Paste Bug Fixed
DESCRIPTION:
In Windows, there were issues with copying and pasting with TextBoxes. This has been fixed.

TITLE:
Timeline Panel Playhead and Column Divider Bug Fix
DESCRIPTION:
Some of the organizational graphics were getting cut off and no longer are.

TITLE:
Timeline Panel Persistence Bugs Fixed
DESCRIPTION:
Open Close SceneObject, Graph Editor Open, and the zoom and location of the timescale weren't always properly persisting and now they are.











----------------------------------------------------------
Section 122: 2025.04.04.00.00.00
----------------------------------------------------------


TITLE:
Keyframes and Curve Handles Have Larger Button Areas and Rollover Animations
DESCRIPTION:
...for ease of use...

TITLE:
Editing Project Extensions Refreshes Browser
DESCRIPTION:
Every time a file change is detected within the project extensions directory, the browser will reload.

TITLE:
Timeline Panel State Persistence Improved
DESCRIPTION:
The open/close states of SceneObjects listed in the timeline panel are working now, along with the open/close state of graph editors.











----------------------------------------------------------
Section 123: 2025.04.02.00.00.00
----------------------------------------------------------


TITLE:
GUI Blank Tab Bug Fixed
DESCRIPTION:
There was a bug that resulted in the browser opening blank tabs while attempting to show the Incisor GUI. This has been fixed.

TITLE:
'Run as Administrator' no longer required for Windows
DESCRIPTION:
Port acquisition has been reworked so administration mode is no longer required.











----------------------------------------------------------
Section 124: 2025.03.31.00.00.00
----------------------------------------------------------


TITLE:
GraphicAsset Selection PopupWindow Added
DESCRIPTION:
For ease of use when selecting from a larger number of GraphicAssets.

TITLE:
Timeline Filter Button No Longer Defaults On
DESCRIPTION:
The default view is unfiltered.

TITLE:
Delete Items From Anywhere Bug Fixed
DESCRIPTION:
The keyboard input for deleting an object from the Hierarchy panel was lacking a singular focus requirement, and so keyboard commands were affecting selected items from anywhere. This has been fixed.











----------------------------------------------------------
Section 125: 2025.03.27.00.00.00
----------------------------------------------------------


TITLE:
Timeline Display Functionality Updates
DESCRIPTION:
In the Timeline panel: Added expand/collapse all button, 'show' button, and 'sort' button. Also made the state of those buttons, as well as the expanded/collapsed state of SceneObjects persistent.











----------------------------------------------------------
Section 126: 2025.03.26.00.00.00
----------------------------------------------------------


TITLE:
ProjectTranscript and PhraseID Functionality Added
DESCRIPTION:
Added nc.phraseIDs, nc.phrases, and nc.getPhrase, as well as TextBox.phraseID and TextAssembly.phraseID. In addition, phraseID is now 'capturable' via Constructs.











----------------------------------------------------------
Section 127: 2025.03.25.00.00.00
----------------------------------------------------------


TITLE:
Incisor Extensions Fleshed out and Documented
DESCRIPTION:
Added IncisorExtensions object and functionality. Also, Incisor now includes the 'SampleProjectExtensions.js' file in new projects, and the 'SampleGlobalExtensions.js' in the Incisor application support directory.











----------------------------------------------------------
Section 128: 2025.03.21.00.00.00
----------------------------------------------------------


TITLE:
Item Drag Extends Outside of Inspector Panels
DESCRIPTION:
Now if you are dragging a supervisor in the GUI to affect its value, you can continue to drag outside of the panel that contains it without the drag being interrupted.

TITLE:
Added 'CursorInputOverrideButton.allowExtendedDrag'
DESCRIPTION:
Flag determining if items within the inner scene associated with a CursorInputOverrideButton can be dragged outside of the bounds of the viewing camera.

TITLE:
Inspector KeyboardEvent Bug Fix
DESCRIPTION:
The 'Incisor Panel Refactor' fix introduced a bug that didn't allow keyboard input through the inspector to the project. This has been fixed.











----------------------------------------------------------
Section 129: 2025.03.20.00.00.00
----------------------------------------------------------


TITLE:
Windows Installation Bug Fixed
DESCRIPTION:
In some situations, installation was failing on Windows causing Incisor to not be able to find the WMPL executable.

TITLE:
Incisor Panel Refactor
DESCRIPTION:
Inspector panels have been reworked in the Incisor GUI to better prepare for making them available for customization in Incisor Extensions.











----------------------------------------------------------
Section 130: 2025.03.14.00.00.00
----------------------------------------------------------


TITLE:
TypeScript Critical Error Fixed
DESCRIPTION:
TypeScript projects entirely failed to open. Now fixed!

TITLE:
Construct Component Minification
DESCRIPTION:
Minification has been reworked to provide more robust detection and matching of tokens between Construct files and project code.











----------------------------------------------------------
Section 131: 2025.03.12.00.00.00
----------------------------------------------------------


TITLE:
fileIO.copyTo bug fixed
DESCRIPTION:
This was failing to default the 'rename' option internally... now fixed.

TITLE:
UiPoppWindow.setDecisionButtons layering issue fix.
DESCRIPTION:
There was an issue when calling 'setDecisionButtons' after changing the layers of a UiPopupWindow. Layers for decision buttons are now defaulted to the background of the given UiPopupWindow.











----------------------------------------------------------
Section 132: 2025.03.08.00.00.00
----------------------------------------------------------


TITLE:
Incisor Extensions Added!
DESCRIPTION:
Include javascript files in the 'Utilities/ProjectExtensions' in the project or '(ApplicationSupportDirectory)/Global Extensions' to extend the Incisor inspector with custom functionality.

TITLE:
nc.recreateObjectFromBlueprint returns root object
DESCRIPTION:
Previously, this function was returning an array with a single object in error. Now, the appropriate SceneObject is returned.

TITLE:
'includeDescendants' parameter included in nc.gatherObjectBlueprint
DESCRIPTION:
Now you can decide if you want to recurse into the descendants or not.

TITLE:
added 'nc.duplicateViaBlueprint'
DESCRIPTION:
The user can use the same system that is used by Constructs to duplicate SceneObjects or collections of SceneObjects by calling 'nc.duplicateViaBlueprint'











----------------------------------------------------------
Section 133: 2025.03.05.00.00.00
----------------------------------------------------------


TITLE:
Layers Bug Fix
DESCRIPTION:
The 'subLayers' calculation for GraphicObjects had a bug that allowed for subLayers to push GraphicObjects outside of the bounds of their layers. This bug has been fixed.

TITLE:
CodeAsset Format Update
DESCRIPTION:
The code asset file format has changed. The file extension has changed from '.codeAsset' to '.codeAsset.js'. In addition code that is meant to be run 'on init' must now be marked with the 'CODE.runBeforeInit___begin' and 'CODE.runBeforeInit___end' tags, otherwise, code in code asset files will be placed in the 'class' scope, so that classes can be accessible in ProjectCode classes. Code assets using the older format will be updated and tags will be automatically added.

TITLE:
CODE.preserveStart -> CODE.preserve___begin,  CODE.preserveEnd -> CODE.preserve___end
DESCRIPTION:
Change made for consistency and clarity.











----------------------------------------------------------
Section 134: 2025.03.04.00.00.00
----------------------------------------------------------


TITLE:
GraphicExpander: ExpandableWidth duplicate reference in documentation fix
DESCRIPTION:
GraphicExpander.expandableHeight was mis-labeled as GraphicExpander.expandableWidth

TITLE:
TypeScript Code Iteration Bug Fixed
DESCRIPTION:
There was an issue in typescript projects where 'npm run build' was sporadically causing multiple refresh messages to go to the Incisor client, which was causing issues.











----------------------------------------------------------
Section 135: 2025.02.27.12.29.02
----------------------------------------------------------


TITLE:
Timelines: New numeric-type AnimatedProperties available
DESCRIPTION:
The following numeric properties can now be animated in Construct Timelines: all GraphicExpander components; GraphicObject.subLayer; PlaybackController.time, PlaybackController.value, PlaybackController.playbackRate, for Timelines, SpriteSetters, and ParticleSystems; Timeline.influence

TITLE:
Timelines: New boolean-type AnimatedProperties available
DESCRIPTION:
The following booleans can now be animated in Construct Timelines: the 'enabled' flag on all SceneObjects; the 'visible' flag on GraphicObjects; 'useAdditiveBlendingMode' on GraphicObjects.

TITLE:
Timelines: New function-invocation-type AnimatedProperties available
DESCRIPTION:
The following functions are now Timeline-Keyframe-invocable: play, pause, stop, and playOnce can be called on Timelines, SpriteSetters, and ParticleSystems; playOnceWithInfluence and playOnceAsEvent can also be called on Timelines

TITLE:
Timelines: SwoopInfluence, PlayOnceAsEvent, PlayOnceWithInfluence, PlayWithInfluence methods added
DESCRIPTION:
New helper functions to play and manipulate influence on Construct Timelines.

TITLE:
PlaybackControllers: autoplay and initialTime added
DESCRIPTION:
All PlaybackControllers including Timelines, SpriteSetters, and Particle systems now have 'autoplay' and 'initialTime' properties. These new properties make it easier to explicitly determine the initial time of Timelines in newly instantiated Constructs, as well as their playback state.

TITLE:
Inspector Hierarchy Panel: Inappropriate changes blocked
DESCRIPTION:
In the GUI, certain changes to SceneObjects in the TimelineEditorScene have been blocked. Blocked changes include reparenting, renaming, removing objects, and adding objects. These changes should only happen in the NeutralState of a Construct.

TITLE:
Publishing Analytics Panel Updated
DESCRIPTION:
Reworked for stability... Also, a 'Current Configuration' mode has been introduced so that users can see what it will look like if they publish in the current configuration.

TITLE:
Incisor failing to open in Windows bug mitigated
DESCRIPTION:
Some Windows defender configurations (in Windows 11) were preventing Incisor from hosting the HttpListeners and WebSockets it depends on. As a result, we've had to make running Incisor as 'an administrator' a requirement. Our intent is to investigate ways to remove this requirement in the future.

TITLE:
Intermitant graphic locking up bug fixed
DESCRIPTION:
On some systems, the Incisor inspector would cause Chrome and Safari garbage collection to become overwhelmed over time. In some cases this was causing significant freezing/locking of the browser. This has been fixed by implementing low-level systemic memory reuse.

TITLE:
GraphicExpander: API Reworked
DESCRIPTION:
GraphicExpanders have been reworked to have a more intuitive interface, they are now either in 'symmetric' mode, or not. When in symmetric mode you deal with width and height, otherwise you determine all of the bounds. Everything should be entirely backward compatible with clear deprecation messaging.

TITLE:
Construct: SceneObject-descendant duplication bug fixed
DESCRIPTION:
In certain circumstances, duplicating SceneObjects (or copying and pasting them) would result in multiple SceneObjects having the same UID, which led to all kinds of issues with Timeline keyframes disappearing etc... This bug has been fixed.

TITLE:
Buttons: Default PauseImmunity bug fixed
DESCRIPTION:
The default pauseImmunity of Buttons was not being set to nc.defaultPauseImmunity, and now it is.

TITLE:
Layers: Move to Scene without layers bug fixed
DESCRIPTION:
There was a bug where reparenting a GraphicObject into a Scene without its Layer was causing it to disappear. Now, the given GraphicObject's layer is remapped to DefaultLayer in this case.











----------------------------------------------------------
Section 136: 0000.00.00.00
----------------------------------------------------------


TITLE:
Template Change Item
DESCRIPTION:
This is where the description of the change goes...
