> For the complete documentation index, see [llms.txt](https://brightwind.gitbook.io/brighthub-user-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://brightwind.gitbook.io/brighthub-user-docs/release-notes.md).

# Release Notes

### **\[2026-06-10]**

**Reanalysis:**

1. **CERRA Data**
   1. CERRA reanalysis data is now available as a wind resource reference dataset and is free to download.&#x20;
      1. Available variables:
         1. 100 m wind speed
         2. 100 m wind direction
         3. 100 m air temperature
         4. 100 m air pressure
         5. 100 m relative humidity

**Edit Station Area:**

1. **Measurements – Bulk Edit**
   1. Introduced bulk edit and bulk delete functionality in the Measurements tab.
   2. Checkboxes are now visible on all measurement rows at all times, with a master checkbox in the header to select/deselect all. The selection count is shown in the table footer.
   3. **Bulk Edit:** Opens a pop-up allowing users to update shared fields across all selected rows at once — Measurement Type, Height Reference, Height (m), and Notes. Height can be set as an exact value or as an offset applied to each row's existing height, with a live preview of resulting heights. Only fields with a value entered are updated; empty fields leave existing values unchanged. A bulk rename option is available to auto-generate names using abbreviated measurement type and height (e.g. `spd_100m`, `dir_80m`), with an option to include notes in the name. All changes are captured as a single undo/redo snapshot.
   4. **Bulk Delete:** Opens a confirmation dialog listing each selected measurement by name and type. On confirm, rows are marked for deletion on the frontend only — changes are not sent to the backend until the Save Changes button is clicked. A snackbar message confirms the action with an option to undo changes.

**Cleaning Tool – New Feature:**

1. **Sector Ratio Plot**
   1. Introduced a new Sector Ratio plot in the Cleaning Tool — a radial (circular) plot displaying the ratio between two wind speed measurements by direction sector.
   2. Users select a numerator wind speed, denominator wind speed, and wind direction measurement to generate the plot. Multiple independent plots can be added, and all are saved via Save Plot Settings.
   3. Cleaning can be applied directly via Box Select, with the two wind speed measurements pre-selected by default in the Add Cleaning pop-up.
   4. Default wind speed filtering rules (min 3 m/s, max 50 m/s) are pre-applied on plot creation and indicated by a badge on the filtering rules icon. Rules are fully editable, deletable, and can be supplemented with additional filters.

**Cleaning Tool – Enhancements:**

1. **Hover Toggle & X-Axis Year Display**
   1. The hover tooltip now always displays both date and time, regardless of zoom level or data range shown.
   2. The year is now always visible on x-axis tick labels, preventing ambiguity when reviewing historic datasets spanning more than one year.
2. **Time Range Slider – Cleaned Data Reflection**
   1. The Time Range Slider trace now reflects cleaned data — periods where values have been cleaned are shown as a straight line rather than displaying the original raw values.
3. **Reference Timeseries – Differentiated Style**
   1. Reference timeseries are now plotted as a dashed line in asphalt colour, distinguishing them from other measurement traces.
4. **Read All Users – Reference Dataset Access**
   1. Users with the Read All station role can now add, edit, and remove reference datasets (Station, MERRA-2, ERA5) in the Cleaning Tool, without requiring broader cleaning edit permissions.

**Cleaning Tool – Bug Fixes:**

1. **Secondary Y-Axis – Colour Palette Fix**
   1. Fixed an issue where secondary Y-axis measurements were not using the correct colour palette. They now cycle through the original palette colours following the primary axis traces.
2. **Incorrect/Unavailable Saved Reference Dataset on Load**
   1. Fixed an issue where the Cleaning Tool would plot a previously saved reference dataset that could no longer be matched to the station's nearest reference nodes (e.g. following a coordinate update). The reference input appeared blank on load despite traces being visible in the plots. The cleaning tool now detects this mismatch and displays a warning — "Saved reference no longer available" — informing the user that the saved reference has been removed from the plots and prompting them to select a new one.

**Map – Bug Fixes:**

1. **Filter by Height – Stations with No Height Still Visible**
   1. Fixed an issue where stations with no measurement height configured remained visible when a height filter was active. Stations with no height are now hidden whenever the height slider is moved from its default min (0m) or max (400m) limits.

**Notifications – Bug Fixes:**

1. **Pagination Not Working (Stuck at First 20)**
   1. Fixed an issue where the notifications panel failed to load beyond the first 20 results. Infinite scroll now works correctly, loading the next batch of 20 notifications each time the user reaches the bottom of the list.

**ETL Bug Fixes:**

1. **Floating Lidar File Format:**
   1. &#x20;**Allow editing measurement\_units**
      1. On regrouping columns and assigning them to different logger measurement configs, an error was raised as measuremen\_unit editing was not allowed. This has now been fixed.
2. **Averaging Period**
   1. A validation has been for this file format to check if the averaging period specified in the file name in the notes section matches the frequency of the data inside the file.
   2. If a mismatch is found, the file will be rejected with an error.
3. **Duplicate Logger Main Configs**
   1. Multiple files loaded consecutively caused a lot of duplicate logger main configs due to the \_10min suffix added at the end of the logger serial number. This was not correctly captured in the backend tables resulting in duplicates.
   2. This issue has now been fixed and existing sites have been fixed through a script.
4. **Vertical Profiler Properties**
   1. The vertical profiler properties date\_to values were being incorrectly populated on uploading files. Analyst’s update to the date\_to was also being overwritten with an incorrect date.
   2. This has now been fixed to populate the dates according to the parent logger main config.

***

### **\[2026-05-20]**

**Station:**

1. **Timeseries Download**: We now generate the assembled timeseries as a Parquet file, allowing faster handling of timeseries data in features like the Cleaning Tool, the download (via UI and API), and Monthly Report generation. Downloaded files remain in CSV format.
2. General – System Availability: Reduced the spacing between metric labels and their values in the System Availability section. Layout now adjusts correctly when the "System Availability for the past 7 days" metric is not present.
3. Setup – Interference Structure & Mast Property Dates: Date inputs for Interference Structures and Mast Properties are now restricted to fall within the **Logger Main Config** date range.
4. Settings – "No Permission" Role Tooltip: Updated the "No Permission" role tooltip in both the Organisation Settings permissions dropdown and the Add Member pop-up to clarify when and why this role should be used.
5. Edit Station Area – Validation Message Fix: Enhanced validation messages shown for the License and Notes fields.
6. Create Station: The "Find Your Logger from a List" option has been removed from the Create Station flow.
7. Edit Station Table – Persist Density Settings: Column density settings are now saved when navigating between tabs in the Edit Station table.
8. Setup – Compare Rows in Detailed Setup Breakdown: A 'Compare Rows' feature has been added to the ALL and LOGGER CONFIGS tabs in the Detailed Setup Breakdown table. When enabled, consecutive configurations for the same measurement point are compared sequentially, with changed values highlighted in purple, making it easy to identify what has changed between configs.
9. Stations Table – Column Alignment: Centre-aligned values for Latitude, Longitude, Country, No. of Open Issues, No. of Triggered Alerts, and Active Data Monitoring columns. Also fixed chip display being cut off at the bottom in Compact density mode.
10. Map – Filter by Height: Users can now filter stations on the Map by measurement height.
11. General – Card Height Inconsistency: Fixed inconsistent card heights for the **Overview** and **Open Issues** cards on the General tab. The Open Issues card now maintains a fixed height, with the issues list becoming scrollable when content exceeds the available space.

**Edit Station Area – Bug Fixes:**

1. Extra Rows in Summary Table: Fixed an issue where the Summary Table displayed additional logger config rows with incorrect date ranges for measurement points, causing mismatches with the Detailed Setup Breakdown table.
2. `logger_stated_boom_orientation` Validation: Fixed an issue where values outside the valid range of 0–360° could be entered and saved, causing data model downloads to fail.

**ETL – Bug Fixes:**

1. **Campbell Scientific Logger**:
   1. Fixed an issue where uploading a new timeseries file for a Campbell Scientific logger would incorrectly re-create measurements and logger measurement config rows for columns that had previously been marked as ignored. This happened for stations created using a data model, and then uploading files later.
   2. This also caused the ignored column to appear in the assembled timeseries data.
   3. The issue has been fixed to respect the analyst's ignored columns from the data model and not change them to un-ignored. This has been fixed for loggers where guessing is used - Campbell Scientific and Formatted CSVs.
2. **Floating Lidar Files**:
   1. Improved error handling: A validation has been added for enum values present in the file header such as measurement\_units or station type. Any value not matching the accepted values will raise an error and reject the file. E.g. A measurement\_unit set as "other".
   2. Earlier, the ETL processed the file and then failed in the pre-population step not letting the user know the cause of the failure. This has now been fixed and feedback shall be returned.
3. **ZX**:
   1. Fixed an issue where a `.CSV.zip` and `.ZPH.zip` uploaded together would result in both the files being processed. This has been changed to only process the `.ZPH.zip` and move the `.CSV.zip` to Processed directly.
   2. More bugs have been fixed so that the ETL prioritises source files over a `.CSV.zip` or a converted `.csv`. If a `.ZPH.zip`, `.ZPH` and a corresponding `.CSV` are uploaded together manually using Add Additional Timeseries Files button, the ETL will now only process the `.ZPH` and move the `.ZPH.zip` and `.CSV` directly to the Processed folder.
   3. Deleting one of these files (`.zph`, or `.csv`, etc.) will also delete all corresponding duplicate files to ensure clean configs and allow the analyst to re-upload the correct file.

**Cleaning Tool:**

1. **Enhancements:**
   1. Cleaning Rules – Multiple Conditions & Timestamp Support: Cleaning rules now support up to **4 conditions** per rule and an optional time range with up to 2 timestamp conditions.
   2. Custom Plot Toolbar: The Cleaning Tool plot toolbar has been redesigned with a new look and clearer tooltips.
   3. Filtering Rule per Plot: Users can now add filtering rules directly from the plot toolbar to temporarily hide values in a plot based on defined conditions. Each rule supports up to **4 conditions** and an optional time range with up to 2 timestamp conditions (AND/OR). Filtering rules do not modify the dataset or create a cleaning log, and are saved as part of the plot settings.
   4. Save Plot Settings Using Measurement UUIDs: Plot display settings are now saved using **Measurement UUIDs**, ensuring settings persist correctly when measurements are renamed or deleted.
   5. Flag Inactive Filtering Rules: When a filtering rule references a column that has been removed from a plot's data sources, the rule is now flagged as inactive. The filter icon badge turns amber and affected columns are shown as struck-through within the rule, allowing users to edit or delete the rule.
   6. Timeseries Data via Filtered API: The Cleaning Tool now fetches timeseries data based on the selected date range preset, reducing the amount of data loaded and improving performance.
   7. ERA5 / MERRA-2 Reference Support in Display Settings: ERA5 and MERRA-2 reference sources are now supported when saving display settings.
   8. Increased Plot Legend Width: The plot legend area has been widened to support approximately 15 characters before wrapping, making measurement names easier to read across all screen sizes.
   9. Apply Adjustment to Plot Data: Users can now apply available adjustments (Anemometer Calibration Slope and Offset, Wind Vane Deadband Orientation, and Lidar/Sodar Orientation) and select a date range directly from a new **Display Settings** pop-up in the Cleaning Tool.
2. **Bug Fixes:**
   1. Fix Misleading Loading Label: The second loading spinner in the Cleaning Tool now correctly displays "Processing Cleaning Data" instead of "Downloading", accurately reflecting what is happening at that stage.
   2. Cleaning Rule Applied to Wrong Measurement Point: Fixed an issue where a cleaning rule was being applied to the wrong measurement point.
   3. Single Point Clean Visibility Fix: Fixed an issue where a single cleaned measurement point was only visible when the "Valid" toggle was on, even when the "Invalid" toggle was enabled.
   4. Plot Resize Loading State: A loading state is now displayed when resizing a plot using the resize icon.
   5. 1-Hour Offset in Cleaning Log Entries: Fixed a 1-hour offset occurring when manually editing a date in the Cleaning Log, where the cleaned range shown in the plot did not match the entered timestamp.
   6. Fixed plots incorrectly connecting two separate cleaning selections with a line.
   7. Fixed Enter key not saving an edited date/time field.
   8. Fixed Box Selection not highlighting corresponding points between the Time Series and Scatter Plot — highlighting now works both ways.
   9. Duplicate Cleaning Rule – Incorrect Measurement Names: Fixed an issue where duplicating a cleaning rule for a wind speed measurement would incorrectly add similar column names due to partial string matching.
   10. ZX Cleaning Rules – Auto-generation for All Heights: Fixed an issue where cleaning rules were not automatically generated for measurement heights added after initial station setup. Rules now auto-generate for all active heights, with `clean_out` correctly set at the measurement point level rather than including individual statistic types.

**Issue Log:**

1. **Bug Fixes:**
   1. Issue Log – Set Date Fix: Fixed a timezone offset bug where saving a date on an Issue Log entry would incorrectly shift the value by 1 hour.
   2. Issue Log – Unsaved Rows Fix: Fixed an issue where saving one row in the Issue Log would discard all other unsaved rows. Each row can now be saved independently without affecting others.

**Data Retrieval:**

1. Data Retrieval – Ignore Pre-Commission Files: Data files received via email with a date earlier than the configured `logger_main_config.date_from` are now automatically ignored and moved to the Ignored folder.

**Organisation:**

1. Bug Fix: Added missing **asterisk** indicators for the required **"Default Station Permission"** and **"Organisation Role"** fields.

**Global Enhancements:**

1. Seconds in Date Pickers: All date pickers across BrightHub now support seconds, using the format `YYYY-MM-DD HH:mm:ss`. Users can manually type any valid time value, including non-interval minutes and seconds, across all features.
2. Tables – Column Selection Count: The **Columns** button now displays a badge showing the number of selected columns out of the total available (e.g. `3/30`), making it easy to tell at a glance when a table has been customised. The badge is only shown when not all columns are selected.

**Roles & Permissions:**

1. The **"View Station Settings"** and **"View Station Member"** user actions now include **Write** permission access.

**Gitbook Documentation:**

1. **Roles & Permissions Reference Pages Added**
   1. The BrightHub user documentation has been updated with two new reference pages covering roles and permissions:
      1. [Station-Level Permissions](https://brightwind.gitbook.io/brighthub-user-docs/reference-user-manual/permissions/station-level)
      2. [Organisation-Level Permissions](https://brightwind.gitbook.io/brighthub-user-docs/reference-user-manual/permissions/organisation-level)

***

### **\[2026-05-07]**

**Notifications**

1. **Notifications System (Phase 1)**

   1. A new Notifications system has been introduced in BrightHub. ETL service errors can now be viewed in the BrightHub UI for the relevant station.
   2. Key updates include:
      1. Added a Notifications bell icon in the top navigation bar.

      2. Users can view station-related ETL error notifications directly within BrightHub.

      3. Clicking a notification opens a detailed view showing the full error details.

      4. Notifications can be filtered by read status and user role: Primary, Backup, and Watcher.
         1. Default selected filters are: Unread, Primary, Backup, and Watcher.

      5. Notification timestamps are displayed in UTC.

      6. Users can search, pin, and mark notifications as read or unread.

   > Notifications are sent to users on the station Watchlist. Primary and Backup Analyst roles take priority over the Watcher label — users will only receive one notification with the most relevant role label.

   **Station**

   1. **Watch Station**
      1. A new **Watch Station** feature has been added across station-level tabs. Users with the 'Watch Station' permission can watch or unwatch a station directly from the station header, adding themselves to the station's Watchlist to receive station-related notifications.
      2. Automatic Watchlist updates have been introduced for the following actions:
         1. Creating a station
         2. Configuring Data Retrieval Setup
         3. Configuring Daily Data Monitoring Setup
         4. Assigning Primary or Backup Analysts
      3. Users can only manage their own watch status.

**UI**

1. **New Loading Spinner**
   1. A new loading spinner has been introduced across BrightHub.

***

### \[2026-04-02]

**Landing Page**

* Added a “Log In” button to the *Contact Us* and *Disclaimer* pages when users are logged out

**Station**

* General/File Manager&#x20;
  * Display and Upload Station Images in the General Tab
    * Users can upload, view, search, and preview images *(upload requires Write permission and above)*
      * Images can be uploaded from either the General tab or the display-images folder in the File Manager
    * Added thumbnail size options (Small / Large)
    * Image list is automatically synced with the File Manager (display-images folder)
* Download Timeseries Data
  * Fixed an issue where assembled timeseries downloads could contain duplicated columns

**Cleaning Tool**

* Repositioned the **Time Range bar** in the Cleaning Tool
  * Now remains visible while scrolling
  * Displays the Primary Measurement as a visual reference
    * If no Primary Measurement is configured, the first measurement from the first timeseries plot is used
  * Added navigation controls to pan or jump across the selected time range
* Introduced a new **Timeseries Ratio** Plot
  * Enables comparison between two measurements by plotting their ratio (Measurement A/Measurement B) over time
* Date From and Date To are now editable in the Add Cleaning pop-up *(for Timeseries and Timeseries Ratio plots only)*
* Added the ability to **Move** plots within the Cleaning Tool
  * Plots can be moved to a specific position within their lane using the new Move icon in the action list above each plot
  * Changes are saved when clicking Save Plot Settings
* Fixed an issue where cleaning log entries referencing deleted measurement points were not handled correctly
* Fixed an issue where cleaning rules did not remove invalid values at daylight saving time boundaries

**Edit Station Area**

* Added a **Compare Rows** button in the Summary Table
  * Enables sequential comparison of configurations representing the same measurement.
  * When enabled, the system compares consecutive rows and highlights only the differences directly within the table.
  * Comparison logic applies only to rows where the *Name* value is repeated.
* Fixed an issue where the Undo dropdown in Edit Station Area could show incorrect entries after adding a row in Logger Measurement Configs
  * Undo history now reflects the correct table action

**Organisation**

* Improved the Organisation → Stations table and Stations table
  * UI enhancements: Improved readability by updating value text colour within \[%] bars
  * Added System Availability for the past 7 days \[%] to the Data Monitoring view

**ETL**

* Added support for defining **`Date To` in Logger Measurement Configurations**
  * Previously, the **Date To** column was left empty for logger measurement configs.\
    This has now been updated to align with logger main configs, and the dates are automatically populated when files are loaded.
  * The dates are also updated when a file is deleted or added.
  * The analyst is now allowed to make edits to the Date From and Date To.
    * The dates on a logger measurement config can be updated provided they are within the bounds of the dates extracted from the uploaded logger files.
    * The analyst can also break a logger measurement config between the whole period and assign it to different measurement points for a part of the period. The same validation as above applies.
    * If the analyst creates a station using the data model which has no Date Tos specified, the ETL will populate the Date To when a logger file is processed.
    * Note that the analyst still cannot edit the information extracted from the logger files. E.g. slope, offset, etc.<br>
* **ZX Lidars**
  * The **zph2csv converter software version** has been updated to **V2.5.0.5 from V2.5.0.3**&#x20;
    * Ensures compatibility with older firmware versions and no special handling has been done for the converted files.

***

### \[2026-03-11]

**Station**

1. **Create Station:**
   1. Enhancement: Update Compile Error Pop-Up Messaging.
      1. Updated the compile error pop-up message displayed during file uploads to provide clearer feedback.
2. **Edit Station Area:**
   1. Bug fixes for: Undo/Redo.
      1. Fixed issues related to adding invalid values.
   2. Enhancement: Navigation Redirection for Undo/Redo.
      1. After performing an Undo or Redo action, the user is now automatically navigated to the relevant tab and table, and the affected cell is highlighted.
   3. Bug fix: \[Delete Processed File]- Logger Measurement Config UI Loses Column Group Mappings After Processed File Deletion.
      1. Resolved an issue where column group mappings in Logger Measurement Config disappeared from the UI after deleting a processed file.
3. **Cleaning Tool:**
   1. Bug fix: Reanalysis Measurement Type Not  Always Displayed in the Reference tab.
      1. Now, in the Reference tab → Select Data Source pop-up, the Measurement Type is now always displayed.
4. **File Manager:**
   1. Enhancement: Allow users to 'Move' file(s) from the Processed folder.
      1. Users can now move files from the **Processed** folder using the existing **Move** action. Moved files are handled in the same way as deleted files.

**Organisation**

1. Fixed filters on Org → Stations table for:
   1. No. of Open Issue
   2. Timestamp of Last File Received
2. Stations Enhancements View (Org → Stations table):
   1. Added **new fields:**
      1. Overall System Availability \[%]
      2. System Availability for the past 7 days \[%]
      3. Primary Measurement Data Availability \[%]
   2. Add Views to Stations Table at an Org level
      1. Introduce **Views** in the **Org Level → Stations tab table** to let Wind Analysts quickly switch to a predefined “Data Monitoring” & “All'' views (pre-set filter + columns selected), instead of manually hiding/showing columns.

**Map Page**

1. Add Table View of Stations for a User
   1. A Stations Table View option has been introduced under the Map icon in the left toolbar, allowing users to view all stations they have access to in a structured table format.

**ETL**

1. Bug Fix: Not Possible to Delete Logger Files within Stations Created Using WRA Data Model
   1. It's fixed now, when deleting all uploaded processed files, they will be removed successfully and the user will be redirected back to the **root folder in the File Manager tab**.

**Policy – Capture User Consent During Sign-up**

1. To enable BrightHub to send marketing communications, we now capture user consent during the sign-up process. by adding this pop-up during sign-up:
2. Users can opt in/out of receiving email updates from Account Settings → User Actions.

**Contact Us - new page:**

1. Added a new **Contact Us page** with UI improvements..

**System Availability Service:**\
Enhancement: \[System Availability]- Dynamic Averaging Period Detection .

1. Improved the system availability service to dynamically detect the appropriate averaging period.

***

### \[2026-02-12]

**Station:**

1. **File Manager – Delete Processed File**
   1. Users can now delete files from the **file-processing → processed** folder.\
      Deleting a processed file permanently removes the file from S3 and the UI, and also deletes all associated **timeseries data, extracted metadata, and derived configuration records**, ensuring the station remains accurate and free of incorrectly processed data.
2. **Edit Station Area – Undo / Redo**
   1. Undo and Redo functionality has been added to the Edit Station area, allowing users to safely revert and reapply changes made during the current edit session.\
      An Undo/Redo dropdown list (DDL) has been added, displaying a chronological history of saved changes within the current edit session. Selecting any item in the list will undo or redo that change and all subsequent changes, giving users clear visibility and control over multi-step edits.
3. **Station – System Availability Enhancements**
   1. Fixed calculation for:
      1. Overall System Availability
      2. System Availability for the Past 7 Days
   2. Download CSV updated:
      1. No longer split by year
      2. Displays continuous blocks of true / false
   3. UI enhancements:
      1. Improved alignment and spacing
      2. Adjusted layout of title and metrics
      3. Added legend for clarity
      4. Updated tooltip & info text from *“end of previous day”* to **“Start of Today (station’s local time)”** to align with exclusive timestamp logic
4. **Cleaning Tool – Box Select Fix Deployed**
   1. When using **Box Select** on a plot and selecting additional measurements in the “Add Cleaning” dialog, cleaning is now correctly applied to **all selected measurements**, including those outside the original plot.

**ETL:**

1. **Campbell Scientific TOACI1 File Format**
   1. BrightHub now supports processing of **Campbell Scientific TOACI1** file format

***

### \[2026-01-28]

**Organisation:**

1. **Organisation -> Settings**: Users can now remove themselves from any organisation, with safeguards in place to ensure at least one Owner remains.

**Station**

1. **Edit Station Area:**
   1. Bug fix: Previously, values exceeding the maximum character limits could still be saved in the *License* and *Notes* fields. This has now been fixed—inputs are limited to 20,000 characters for License and 1,000 characters for Notes, and an error is shown if the limit is exceeded.
   2. Enhancement: Added inline validation for *Logger Stated Device Orientation (deg)*, providing immediate feedback when values fall outside the accepted range.
2. **Issue Log:**
   1. Bug fix: Fixed an issue where clicking *Save* multiple times could create duplicate comments.
3. **Cleaning:**
   1. Enhancement: Improved the Add Cleaning pop-up to clearly indicate whether the selected date range is inclusive or exclusive.
   2. Enhancement: Allow 2D Box Selection
      1. Using Select Box → Add Cleaning now applies cleaning only to measurements on the Primary Y-axis, excluding Secondary Y-axis and Reference measurements.
      2. Introduced Primary Y-axis thresholds for the selection box.
         1. Min/Max value thresholds are defined when adjusting the selection box height and are explicitly defined as Primary Y-axis thresholds.
         2. When the entire Y-axis range is selected, value thresholds are ignored, and cleaning applies to all data within the selected date range.
   3. Bug fix: Fixed an issue where cleaning plots were misaligned, ensuring plots and axes now line up correctly and labels are displayed clearly.
   4. Bug fix: \[API Service] Fix lidar default cleaning rules and saved settings columns not found.
      1. Previously, default cleaning rules incorrectly assumed that the **“avg”** statistic type was always available. For some stations (e.g. where only **“max”** exists), this caused default cleaning rules to fail.\
         This has now been fixed by:
         1. Selecting the appropriate statistic type based on availability and priority rather than assuming “avg”.
         2. Correcting default settings where column names with indexed suffixes did not exist in the assembled timeseries file.
         3. Ensuring default cleaning rules and settings are inserted using valid column names only.
   5. Bug fix: Cleaning log files from Windographer were not uploading.
      1. Previously, windographer file uploads presumed that the windographer cleaning log xml time segments always included a start and a end date time index. It also presumed that windographer cleaning dates were inclusive, exclusive (as is the case with the brighthub cleaning log)
      2. Both the windogrpaher cleaning upload and download have been updated to account for the inclusive, inclusive approach used in windogrpaher as well as handling the cleaning of a single timestamp which windographer only specifies a single time index, instead of start and end.
   6. Bug fix: Cleaning tab missing column names for plots not showing
      1. Previously, if plots had been configured for specific assembled column names, and the column names are no longer in the assembled timeseries file (i.e. f the measurement point name was updated), the cleaning tab page would crash
      2. Now, if the assembled column name is not found, the user is presented with a pop-up listing all the column names that are not found and the user can go into each plot and select the updated column name.
4. Created a new **'Contact Us'** page within BrightHub and added a dropdown list from **'?'** icon.
   1. Newly created a Contact Us page, that you can access from BrightHub landing page or from '?' icon in top nav bar.
   2. Also, added new dropdown list items to the '?' icon
      1. Contact Us, when clicked redirects the user to the newly created Contact Us page
      2. Book a Demo, when clicked redirects the user to ([https://meetings-eu1.hubspot.com/shane6/brighthub-introduction?uuid=0cd54cf3-b38a-4954-8a82-22fe2fb…](https://meetings-eu1.hubspot.com/shane6/brighthub-introduction?uuid=0cd54cf3-b38a-4954-8a82-22fe2fb%E2%80%A6)).
5. **ETL**
   1. Bug fix: NRG - Data column grouping and logger measurement config Bug.
      1. We have recently seen files with sensor type and direction in the column names. This has now been handled in the extraction.
   2. Bug fix: Floating Lidar-Timeseries has not assembled correctly, accounting for 30-min data.
      1. File with 10-minute interval timestamps and files with 30-minute interval timestamps with overlapping periods have now been handled.

***

### \[2026-01-15]

**Organisation**

1. Organisation → Stations Table
   1. Fixed filters for **No. of Triggered Alerts** and **Days Since Last File Received**.

**Station**

1. Edit Station Area
   1. Bug fixes
      1. Reduced excessive scrolling required to reach the **Save** icon in the **Mast Properties** table.
      2. Prevented future dates from being entered in the **Date of Calibration** field. The field is now validated and shows an inline error with a tooltip when a future date is entered.
      3. Fixed an issue where the **Updated At** field was editable in the **Mounting Arrangements** table. The field is now read-only.
      4. Fixed an invalid country error when **Great Britain** was selected during station setup.
   2. Enhancements
      1. Column names are now displayed as tooltips in the **Measurements** table, showing all associated logger measurement config column names upon hover.
      2. Added a **Duplicate** (previously named 'Copy') feature to the **Sensors** table.
2. Data Monitoring
   1. Enhancement
      1. Extended SFTP file extension support to include **.dat** files.\
         `.dat` is now available in **Data Retrieval → SFTP file extension**.
   2. Bug fix
      1. Fixed an issue where users could not be removed from **Backup Analysts**.
3. Cleaning Tool
   1. Bug fixes
      1. Fixed a **403 Forbidden** error when a user without access to a reference station opened the Cleaning Tool with saved plot settings containing that reference.
      2. Fixed an issue where selected points were not cleared on the scatter plot when the timeseries selection was removed.
      3. Fixed scatter plots not accurately reflecting all selected points from the timeseries.
   2. Enhancements
      1. Synced scatter plot selections with the timeseries plot. Selecting points on either plot now highlights the corresponding points on the other.
      2. Added **collapse / expand** functionality for plots.
         * Default view: first 3 timeseries plots and 1 scatter plot expanded.
         * Remaining plots are collapsed by default.
         * Maximum of 6 plots can be expanded at once.
      3. Added **Show Plot / Hide Plot** actions.
      4. Improved visibility of selected points on scatter plots.
      5. Added **“Ref”** label to legend entries when the reference is another measurement station.
      6. Added measurement unit labels to plots.
4. Issue Log
   1. Enhancement
      1. Extended Issue Log search to include **comments**.\
         Searches now return issues where the keyword appears in the issue title or any associated comments.
5. Create Station
   1. Released **WRA Data Model v1.3.0-2024.03**, including:
      * Measurement UUID support
        * License field support
   2. Users can now create stations using Data Model v1.3.0.
   3. Added a **License** field to the Measurement Location tab on both **Create Station** and **Edit Station** pages.
   4. Released **WRA Data Model v1.4**, adding new properties as defined in the data model.
6. **ETL**
   1. Bug fixes
      1. Fixed logger config issues and enhanced **reference\_height** handling for Floating LiDAR.
      2. Fixed overlapping measurement configs caused by logger stated height changes over time.
   2. Enhancements / New Releases
      1. Updated counter logic in the Measurement Naming Convention.
         1. Naming format remains: *Measurement Type* (e.g. `Spd`) *→ Height (e.g.* `80m`*) → Identifier (e.g.* `_1`*,* `_2`*).*
         2. Identifiers are applied only when duplicate measurement names exist.
         3. The identifier resets to `_1` for each new set of duplicated measurement names.
      2. Enhancement: Identify new logger model WindCube v2.1 XP
7. **SSO**
   1. Enhancement
      1. Blocked password reset flow for **Microsoft SSO** users.
   2. Bug fix
      1. Fixed an issue where logged-in users were shown the login form when accessing `/auth/log-in`.

***

### \[2025-12-05]

1. **Upgraded to MUI Date Grid Pro v8 from v5.**
2. **Map**
   1. Improved Station Search: the search bar now matches accented and unaccented characters so stations can be found without typing special characters.
3. **Station**
   1. Auto-retrieve Country Field:
      1. Country is now auto-derived from the Google Maps API whenever the station’s latitude/longitude is updated or the map pin is moved.
      2. The field pre-populates immediately and remains editable.
      3. Confirmation pop-up updated to inform users that Country and Elevation fields will also update
   2. System Availability – Handle No Resource Data
      1. Frontend now checks the start–end-date API response before requesting availability.
         1. If no resource data exists, availability is skipped and “No data available” is shown, preventing unnecessary 404 errors for valid cases.
4. **Cleaning Tool:**
   1. Bug fix: Sorting arrows in the “Select Data Source” pop-up now reorder checkbox fields correctly.
      1. Sorting arrows in “Select Data Source” now correctly reorder checkbox fields.
   2. Enhancement: Limit data Loaded.
      1. Added a new **Date Range** dropdown (default: *Last 60 days*; or *Last 30 days* if the station has less than 60 days of data). The data plotted is affected by the selected date range.
      2. Supports preset ranges + **Custom Time Range** via a pop-up.
      3. Time Range bar updates according to the selected period.
      4. **Save Plot Settings** now also saves the chosen date range.
   3. Bug fix: Downsampling button is not working.
      1. Tooltip now shows whether downsampling is **On** or **Off** upon hovering over the downsampling button above each plot.
      2. Downsampling is now applied **per plot**.
      3. Integrated with data presets:
         1. ≤ 60 days → actual data
         2. \>60 days → downsampled data
   4. **Bug fix: Plots not scaling vertically after zooming out following cleaning.**
      1. Fixed issue where plots did not scale correctly after zooming out following cleaning.
5. **ETL:**
   1. **ZX**
      1. Enhancement: Handle short subject line for ZX emails.
         1. Validation for the email subject line in Data Retrieval Setup has been updated to allow subject lines as short as **4 characters**, enabling setup for stations where ZX emails use short identifiers. No backend changes expected.
      2. Enhancement: Add “ZX 300e” to accepted logger model types on Create Station page and Upload Timeseries Data.
         1. The ZX300e model is now included in the logger model on both the Create Station page and Upload Timeseries Data Files page.\
            Display order: **ZX300 → ZX300e → ZX300M**.
   2. **Ammonit**
      1. Ammonit Gust files will now be identified by the ETL and moved to the ignored folder for the station.
   3. **Floating Lidar**
      1. The 'ti' data column had been duplicated in two different groups. Better grouping logic has been implemented to avoid this.
      2. 'Notes' section will be included when grouping i.e. if the notes are different, then it is a different group and measurement point.
      3. reference\_height will be set to 'mean\_sea\_level' if the station type is floating\_lidar
6. **Reanalysis**
   1. MERRA-2:
      1. Added additional reference data:
         1. *850 hPa wind speed*
         2. *850 hPa wind direction*
         3. *2 m dew point temperature*
   2. ERA5:
      1. Added *2 m dew point temperature* reference data

***

### \[2025-11-28]

**zph2csv Converter — Updated to Version V2.5.0.3**

BrightHub now supports processing files converted with zph2csv v2.5.0.3, the version required for handling data from ZX300e LiDAR units running firmware v4.5004.

***

### \[2025-11-18]

**Authentication & Login**

1. Preserve Destination & Redirect After Login
   1. When accessing a BrightHub link (e.g., Station or Organisation URL) while logged out, users no longer need to re-paste the link after signing in. Upon successful login, users are now automatically redirected to the originally requested page.
2. Enable Microsoft Single Sign-On (SSO)
   1. Users can now sign up and sign in using their Microsoft account.
3. Require reCAPTCHA During Sign-Up
   1. A reCAPTCHA verification step has been added during sign-up to enhance account security.
4. Updated Verification Email
   1. The verification/confirmation email sent during sign-up now includes an improved layout and a direct verification link.
5. Welcome Email for First-Time Sign-In
   1. A new Welcome Email is sent when a user signs in for the first time (regular signup or Microsoft SSO).

**API Key Management**

Users can now configure and authenticate APIs using programmatic **Access Keys**.

A new **Manage API Keys** section is available in\
**Account Settings → Settings**:

1. Create API keys
2. Activate/deactivate keys
3. Delete keys

More information: [API Key Management Documentation](https://chatgpt.com/c/insert-API-Key-Management-URL-here)

**Error Messaging**

1. Cognito Error on Password Reset (Unconfirmed Email)
   1. Users attempting to reset a password for an unconfirmed email will now see the correct Cognito error message.

**Organisation**

1. Display Sign-In Method in Members Table
   1. The Organisation Members table now displays the user’s sign-in method using an icon:
      1. Microsoft icon
      2. Password icon

**Timeseries File Processing Updates**

1. Bug: Processing Files from Different Logger Types\
   File processing failed when a Kintech Logger was replaced with an Ammonit Logger.\
   Fixes implemented:
   1. Files from different logger types can now be processed correctly.
   2. New column names, logger measurement configs, and measurement points will be added after the first file from the new logger is processed.
2. Bug: Campbell Scientific — `statistic_type`\
   Columns ending with `_SD` will now correctly map to the `sd` statistic type. Additional variations (e.g., `sdev`, `std`) are also supported.
3. Bug: Floating Lidar — Missing Assembled Timeseries Data\
   Files with non-null `logger_serial_number` values appeared to upload successfully but produced empty assembled timeseries (timestamps only).\
   Fixes implemented:
   1. If `logger_serial_number` is empty or null → the system uses **“Other”**.
   2. Non-empty values are mapped to the correct `logger_oem_id`.
   3. If multiple loggers exist in the header → the **first logger** is used.

***

### \[2025-10-30]

**ZX Lidars**

1. Handling Unaveraged Files
   1. Unaveraged `.ZPH` files are now automatically identified and moved to the station’s\
      `file-processing/ignored` folder.
   2. Corresponding averaged files continue to process normally.
   3. Logger-email-etl (old platform) updated to correctly identify ZX emails.

**Note:**\
If a station receives both averaged and unaveraged emails, ensure the Subject line contains a common identifier (e.g. `6123@Y`).\
Example:

1. `Daily Data: Wind10_6123@Y2025_M10_D10.ZPH (Averaged)`
2. `Daily Data: Wind_6123@Y2025_M10_D10.ZPH (Unaveraged)`

**zph2csv Converter**

1. Updated from **v2.3.0.2** to **v2.5.0.2**\
   This update enables support for processing files from the ZX **300e** logger model.

**WRA Floating Lidars**

Column Name Format Validation

1. The system now validates CSV columns against the expected WRA Floating Lidar format.
2. Invalid files are rejected, and a list of invalid columns is displayed in the UI.

Default Logger Main Config

1. WRA format does not enforce a main logger config.
2. BrightHub now assigns a default config using:
   1. `logger_oem_id = "Other"`
   2. `logger_model = "Other"`\
      instead of rejecting the file.

***


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://brightwind.gitbook.io/brighthub-user-docs/release-notes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
