Releases: androme13/JIB
Releases · androme13/JIB
Release list
JIB V0.6.2.0 Alpha
JIB.Service
Added
- Runtime render subscriptions now support explicit display-slot metadata for primary and secondary metric source keys, allowing host rendering and profile-default enrichment to target the intended provider channel instead of assuming the first two descriptor entries.
- Host startup migration now rewrites runtime function subscriptions to the new display-slot metadata model and reports/removes subscriptions that cannot be migrated cleanly instead of keeping ambiguous legacy mappings.
- Host startup normalization now rewrites SimHub learned-data keys from the alpha-only
subject|FUNCTION|FIELDshape to the canonicalsubject|FUNCTION.FIELDshape before plugin-data views consume them. - Host startup now normalizes persisted control render profiles to the new unified value-map model (
Value/Range) and logs the migration result as part of the database/state check. LegacyExactValue/TextValuepayloads are rewritten to the canonicalMatchValuefield instead of being carried indefinitely in runtime code. - Control render profiles now support a dedicated trigger button-background option, allowing a matched trigger/value-map background rule to recolor the local key or touch-button surface without relying on the global box background path.
Changed
- Touch-button headers now place the metric role tag on the primary-value side and the action title on the opposite side, so cards such as Network read as
DOWNover the download value andUPover the upload secondary block. - Runtime-state button payload construction is now centralized through a dedicated render payload factory, so device frames, Configurator previews, touch buttons, secondary screens, and trigger evaluation all share the same subscription display-slot handling.
- Touch-button metric rendering now uses the premium compact dashboard layout with a header tag, larger primary value, optional secondary block, threshold-tinted ambience, bottom rail fill, and bottom trend graph support.
- Touch-button trend rendering now supports dual primary/secondary series, so cards such as network download/upload can show both histories in the same bottom graph.
- Touch-button metric cards no longer use the legacy perimeter gauge on touch-button surfaces; gauge progress is rendered as the bottom rail used by the new layout.
- Runtime function rendering now derives single versus dual composition from the selected display slots: no secondary source renders as single, while an explicit secondary source renders as dual when the target surface supports it.
- Control render profiles no longer apply persisted static button background, border, top-level accent/text-color, layout-mode, or layout-density overrides. Composition is driven by display slots, trend is controlled per metric channel, title visibility/text remain explicit title overrides, and dynamic background/LED output remains handled by value-map rules.
- Runtime render payload mapping now ignores legacy provider-declared primary/secondary metric lanes when channelized state is available, resolving the rendered lanes only from display-slot source keys.
- Control-render resolution now treats per-channel value maps as one coherent model for text and numeric equality matches. Host matching no longer splits logic between separate
ExactandTextrule families. - Runtime render-profile application and payload resolution now stay channel-scoped end to end: selected display-slot source keys drive value maps, metric-kind overrides, thresholds, units, trend visibility, and label overrides through the same path for previews and device rendering.
- Touch-button secondary metric rendering now uses the resolved metric text color when one is provided by the active value-map/profile path, instead of forcing the legacy muted secondary text tint.
- Trigger background resolution now keeps box-wide background output and button-local background tinting as two separate behaviors, so screen backgrounds are left to the existing global trigger path while button surfaces can opt into local recoloring.
- Secondary display metrics no longer drive whole-card state ambience or implicit trigger fallbacks. Auxiliary states such as app-volume mute now stay local to the displayed value unless a value-map rule explicitly enables background or LED outputs.
Fixed
- Touch-button and secondary-screen preview payloads rebuilt from live runtime state now apply the same subscription display-slot metadata as the physical box render path. Selecting a touch button in the Configurator preview no longer falls back to the wrong primary/secondary channels while the box renders correctly.
- SimHub host-owned runtime render adapters now resolve preview and disconnected-state payloads through the same channel/display-slot path as normal runtime rendering, preventing stale labels such as
STATEfrom appearing whenSpeedor another channel is selected. - Runtime channel payload mapping now preserves
ChannelIdas the render source key when a provider does not publishSourceKey, keeping value-map rules attached to the selected channel instead of silently missing their target. - Runtime render-profile default enrichment now treats metric profile overrides as channel-scoped. Switching a selected runtime channel from mapped state fields to raw values such as
Speed,Ignition,AbsLevel, orTcLevelclears stale value maps, metric-kind overrides, custom labels, unit overrides, thresholds, gauge/fill overrides, and trend overrides from the previous channel. - Host render-profile application now ignores metric-level overrides whose stored
ChannelSourceKeydoes not match the payload channel, preventing old runtime mappings from forcing the wrong value text, renderer kind, unit visibility, thresholds, or trend state on the selected telemetry. - Runtime payload mapping now keeps text metrics text-driven instead of formatting fallback numeric zeroes into
"0", so empty boolean/status-off states no longer render as ghost metrics or keep blank telemetry slots artificially visible. - Grouped SimHub
DRIVER_AIDSpayloads now retitle single-family selections such as migratedABSandTCbuttons to the selected aid instead of keeping the genericDriver Aidstitle. - Compact square primary-only rendering now gives the main metric more usable space on 96px-class buttons while keeping 96px dual-channel rendering available when a secondary channel is selected.
- Touch-button dashboard rendering now honors
ShowHeader=falsefor the right-side title while keeping the left-side channel label visible on metric touch buttons. - Host database status now reports SimHub learned-data key normalization explicitly when startup rewrites alpha rows to the canonical metric-key format.
- Value-map text-color overrides are now respected on touch-button secondary values. A mapped state such as SimHub
Ignition,Engine,Flags, or similar no longer falls back to the muted secondary renderer color when the rule explicitly provides a text color. - Host-side runtime/profile normalization now keeps text-oriented value maps and numeric-equality value maps on the same persisted shape, preventing save/reload drift between Configurator editing, host preview, and autonomous device rendering.
- Runtime control-render profile migration now realigns persisted value-map match keys to the canonical descriptor values published by each runtime function channel. In practice, alpha-era profiles such as media
Muteare rewritten back to numeric0/1identifiers while preserving the user-defined labels, icons, colors, and LED outputs attached to those states. - Touch-button runtime payloads now pass through the same control-render profile resolver as main keys and preview payloads. Value-map label, icon, color, and LED overrides on touch buttons are no longer silently ignored while the raw runtime state still renders.
- Touch-button rendering no longer applies provider-specific semantic fallbacks after payload resolution. Title text, labels, meta text, colors, and icons now come from the resolved host payload instead of being rewritten locally to values such as
GLOBAL VOL,MUTE, or synthetic volume icons. - Touch-button secondary panels now render the resolved secondary metric icon itself. Secondary value-map icons such as app-volume mute/unmute states are now visible on the box instead of being silently dropped by the touch-button layout.
- Matched value-map entries with an explicit blank
LabelTextnow clear the raw runtime value instead of falling back to it. Icon-only secondary states can now occupy the slot cleanly without showing values such as0.
JIB.Configurator
Added
- Configurator navigation now includes an always-available
Aboutpage in the footer, keeping project information, maintainer credits, website and GitHub links, current build version, and alpha-tester greetings outside the main shell files. - A first English user guide for the Configurator is now available as Markdown, with a detailed
Controlstab guide, clickable table of contents, quick start, common recipes, all main Configurator tabs, glossary, screenshots, and structured troubleshooting. - Release package builds now copy the Configurator user guide and its screenshot media into
Docs\, so packaged builds include end-user documentation alongside the host, Configurator, and plugins. - The
Triggerpanel now exposes a dedicatedButton backgroundtoggle so trigger-matched value-map rules can recolor the local button surface without being confused with the global box background output.
Changed
- Runtime function display source editing now lives directly inside the
PrimaryandSecondarychannel tabs. Users choose which provider channel feeds each rendered lane instead of relying on provider-declared primary/secondary defaults. - Control render-profile composition now follows the se...
JIB V0.6.0.0 Alpha
JIB.Service
Changed
- Autonomous StreamDock background preparation now uses explicit known-family surface definitions for
N3,N4,N4 Pro,M18,M3, andXLinstead of relying only on heuristic screen metadata. Firmware-gatedN1background rendering remains disabled until firmware detection is reliable. - DeviceHost now listens on
127.0.0.1by default. LAN exposure is no longer the default runtime posture and must be enabled explicitly through host settings. - DeviceHost network binding is normalized to two supported modes only: local loopback (
127.0.0.1) or explicit LAN exposure (0.0.0.0). Arbitrary listen-address persistence is no longer accepted. - IPC handling now receives the remote TCP endpoint context and applies a server-side access policy before dispatching sensitive requests. Mutating host operations and admin commands are restricted to loopback clients even if LAN access is enabled.
- Plugin setting descriptors returned to clients now redact secret values. Secret
CurrentValueandDefaultValuefields are replaced with empty strings, while aSecretConfiguredflag lets clients show that a secret exists without exposing it. - Empty updates for secret plugin settings are ignored server-side, so opening or saving a plugin settings form no longer clears an already configured secret unless the user provides a new value.
- DeviceHost database exports now remove plugin settings marked as secrets from the exported SQLite copy before returning it to the client.
Fixed
- StreamDock
N3startup splash no longer emits touchscreen-button splash frames when the device profile has no validated touch-button logical range, preventing those frames from interfering with the native background image channel.
Removed
- Removed the direct unredacted database export path from the settings store. Host database export now goes through the redaction-aware byte export path only.
JIB.Configurator
Added
- StreamDock device cards now expose the per-box transport policy selector for every known StreamDock family, letting users force native HID for validation or force legacy SDK when a candidate path misbehaves.
- Settings now exposes a
Network accesssection with an explicitAllow LAN connectionstoggle. Leaving it disabled keeps the DeviceHost bound to local loopback only; enabling it opts into LAN reachability. - Plugin setting rows now show a
Secret configuredchip when the host reports that a secret value exists without returning the secret itself.
Changed
- Controls
Scenes,Pages, andTouch pagesnow rely on the card-selection indicator alone for the current item. The redundantActive/Selectedchips were removed to reduce repeated status noise while keepingDefault,Home,Auto, andLockedbadges intact. - Host settings saves now preserve the current network-access mode in every composite host-settings snapshot, including saves triggered from other Configurator screens. Changing mappings or device settings can no longer silently reset the host back to loopback-only or LAN mode.
- Secret plugin settings are now treated as write-only from the Configurator perspective. Existing values are not displayed, and an empty secret field does not overwrite an already configured secret.
Fixed
- Controls action/event editing no longer rebuilds the slot-mapping editor when the selected scope and effective bindings are unchanged. Opening or adjusting an action no longer sporadically refreshes the panel and jump the page back to the top.
- Explicit event deletions are now filtered consistently inside the Configurator slot-mapping reload path. After deleting an event, the editor no longer replays the host delete marker as an empty event that must be removed a second time.
- Runtime-function assignments now keep a scoped local draft and saved replay state across same-selection refreshes. Provider/function edits and camera-source changes no longer get wiped by an incidental Configurator rebuild before the workspace snapshot catches up.
- Control render-profile editing now keeps per-control draft and saved replay state instead of rebuilding blindly from the last persisted snapshot. Same-scope refreshes no longer discard unsaved appearance changes or immediately overwrite freshly saved overrides with stale runtime data.
- Scene, page, and touch-page rename inputs now preserve the in-progress text for the current selection across harmless UI refreshes instead of snapping back to the last loaded label mid-edit.
- Host palette and host device settings now preserve in-progress local edits across background reloads instead of reloading stale host snapshots over the editor and silently clearing the pending state.
- Device rotation and init-clear drafts now survive device-card refreshes for the same hardware identity. A background device refresh no longer recreates the card with saved values and drops an unsaved rotation or startup-reset selection.
- Plugin settings now reuse the existing per-key editors across reloads and preserve local draft replay when the host briefly republishes stale settings. Opening the Plugins tab, receiving plugin-health refreshes, or reloading after a save no longer wipes in-progress plugin setting edits or reverts a freshly saved value to the older snapshot.
- The Datas tab now reloads the provider-specific dataset when the selected provider changes. Switching providers no longer leaves the previous provider subject list and reset targets visible under the new provider header.
- Plugins and Transports now clear their stale cards when the Configurator loses the manual host session or a full reload fails, instead of continuing to present the last known remote state as if it were still actionable.
- Host settings reset on the Hosts tab now triggers a full host refresh before the success state is surfaced. The selected DeviceHost panel no longer keeps stale settings or stale node-summary details visible immediately after a reset.
- Manual host endpoints are now persisted only after a successful RPC handshake, both in the main connection header and in the secondary host-connection panel. A failed connection attempt no longer overwrites the last known good manual endpoint with an unreachable target.
- Realtime Configurator event handlers now route async refresh work through a guarded UI-dispatch path instead of posting raw
asynclambdas into the dispatcher queue. Background provider/workspace/render notifications no longer risk surfacing unobserved UI refresh exceptions. - Transport start and stop actions now surface command failures explicitly and still reload the transport list afterward. A failed transport command no longer disappears silently while leaving the page summary out of sync with the actual host state.
JibPathIconnow guards async SVG loading with per-source versioning and safe fallback clearing. Rapid icon source changes no longer risk applying a stale geometry or leaking an unobserved async failure.- Controls mapping imports now validate the export scope before applying anything and reject mismatched
control/page/devicefiles with explicit feedback instead of attempting a silent partial import. - Controls page, touch-page, and folder navigation actions now remap their target ids during import together with the target control page structure. Imported navigation mappings no longer fall back to the first available target page when the source ids differ on the destination device.
- Controls page/device batch imports now apply all matching controls against the live revision stream and reload the workspace once at the end instead of forcing a full workspace reload after every imported control.
- Controls page/device batch imports now also keep their local runtime-subscription snapshot in sync between each applied control and automatically roll back already-applied controls if a later target is rejected. Partial imports no longer leave mixed runtime-function assignments behind.
- Controls mapping export/import now reports cancellation, empty payloads, host-side rejections, and incompatible files explicitly through editor status and notifications instead of failing as silent no-ops.
- DeviceHost database backup/restore now validates SQLite payload integrity on both download and upload. Invalid host exports, empty files, and non-SQLite local uploads now fail early with explicit errors instead of reaching the file save step or the host import command with bad content.
- Plugins and Datas tab background reload triggers now run through observed tasks instead of raw fire-and-forget calls. Connection changes, timers, and provider-selection refreshes no longer hide unexpected async failures.
- Host preview/UI dispatch helpers now fail fast when a dispatcher post is rejected instead of awaiting forever on a task that can never resume, and host device-settings reload failures are now logged explicitly instead of being swallowed silently.
- Touch-page layout edits now carry the loaded workspace revision through every scene/page/folder/touch-page save issued by the layout editor. Concurrent Configurator or host updates no longer risk being overwritten silently by a stale page-layout save.
- Page and folder inline renames now update the targeted card in place instead of selecting that page first. Renaming another page from the list no longer changes the active page as a side effect.
- Scene inline renames now update the targeted scene in place instead of selecting that scene first. Renaming another scene from the list no longer changes the active scene as a side effect.
- Renaming a touch page from the touch-page lists no longer changes the currently active touch page first. Inline rename now updates the target touch page in place instead of navigating the workspace as a side effect.
- The touch-page chip strip now detaches per-page change subscriptions before rebuil...