Inner Space Releases

Inner Space version 1.19 Build 7260
Released: 2024-04-11
1.19 Build 7260
  • Stability fixes
  • Fixed an intermittent crash during startup in some DirectX 11 games
  • Updated DxNothing game detection
  • New Virtual Input:
    • Fixed an issue with mouse button release in Direct Input games (e.g. EverQuest)
    • Fixed an issue with multi-PC mouse control
    • Joystick API is now disabled by default
    • Improved handling of input device unplugging/re-plugging
    • Fixed handling of data from some input devices
    • Added native device support for Razer Tartarus Pro, iBuffalo Classic USB Gamepad (SNES)
    • Added linux API support (various /dev endpoints)
    • Fixed an issue with double inputs in City of Heroes
  • LavishScript:
    • Fixed an issue with weakref initialization when making inter-script script-defined member/method calls

Inner Space version 1.19 Build 7248
Released: 2024-02-09
  • Path of Exile compatibility update
  • EVE Online Launcher compatibility update
  • Stability fixes
  • WindowCharacteristics command no longer accepts 0x0 as a valid size
  • Fixed an issue with Direct3D 11-12 monitor selection
  • New Virtual Input:
    • Fixed an issue with mouse cursor locking in Direct Input games (e.g. EverQuest)
    • Fixed platform-out handling of MIDI inputs
    • Improved handling of input device unplugging/re-plugging

Inner Space version 1.19 Build 7242
Released: 2024-01-25
  • EverQuest 1: Fixed some graphics related issues
  • Fixed a framerate issue in some Direct3D11-12 games (notably EverQuest 1's new Direct3D11 engine)
  • New Virtual Input:
    • Fixed a mouselook issue with low Windows mouse speed settings
    • Windows mouse speed and precision setting changes now take effect immediately
    • Improved handling of high resolution mouse input
  • Old Virtual Input:
    • Fixed modifiers getting stuck when switching windows

Inner Space version 1.19 Build 7233
Released: 2024-01-18
  • Stability fixes
  • Removed automatic Diablo 3 Client profile creation
  • New Virtual Input:
    • Added Stream Deck XL support
    • Fixed an issue with Lord of the Rings Online showing blank key names
    • Improved performance
    • Fixed an issue with "stuck" modifier keys when switching windows
    • Fixed incorrect mouse position after moving game client window
    • Fixed some issues with mouselook
    • Added settings file NUVI.Settings.json, soon to also have configuration GUI
    • Input devices and APIs can be disabled via settings, when necessary for stability or performance
    • Improved default behavior for various devices
    • Improved startup times
  • LavishScript:
    • audio:AddStream[string name,wavetable,string ldiopatchName,float wavetableDuration,float bufferDuration,bool repeating]
  • Lavish Device I/O Framework:
    • New patch types pattern-sequencer, pattern-sequencer-view, wavetable, wavepanel, audio-wave

Inner Space version 1.19 Build 7217
Released: 2023-09-27
  • Fixed Add Game window scaling
  • Fixed compatibility with QT5 applications (e.g. some game launchers)
  • New Virtual Input:
    • Fixed jittery mouse movement in some cases (e.g. EVE Online dragging windows)
    • Fixed an issue with left/right modifier states
    • Fixed Num Lock in Direct Input games (e.g. EverQuest 1)
    • Fixed SWGEmu GetDeviceData error
    • Improved default handling of device input reports
  • LavishScript:
    • bool input.TrackInputReports
    • input:SetTrackInputReports[bool newValue]
    • ldio:LoadPackageFile[string filename, <string commandOnComplete>]
    • ldio:UnloadPackageFile[string filename, <string commandOnComplete>]
    • ldio:LoadPackage[jsonvalueref joPackage, <string commandOnComplete>]
    • ldio:UnloadPackage[jsonvalueref joPackage, <string commandOnComplete>]

Inner Space version 1.19 Build 7213
Released: 2023-09-21
  • New Virtual Input fixes:
    • Fixed Right Alt, Right Control and Pause keys in Direct Input games (e.g. EverQuest 1)
    • Fixed an issue with held modifiers in some games (e.g. EverQuest 2)
    • Fixed a freeze issue

Inner Space version 1.19 Build 7208
Released: 2023-09-18
  • New Virtual Input fixes:
    • Double-click fixed
    • Fixed Windows "Swap Mouse Buttons" behavior
  • Stability fixes
  • Fixed next/previous session ordering
  • WindowSize and WindowCharacteristics command -fullscreen options now use the size of the screen the window is currently on

Inner Space version 1.19 Build 7204
Released: 2023-09-15
  • New setting "Disable New Virtual Input"
    • Disabling New Virtual Input will cause Inner Space to use its old Virtual Input system. If using this setting to work around issues, please make sure the issue gets reported!
  • EVE Launcher: Fixed loading settings
  • EVE Launcher Beta: Compatibility fixes
  • EVE: Fixed a crash affecting DirectX 12 mode
  • Steam game compatibility fixes
  • Onigiri compatibility fixes
  • Dungeon Defenders 2 compatibility fixes
  • .NET compatibility fixes
  • Diablo 4 compatibility fixes
  • Fixed a crash with Direct3D 12 and NVIDIA Optical Flow (including "Frame Generation" setting in Diablo 4)
  • Star Wars: The Old Republic compatibility update
  • Compatibility fix for some input devices
  • Add Game Window should now appear correctly with display scaling
  • Fixed an issue with Inner Space audio output crashes
  • Added XInput API support, including native support for XBox One controllers
  • Lavish Dynamic I/O framework provides high-level mechanisms for routing and modulating device I/O
  • Improved Uplink rendering performance
  • LavishGUI 2
    • New element "scalepanel" element, based on panel but which can visually scale its contents
    • midipatch is now ldiopatch
  • LavishScript:
    • New LavishScript type ldio (Lavish Dynamic I/O), split from midi
    • New LavishScript types ldioevent, lgui2scalepanel
    • midipatch is now ldiopatch
    • midiscene is now ldioscene
    • lgui2midipatch is now lgui2ldiopatch
    • Removed all MIDI-specific types, and MIDI top-level object
    • ldiopatch ldiopatch.Feedback
    • ldiopatch:SetFeedback[patch]
    • ldiopatch display.Listener
    • ldiopatch display:SetListener[string name]
    • jsonarray display.CaptureDevices
    • ldiopatch display.CaptureListener[string deviceName]
    • display:SetCaptureListener[string deviceName,ldiopatch,bool verticalFlip]
    • jsonarray audio.CaptureDevices
    • string audio.Listener[string deviceName]
    • audio:SetListener[string deviceName, string patchName]
    • float audiovoice.FrequencyRatio
    • audiovoice:SetFrequencyRatio[float newValue]
    • static jsonarray audiovoice.List
    • static audiovoice audiovoice.Get[string name]
    • static audiovoice audiovoice.Get[int id]
    • static audiovoice audiovoice.New[string name]
    • static audiovoice:ForEach[string command,<jsonvalueref joFilter>]
    • static jsonarray audiostream.List
    • static audiostream audiostream.Get[string name]
    • static audiostream audiostream.Get[int id]
    • static audiostream:ForEach[string command,<jsonvalueref joFilter>]
    • ldiopatch keyboard.OutPatch
    • ldiopatch keyboard.InPatch
    • ldiopatch keyboard.Listener
    • ldiopatch keyboard.BackgroundListener
    • ldiopatch keyboard:SetBackgroundListener[string name]
    • keyboard:SetListener[name]
    • keyboard:SetInPatch[name]
    • ldiopatch mouse.OutPatch
    • ldiopatch mouse.InPatch
    • ldiopatch mouse.Listener
    • ldiopatch mouse.BackgroundListener
    • ldiopatch mouse:SetBackgroundListener[string name]
    • mouse:SetListener[name]
    • mouse:SetInPatch[name]
    • ldiopatch inputdevice.InPatch
    • ldiopatch inputdevice.Listener
    • ldiopatch inputdevice.BackgroundListener
    • bool inputdevice.Retain
    • inputdevice:SetRetain
    • inputdevice:SetBackgroundListener[string name]
    • inputdevice:SetListener[name]
    • inputdevice:SetInPatch[name]
    • fixed inputdevice statics .List, .Get, :ForEach
    • innerspace:ConnectHost
    • innerspace:HostRelay
    • innerspace:HostRelayByRef
    • jsonarray webrequest.Headers
    • jsonobject direct3d11.MemoryInfo
    • int64 direct3d11.GPUMemoryBudgetOverride
    • int64 direct3d11.SharedMemoryBudgetOverride
    • direct3d11:SetGPUMemoryBudgetOverride[int64 newValue]
    • direct3d11:SetGPUMemoryReservation[int64 newValue]
    • direct3d11:SetSharedMemoryBudgetOverride[int64 newValue]
    • direct3d11:SetSharedMemoryReservation[int64 newValue]

Inner Space version 1.19 Build 7111
Released: 2023-03-24
  • Diablo 4 compatibility update
  • Battle.net compatibility update
  • Fixed an issue with Direct3D 12 performance and memory usage on some systems
  • Diablo Immortal: Fixed support for various gamepads (e.g. XBox One Controller and similar)
  • Uplink window now accepts drag-and-dropped files
  • Fixed Reshade compatibility on Direct3D12
  • Fixed an issue where the Patcher window allowed clicking Install while sessions were running
  • Inner Space main window now has an Agents window with controls to start or stop them
  • Agent provider system now supports github release listings
  • Fixed an issue with uplink windowing commands via the new relay system
  • LavishGUI 2
    • New element type "dynamic" is a content container whose content is usually provided by a contentBinding
    • New element type "autocompletebox" pairs a textbox with auto-complete functionality
    • New element type "midipatch" is a content container with its Context tied to a MIDI patch
    • Added a relatively easy to use "confirmationWindow" template
    • Fixed a bug where natively supported programmable mouse buttons were not treated as mouse buttons
    • Fixed a bug where the screen element would sometimes not size properly to the window
    • Fixed a bug with skins where templates retrieved from the base skin would not use further templates from the new skin
    • Fixed a bug where global brushes could get modified by applying styles to an element
    • Fixed a bug where brushes were not refreshing correctly after being modified (e.g. when setting an image)
    • Fixed a bug with videofeed/broadcaster elements improperly activating Focus Follows Mouse
    • Fixed input bugs with videofeed/broadcaster elements
    • Fixed a bug with videofeed elements sometimes not automatically refreshing
    • Fixed a bug with clicking checkboxes with "useIndeterminate"
    • Fixed a bug where tooltips were constantly destroyed and re-created while active
    • Fixed a bug where a tooltip would remain visible from an element that gets detached
    • Fixed a bug where context menus would remain open
    • Fixed a bug with dragger element allowing movement while allowMove is false
    • Fixed a bug with scrollviewer stealing mouse focus while "acceptsMouseFocus" is false
    • Fixed bugs with scrollviewer sizing, scroll bars and mouse wheel
    • Fixed bugs with objectview "propertyViewTemplate" and per-property overrides
    • Fixed bugs with onXXXPress/onXXXRelease events
    • Fixed bugs with dragging to resize aligned elements (e.g. a centered winow)
    • Animations defined as part of an element no longer automatically start unless they have "autoStart" set to true
    • textblock now waits for refresh before resolving LavishScript portions of "text"
    • Locate system now supports an element ID as the elementName value string, e.g. "elementName":"123"
    • "task" eventHandlers now use the "default" Task Manager if not specified
    • Fixed input bugs with videofeed, videofeedsource, and broadcaster elements
    • Scrollviewer horizontalScroll and verticalScroll now also accept "fitparent"
    • wrappanel correctly accounts for child margins
    • Elements now support "useOutputTexture" boolean, which defaults to false except for window, canvas, popup
    • itemlist selectedItemBinding no longer off by one when not using selectedItemBindingProperty
    • itemlist items selected prior to view creation now apply "onSelected"
    • listbox items are now selected on release instead of press
    • listbox now supports a boolean "reorderable" property, to reorder via click and drag
    • New listbox event "onReorderCompleted"
    • "method" event handler now properly uses its owner element context, and not the source element context
    • fixed possible infinite loop in "value" animation
    • "value" animation now supports color strings
    • pagecontrol element improvements including page validation and a Finish button
    • Improved overlay element behaviors
    • checkbox now also accepts "pushAsBool" to push checkedBinding as TRUE/FALSE/NULL instead of 1/0/-1
    • contextBinding now always pulls immediately when set
    • Improved itemlist itemsBinding efficiency
    • imagebox now supports "imageBinding"
    • lgui2databinding now supports "pullRequest", a webrequest definition
  • LavishScript
    • New types "autocomplete", "midipatch", "midiscene"
    • Now supporting objectdef(global) and objectdef(script)
    • Fixed a bug with objectdef-owned static variables not shutting down properly in some cases
    • New flags for jsonarray.Has and jsonobject.Has: -notnull, -object, -array, -string
    • Added shorthand op "!=0" to Select queries to test for non-zero
    • Select queries that have "member" or "eval" specified, but no "with" or "op", now have an implied "op" of "!=0"
    • Fixed crashes with jsonobject.SelectValues and jsonarray.SelectValues
    • LavishScript now creates a "default" Task Manager
    • static taskmanager taskmanager.Default
    • int64 string.FindFrom[uint position,string needle]
    • int64 jsonarray.Contains[jsonvalue val]
    • int64 jsonarray.ContainsReference[jsonvalueref val]
    • bool jsonarray.Equal[jsonvalueref other]
    • bool jsonvaluecontainer.Equal[jsonvalueref other]
    • bool jsonobject.Equal[jsonvalueref other]
    • jsonobject jsonobject.Diff[jsonvalueref joOther]
    • bool jsonobject.MatchesSchema[jsonvalueref joSchema]
    • jsonobject jsonobject.GetMatchingSchema[jsonvalueref joSchema]
    • jsonarray.Get[-init,jsonvalue newValue,key]
    • jsonobject.Get[-init,jsonvalue newValue,key]
    • bool lavishscript.SelectEvaluate[weakref testValue,jsonvalueref joSelect]
    • jsonobject lgui2eventargs.AsJSON
    • string lgui2eventargs.Event
    • lgui2element lgui2eventargs.Element
    • elgui2scrollbar.fitparent
    • jsonarray lgui2element.Animations
    • jsonarray lgui2element.InputHooks
    • jsonarray lgui2element.Styles
    • jsonarray lgui2element.Triggers
    • lgui2element:Animate[jsonvalueref joAnimation,bool start]
    • jsonarray lgui2itemlist.ItemsSource
    • lgui2itemlist:SetItemsSource[jsonvalueref ja]
    • lgui2itemlist:RefreshItems
    • lgui2listbox:SetReorderable[bool newValue]
    • bool lgui2listbox.Reorderable
    • lgui2brush:SetImage[weakref binary, uint transparencyColor=0
    • jsonobject lgui2databinding.PullRequest
    • lgui2databinding:SetPullRequest[jsonvalueref joRequest]
    • lgui2databinding lgui2imagebox.ImageBinding
    • lgui2imagebox:PullImageBinding
    • agent:Uninstall
    • agentlisting agentprovider.NewestListing
    • jsonobject agentprovider.AsJSON
    • static agentprovider agentprovider.New[string filename,<jsonvalueref joProvider>]
    • static agentprovider agentprovider.Get[string name]
    • static agentprovider agentprovider.Get[uint id]
    • static agentprovider:ForEach[string command,<jsonvalueref filterQuery>]
    • innerspace:LoadAgentProviderPackage[jsonvalueref jo]
    • static jsonarray lgui2remotecontrol.Senders
    • static bool lgui2remotecontrol.RemoteControlAllowed
    • static lgui2remotecontrol:SetRemoteControlAllowed[bool newValue]
    • static monitor monitor.Get
    • static monitor monitor.Get[uint num]
    • static monitor monitor.Get[string name]
    • static jsonarray monitor.List
    • static monitor:ForEach
    • monitor display.Monitor[string name]
    • jsonobject button.AsJSON
    • static jsonarray button.List
    • static button button.Get[string name]
    • static button button.Get[-id, uint id]
    • static button:ForEach[string command,<jsonvalueref joQuery>]
    • jsonobject axis.AsJSON
    • static jsonarray axis.List
    • static axis axis.Get[string name]
    • static axis:ForEach[string command,<jsonvalueref joQuery>]
    • jsonobject dpad.AsJSON
    • static jsonarray dpad.List
    • static dpad dpad.Get[string name]
    • static dpad:ForEach[string command,<jsonvalueref joQuery>]
    • jsonobject inputdevice.AsJSON
    • static jsonarray inputdevice.List
    • static inputdevice inputdevice.Get[string name]
    • static inputdevice inputdevice.Get[uint id]
    • static inputdevice:ForEach[string command,<jsonvalueref joQuery>]
    • jsonobject bind.AsJSON
    • static jsonarray bind.List
    • static bind bind.Get[string name]
    • static bind:ForEach[string command,<jsonvalueref joQuery>]
    • static jsonarray midiindevice.List
    • static midiindevice midiindevice.Get[uint ID]
    • static midiindevice midiindevice.Get[string name]
    • static midiindevice:ForEach[string command,<jsonvalueref filterQuery>]
    • static jsonarray midioutdevice.List
    • static midioutdevice midioutdevice.Get[uint ID]
    • static midioutdevice midioutdevice.Get[string name]
    • static midioutdevice:ForEach[string command,<jsonvalueref filterQuery>]
    • midioutdevice:SendJSON[jsonvalueref arrayOrObject]
    • midipatch midiindevice.Output
    • midiindevice:SetOutput[weakref patch]
    • midiindevice:SetOutput[string patchName]
    • midiindevice:SetOutput[uint patchID]
    • midiindevice:InsertOutput[weakref patch]
    • midiindevice:InsertOutput[string patchName]
    • midiindevice:InsertOutput[uint patchID]
    • midipatch midiindevice.Feedback
    • midiindevice:SetFeedback[string patchName]
    • midiindevice:SetFeedback[uint patchID]
    • bool midiindevice.Muted
    • jsonobject midiindevice.Metadata
    • midiindevice:SetMute[bool newValue]
    • midiindevice midi.InDevice[string name,uint instance]
    • static midiindevice.Get[string name, uint instance]
    • midioutdevice midi.OutDevice[string name,uint instance]
    • jsonarray midi.PatchTypes
    • jsonarray midi.Patches
    • midipatch midi.Patch[string name]
    • midipatch midi.Patch[uint id]
    • midi:LoadPackageFile[string filename]
    • midi:UnloadPackageFile[string filename]
    • midi:LoadPackage[jsonvalueref joPackage]
    • midi:UnloadPackage[jsonvalueref joPackage]
    • bool filepath.IsDirectory[<string appendFilename>]
    • bool mutablefilepath.IsDirectory[<string appendFilename>]
    • static filepath filepath.Get[string filePath]
    • settingset:ImportJSON[-ref,jsonvalueref jo]
    • (uplink) videofeed:RegisterOtherWindowSource
    • variable type.Create[<scope>, ...]
    • variable scriptobjecttype.Create[<scope>, ...]
    • variable variablescope.Create[string typeName, ... args]
    • int64 variablescope.Used
    • jsonobject webrequest.AsJSON

Inner Space version 1.19 Build 7047
Released: 2022-11-07
  • LavishGUI 2
    • Fixed dockpanel border composition
    • Enabling broadcaster or videofeed element "useLocalBindings" now properly flags the inputs
    • Brushes handle "imageBrush" better when applying styles
  • LavishScript
    • Fixed an issue with static members of several LavishScript types (mainly value types)
    • Fixed an issue where static enum.List always required a parameter
    • Fixed jsonobject.Duplicate and jsonarray.Duplicate
    • Fixed jsonobject:Merge
    • string.ReplaceSubstring now ignores an empty needle (as found in a haystack) parameter
    • Generated atom names used by script object definition members/methods are now more helpful when debugging
    • static type type.Get[string name]
    • static jsonarray type.List[<jsonvalueref filterQuery>]
    • static type:ForEach[string command,<jsonvalueref filterQuery>]
    • lgui2element:ForEachChild[<"logical"|"visual">,string command,<jsonvalueref filterQuery>]
    • jsonarray lgui2.Layers
    • jsonarray lgui2.ElementTypes
    • jsonarray lgui2.AnimationTypes
    • jsonarray lgui2.Skins
    • static jsonarray lgui2layer.List
    • static lgui2layer lgui2layer.Get[<string name>]
    • static lgui2layer:ForEach[string command,<jsonvalueref filterQuery>]
    • static jsonarray lgui2skin.List
    • static lgui2skin lgui2skin.Get[<string name>]
    • static lgui2skin:ForEach[string command,<jsonvalueref filterQuery>]
    • static jsonarray lgui2elementtype.List
    • static lgui2elementtype lgui2elementtype.Get[string name]
    • static lgui2elementtype:ForEach[string command,<jsonvalueref filterQuery>]
    • static jsonarray lgui2animationtype.List
    • static lgui2animationtype lgui2animationtype.Get[string name]
    • static lgui2animationtype:ForEach[string command,<jsonvalueref filterQuery>]
    • static lgui2element lgui2element.Get[int64 id]
    • static lgui2element lgui2element.Get[string name]
    • static lgui2element:ForEach[string command,<jsonvalueref filterQuery>]
    • static lgui2element:ForEachGlobal[string command,<jsonvalueref filterQuery>]
    • jsonobject lgui2skin.AsJSON
    • jsonobject lgui2skin.Templates
    • jsonobject lgui2skin.Brushes
    • float float.Div[#]
    • float float.Mul[#]
    • float:Mul[#]
    • float:Div[#]
    • float64 float64.Div[#]
    • float64 float64.Mul[#]
    • float64:Mul[#]
    • float64:Div[#]
    • uint uint.Div[#]
    • uint uint.Mul[#]
    • uint:Mul[#]
    • uint:Div[#]
    • int int.Div[#]
    • int int.Mul[#]
    • int:Mul[#]
    • int:Div[#]
    • int64 int64.Div[#]
    • int64 int64.Mul[#]
    • int64:Mul[#]
    • int64:Div[#]