Version 1.4 - Release Notes
⚡ Improvements
-----------------------------------------------------------------------
- Pre-populated Sources Traffic Telemetry graphs immediately upon view opening by hydrating sparklines from service-side rolling historical rate buffers and enabling continuous background telemetry polling from GUI startup
- Added distinct '✓ Acknowledged' emerald status badge to acknowledged alerts in System Alerts view, providing clear visual differentiation between active read alerts and acknowledged alerts
- Optimized Rule Execution Telemetry table layout with fixed proportional column widths, compact metric formatting (p95, concise SLA labels), and eliminated horizontal scrollbars to ensure all columns fit smoothly across viewports
- Streamlined Rule Execution Telemetry and Deep Infrastructure header toolbars by removing redundant manual refresh buttons and the 'Active Rules' badge in favor of automatic background telemetry streaming
- Enhanced Rule Preview Execution Inspector layout with a resizable split container that dynamically expands the inspector drawer and all its detail cards across the full resized container width, remembering customized widths across toggles
- Removed redundant AutoScroll checkboxes in Rule Preview header and stream toolbar; incoming execution traces and logs are now continuously appended and auto-scrolled automatically, with stream pausing available for freezing inspection
- Added Reset Metrics button with safety confirmation modal dialog in Sources Traffic Telemetry view, enabling operators to reset bandwidth counters, 24h uptime calculations, reconnect/flapping counters, and RTT/jitter samples from a clean baseline
- Implemented real-time System Health Score (0–100%) indicator in Topology header widget with multi-pillar degradation formula (active alerts, source connectivity/flapping, rule faults/drops, and infrastructure stress) and dynamic status coloring
- Redesigned Sources Telemetry uptime layout into a clean two-line presentation (uptime percentage/duration on top, 24h reconnects with relative timestamp of last disconnect below) preventing text overflow across telemetry columns
- Added Round-Trip Response Time (rolling average and p95 RTT) to Sources Telemetry App Totals and Polling Cadence / Jitter tracking with clock drift warning badge (LAG +Nms) to Plugin Totals
- Updated Rule Execution Telemetry inspect modal to display the actual target source name (e.g. Postgres, MQTT) instead of the generic '(Write Value)' action type label for Output Target action sinks
- Enhanced Constant Bool graph nodes with a convenient true/false dropdown editor in the node inspector, dynamically updating the node subtitle
- Added dynamic subtitle updates across visual graph nodes: Multi If reflects combination mode and condition count (ALL (N) / ANY (N)), Switch displays case count (N cases), Collection Scope displays target key field (foreach [Key]), and JSON Extract displays extracted field count (N fields)
- Enhanced String Equal graph node with a spacious multiline text editor for the 'Other' comparison argument with text wrapping and auto vertical scrolling
- Updated String Upper and String Lower graph nodes with clean title-case subtitles ('to Upper' and 'to Lower')
- Added Operator dropdown (==, !=, contains, >, >=, <, <=) and Value input port binding editor to Filter Array graph node inspector
- Enhanced Collection Select graph node with dynamic multi-field selection rows (+ Add Field), automatic subtitle count updates, and projected collection metadata propagation to downstream nodes
- Standardized inspector property ordering across all graph nodes to position input port data bindings at the top of the Binding group
- Assigned a distinct light brown color (#C49A6C) to ByteArray graph ports in Rule Editor canvas
- Decoupled Rule Editor node serialization from live table schemas in Output Target nodes: the setup helper reflects real-time database table columns while unselected and dropped columns are pruned from rule graph node properties, eliminating rule file bloat
- Upgraded ISourceEditorViewModel contract interface in UniflowLibs to mandate BuildCurrentDto() for deterministic JSON-based dirty state tracking
- Updated SourceEditorViewModel host controller to perform deep JSON snapshot comparisons of plugin settings DTOs instead of relying on fragile UI event flags
- Added real-time In-Memory Alert Management system in Dashboard View with dedicated Alerts tab, unread notification badge, active count, and pagination (30 entries per page)
- Added left navigation bar in Dashboard View for smooth toggling between Topology View and Alerts Panel
- Added interactive Alert Management grid supporting severity badges (Critical, Info), row selection, batch acknowledgement, and clear-all confirmation dialog
- Added sticked right-side Source Details panel in Topology View displaying source endpoint details (Host/URL, Port, Notes), real-time status indicator, and connected rules breakdown
- Integrated alert pre-fetching into client bootstrap sequence for immediate state availability upon login
- Added Email Notifications tab in Settings to configure automated SMTP alert dispatching, recipient management, and test email integration
- Added 'Alerts' Output Target node in Rule Editor enabling visual rule graphs to generate system-wide alerts with configurable Level (Warning, Info, Critical) and custom Message properties
- Added native Int16 and UInt16 data type support across core value containers, rule converters, and Modbus Client/Server UI and register management
- Enhanced Gauges Dashboard with double-resolution grid density, multi-cell ColSpan grid layout snapping, and finalized Graph gauge rendering with threshold coloration and millisecond-accurate tooltips
- Added real-time Sources telemetry grid to Dashboard View featuring dual D3 sparkline graphs for application-level throughput and raw plugin I/O bandwidth
- Added real-time GUI ↔ Service network traffic telemetry badge in TitleBar displaying live throughput rates (In/Out) and total accumulated byte metrics
- Added 'Vector' constant graph node in Constants toolbox to construct Vector3 (X, Y, Z) objects and output vector scalar components, magnitude, and squared magnitude
- Added 'Vector Math' graph node in Maths toolbox supporting 21 3D vector arithmetic and spatial linear algebra operations with dynamic subtitle notation and port binding updates
- Added 'Vector' data type option to JSON Objects Catalog UI schema field editor for telemetry payload deserialization
- Introduced specialized asymmetric arc-shaped graph nodes in Rule Editor and Live Preview: Input Source, Event Input, and Data Source nodes feature a smooth rounded semi-arc on the left side, while Output Target nodes feature a smooth rounded semi-arc on the right side
- Refined graph node header, typography, and pulsing selection overlay geometry to seamlessly contour asymmetric arc boundaries without border overflow
- Increased graph node port dot size by 10% and centered the middle of the port dots precisely along the outer border of the shape
- Streamlined Rule Editor top navigation with a modern action toolbar featuring buttons with icons and labels (Reset, Import, Export), interactive tooltips, and save-state protection
- Added full Undo (Ctrl+Z) and Redo (Ctrl+Y / Ctrl+Shift+Z) functions to the Rule Graph Editor with text editor parity, top toolbar buttons with Fluent icons (ArrowUndo, ArrowRedo), delimiter separation, dynamic action tooltips, text input debouncing, and complete state tracking across node additions, deletions, moves, connections, property inspector changes, routing styles, canvas reset, and graph import
- Added interactive Rule Minimap overlay (RuleMinimapControl) in Rule Editor and Live Preview canvases featuring real-time node scaling, connection tracking, viewport framing, and mini-map expand/collapse
- Added floating canvas quick-action controls panel in Rule Editor featuring direct Fit (zoom-to-fit) and Live Preview (runtime execution simulator) quick-launch buttons
- Harmonized graph node default widths and compact factor layout scaling across all custom node shapes
- Added selectable connection wire routing styles in Rule Editor and Live Preview: Curved (smooth cubic Bézier) and Right-Angled (orthogonal stairs)
- Implemented intelligent orthogonal wire routing engine featuring node obstacle avoidance with clearance margins, 90-degree corner filleting with smooth circular arcs, and automatic half-circle crossover bridge jumps over intersecting vertical lines
- Enhanced orthogonal connection crossover bridge jumps by reducing corner dead zone constraints from 16px to 3px and introducing adaptive bridge bump radius scaling (from 5px down to 2.5px), rendering crisp, proportionate bridge bumps right up to 90-degree corner bends and short horizontal jogs
- Integrated connection wire routing mode toggle buttons directly into the Rule Editor floating canvas toolbar for instant real-time wire geometry switching
- Added per-rule graph connection routing style persistence and user preference configuration (DefaultConnectionRouting) in Client Settings
- Added persistent user configuration for Dashboard Topology View animation settings, automatically saving and restoring 'Activity' bubble toggle state and animation 'Speed' slider position in Client Settings across GUI client restarts
- Standardized human-readable node titles across built-in logic, string, array, and date functions in Rule Editor toolbox (e.g. String Equal, String Format, Array Contains, Array Len, Date Parse, Date Diff, Date Add, Date Equal)
- Enhanced Input Source and Data Source node subtitle clarity from 'Select points' to 'Select source' and updated JSON Extract input port identifier to 'JSON'
- Enhanced rule runtime JSON collection parser with resilient substring extraction heuristics to cleanly deserialize embedded JSON payloads wrapped in log prefixes, headers, or quotes
- Added visual backpressure execution skip indicator on Rule nodes in Dashboard Topology View featuring an animated yellow glow pulse, warning triangle badge, and hint tooltip
- Implemented automatic 1-second fade-out timer for rule backpressure glow that dynamically resets on recurring skips and smoothly vanishes when executions normalize
- Added 'Write Batching & Backpressure Mitigation' configuration card and detailed technical implications guidance in DBLink source editor UI
- Added instant 0 ms optimistic UI clearing for system alerts, immediately dismissing modals and resetting unread badges while background IPC executes
- Optimized WebView2 SVG link path length calculations with rest-state caching and capped active animation bubbles to 30 elements to eliminate DOM layout thrashing
- Tuned SignalR client application and transport buffers up to 250 MB for resilient high-density data handling
- Added dedicated orange alert icon (⚠) and backpressure glow animation to Rule Group shapes on Dashboard Topology Layer 1 (Overview) indicating active rule skip executions
- Added interactive tooltip hints on Rule Group warning icons detailing the count and names of rules currently skipping executions due to backpressure
- Added distinct dual-severity styling for Rule Group warning labels (orange '⚠ N Skipping' for backpressure vs red '⚠ N Rules' for offline source errors)
- Synchronized real-time health, connection status, and backpressure visual feedback across both Dashboard Topology display layers (Overview and Group Details) during live view transitions
- Added GUI ↔ Service major.minor version compatibility enforcement, blocking connections to incompatible service versions and presenting a clear version mismatch error dialog
- Added graceful handling of legacy service instances that do not respond with version information, treating them as incompatible version mismatches
- Added anti-brute force login protection allowing 3 failed attempts per client IP before locking out the IP address for 5 minutes, displaying remaining attempts feedback on failed logins and lockout duration when blocked
- Added Connection Flapping & Reconnect Counter (1h and 24h metrics) and 24-hour availability uptime percentage in Topology View Source Side Panel and Sources Telemetry view with dynamic flap-rate warning badge (>3 reconnects/hour)
- Added Polling Cycle Time and Jitter diagnostics in Topology View Source Side Panel for polling adapters (Modbus, OPC UA, SNMP), displaying configured poll rate, measured scan duration, and standard deviation jitter
- Added Rule Execution Telemetry & Latency Profiling view featuring sub-millisecond execution duration metrics (Last, Avg, Min, p95, Max), SLA color indicators (<20ms Optimal, 20-100ms Warning, >100ms Degraded), throughput velocity meters (exec/sec, exec/min), and backpressure trigger drop counters (1h / 24h)
- Added Top 5 Resource Consumers hotspot analysis pinning performance bottlenecks at the top of the Rule Telemetry view
- Added Rule Inspect modal drawer featuring action sink latency breakdown (Condition evaluation time vs. individual sink durations) and failure context inspector displaying formatted JSON snapshots of input values and bound variables at fault time
- Added Deep Infrastructure & System Health view displaying .NET ThreadPool and I/O completion port capacities, pending work queue depth, GC memory generational breakdown (Gen 0/1/2/LOH) with collection counts, and host drive storage capacity with low disk warning (<10%)
- Added Security, Sessions & Audit Governance view displaying active client sessions table (Named Pipe and SignalR HTTPS) with duration and subscription auditing, paired with blocked IP lockout ban list table featuring live expiry countdowns and manual unblocking action
- Enhanced Rule Runtime Live Preview with a dedicated stream filter header (All, Executed, Skipped) and live Pause/Resume control to freeze real-time updates for inspection
- Added dual stream tabs in Rule Runtime Live Preview: 'Rule Stream' with bounded row height to prevent container layout explosion from large JSON payloads, and 'Data Stream' with distinct 2-column layout for Input Data (Source/Event inputs) and Output Data (Target outputs)
- Added detailed Execution Row Inspector side drawer in Rule Runtime Live Preview to inspect execution status (Executed/Skipped/Failed), Source + Input details, Evaluation Plan, and Sources + Output with one-click clipboard copy actions
🔥 Bug Fixes & Optimizations
-----------------------------------------------------------------------
- Fixed false positive unsaved changes alerts when closing source editor windows without making changes by replacing UI event flags with deterministic JSON snapshot comparison
- Fixed initial alert badge count and grid state on GUI startup by bootstrapping alerts data before WebView initialization
- Fixed missing source deselection when closing the right-side detail panel by binding panel close to selection state clearing
- Fixed icon resolution in Topology View for internal system sources (System Alerts, System Storage, System Timer) and resolved WPF pack URI resource fallback
- Fixed missing header icon for Data Source graph nodes in Rule Editor and Live Preview by correcting the resource icon pack URI mapping
- Fixed connection line endpoint vertical displacement in Rule Editor and Live Preview where lines previously rendered 50–70px above port handles by eliminating recursive template border visual tree traversal and calculating exact relative offsets directly via canvas ZoomGrid coordinate space projection
- Fixed port handle coordinate caching by providing direct ParentNode references on RulePortViewModel, guaranteeing sub-pixel connection wire attachment during node drags, canvas panning, and zoom transformations
- Fixed Event Input graph nodes displaying internal raw metadata IDs (e.g. event:preset_<guid>) on the node subtitle and inspector by capturing the user-selected event Display Name and displaying the friendly Event Name
- Fixed Rule Preview trace stream persisting and consuming background bandwidth after navigating away via sidebar menus by ensuring ViewModel disposal and unsubscription across all navigation paths and view unloads
- Fixed System Timer driven rules erroneously displaying 'Missing Source' and glowing red in Topology View by including System Timer in active topology sources and updating health calculation to recognize system source GUIDs
- Fixed Constant String graph node shape distortion and canvas overflow when pasting large text payloads by capping subtitles to 20 characters with character count indicator
- Fixed UI freeze and log display starvation during heavy system throughput by replacing full collection resets in Logs View with bounded queue processing and incremental updates
- Fixed blocking UI dispatcher calls during high-frequency SignalR event arrivals by migrating to non-blocking asynchronous dispatching
- Fixed source alert rings and connected rule/group error states persisting after a data source reconnects by removing duplicate ID sanitization, normalizing numeric and string connection states, synchronizing in-memory source snapshots across view transitions, and dispatching status updates immediately without waiting for telemetry timers
- Fixed Output Target graph nodes configured for database tables (such as DBLink) failing to discover and display newly added database columns in the Fields to Set and WHERE Fields column selection dialog without recreating the node or restarting services by querying live catalog metadata directly via IPC when the setup helper is opened
- Fixed Output Target re-configuration destructively clearing existing argument values and breaking canvas wire connections by preserving configured arguments (Action, UpdateMode, WhereOperator, SetFields, WhereFields, and column values) and generating deterministic port IDs across schema updates
- Fixed graph node input and output ports visually clipping at the outer border of the node card on Windows display scaling greater than 100% (e.g. 125%, 150%) by decoupling node card background and selection DropShadowEffect from the port rendering layer, enabling UseLayoutRounding, and enforcing ClipToBounds=False across canvas port hierarchies
- Fixed multiline string property editor in Rule Editor inspector with vertical scrollbar on text exceeding 220px maximum height, proper word wrapping, and scrollviewer support
- Fixed duplicate 'id' field entries in Collection Sort graph node inspector when connecting to upstream collections by case-insensitively normalizing field names and purging dummy defaults
- Fixed Object Get and Collection Scope graph nodes not automatically regenerating ports and schema fields upon connecting incoming wires by triggering port regeneration and property refresh on wire links
- Fixed duplicate output target entries in Rule Preview stream and inspector drawer by deduplicating identical output and input trace records and distinguishing scoped collection/array action iterations with item display prefixes
- Fixed source reconnecting state clearing alert glows prematurely by ensuring connected rules and groups retain a visible warning glow (and radiating orange ripple on source nodes) until the source is fully online, and preventing premature health score recovery during reconnection