Inner Space Releases

Inner Space version 1.16 Build 6651
Released: 2019-12-10
  • World of Warcraft Classic 1.13.3 compatibility update. Existing Game Profiles for WoW Classic that have been broken by 1.13.3 will automatically be fixed.
  • LavishGUI 2
    • Fixed a bug where Input Hooks inappropriately blocked inputs
    • Fixed crashes with composite animation type
    • Fixed crash with re-defined element animations
    • Fixed issues with table "cellSpacing" applying incorrectly
    • Package "animationTypes" property now an array rather than an object
  • LavishScript
    • Data Sequences now support a tilde character ~ to convert to string and Escape. For example, ${Name.Escape} can now be ${Name~}, and this works on all object types rather than just string.
    • Fixed string.Escape handling of certain characters
    • jsonvalue:WriteFile[filename] now uses the correct relative path base

Inner Space version 1.16 Build 6640
Released: 2019-11-12
  • Fixed a crash with various input devices, including certain Corsair gaming keyboards
  • LavishScript
    • New Object Type: webrequest
    • New Task type: webrequest
    • New Enums: ewebrequeststate, ewebrequestas

Inner Space version 1.16 Build 6638
Released: 2019-11-11
  • Fixed an issue with the Lavish Crash Reporter window not coming up
  • Roblox compatibility update
  • World of Warships compatibility update
  • Input control names from "alternative input devices" are now unique, now prefixed with their manufacturer and product IDs. This will not affect devices already cached in InputDevices.XML. Deleting InputDevices.XML will cause the new control names to be generated for your input devices if desired.
  • Implemented a new Agents system. An Agent handles various events.
  • MIDI
    • Input devices should now be automatically released by background windows, prioritizing the foreground window. Devices can be selectively retained by setting Retain
    • Fixed a crash with MIDI output devices
    • midi:OpenAllDevicesIn and OpenAllDevicesOut no longer require the devices to already be detected
    • bool midiindevice.Retain
    • midiindevice:SetRetain[bool]
    • midioutdevice:SendSysEx[...]
  • LavishGUI 2
    • Fixed a crash when an element is destroyed during its own onButtonMove/onMouseButtonMove hook
    • Fixed a Direct3D 9 reset bug
    • Fixed bugs with canvas re-initialization
    • Fixed canvas opacity levels
    • Fixed scrollviewer performance
    • Fixed an issue where clicking on an element, and moving the mouse away while held, would leave the element in a clicked state
    • Fixed a bug with windows warping when clicking back into an Inner Space window
    • Fixed a bug where Items could modify the wrong Item List with a forwarded event
    • Fixed a bug where events from alternative input devices always showed up as the Keyboard
    • Fixed a crash with Input Hooks adding and removing Input Hooks
    • Fixed a reference leak with lgui2item:SetSelected
    • Fixed issues with anchor to an element
    • Elements, Brushes, and Fonts should now keep usnig their original, intended Skin, even if others are in use
    • window elements accept keyboard focus by default, fixing unintended click-through
    • button elements now have onVisualPress/onVisualRelease in addition to onPress/onRelease
    • scrollviewer with 0 scrollbarsize now acts like scrollbars are disabled
    • popup elements now close if their logical parent is no longer visible
    • table element implementation rounded out. Row and Column numbering is now 1-based
    • table elements now support "autoFill" to automatically assign a row and column to child elements
    • combobox popups now anchor to the combobox
    • listbox.contentContainer split to its own template
    • Packages now support "metaScripts"
    • Data Bindings now support a "pullHook", an Event Hook which Pulls when a specified event is fired on a given element
    • New input control type "data"
    • New event on all elements "onControlData", for interpreting device feedback (including MIDI SysEx messages)
    • New event on all elements "onRefresh", e.g. for refreshing values prior to rendering
    • New events on all elements for specific keys, such as "onEnterPress"/"onEnterRelease" and a few dozen other keys
    • Skins can now explicitly specify a "base" skin name, which they inherit. If not specified, they will use "default"
    • Brushes now support an "imageBrush", the name of a Brush to use for an image
    • Brushes instantiated by Skins now keep images loaded
    • LGUI2.DataBindingContext is now also used for Triggers
    • lgui2layer now has :Unload versions of all :Load methods
    • Fixed lgui2brush:SetColor
    • lgui2:UnloadSkinFile
    • lgui2item:Remove
    • lgui2databinding:PushValue
    • lgui2databinding:PullValue
    • lgui2brush:SetImageBrushName[name]
    • unistring lgui2brush.ImageBrushName
    • float lgui2border.MaintainAspectRatio
    • lgui2border:SetMaintainAspectRatio[float]
    • int lgui2table.AutoFillFirstRow
    • int lgui2table.AutoFillLastRow
    • int lgui2table.AutoFillFirstColumn
    • int lgui2table.AutoFillLastColumn
    • lgui2table:SetAutoFillRows[int first], lgui2table:SetAutoFillRows[int first, int last]
    • lgui2table:SetAutoFillColumns[int first], lgui2table:SetAutoFillColumns[int first,int last]
  • LavishScript 1.102
    • Added Little Monsters to Script preprocessor (NOT available in DataParse/ExecuteCommand or Console command entry, etc):
  • $$> <$$ - Shrinkwrap
  • $$[ ]$$ - Shrinkwrap and Escape
    • Scripts now get an ID
    • Scripts now get a Retain flag. endscript * does not end scripts with the Retain flag
    • objectdef methods can now return a bool value, for the same behavior as built-in type methods
    • MetaScripts implemented. MetaScripts are defined in JSON and will contain both code and metadata (such as documentation)
    • mkdir command now makes all required parent directories too.
    • Fixed a crash with jsonvalueref getting set to a null jsonvalue
    • Fixed a crash issue with jsonarray:ForEach
    • New types: agent, function, metascript
    • New Top-Level Object: function Function
    • agent innerspace.Agent[#]
    • agent innerspace.Agent[name]
    • innerspace:AddAgent[json]
    • jsonarray array.AsJSON
    • jsonarray jsonobject.Keys
    • jsonarray jsonobject.Values
    • uint script.ID
    • metascript script.MetaScript
    • bool script.Retain
    • script:SetRetain[bool]
    • metascript lavishscript.MetaScript[#]
    • metascript lavishscript.MetaScript[name]
    • metascript lavishscript.LoadMetaScript[filename]
    • metascript lavishscript.LoadMetaScriptJSON[json]
    • lavishscript:LoadMetaScript[filename]
    • lavishscript:LoadMetaScriptJSON[json]
    • jsonobject type.Metadata
    • jsonobject scriptobjecttype.Metadata

Inner Space version 1.16 Build 6593
Released: 2019-10-11
  • Star Wars The Old Republic "NodeSpechCache" error fixed
  • Fixed an issue with certain Virtual Files being created as folders
  • Fixed a new issue with launching certain games since build 6583
  • LavishGUI 2
    • Fixed an issue with textblock padding
    • Fixed a crash issue with commandbox
    • Fixed a bug with selection in textbox context menus being off by one item
    • Fixed an issue where relative file paths did not work properly for some Brushes
    • Fixed an issue with switching Brushes in a style by using the string form
    • Item Lists now support new events for specific mouse clicks "onItemMouse1Press" "onItemMouse1Release" "onItemMouse1DoubleClick" up to Mouse5
    • Item Lists default Item View Generator does a better job at wrapping Elements in an itemview when used directly as Item Data
    • lgui2item lgui2itemlist.ItemByValue[json]

Inner Space version 1.16 Build 6587
Released: 2019-10-07
  • Fixed a new launching issue with World of Warcraft Launcher

Inner Space version 1.16 Build 6586
Released: 2019-10-07
  • Fixed a launching issue with ISBoxer EVE Launcher and other .NET apps

Inner Space version 1.16 Build 6585
Released: 2019-10-07
  • Fixed EverQuest 2 "DirectX 9.0c" error
  • Fixed MIDI:OpenAllDevicesIn and MIDI:OpenAllDevicesOut

Inner Space version 1.16 Build 6583
Released: 2019-10-07
  • Fixed various crashes and other issues when launching a game instance (session)
  • Fixed "invalid build" error that occurs for some people when when clicking "Install Now" in the Patcher window
  • Fixed "refresh token required" error that occurs for some people when they need to log in again, but apparently forgot their login information
  • DxNothing is now included with Inner Space
  • Lord of the Rings Online: Added a workaround for the blue display bug, which seems to be LOTRO's Direct3D 10 support calling SetDeviceGammaRamp with bad data...
  • Logitech G502 Mouse new version compatibility update
  • RSI Launcher (Star Citizen) compatibility update
  • Game detections added for Legends of Aria and Star Citizen
  • MIDI Input Device support added. MIDI devices are not enabled automatically, but can be enabled and handled purely by a script, or by LavishGUI 2.
  • LavishGUI 2
    • Package files now support "includes" and "optionalIncludes" arrays, which specify additional Package files to load prior to loading any of its own assets
    • Fixed an issue with "jsonTemplate" not applying properly when a default template was specified internally. This fixes templating "tab" and other elements
    • Fixed issues with opacity not applying correctly
    • Fixed an issue with Item Lists that do not initially specify a "defaultItemViewTemplate"
    • Fixed an issue where combobox margins incorrectly affected the size of its contents
    • Fixed an issue with clicking to activate an Inner Space window, after having previously left the window with the cursor over a LavishGUI 2 element
    • Fixed an issue with tooltips not disappearing when the owner is hidden
    • Fixed a rendering issue with negative element sizing
    • Fixed unhandled exceptions from LavishScript accesses to various data bindings, when those bindings are not set
    • Fixed several issues with scrollviewer, scrollbar ranges and rendering issues
    • Brushes now support a "canvas" property
    • Skins now have brush and font registries under "brushes" and "fonts" properties
    • Font styles now support "globalFont", to base font properties off of instead of the parent element's font
    • Item Lists now use 1-based indexing for LavishScript
    • lgui2item.Index is now 1-based
    • Item Lists now properly auto-push the selectedItemBinding
    • comboboxes now properly auto-pull the selectedItemBinding
    • Item Lists now support "itemsBinding", meant for use in changing data sources. If automatic pull is enabled, it will be restricted to "once" behavior.
    • Elements with Data Bindings now have events (such as "pullCheckedBinding" and "pushCheckedBinding") that can pull/push the bindings
    • Elements with Data Bindings now have LavishScript Members/Methods to access, pull and push the bindings
    • Window elements now implement anchor, and include anchor properties in placement storage
    • Window elements now support "resizable" "widthResizable" and "heightResizable"
    • textblock now supports "horizontalContentAlignment" and "verticalContentAlignment"
    • combobox now supports "selectedItemViewTemplate" property, to use a template other than "comboboxselection"
    • Input events and bindings now include MIDI control support, with new properties "controlChannel" and "devicePort"
    • New control type "Note" and device type "MIDI"
    • New input event on all elements "onNoteMove"
    • New Input Hooks system implemented. All elements now support "inputHooks"
    • Input binding strings now interpret a name prefixed with "MIDI:" as a MIDI control
    • New element types "canvas", "knob" (partially implemented), "sensitivebutton"
    • New LavishScript types lgui2databinding, lgui2anchored, lgui2canvas, lgui2canvasrenderer, lgui2knob, lgui2sensitivebutton
    • LavishScript types lgui2table, lgui2page, lgui2pagecontrol now implemented
    • bool lgui2window.IsHeightResizable, .IsWidthResizable
    • lgui2window:SetHeightResizable[bool], :SetWidthResizable[bool]
    • jsonvalue lgui2element.Tooltip
    • lgui2element:SetTooltip[json]
    • lgui2item:SetSelected[bool]
    • lgui2item lgui2itemlist.ItemByProperty[json]
    • lgui2item lgui2itemlist.ItemByProperty[propertyName,json]
    • lgui2itemlist:Sort, :Sort[-reverse], :Sort[propertyName], :Sort[-reverse,propertyName]
    • lgui2brush lgui2skin.Brush[name]
    • lgui2fontstyle lgui2skin.Font[name]
    • lgui2skin:SetBrush[name,json]
    • lgui2skin:SetFont[name,json]
    • lgui2canvasrenderer lgui2brush.Canvas
    • lgui2brush:SetCanvas[json]
  • LavishScript 1.101
    • string string.Trim
    • string string.ReplaceSubstring[substring,replacement]
    • mutablestring:Prepend[value]
    • bool bool.Not
    • settingsetref innerspace.Configuration, innerspace.GameConfiguration, innerspace.InputConfiguration
    • setting settingset.Get[set1,...,settingName] - Shortcut to access settings within one or more nested sub-sets
    • settingset:AddSetting[set1,...,settingName,value] - Shortcut to create sub-sets and settings
    • settingset:AddSet[set1,...] - Shortcut to create nested sub-sets
    • settingset.AsJSON and setting.AsJSON replace the previous .JSON members, and the output no longer produces extraneous commas
    • Added an optional -lazy switch to jsonvaluecontainer:SetValue, jsonvalue.Assert, jsonarray:Add, jsonarray:Set, and jsonobject:Set. When given, any json value that would otherwise produce a parsing error will be accepted as a JSON string value.
    • Added support for any number of values in jsonarray:Add, jsonarray:Set, jsonobject:Set
    • jsonobject.AsJSON output now comes in the order added
    • collection.Get[key] is now an alias for collection.Element[key]
    • unistring collection.AsJSON[multiline,array,AsJSONMemberName]
    • unistring index.AsJSON[multiline,AsJSONMemberName]
    • unistring set.AsJSON[multiline]
    • collection:FromJSON[...,json]
    • index:FromJSON[...,json]
    • persistentref is now weakref. The type is still also available as persistentref for compatibility
    • weakref now sets to NULL in cases where it previously rejected a value
    • New type jsonvalueref, works like weakref except is a strong reference to a jsonvalue
    • New :ForEach[code] method added to array, index, collection, set, jsonarray, jsonobject
    • New type keyvaluepair provides Key and Value...
    • New Top-Level Object "ForEach" provides a keyvaluepair during ForEach calls
    • New Top-Level Object "MIDI" gives access to the midi object
    • New types midi, midiindevice, midiinevent, midioutdevice

Inner Space version 1.16 Build 6535
Released: 2019-09-03
  • World of Warcraft Launcher (Battle.net) compatibility update
  • Fixed compatibility with EverQuest's LaunchPad
  • LavishGUI 2
    • Item Lists now support "selectedItemBinding" and "selectedItemBindingProperty"

Inner Space version 1.16 Build 6530
Released: 2019-09-02
  • WoWVoiceProxy.exe will be blocked from running by default, due to a number of reported performance issues
  • Fixed a bug where clicking Install Now before patch information was received would show an "invalid build" error
  • Added a button to check for updates. This can only be used once every 5 minutes, and will fade if currently unavailable.
  • XKeys XK-24 compatibiliy update
  • Heroes of the Storm compatibility update
  • LavishGUI 2
    • Most elements now support new events for specific mouse clicks "onMouse1Press" "onMouse1Release" "onMouse1DoubleClick" up to Mouse5
    • All elements now support "eventHandlers", "styles", "hooks", "triggers", and "contextMenu" in Styles
    • border elements now support "child" in Styles
    • border elements now support "horizontalContentAlignment" and "verticalContentAlignment" properties
    • expander elements now rely on "onHeaderMouseButtonMove" and "onHeaderButtonMove" to be forwarded from the header
    • combobox has been reworked as a headered content container, and now properly handles Item View Generators
    • Data Bindings now have additional properties "pullOnce", "pullReplaceNull" and "pushNullFormat"
    • Embedded LavishScript code updated:
  • Embedded code should either be a string, or an array. Cases that previously did not accept arrays, such as defining an event handler in array form, now do
  • Code arrays now accept any JSON value types
  • "code" event handlers now properly set "This" to the owner element and not the source (which is available via Context.Args.Source)
  • Objects will be embedded in-line and escaped, simplifying embedding JSON within embedded LavishScript
  • Inner arrays will concatenate the contents together to form a single string.
    • Fixed a crash with scrollviewer when it has no scrollbar defined
    • Fixed a crash with listbox when using RemoveItem during an onItemMouseButtonMove Hook
    • Fixed a crash with lgui2popup:ToggleOpen[x,y]
    • Fixed lgui2itemlist:MoveItem
    • Fixed several cases where horizontalAlignment/verticalAlignment ignored margins
    • Content container elements now support a boolean "fitContentContainer" property
    • listbox scrollviewer contentContainer now stretches its content
    • lgui2element lgui2border.Child
    • lgui2border:SetChild[json]
    • elgui2verticalalignment lgui2border.VerticalContentAlignment
    • lgui2border:SetVerticalContentAlignment[elgui2verticalalignment]
    • elgui2horizontalalignment lgui2border.HorizontalContentAlignment
    • lgui2border:SetHorizontalContentAlignment[elgui2horizontalalignment]
    • float lgui2wrappanel.ChildWidth, float lgui2wrappanel.ChildHeight
    • lgui2wrappanel:SetChildSize[#], lgui2wrappanel:SetChildSize[width,height]
    • lgui2itemlist lgui2itemview.ItemList
    • lgui2item lgui2itemview.Item
    • ... lgui2.DataBindingContext - when processing a Data Binding, this provides context (the element or object with the data binding)
    • Types updated for use with persistentref: lgui2animateargs, lgui2eventargs, lgui2itemviewgeneratorargs, lgui2eventhandler, lgui2inputbinding, lgui2radialgaugeneedle, lgui2trigger
  • LavishScript
    • New type "innerspacesession", in Inner Space Sessions only
    • New Top-Level Object: innerspacesession ISSession, in Inner Space sessions only
    • uint mouse.DoubleClickTime (in ms)
    • uint mouse.DoubleClickHeight
    • uint mouse.DoubleClickWidth
    • Added "string AsJSON" members to bool, int, int64, uint, float, float64, string
    • Fixed a bug with bool.Equal always returning NULL if its value was FALSE