Configuration Health now calls the API through the standard data-model layer (device list, latest telemetries, published application versions), fixing CORS failures on white-label instances caused by its custom API client
Clicking a location in the location list navigates client-side instead of triggering a full page reload
Organization list search input is now debounced (500ms) to reduce the number of API calls while typing
Show time source (timezone abbreviation or UTC offset) in all formatted date/time strings across Box UI
Country-based legal terms agreement: account profile and welcome flow let users pick their country (grouped by region) to determine which legal terms apply, replacing the previous direct region selector
Device list table column headers and export column picker are now translated (English and Chinese)
Configuration Health blank screen check now uses Content Guard alert rules (CONTENT_GUARD_IMAGE_SIMILARITY with "Blank screen" managed category) instead of SCREENSHOT condition
"Keep applet running" checkbox for proprietary timers (device timer tab and device policy), keeping the applet running while the timer turns the display off. On the per-device timer tab the checkbox is shown only when the device reports the KEEP_APPLET_RUNNING management capability
Fixed Vite asset path resolution causing bundler-imported assets (loader GIF, fonts, images) to be unreachable at runtime
Invite company member now provides better UI feedback during the invite process
Organization list search now uses the search query parameter to match by name, title, or UID instead of filtering by title only
Configuration Health Check page optimization — use Organization entity counts for instant location/tag checks and device count progress initialization, eliminating redundant API calls
Fix company member invite sending 'master' role instead of 'manager' to the API
Remove single-company restriction when adding users to companies and organizations
Configuration Health blank screen alert detection — read op field (not operator) in CONTENT_GUARD_IMAGE_SIMILARITY conditions to match actual API data structure, fixing false "not configured" result
(internal) Replace timeoutMS with serverSelectionTimeoutMS for MongoDB connections to prevent false 503 healthcheck failures when a single replica node is degraded
Await remote desktop stop before closing modal to prevent stale session on reopen
Type compatibility with @signageos/common-types 6.x (TS2590 union complexity in BulkOperationComposable, TS2322 in DeviceDetail action log components)
Fix unnecessary policy API calls on device detail page when device has no assigned policies
(internal) Migrate IAccount type from legacy hand-written interface to API-based Zod-inferred type from account.types.ts
(internal) Move account fetch/update to API callbacks (remove server-side action handlers)
Scheduled reboot remove button no longer requires filling in the new reboot form first
Supra UX improvements: show info banner when device applet/timing is controlled by Policy; disable Supra toggle on timing list when device is not colocated with Supra server or when Policy governs applet (toggle still reflects current status)
DevSpace access page: show "Assign now" button for Company Master/Owner linking to Company accounts settings
Updated and optimized application platform icons, added flavour-specific icons for BrightSign (Nine), Tizen (TEP, ePaper), and webOS (IDCAP)
Improve Scripts UX: auto-select latest version when executing, tooltips on action buttons, filter bulk operation scripts by device organization
Organization updated action log
Content Guard UX improvements: replace valid/invalid labels with Badge dots and tooltips, move type tabs to filter Select dropdown, add URL param for item drawer deep-linking
Harmonized loading indicators across all pages — replaced WaitIndicator (yellow GIF) and legacy Spin with Ant Design Skeleton and native antd Spin
Improved detail page loading skeletons to match final page layouts (Device, Location, Organization, Alert Rule, Plugin, Runner, Applet, Package, Custom Script, Device Policy, Bulk Operation)
Centralized detail page loading skeleton in Page component — removed per-page custom loading content for uniform loading experience
Replaced WaitIndicator early-return pattern in Terms and Conditions page with Page loading prop
Auto-resize icon uploads to 50x50 pixels instead of rejecting wrong dimensions
Harmonize button icons (PlusOutlined) and list page button consistency across all pages
Harmonize detail page header buttons with More dropdown pattern
Device Export using api
(internal) Invalidate white label cache on company network update in admin-api
FeatureFlags management in policy
Filtering and search for Plugin and Runner list pages (search by title, filter by platform and tags)
Client-side search for Scripts tab on device detail page (search by name or description)
Display banned reason in device detail header info
Supra on-premise: device detail Supra tab with status, install/uninstall actions, connected clients, and monitoring; Supra Server badge on location device list; Supra toggle column in timings table
Supra on-premise: dedicated SupraActions RBAC permission; optimized SupraClients row-level data fetching
Device Export using api
Device Export drawer UX improvements: Export to CSV button in header, checkbox list for column selection with search and select all, filter-awareness note, improved close confirmation message
(internal) Invalidate white label cache on company network update in admin-api
(internal) Removed unused OrganizationDetailPage code: production toggle, max devices count form, issued license table, and all related actions, sagas, reducers, handlers, and facades
Hide Contact sales on EndOfTrialVersionPage for WL
(internal) Refactored favorites to data model
(internal) Moved the functionality to change an organization's parent company from the Box app to the Judo app. This operation requires admin-only access for security reasons.
Improved Subresource Integrity (SRI) implementation for CDN resources
(internal) Fixed authentication timing issues for legacy login by conditionally enabling API calls based on Redux auth state, and prevented permissions errors on page refresh by deferring account fetching on public routes
Company member list is automatically refreshed after successfully inviting a new account to the company. This provides immediate feedback to users without requiring a manual page refresh.
Test new device gateway feature on device detail Info tab allowing users to manually switch individual devices between old and new endpoints device can connect to
Refactored core UI components to align with the updated Design system guidelines, ensuring consistent styles, spacing, and interactions across the application
(internal) Locked domain model to command dispatcher
Create new license form – instead of separate inputs for the number of devices and number of months, there is now a single input for the total number of credits
Additional validation step before creating bulk action that allows users to preview how a bulk action will affect their devices before actual execution
Credit transactions are now loaded using a REST API (Credits tab on a company detail page, out of credits page)
Improved description and copy for Licenses sections.
(internal) evaluation of whiteLabelSettings within a company network
(internal) Force usage of zen-observable instead of the native Observable. Some browsers now include a native Observable
implementation, but it is incompatible with the expectations of the aperol library, which depends on zen-observable. The polyfill from
@signageos/lib/dist/TypeScript/observable-polyfill attempts to patch this, but does not enforce zen-observable when a native
implementation is present. This change ensures zen-observable is used consistently, avoiding compatibility issues.
(internal) company billing plan is set to default value
showing correct number of scripts execution for Device
handle invalid app version in CoreAppSelect(SmartBuilder), when choosing Android target build
Fix rendering of Google ChromeOS Setup tab on organization detail when current domain is Sony-specific
(internal) Send company network UID when creating new company under company network
(internal) Pages related to Device Telemetry are now loaded from MongoDB database instead of InfluxDB. This change is transparent to the
user and should not affect the functionality.
License list page for company network managers
License list page for admins
Added license redeem action for company owner
Added basic licenses stats to company overview page
Added license balance info on company detail page
Added new version of custom script tab on device detail page
Execution of custom script is showed properly in device history on the device detail page
Show license stats and other info only for companies with credit billing type
Bulk actions support custom script execution
Users can list scripts by selecting the Scripts menu item under the DevSpace menu section.
Script has its own detail page with detailed information about the particular script. Additionally, the source code can be downloaded for
each supported platform.
New license form that allow users to create application licenses
(internal) Show license info warning based on company credits
(internal) Show license stats expanded to whole row
(internal) Modal on admin Accounts page for managing company network manager role
Company network - list companies page
Added new page for company network managers to allow them to create new account & company
Allow to set company billing model for company network managers
(internal) Fix for company network create company form
Handle missing device timezone by falling back to UTC
Fixed an issue with finding the latest application version by application type, added proper handling for cases where no application
version is available
Fixed determining the success of power action scheduling based on policy for Android devices
Bulk action wizard keeps current filter even when socket is reconnected
Bulk action from alert detail for specific devices selection works
Update policy name does not impact policy items
(internal) Fix creating license for higher amounts of generated licenses
If secret value types are present in an applet configuration, whether through a bundled applet or a device policy, they are now properly
masked in the user interface
Policy applet item configuration does not set empty object
(internal) Function that parses an account from the ACL state. If the account in the ACL state is empty, it retries parsing until a valid
account is obtained.
The user interface has been refined for a lighter, more streamlined look.
Added an option on the Profile section to switch to a high-contrast theme, improving accessibility for users with visual impairments.
Added firmware filter function for WebOS
Removed the "Tags" and "Packages" tabs from the organization detail page; packages and tags now have dedicated pages under the "Organize"
group in the main menu