Skip to content

Releases: androme13/JIB

JIB V0.2.0.0 Alpha

13 Jun 10:43
68b8848

Choose a tag to compare

JIB.Service

Changed

  • Trigger output merge now resolves background and LED independently across primary and secondary value-map entries. Previously, the first matched entry controlled both outputs; if the primary entry disabled LEDs, the secondary entry's LED color was silently ignored even when it explicitly enabled them.
  • Media runtime workspace now republishes per-application display functions for active audio sessions across all active Windows render endpoints, not just the default audio route.
  • Media per-application runtime functions are now retained briefly after a session vanishes, reducing host-side function churn during short Windows audio-session restarts.
  • USB probe responses now include a classified diagnostic verdict plus per-interface HID details, so box bring-up can distinguish exact cases such as no enumeration, HID usage mismatch, access denied, invalid handle, device lost, and transport-level failure instead of exposing only raw counters.
  • Box-validation summaries now produce clearer user-facing failure causes for the Configurator Debug verdict, so runtime diagnostics can explain which host-side validation stage blocked a box instead of falling back to a generic review message.
  • Host startup now runs a database health/migration check and publishes the resulting database state to the Configurator, including automatic live-mapping upgrades or normalization applied at startup.

Fixed

  • Value-map LED and background triggers now fire regardless of the provider's StateHint. Previously, trigger outputs required the provider to report Warning or Alert, silently ignoring explicit per-value LED/background colors when the provider considered the state normal.
  • Media per-application volume actions now push an immediate runtime-state refresh, reducing visible latency on app-specific Increment / Decrement controls.
  • Media runtime state no longer drops or swaps per-application displays immediately when Windows briefly tears down an app audio session before recreating it.
  • Service startup no longer crashes silently when TCP ports are still in TIME_WAIT from a previous instance. The host now retries port binding up to 10 seconds with clear log messages before giving up.
  • Service startup now logs each initialization phase (input dispatch, autonomous render, scene automation, health checks, TCP bind, event stream) so that startup crashes are traceable in service.log.
  • Unhandled exceptions on background threads (USB callbacks, native interop) are now caught by a last-resort handler and written to service.log before process termination.
  • Hardware plugin Start/Stop/Dispose failures are now isolated per plugin, preventing one failing driver from blocking the others.
  • SimHub transport startup errors are now caught and logged instead of producing unobserved task exceptions.
  • HostLogger file handle is now properly closed on shutdown instead of leaking the log stream.
  • Service shutdown now respects the Generic Host cancellation timeout (15s) instead of blocking indefinitely if a subsystem hangs.
  • Plugin hot-reload no longer leaks the previous input dispatch service, preventing zombie handlers from dispatching hardware events through a disposed plugin registry.
  • System Monitor plugin no longer stops publishing metrics after a service restart due to a race condition where OnSubscriptionsChanged killed the polling timer before it had a chance to fire its first update.
  • Long-press CancellationTokenSource objects are now disposed in dispatch Reset() instead of leaking until GC finalization.
  • Composite workspace revision counter now uses Interlocked.Increment for thread-safe increments across concurrent TCP handlers.
  • Plugin hot-reload debounce no longer invokes the reload callback after StopWatcher() has been called during shutdown.
  • Global box validation now includes touch-button LCD surfaces in the rendered diagnostic pass, aligning touch-button behavior with the existing LCD button and LED validation flow.

JIB.Configurator

Changed

  • Preview trigger output merge now resolves background and LED independently across primary and secondary value-map entries, matching the service-side fix.
  • The Debug tab now exposes a dedicated USB probe panel with a clear verdict, targeted recommendations, interface-level HID details, clipboard export, text export, and a support-bundle ZIP export for user-facing box diagnostics.
  • The Debug USB probe panel now uses the shared SectionPanel structure more consistently and adds fast support actions: exact diagnosis copy, logs-folder opening, one-click probe + support bundle, and host-context capture inside the exported archive.
  • Debug diagnostics are now organized around a single Diagnostic report panel that aggregates USB probe and manual VID/PID bring-up results, and it now guides the user step by step on which diagnostic to run next and when to export the support bundle.
  • The Debug tab now defaults to a single guided diagnostic assistant with one main action, a consolidated verdict, executed-step cards, and recommendation cards, while individual probes and raw export tools are grouped under an advanced collapsible panel.
  • The Debug tab now exposes a single user-facing box verdict (OK, To confirm, Attention, Blocked) so users can immediately tell whether a box looks operational in JIB instead of interpreting raw USB counters.
  • The main diagnostic report now surfaces an Exact cause line sourced from the USB probe or the live runtime validation summary, keeping the actionable failure reason visible without opening the advanced panels.
  • Support exports and copied diagnostic reports now start with the consolidated box verdict, next action, and exact cause before the source-level USB and runtime details.
  • Manual VID/PID analysis now stays in the main guided-diagnosis flow while the advanced panel is reduced to raw bring-up detail, making the Debug layout more linear and easier to follow.
  • The Configurator now surfaces the host database state globally in the connection header and in the Hosts database panel, including whether the database is already OK, was upgraded automatically at startup, or needs attention.

Fixed

  • Runtime display subscriptions now keep their exact assigned function when a dynamic source disappears temporarily, instead of silently falling back to another currently published function in the Configurator.
  • Display-function drops from the Controls palette now resolve the target by ProviderId + FunctionId, avoiding cross-provider selection drift when catalogs expose overlapping function ids.
  • Controls action palettes and action editors now hide runtime-function catalogs such as media-functions, mouse-functions, and similar provider display catalogs. Runtime display sources remain available only in the Display section instead of leaking into Actions.
  • Unhandled UI-thread exceptions are now caught and logged instead of crashing the application.
  • Unobserved task exceptions from fire-and-forget async calls are now logged instead of being silently lost.
  • Second instance no longer leaks the DI host when forwarding activation to the primary instance.
  • MainWindowViewModel now properly disposes its ConnectionHeader, cancels pending auto-saves, and stops the surface preview scheduler on window close.
  • Plugin auto-save tasks are now cancelled when the Plugins section is deactivated, preventing orphaned network calls during shutdown.
  • Surface preview scheduler now stops promptly on shutdown via cancellation token instead of spinning until conditions expire.
  • Event stream service no longer blocks the UI thread for up to 1 second during window close.
  • Application shutdown no longer risks hanging as a ghost process if an early cleanup step throws before Exit() is reached.
  • UDP host discovery no longer leaks an abandoned ReceiveAsync task when the discovery timeout expires, eliminating SocketException(995) unobserved exceptions at startup.
  • Run VID/PID analysis now re-enables correctly when a box pre-fills valid VID/PID values after device selection.
  • Run VID/PID analysis and the related guided-diagnosis actions now refresh correctly after the initial startup/device refresh completes, fixing the startup case where the button stayed grayed out even though valid values were already displayed.

JIB.Hardware.StreamDock

Changed

  • StreamDock USB probing now classifies bring-up failures explicitly and returns per-interface HID metadata, including usage page, usage id, interface number, transport open result code, and symbolic transport error name.
  • USB probe verdicts now describe direct-HID mismatches more accurately for user diagnostics: a missing StreamDock-compatible HID endpoint is reported as a direct-HID limitation to confirm with runtime validation, not as a blanket box incompatibility verdict.

JIB.Plugin.Media

Added

  • Dynamic per-application display functions are now published for active audio sessions, including live volume gauge + mute state cards such as audio.app.firefox.level.

Changed

  • Per-application audio discovery now scans every active render endpoint instead of relying only on default endpoints, so apps routed to a non-default device still appear in Media actions and displays.
  • Pressing per-application volume actions now refreshes the corresponding runtime display state immediately instead of waiting for the periodic discovery scan.
  • Per-application audio functions are now retained briefly after a session disappears, stabilizing audio.app.* mappings and avoiding short-lived swaps when Windows tears down and recreates an app session.

Fixed

  • Media no longer misses browser or app sessions that are playing on an active but non-default Windows audio endpoint.
  • Per-application display cards no longer swap or drop immediately during s...
Read more

JIB V0.1.5.5 Alpha

11 Jun 14:17
68b8848

Choose a tag to compare

JIB.Service

Changed

  • Trigger output merge now resolves background and LED independently across primary and secondary value-map entries. Previously, the first matched entry controlled both outputs; if the primary entry disabled LEDs, the secondary entry's LED color was silently ignored even when it explicitly enabled them.

Fixed

  • Value-map LED and background triggers now fire regardless of the provider's StateHint. Previously, trigger outputs required the provider to report Warning or Alert, silently ignoring explicit per-value LED/background colors when the provider considered the state normal.
  • Service startup no longer crashes silently when TCP ports are still in TIME_WAIT from a previous instance. The host now retries port binding up to 10 seconds with clear log messages before giving up.
  • Hardware plugin Start/Stop/Dispose failures are now isolated per plugin, preventing one failing driver from blocking the others.
  • SimHub transport startup errors are now caught and logged instead of producing unobserved task exceptions.
  • HostLogger file handle is now properly closed on shutdown instead of leaking the log stream.
  • Service shutdown now respects the Generic Host cancellation timeout (15s) instead of blocking indefinitely if a subsystem hangs.
  • Plugin hot-reload no longer leaks the previous input dispatch service, preventing zombie handlers from dispatching hardware events through a disposed plugin registry.

JIB.Configurator

Fixed

  • Swipe event slots now persist correctly when created empty first, so Swipe left / Swipe right no longer disappear immediately after save.
  • The swipe action drop flow now targets the selected swipe event slot instead of forcing Press, so actions dropped onto Swipe left / Swipe right stay attached to the intended gesture.
  • Controls autosave now ignores transient None action cards while they are still being configured, preventing fresh swipe actions from disappearing during immediate reloads.
  • Composite Controls saves now clear the draft state for the exact saved touch-page scope, fixing the stale-draft loop when switching between multiple touch pages while editing swipe actions.
  • Swipe controls in the hardware surface now accept drag-and-drop directly on their Swipe left / Swipe right affordances instead of only supporting click selection.
  • Unhandled UI-thread exceptions are now caught and logged instead of crashing the application.
  • Unobserved task exceptions from fire-and-forget async calls are now logged instead of being silently lost.
  • Second instance no longer leaks the DI host when forwarding activation to the primary instance.
  • MainWindowViewModel now properly disposes its ConnectionHeader, cancels pending auto-saves, and stops the surface preview scheduler on window close.
  • Plugin auto-save tasks are now cancelled when the Plugins section is deactivated, preventing orphaned network calls during shutdown.
  • Surface preview scheduler now stops promptly on shutdown via cancellation token instead of spinning until conditions expire.
  • Event stream service no longer blocks the UI thread for up to 1 second during window close.
  • Application shutdown no longer risks hanging as a ghost process if an early cleanup step throws before Exit() is reached.