.. _release_notes_v5.1.x: ==================== v5.1.x Release Notes ==================== Platform Changes ---------------- Enhanced Metrics Collection ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Peek v5.1.0 introduces improved metrics collection capabilities specifically designed for secure environments where direct internet access is restricted. The platform now provides: - New HTTP endpoint on port 8011 for metrics access - Metrics data available via ``/metrics.tar`` endpoint - Enables comprehensive data collection without compromising network security - Facilitates monitoring and analysis in air-gapped environments Enhanced Logging System ~~~~~~~~~~~~~~~~~~~~~~~ The platform now includes a sophisticated logging management system with: - **Automatic log rotation**: Configurable size-based rotation (default 500MB per log file) - **Disk space monitoring**: Automatic monitoring with configurable thresholds (defaults: 20% or 5GB free space) - **Log compression**: Automatic compression of rotated logs to save disk space - **Service-based rotation**: Coordinated rotation across all Peek services - **Centralized configuration**: All logging settings manageable via ``config.json`` This system ensures optimal disk usage while maintaining comprehensive logging for troubleshooting and auditing. Major Plugin Changes -------------------- ENMAC Switching Plugin Redesign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The ENMAC Switching plugin has undergone a complete architectural redesign to improve usability and performance: **Enhanced User Interface**: - Modern two-column navigation system for improved workflow - Streamlined layout optimized for field operations - Better visual organization of switching operations and job management **Core Integration**: - Deep integration with the peek-core-screen component - Unified screen management across different operational contexts - Consistent user experience with other Peek applications - Dynamically editable via peek-admin **Advanced Configuration**: - Job type-specific screen configurations for tailored workflows - Template screen linking capabilities for standardized operations - Flexible screen inheritance and customization options *Epics: peek&100* Dynamic Screen Components ~~~~~~~~~~~~~~~~~~~~~~~~ Multiple plugins have been enhanced with the new dynamic peek-core-screen component: **Job Management Screens**: - Dynamic job list displays with real-time updates - Configurable job detail views based on job types **Customer Management**: - Improved customer information displays - Dynamic customer detail screens with configurable layouts - Better integration with operational workflows **Operation Management**: - Enhanced operation tracking screens - Dynamic operation detail views for each permit type - Improved operational status visibility **Virtual Scrolling Support**: All enhanced screens now include virtual scrolling capabilities for improved performance when displaying large operation lists, ensuring smooth user experience even with thousands of operations. **Dynamically Editable Screens**: The peek-core-screen functionality provides the switching plugin the ability to instantly update screens by adding, removing or modifying the screens via peek-admin, providing real-time customization capabilities without requiring application restarts, or re-deploying iOS apps. Deployment Changes ------------------ There are no deployment changes with this release. Deployment procedures remain the same as Peek v5.0.x. Support Platforms ----------------- The following platforms are supported: - **RHEL**: - RHEL 8.8 or higher - RHEL 9.5 or higher - Amazon Linux 2023 - **Browsers**: - Google Chrome version 78 or above - Microsoft Edge version 79 or above - **iOS**: - iOS 17, 18 Migration Steps --------------- In the SQL Plugin, the `Job` plugin requires two changes, see the notes in the default SQL for `Job`, there are notes there. All `switching` screens need to be reconfigured via the peek-core-screen plugin. v5.1.17 Changes --------------- Improvements ```````````` - [peek/peek#3126] Updated loading screens to use modern ant.design components for improved visual consistency and user experience. Bug Fixes ````````` - [peek/peek#3107] Fixed AttributeError exception in diagram worker when cartography incorrectly links text values to color properties by adding data type validation before applying live database updates. - [peek/peek#3121] Fixed infinite loop causing unresponsive UI and device heating when iPad apps were configured offline but still displayed work_offline screen. *Issues: peek/peek#3126 peek/peek#3107 peek/peek#3121* v5.1.16 Changes --------------- Bug Fixes ````````` - [peek/peek#3124] Fixed LiveDB diagram not applying null values for number data types - [peek/peek#3125] Fixed Index Queue Compiler to update table row counts even when polling errors occur, ensuring monitoring data remains current. Tasks ````` - [peek/peek#3123] Created new peek-postgresql-client and peek-valkey-client packages to provide command line utilities (including pg_repack) without requiring the full database server installation, resolving errors when database servers are hosted remotely. *Issues: peek/peek#3124 peek/peek#3125 peek/peek#3123* v5.1.15 Changes --------------- CI Pipeline internal build - no user-facing changes. v5.1.14 Changes --------------- CI Pipeline internal build - no user-facing changes. v5.1.13 Changes --------------- CI Pipeline internal build - no user-facing changes. v5.1.12 Changes --------------- Improvements ```````````` - [peek/peek#3112] Added support for plugins to submit generic metrics to the Peek Platform. - [peek/peek#3113] Added worker task queue metrics for monitoring queue performance and status. - [peek/peek#3116] Metrics are now written every 15 seconds using a looping call mechanism for improved performance monitoring consistency. - [peek/peek#3119] LiveDB Loader now uses Client Reconnector protocol to ensure continuous polling without stopping on connection failures. - [peek/peek#3110] All Peekmon JSON metrics files now include a ``metricWriteDate`` field that is automatically populated when metrics are written to disk. Bug Fixes ````````` - [peek/peek#3114] Fixed ENMAC LiveDB Loader background poller to correctly persist lastIndex across rotations, allowing it to load beyond the initial 50,000 realtime items. - [peek/peek#3115] Fixed GeoJSON Loader crash when file state configuration record was missing from database during storeFileStateConfigHash operation. - [peek/peek#3117] Fixed Diagram PDF Exporter failing with libGL.so.1 import error by adding error logging that prompts users to verify peek-texlive is installed, which may be removed during peek-* software upgrades. - [peek/peek#3118] Fixed diagram editing right-click menu to prevent native browser menu from appearing alongside the custom context menu. - [peek/peek#3121] Fixed infinite loop causing unresponsive UI and device heating when iPad apps were configured offline but still displayed work_offline screen. - [peek/peek#3104] Fixed worker processes becoming unresponsive when tasks are cancelled due to timeout during table locking operations. - [peek/peek#3105] Replaced VACUUM FULL with pg_repack to eliminate database locks during table maintenance, preventing processing delays during scheduled maintenance windows. - [peek/peek#3107] Fixed AttributeError exception in diagram worker when cartography incorrectly links text values to colour properties by adding data type validation before applying live database updates. - [peek/peek#3096] Fixed Layers modal table scaling in Diagram Viewer to display all content without horizontal scrolling. - [peek/peek#3108] Fixed AssertionError when stopping DXF Diagram Loader plugin by adding a check to ensure LoopingCall is running before attempting to stop it. - [peek/peek#3109] Fixed AttributeError in LiveDbImportController by initializing _readApi before yield statement. The error occurred during diagram import operations when the controller tried to call ``self._readApi.bulkLoadDeferredGenerator()`` before the ``_readApi`` attribute was assigned, causing import failures for diagram groups. The API assignment has been moved earlier in the initialization sequence to ensure the attribute is available before any asynchronous operations begin. - [peek/peek#3100] Fixed PostgreSQL tuning script to disable Transparent Huge Pages using tuned profiles instead of invalid sysctl parameters that caused configuration failures on systems with >16GB RAM. - [peek/peek#3111] Fixed EDNAR Search to find all object types by adding category field to Search.ObjectType. Tasks ````` - [peek/peek#3120] All tar files now include a README.md file for improved package documentation. - [peek/peek#3106] Profile.d scripts now skip output when running without a TTY or when the ``_ATTUNEOPS`` environment variable is set, preventing unwanted output during automated execution. *Issues: peek/peek#3112 peek/peek#3113 peek/peek#3116 peek/peek#3119 peek/peek#3110 peek/peek#3114 peek/peek#3115 peek/peek#3117 peek/peek#3118 peek/peek#3121 peek/peek#3104 peek/peek#3105 peek/peek#3107 peek/peek#3096 peek/peek#3108 peek/peek#3109 peek/peek#3100 peek/peek#3111 peek/peek#3120 peek/peek#3106* v5.1.11 Changes --------------- Released 02-Dec-2025 Overview ~~~~~~~~ This release includes important bug fixes to improve the authentication experience. Bug Fixes ~~~~~~~~~ - [peek/peek#3097] Fixed login redirect loop by ensuring UserService login status is consistent before navigation Fixed a race condition where users would be redirected back to the login screen after successful authentication. The login process now waits for the UserService to confirm the logged-in state before proceeding with navigation, preventing conflicts with route guards that check authentication status. The fix consolidates multiple login status observables in UserService into a single consistent state and ensures all login/logout flows wait for status confirmation before navigation. **Steps to reproduce the original issue:** 1. Navigate to the application login page 2. Enter valid credentials and submit 3. Observe being redirected back to login despite successful authentication 4. This would occur intermittently due to timing of authentication state updates *Issues: peek/peek#3097* v5.1.10 Changes --------------- Released 02-Dec-2025 Overview ~~~~~~~~ This release includes significant improvements to LDAP authentication, PostgreSQL monitoring, memory management, and mobile application compatibility. Key enhancements focus on system reliability during high-load scenarios and improved user experience across platforms. New Features ```````````` LDAP Nested Group Authentication Support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Added support for recursive LDAP group membership resolution to allow users to authenticate when their direct groups are nested within required access groups. The system now performs complete group traversal to discover all parent groups, enabling authentication for users who belong to child groups of the configured authorization groups. **Key Changes:** * Implemented recursive group membership resolution using LDAP queries * Added comprehensive logging for group discovery and authorization decisions * Enhanced fallback mechanisms for user lookup by SID and username * Improved error handling and debugging capabilities **Configuration:** No configuration changes required. The feature automatically detects and resolves nested group memberships for existing LDAP authentication setups. **Impact:** Users can now authenticate using nested Active Directory group structures without requiring direct membership in the configured access groups, supporting more flexible organizational hierarchies. Native In-App User Registration and Authentication ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Implemented native in-app user registration and authentication to replace Safari redirects, meeting Apple App Store guidelines for improved user experience. Bug Fixes ````````` - [peek/peek#3091] Fixed PostgreSQL metrics queries to correctly calculate longest-running transaction, vacuum, and query durations instead of returning oldest start times. Fixed PostgreSQL transaction age metrics that were incorrectly showing the same values by changing queries to calculate actual duration (MAX of elapsed time) rather than minimum start times, and added state filtering for active connections only. - [peek/peek#3084] Fixed ACI Queue Processor memory limitation system to properly restart services during prolonged memory pressure. The memory monitoring system for ACI Queue Processor and Client Logic Loader has been enhanced to provide proper graceful degradation during memory pressure events. The system now correctly implements a three-stage response: 1. **Warning Stage**: Issues warning messages when available RAM drops below configured thresholds (``ramThresholdPercent`` or ``ramThresholdGb``) 2. **Error Stage**: Escalates to error-level logging after ``ramErrorLogIntervalSeconds`` (default 60 seconds) 3. **Recovery Stage**: Performs controlled service restart via ``sys.exit(1)`` after ``killProcessAfterMemoryBlockedMinutes`` (default 15 minutes), allowing systemd to restart the service This prevents Office nodes from crashing abruptly during failovers or high-activity periods, providing a configurable grace period for memory recovery. The feature is particularly valuable in dual-Office deployments where taking one node offline should not immediately destabilize the remaining node. **Configuration**: Memory thresholds and timing intervals are configurable in ``config.json`` under the ``aci`` section. - [peek/peek#3092] Fixed LDAP authentication failure when user ObjectSID changes by implementing fallback authentication flow and automatic SID synchronization. When a user's ObjectSID changes (due to domain migration or user recreation), LDAP authentication now falls back to username-based lookup and automatically updates the stored SID in the database, ensuring seamless login continuity. - [peek/peek#3094] Fixed home screen icons appearing too thin on iPhone devices. The Peek Field App home screen icons have been adjusted to display with proper thickness on iPhone devices, resolving the visual rendering issue that made icons appear skinny. - [peek/peek#3088] Fixed SSH connection reconnection issues with HAProxy after connection loss. Fixed SSH connection handling for diagram page downloads when connections are lost through HAProxy during rolling server rebuilds. The issue occurred when the Peek Diagram Loader failed to properly re-establish SSH connections after HAProxy backend interruptions. **Resolution:** * Improved connection backoff and reconnection logic in SSH client factory * Added TCP keepalive settings (30 seconds) to detect stale connections * Enhanced connection state management to properly handle lost connections * Fixed timing issues in reconnection attempts across multiple subprocess instances **Testing:** Validated with overnight testing using 8 factories with HAProxy backends cycling every 10 minutes, achieving 99.9% success rate (226,106 commands with only 238 failures) over 8+ hours of continuous operation. **Affected Components:** * Peek Diagram Loader SSH connection handling * HAProxy frontend/backend communication * Connection state management Improvements ```````````` - [peek/peek#3085] Increased PeekMon metrics.tar file size limit from 69kb to 200kb to resolve transmission failures for larger metric files. - [peek/peek#3093] Updated NgBalloonMsg component to use NzMessageService for displaying standard messages, improving message handling consistency across the platform. - [peek/peek#3090] Configured social media preview metadata for Peek Field and Office applications. Added Open Graph and Twitter Card meta tags to improve link previews when sharing Peek applications on social platforms. The Peek ADMS Insight (peek.synerty.com) now displays "Your Grid on Any Device" and Peek ADMS Field (peek-field.synerty.com) shows "Digitally enable switching, incidents, site entry and safety assessments" in social media previews. Updated preview thumbnails have been optimized to 1200×628 pixels for consistent display across platforms. Tasks ````` - [peek/peek#3095] Removed tail -F from p_restart aliases to prevent accidental peek restarts when intending to restart logging. - [peek/peek#3098] Released versions v5.1.10, v5.1.11, and v3.4.16 with maintenance updates and improvements. **Note:** No specific details were provided for the changes included in these releases. *Issues: peek/peek#3074 peek/peek#3089 peek/peek#3091 peek/peek#3084 peek/peek#3092 peek/peek#3094 peek/peek#3088 peek/peek#3085 peek/peek#3093 peek/peek#3090 peek/peek#3095 peek/peek#3098* v5.1.9 Changes -------------- Released 27-Nov-2025 Overview ~~~~~~~~ This release of Peek Enterprise Extensible Platform includes important bug fixes and system improvements focused on memory management, equipment loading, and worker task handling. Bug Fixes ````````` - [peek/peek#3079] Fixed ENMAC Equipment Loader to properly apply the "enabled" flag for Comp Classes, ensuring disabled classes are correctly filtered out during equipment loading operations. - [peek/peek#3080] Fixed worker warnings when receiving results for cancelled tasks - worker now discards these events instead of logging warnings. Workers no longer generate unnecessary warning messages when receiving results for cancelled or timed-out tasks. The system now properly discards these events, reducing log noise during worker shutdown scenarios. - [peek/peek#3078] Fixed KeyError: 'count' in ACI Queue Processors queue table row counting. Fixed queue table row count functionality by adding explicit column aliasing (``func.count().label('row_count')``) and updating the result access to use the predictable alias name instead of the unreliable default 'count' key. Improvements ```````````` - [peek/peek#3081] Queue Processors - Memory Protection Enhancement. Added RAM monitoring to queue processors that prevents chunk loading when available memory falls below 5% or 2GB (whichever is less restrictive), implementing a 15-second backoff with warning logs and escalating to error logs after one minute of continuous memory pressure. This prevents client crashes due to excessive memory consumption while allowing time for garbage collection to recover memory. *Issues: peek/peek#3078 peek/peek#3079 peek/peek#3080 peek/peek#3081* v5.1.8 Changes -------------- Released 27-Nov-2025 CI-Pipeline fixes. This release removed the process to upload Peek python packages to pypi. No further Peek packages will be available via pypi. v5.1.7 Changes -------------- Released 27-Nov-2025 This release includes critical bug fixes for worker task management, subscription memory leaks, and authentication issues, along with improvements to configuration management and monitoring capabilities. Bug Fixes ````````` Authentication and Security ~~~~~~~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#3067] Fixed SQLAlchemy DetachedInstanceError during LDAP login by properly refreshing and expunging InternalUser objects. This resolves intermittent authentication failures with "Instance is not bound to a Session" errors. - [peek/peek#3075] LDAP authentication via agent now accepts multiple comma-separated agent IP addresses with automatic failover to ensure authentication continues if the primary agent is unavailable. - [peek/peek#2980] Fixed Progressive Web App interference with Azure Proxy login redirects by configuring /manifest.webmanifest to bypass authentication. Updated documentation includes Azure Proxy configuration requirements for PWA deployment. Worker and Task Management ~~~~~~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#3035] Fixed worker task queue getting stuck when attempting to cancel timed-out tasks that are not in the running tasks list. The worker would repeatedly attempt to cancel tasks that were no longer in the running tasks list, causing an endless error loop that prevented new task processing. - [peek/peek#3055] Fixed Peek Worker tasks to properly pass timeout to delay instead of calling addTimeout, preventing timeout exceptions and unnecessary retries. - [peek/peek#3059] Fixed PeekWorkerRequestQueue accumulating 27,000+ running tasks causing performance degradation. The system was spending excessive time in the ``hasTimedOut`` method performing date comparisons on stale tasks that never properly cleaned up. - [peek/peek#3047] Fixed Peek Worker task rotation - workers now properly terminate and restart according to replaceAfterTaskSeconds configuration. Worker services were persisting for hours instead of being recycled after the configured time limit. - [peek/peek#3046] Fixed worker log file handles not being released during log rotation. The worker service now uses multiprocessing.Queue to centralize logging to a single process, ensuring proper log rotation and file handle release. Database and Performance ~~~~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#3066] Fixed VortexPY subscription memory leak where TupleDataObservableHandler retained excess subscriptions. This critical bug was causing the Logic service to maintain excess data subscriptions and affecting EventDB, ENMAC Switching, and Field operations performance. - [peek/peek#3036] Fixed PostgreSQL query locking that blocked worker processing. Added automatic termination of long-running PostgreSQL transactions to prevent SQL locking conflicts that could cause worker tasks to become permanently blocked. - [peek/peek#3064] Fixed SQLAlchemy transaction management error in BranchIndexCompilerTask where connections were attempting to begin new transactions without properly closing existing ones. - [peek/peek#3072] Fixed SQLAlchemy "This transaction is inactive" error when saving diagram branches. Resolved database transaction handling issue in the branch compiler that was causing worker process failures. - [peek/peek#3038] Fixed GraphDB Item Key Index retaining references to deleted segments, causing trace operations to fail with "Segment is missing" errors. **Migration Required:** Existing installations must truncate and rebuild the GraphDB indexes: .. code-block:: sql -- Truncate indexed segments TRUNCATE TABLE "pl_graphdb"."ItemKeyIndex"; -- Truncate segments TRUNCATE TABLE "pl_graphdb"."GraphDbSegment"; -- Truncate load states from diagram loader TRUNCATE TABLE "pl_enmac_graphdb_loader"."GraphSegmentLoadState"; The system will automatically reload the data after restart. ENMAC and Data Loading ~~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#3060] Fixed ENMAC LiveDB Loader Background Poller reconnection issue after HAProxy failover. The poller now properly reconnects when HAProxy fails over to a backup server. - [peek/peek#3061] Fixed ENMAC Switching Loader timeout handling by correcting chunk cleanup logic to prevent loader from stopping when database query timeouts occur. Updated the chunk processing logic to ensure failed chunks remain in the processing queue for retry. - [peek/peek#3065] Fixed ENMAC LiveDB Loader parsing error when EWebmon sends realtime values with only 4 tokens instead of expected 6. The realtime poller now handles data lines containing only 4 tokens by assigning empty string values to missing tokens. - [peek/peek#3049] Fixed SSH reconnection failure in Peek Diagram Loader after app server connection loss. The SSH client would fail to reconnect and stop processing commands after connection loss and restoration. Fixed polling loop restart, exception handling, semaphore token cleanup, and command queue preservation across reconnections. Diagram and UI Issues ~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#3034] Fixed RMU Busbar objects not being selectable in diagram editor. The problem occurred when DispGroupPtr shapes had zoom level ranges that didn't cover all ZGrid configurations, causing shapes to be visible but not selectable at certain zoom levels. - [peek/peek#3044] Fixed field switching issue where confirming operations incorrectly navigated to the first filtered operation instead of staying on the confirmed operation. The system now correctly maintains focus on the operation that was just confirmed. - [peek/peek#3045] Fixed operation swipe animation incorrectly triggering when the operation field value remains unchanged during field switching. - [peek/peek#3076] Fixed confirmed buttons not resetting when users quickly navigate between ENMAC field switching screens by implementing change detection trigger. - [peek/peek#3073] Updated diagram canvas switcher to use nz-select component for improved visual consistency with marketing designs. EDNAR Plugin ~~~~~~~~~~~~ - [peek/peek#3050] Fixed EDNAR frontend loading issue when URL lacks trailing slash. The EDNAR frontend now properly loads when accessing URLs without a trailing slash. Added URL validation script and resolved script loading issues that prevented the EDNAR diagram and menu buttons from displaying. - [peek/peek#3039] EDNAR frontend build failure resolved when PDF exporter plugin enabled. The issue was resolved by ensuring the PDF plugin is properly enabled before the EDNAR plugin in the configuration. - [peek/peek#3032] Fixed EDNAR frontend build failure caused by CSS syntax errors. Corrected JavaScript code incorrectly placed in SCSS files and undefined SASS variables that were preventing the Office service from starting properly. Configuration and Validation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#3033] Platform now validates plugin names in config.json and displays clear error message when hyphens are used instead of required underscores. Previously, misconfigured plugin names would result in confusing "package not found" errors. - [peek/peek#3054] Fixed Diagram GeoJSON Loader to properly validate that plugin data path is a directory, not a file, with clear error messaging. - [peek/peek#3068] Fixed JSON config validation to accept both integer and float values for rollingNewConnectionWindowSeconds. The Office JSON configurator now properly accepts integer values in addition to float values. Other Fixes ~~~~~~~~~~~ - [peek/peek#3053] Fixed EventDB live events subscription cleanup issue where live event subscriptions were not being properly unsubscribed, causing multiple duplicate subscription requests to accumulate on the server. - [peek/peek#3028] Fixed Events download returning "Processing Failed" error instead of CSV data. Resolved AttributeError in the DownloadEventsResource class that caused event downloads to fail. - [peek/peek#3040] Disabled Progressive Web App checks when deployed as native app to prevent infinite reload loop on iOS devices. Improvements ```````````` Configuration Management ~~~~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#3056] Made queue processing settings configurable to address network traffic issues. Queue processor limits and cache controller settings are now configurable through the admin interface with warnings about potential support implications. - [peek/peek#3057] Made Peek Diagram Loader page and overlay checking periods configurable through database settings. Replaced hardcoded intervals with configurable database settings accessible through AttuneOps.io admin interface. Monitoring and Diagnostics ~~~~~~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#3037] Enhanced Peek metrics collection to include comprehensive system monitoring. Added extensive metrics including resource usage per service and node, Peek process monitoring, device connection counts, and detailed PostgreSQL health metrics. - [peek/peek#3063] Enhanced HAProxy health checks to validate both HTTP service health and TCP port connectivity. HAProxy now uses external health check script that validates both HTTP endpoint response and TCP port accessibility. - [peek/peek#3062] Added child process ID to subprocess logged messages for improved debugging and process tracking. Security Enhancements ~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#3051] Added API token authentication support to EDNAR for secure Peek proxy connections. EDNAR now supports an optional ``API_TOKEN`` configuration value that enables Bearer token authentication when proxying requests to Peek. - [peek/peek#2978] Added IP address filtering settings for EDNAR resource access with option to disable filtering when needed. Introduces configurable IP address restrictions to limit access to the EDNAR resource. User Interface ~~~~~~~~~~~~~~ - [peek/peek#3052] Enhanced GeoJSON loader to display validation errors when diagram levels overlap, showing error indicators on tabs and aggregate error lists for easier troubleshooting. - [peek/peek#3071] Updated Peek Office application background images with new splash screen design including home-background.png, home-center.png, and sidebar_background.png assets available in both 4K and 1080p resolutions. Tasks ````` Development and Build ~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#3058] Added aliases for p_manhole_ command to provide easier access to Peek's manhole functionality. - [peek/peek#3041] Added ``/pwa-login-check.json`` endpoint to the development proxy configuration for ``ng serve`` and ``npm start`` commands. - [peek/peek#3042] Added valkey queue stata purge p_ aliases to Peek Packaging for improved queue management functionality. - [peek/peek#3043] Improved haproxy stats p_ alias in packaging configuration. - [peek/peek#3048] Fixed sudo execution failure by adding missing newlines to sudoers files in Peek v5.2.x packaging. - [peek/peek#3069] Fixed ci_post_clone.sh to properly validate app_spec.json format, preventing build failures from invalid JSON syntax. - [peek/peek#3070] Moved app_spec.json configuration application from iOS shell script to patch_and_tag_for_xcode_build.py to ensure settings are applied before XCode Cloud build starts. *Issues: peek/peek#3050 peek/peek#3051 peek/peek#3052 peek/peek#3053 peek/peek#3054 peek/peek#3033 peek/peek#3055 peek/peek#3034 peek/peek#3035 peek/peek#3036 peek/peek#3056 peek/peek#3057 peek/peek#3058 peek/peek#3059 peek/peek#3038 peek/peek#3037 peek/peek#3060 peek/peek#3061 peek/peek#3062 peek/peek#3063 peek/peek#3064 peek/peek#3065 peek/peek#3066 peek/peek#3039 peek/peek#3067 peek/peek#3040 peek/peek#3041 peek/peek#3042 peek/peek#3068 peek/peek#3044 peek/peek#3045 peek/peek#3043 peek/peek#3046 peek/peek#3047 peek/peek#3028 peek/peek#3069 peek/peek#3070 peek/peek#3071 peek/peek#3072 peek/peek#3073 peek/peek#2978 peek/peek#3075 peek/peek#3076 peek/peek#2980 peek/peek#3048 peek/peek#3049 peek/peek#3032* v5.1.6 Changes -------------- Overview ~~~~~~~~ Peek Enterprise Extensible Platform allows users access to Operational Technology outside the control room. This release includes bug fixes and development environment improvements. Bug Fixes ````````` - [peek/peek#3025] Fixed AttributeError where generator objects were incorrectly treated as Twisted Deferred objects in queue controllers Multiple queue controllers (SearchObjectChunkCompilerQueueController, SearchIndexChunkCompilerQueueController, and LiveDbValueUpdateQueueController) were attempting to call ``addErrback()`` on generator objects instead of Twisted Deferred objects, causing AttributeError exceptions during queue processing operations. **Affects:** v5.1.5 Tasks ````` - [peek/peek#3026] Fixed p_restart_agent alias by correcting process name matching in pkill command v5.1.5 Changes -------------- Overview ~~~~~~~~ Peek Enterprise Extensible Platform allows users access to Operational Technology outside the control room. This release focuses on bug fixes and improvements to enhance system stability, user experience, and administrative functionality. Bug Fixes ````````` GraphDB and Data Loading ~~~~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#3012] GraphDB Loader now logs duplicate key exceptions as warnings instead of stack traces in agent logs. The GraphDB import task now handles duplicate segment key exceptions gracefully by logging a warning message and automatically deleting the duplicate before retrying the insert, eliminating unnecessary stack trace noise in agent logs. - [peek/peek#3000] Fixed ENMAC Diagram Loader to log a single error message instead of printing full stack traces when diagram files are missing. The ENMAC Diagram Loader now properly handles missing diagram files by logging a concise error message rather than displaying verbose stack traces. When overlay files (*.ov) cannot be found in the /datafiles/pages/ directory, the system now logs a single line error and gracefully continues processing. - [peek/peek#3013] Fixed PDF Exporter not exporting layers when visibility is set to inherited. Fixed an issue in the PDF Exporter where layers with inherited visibility were not being included in PDF exports when running in Area mode, resulting in empty PDFs with no shapes rendered. User Interface and Navigation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#3014] Fixed device deletion in Peek Admin to update enrollment state immediately without requiring page refresh. Updated the device deletion functionality so that enrollment state changes are reflected in the interface instantly, eliminating the need for manual page refreshes. - [peek/peek#3015] Fixed Core User force logoff functionality that was failing due to UserLoginStepWizardService interference. Fixed an issue where the force logoff feature would fail on subsequent attempts without reloading the application. The problem occurred when the ``UserLoginStepWizardService`` remained active and interfered with the logout process by handling routes when ``typedTuple[0]?.userDetails != null`` was true. The service now properly manages the logout flow, ensuring users can successfully force logoff multiple times within the same session. - [peek/peek#3017] Fixed Job Number field display issue by repositioning it to the left side of the interface. The Job Number field was appearing compressed/squished in the field switching interface. This has been resolved by moving the Job Number field to the left side, providing proper spacing and visibility. - [peek/peek#3020] Peek field filtering now automatically scrolls to the first operation when filter buttons are changed. When using Peek field operations in filtering mode, changing filters by tapping the filter buttons now automatically scrolls the view to display the first matching operation, improving navigation and user experience. - [peek/peek#3022] Fixed duplicate screen key conflict where plugins with identical screen keys (e.g., ``job-list``) would overwrite each other, ensuring screen keys are now unique per plugin package. Authentication and Security ~~~~~~~~~~~~~~~~~~~~~~~~~~~ - [peek&101] Progressive Web App now supports Azure Proxy authentication with complete setup documentation. Fixed PWA compatibility issues with Azure Proxy logins and added comprehensive documentation for Azure Proxy configuration in web applications. - [peek/peek#2980] Fixed Progressive Web App interference with Azure Proxy login redirects by configuring /manifest.webmanifest to bypass authentication. The Progressive Web App manifest file now properly bypasses Azure Proxy authentication to prevent login redirect conflicts. Updated documentation includes Azure Proxy configuration requirements for PWA deployment. Data Comparison and Field Operations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#3016] Improved Peek Permit Notes field comparison accuracy with case-insensitive matching, configurable string normalization, and intelligent date/time parsing. Fixed overly strict field comparisons in Peek Permit Notes that incorrectly flagged identical values as different due to case sensitivity, spacing, and format variations. **What's Fixed:** * Field comparisons are now case-insensitive (``My Name`` matches ``my name``) * Phone number formatting differences are handled (``027 229 5746`` matches ``0272295746``) * Date/time values are intelligently parsed and compared regardless of format or timezone representation * Added configurable string normalization to remove common suffixes like ``-R`` from field controller names * Reduced false positive differences between ADMS and Field data **Technical Details:** The comparison logic now normalizes field values by converting to lowercase, trimming whitespace, and attempting date parsing before comparison. A new configuration option allows specifying comma-separated values to remove during normalization for better field matching accuracy. Email and Notifications ~~~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#2997] Fixed Email Incidents to ensure field app users always receive notifications regardless of Peek login status. Fixed a bug where field app users in the "Hide Mobile Users Group" were incorrectly having Peek login logic applied to them, preventing them from receiving email notifications when they should have been notified. Load Balancing and Infrastructure ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#2998] Fixed HAProxy backup server load balancing by disabling 'option allbackups' to ensure strict failover order. Fixed HAProxy configuration where backup servers were incorrectly load balancing connections instead of using strict failover priority. Removed ``option allbackups`` from backend configuration to ensure all traffic goes to the first available backup server when primary is down, rather than distributing across all backup servers. **Configuration Change:** .. code-block:: text backend be_enmac_soap_app_first_https mode tcp no option allbackups server primary 127.0.0.1:8080 check server backup1 127.0.0.1:8081 check backup server backup2 127.0.0.1:8082 check backup This ensures proper failover behavior where backup servers are used in order of priority rather than load balanced. Improvements ```````````` Administrative and Monitoring ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - [peek/peek#3018] Queue compiler metrics and table row counts are now exported to JSON files and displayed on admin status pages. Added automated collection and export of queue processing metrics, including periodic queue table row counts every 2.5 minutes, with results available as JSON files and integrated into the administrative status interface for improved system monitoring and diagnostics. - [peek/peek#3011] Added normal state background color highlighting option for ENMAC diagrams. Added configurable background color highlighting for ENMAC diagrams in normal state through new Peek Admin settings. The feature includes error messaging for unrecognized layer names and automatically reverts background colors when switching states. Note that this functionality does not work with coordinate sets that have custom background colors or diagrams where OpenStreetMaps covers the entire background. v5.1.4 Changes -------------- Overview ~~~~~~~~ This release of Peek Enterprise Extensible Platform includes several bug fixes and improvements to enhance system stability and user experience. Key improvements include better error handling in the ENMAC Diagram Loader, enhanced LDAP authentication support, and fixes for PWA installation detection. Bug Fixes ````````` - [peek/peek#3000] Fixed ENMAC Diagram Loader to log a single error message instead of printing full stack traces when diagram files are missing. The system now logs a concise error message and gracefully continues processing when overlay files (*.ov) cannot be found in the /datafiles/pages/ directory. - [peek/peek#3008] Fixed PWA installation detection to prevent repeated upgrade prompts. Added proper detection logic to identify when the application is already installed as a Progressive Web App, resolving the issue where users were continuously prompted to upgrade even after installation. - [peek/peek#3009] Fixed AttributeError in LiveDB Loader when registerWatchedAttributes is called during protocol rotation. The method now safely ignores calls when the protocol is None, as the protocol will register watched attributes automatically when it reconnects. Added debug logging for troubleshooting future occurrences. **Steps to reproduce the original issue:** 1. Configure LiveDB Loader with protocol rotation enabled 2. Call registerWatchedAttributes during a protocol rotation event 3. System would crash with 'NoneType' object has no attribute 'registerWatchedAttributes' Improvements ```````````` - [peek/peek#2981] Added LDAPs support for email address authentication. Enhanced LDAP authentication to support login using email addresses instead of usernames, allowing users to authenticate with their familiar email credentials through a new LDAP configuration setting. - [peek/peek#3011] Added normal state background color highlighting option for ENMAC diagrams. Added configurable background color highlighting for ENMAC diagrams in normal state through new Peek Admin settings. The feature includes error messaging for unrecognized layer names and automatically reverts background colors when switching states. Note that this functionality does not work with coordinate sets that have custom background colors or diagrams where OpenStreetMaps covers the entire background. Tasks ````` - [peek/peek#3002] Added p_pyspy_* aliases to the platform for improved pyspy functionality access. - [peek/peek#3007] Fixed AWS command compatibility issue when Peek environment is activated. *Issues: peek/peek#2981 peek/peek#3000 peek/peek#3002 peek/peek#3007 peek/peek#3008 peek/peek#3009 peek/peek#3011* v5.1.3 Changes -------------- Overview ~~~~~~~~ Peek Enterprise Extensible Platform allows users access to Operational Technology outside the control room. This release focuses on database connection management improvements, enhanced diagnostic capabilities, and authentication enhancements. New Features ```````````` LDAPs Email Authentication Support ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Enhanced LDAP authentication to support login using email addresses instead of usernames, allowing users to authenticate with their familiar email credentials through a new LDAP configuration setting. *Issues: peek/peek#2981* Bug Fixes ````````` - [peek/peek#2999] Fixed PostgreSQL transaction locks in Peek Worker by adding idle transaction session timeout. Resolved an issue where the Peek Worker would become blocked by unclosed PostgreSQL transactions, causing system lockups on ``GridCompilerTask.compileGrids`` operations that would run for hours without completing. Added ``idle_in_transaction_session_timeout=5000ms`` to PostgreSQL connection parameters to automatically terminate idle transactions after 5 seconds. - [peek/peek#3000] Fixed ENMAC Diagram Loader to log a single error message instead of printing full stack traces when diagram files are missing. The loader now properly handles missing overlay files (*.ov) in the /datafiles/pages/ directory by logging a concise error message and gracefully continuing processing. - [peek/peek#3001] Fixed Oracle connection pool creating excessive connections (400 instead of 32) in ENMAC Switching connector. Updated connection pool parameters from ``minPool=4, overflowPoolSize=0`` to ``minPool=0, overflowPoolSize=1`` to properly limit connection creation during agent startup. - [peek/peek#3005] Fixed LDAP SSL verification disable option not being respected when Logic services delegate authentication to Agent. The TLS verify setting now properly applies in both Logic node and Agent delegation scenarios. Improvements ```````````` - [peek/peek#3002] Added p_pyspy_* aliases to the platform for improved pyspy functionality access. - [peek/peek#3003] Added PostgreSQL diagnostic aliases and scripts for database health monitoring and deadlock troubleshooting. Includes comprehensive diagnostic tools: ``p_pg_deadlocks``, ``p_pg_long_running``, ``p_pg_kill_transaction``, ``p_pg_blocking_queries``, ``p_pg_idle_transactions``, ``p_pg_high_lock_count``, ``p_pg_connection_patterns``, ``p_pg_lock_tree``, ``p_pg_generate_kill_commands``, ``p_pg_vacuum_monitor``, and ``p_pg_health_check``. Tasks ````` - [peek/peek#3004] Peek installation now automatically creates SSH keys for the peek user to enable passwordless manhole connections. v5.1.2 Changes -------------- New Features ```````````` ENMAC Switching Redesign ~~~~~~~~~~~~~~~~~~~~~~~~ The ENMAC Switching plugin has been completely redesigned with: - Improved UI layout for better usability - Two-column navigation system - Integration with peek-core-screen component - Job type specific screen configurations - Template screen linking capabilities *Epics: peek&100* Metrics Collection for Secure Environments ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Added support for metrics collection in secure environments: - New HTTP endpoint on port 8011 - Metrics data accessible via ``/metrics.tar`` - Enables data collection without direct internet access *Issues: peek/peek#2993* Improvements ```````````` - [peek/peek#2989] Enhanced logging system with configurable rotation and disk space management: - Automatic log rotation based on size (default 500MB) - Disk space threshold monitoring (defaults: 20% or 5GB free space) - Compression of rotated logs - Service restart-based rotation - Configurable via ``config.json`` - [peek/peek#2988] Upgraded Job, Customer, and Operation screens with dynamic peek-core-screen component featuring virtual scrolling support Bug Fixes ````````` - [peek/peek#2986] Resolved GraphDB unique key violations during segment processing: 1. Cleared database storage constraints 2. Restarted database service 3. Cleared logs and reprocessed segments - [peek/peek#2996] Fixed core-screen plugin to correctly return newly created default screens when requested screens don't exist - [peek/peek#2990] Resolved exception occurring during offline status checks before document index initialization Tasks ````` - [peek/peek#2985] Created v5.1.x branches and released version 5.1.0 - [peek/peek#2987] Disabled intermittent Valkey SSL dependency tests to prevent build failures - [peek/peek#2991] Fixed Angular budgets error in Peek Office v5.1.x build process v5.1.1 Changes -------------- This version was abandoned due to CI failures and was not released. v5.1.0 Changes -------------- This version was abandoned due to CI failures and was not released.