Sony Extra bulk actions for legacy (Android 10/12) and Android 14+ BRAVIA devices: pro settings, input source, Pro Mode, firmware update, Wi-Fi, and per-app enable/disable pushed through the Sony RMS API with automatic device-variant scoping.
The Cmd/Ctrl+K modal is now a command center: unified search across pages, devices, locations, and commands; slash commands (/reboot-style power actions, /monitoring, /tray and /pin for pasted UID lists); Tab scoping; an explicit Switch company command; Send to Slack; and a sidebar search entry that opens it. Available to all users.
Working-set multitasking: visited detail pages (devices, locations, alerts, policies, applets, scripts, and more) collect into a subtle bottom tray (pin, remove), the Cmd/Ctrl+K palette switches between them, with Alt+1..9 and Alt+Arrow shortcuts and a mobile bottom sheet.
Tags now provide an organization quick filter beside search, use the standard device icon, and show clickable hierarchy context for nested tags in flat text-search results.
Adding a new device uses a six-character code input with a live device-screen preview, provisioning tips, optional location and tag assignment, and a list of recently provisioned devices.
Power actions (device detail, device list, bulk actions) are grouped into sections with icons and hover descriptions.
APK package version uploads are now completed in a single step, making package publishing simpler and more reliable
Package management now uses the same API-backed data flow as the rest of Box, improving consistency and reliability when browsing and managing packages
Tag statistics on the Tags page, the Locations list statistics (locations, cities and locations without devices, moved out of the page header) and the location detail information can now be minimized into a compact toolbar row and expanded back into cards, the same way as the device detail overview. The minimized location detail row shows devices, alerts, uptime, city and state, custom ID, tags and photo thumbnails. Each of them remembers a previously made Show more/Show less choice; the Tags and Locations list statistics start minimized, the location detail starts expanded.
Device detail Telemetries tab now shows Plugin, Runner and other telemetries, with per-field cards, change timelines and a change history drawer. Plugin and Runner fields declared as secret or encrypted are masked everywhere (card value, tooltip, timeline, records table and drawer), change timelines mark only real value changes instead of every periodic report, and the Online status card no longer shows a device with no reported online status as fully available — such time is grey and unknown, including the part of a bucket before the device was created. As a side effect of that, an averaged uptime percentage across devices no longer counts a device with no uptime record as 0 %.
The Cmd/Ctrl+K command center now ranks device and location results by how well they match what was typed, so short queries no longer fill the list with hits matched on a hidden field (serial number, MAC or IP address) while the obvious name matches stay off screen. Scoped searches (Search devices, Search locations, power-action targets) also got a Back button in the dialog header, so returning to the full search no longer means closing the whole modal.
Device time and its incorrect-time warning are now read from the latest device telemetry everywhere they are shown (device Info, Settings and Troubleshooting tabs, device list, monitoring detail), so a device that fixed its clock stops being flagged.
Duplicate sos_redis_driver_errors series with identical labels (dropped by Prometheus as "different value but same timestamp") and sos_redis_driver_connection_ready/_end counters silently not counting after the first redis error
The alert list and alert detail no longer query devices per alert to show the affected device count; the count is derived from the alert itself.
Device history rows no longer show an empty Action column for action types without a translated label. The remaining unlabeled types (set organization, stop package, clear package data, enable/disable extended telemetry, send applet command, revoke device key) now have proper labels, a group color and can be filtered for.
Applet detail links in device timing records now open in a new browser tab.
The antd UI library was upgraded to the latest v5.
Sidebar navigation no longer renders the open section's title (Devices, Organize, Monitor, Build, Settings, Account & Help) in dark navy — almost invisible against the dark menu — while one of its pages is open. The antd v5 upgrade moved the selected submenu title onto a new theme token that fell back to the primary color instead of the menu's selected item color.
Creating and updating a location no longer requires the organization manager role, so a member with the user role can do it again (archiving and restoring a location already worked for them).
Config Health no longer reports Locations Configured and Policy Assigned as configured for an organization that has no locations or no device policies. Both checks now verify that the items exist instead of only checking that no device is missing one, a failing check no longer counts towards the health score as compliant, and either check reports an error instead of a pass when it cannot determine whether the items exist. For an organization with no devices, the device-level checks and the Device Configuration score now report as not applicable instead of a full 100%.
Device Uptime tab no longer shows a device as online for a whole month while it was offline the entire time. Outages that started before the displayed month are taken into account again, days of the neighbouring months shown in the calendar grid are filled with their real data instead of the selected month's, and switching months back and forth no longer flips the results.
The AI Content Guard listing no longer shows an empty page in companies that own an item the API returns in an unexpected shape — a single such item used to fail the validation of the whole response and discard every item on the page, while the total count kept showing them; each item is now validated on its own, so only the unusable one is skipped (and reported in the browser console)
The Status filter of the Locations page no longer shows NaN — the location status from the URL is a text value (active/archived) and was being converted to a number, which also meant the city, country and state filter options were requested with an invalid status
The Tags field of an AI Content Guard item (image, prompt and AI helper forms) no longer offers tags of the whole company — it lists only tags of the organization owning the selected category, and already picked tags are dropped when the category changes to another organization
Form buttons and drawers no longer stay stuck in their initial state after editing a field — the Apply button of the plugin filter drawer (and every other form submit button and form drawer) now enables as soon as the form becomes dirty, bulk operation configuration items (Debug, VPN, RM server, Scheduled power action, Applet command) react to their own field changes again, and the device Packages tab filter and pagination update the listing
Dropdowns, date pickers and tree selects across the app once again open anchored to the scrolling main panel instead of jumping to their trigger when the page is reached without a loading skeleton, product analytics events fired before the analytics script finishes loading are no longer dropped, and the developer feature-flag override applies without a page reload
(internal) React Compiler follow-up on box: fixed code whose rendered output could freeze under compiler memoization — forms reading antd/react-hook-form values during render, time-based statuses and the trial-period counter reading the clock during render, the white-label session cookie, translations not refreshing after variant overrides load, and in-place sorting of shared arrays — and reworked patterns the compiler could not optimize (emotion css tagged templates with interpolations, unsupported try/catch shapes, imprecise manual memo dependencies, render-time ref access, hooks called after an early return in the welcome dashboard favorite cards), taking box from 114 down to a handful of files that bail out of compilation. A census:react-compiler script in apps/box reports per-file compilation results and can guard against regressions
Non-mandatory string configuration fields in runner/plugin assignment and policy forms are no longer marked as required, and selecting a version with an empty configuration definition no longer keeps showing the previous version's fields
Tags across the whole app (including the Admin app) now derive their text, border and tinted background color from the tag color itself (matching the built-in status tags), replacing solid chips with plain black/white text. Text color is stepped to always meet WCAG AA contrast against the tinted background. In the high-contrast (WCAG optimized) theme, built-in status and preset tags whose colors fell below WCAG AA (success, warning, green, orange, cyan) use darker text. The tag create/edit color picker now offers a preset palette of vivid colors across twelve hues next to the custom picker, and dark tag colors are lifted to their vivid hue equivalent so chips always look fresh. The device Online status indicator returns to its classic teal instead of the generic success green
Device detail redesign: the page header shows the device status and last ping next to the device name, device statistics & health moved into a collapsible card overview, and the Info tab was restructured into bordered tables with a recent-screenshots carousel and side-by-side connection info. Single-value telemetries (uptime, CPU, memory, temperature and the active wifi/ethernet connection) share one compact metrics strip above the cards instead of taking a card each, and the remaining cards flow as a single grid that fills every line, so devices not reporting all telemetries no longer leave gaps; the cards are clickable and open the matching tab or drawer. Storage values all derive from one telemetry snapshot and label each unit by its reported type instead of misreporting SD cards as internal storage, the page no longer hangs on the loading skeleton when the device proprietary package version lookup fails, and tooltips opening near the left edge of a page no longer render underneath the main navigation menu. Present-but-wrong values (starting with incorrect device time) are now marked with a compact warning chip next to the value — short label always visible, full explanation in its tooltip — replacing the truncated red error sentence. The collapsed overview row now shows the last action name, result dot (green/red/pulsing blue for success/failed/pending) and a condensed time next to the icon, and the expanded Last action card shows the result as a color badge with the full date
(internal) Pages are now built as separate chunks loaded on demand: chunks preload as soon as a link to the page becomes visible, and navigating to a not-yet-loaded page keeps the sidebar in place showing a skeleton instead of a blank page; React Compiler is enabled on the box frontend for optimized rendering
Switching company from the sidebar company menu now opens a searchable modal instead of a nested submenu, fully operable by keyboard: Cmd/Ctrl+K opens it, arrow keys move the selection and Enter confirms the switch.
(internal) Judo can add BLANK_SCREEN Content Guard items, which sit in an ordinary managed category next to image and prompt items so one category and one alert rule can cover all three; the category Strategy column and the item Type column and filter now render every strategy and item type by name instead of assuming FROZEN_CONTENT
Paid company licences such as SSO, Secrets, GodMode and Priority Support can no longer be enabled by customers themselves — only by signageOS. Selecting your own DevSpace platforms still works, now limited to the number of target platforms included in your plan.
Editing company details — name, icon, terms region and default device plan — now requires the company manager or owner role.
Paid organization features such as AI Content Guard, Remote Desktop and VPN can no longer be enabled by customers themselves — only by signageOS.
Bulk provisioning CSV upload no longer fails with a Content Security Policy violation — the connect-src directive now allows the bulk provisioning parser S3 bucket
Company masters and owners opening a device in an organization they are not assigned to no longer get a blocking "Get device access" modal that had to be confirmed twice. The modal gated nothing — company masters and owners already have full access to their company's organizations — and joining an organization deliberately is still available in Company Settings → Organizations.
The Organization column on the Alerts page labelled every organization as "production". It now shows "test" for organizations that have not been marked as production.
(internal) Content Guard now recognizes the managed BLANK_SCREEN item type, so the Content Guard pages keep working once such an item exists
Device Scripts tab redesigned with inline expandable rows: the latest result, execution history, and parameters now open under the script row (replacing the result modal and history drawer), results update automatically while a script runs, a toast announces run completion, recently run scripts are grouped at the top, and scripts can be re-run in one click with the parameters of the last run
New predefined content for Content Guard.
(internal) Dropped the unused deviceTemperatureModel from the legacy data-model createModels — it was constructed on every boot but never read. Device temperature graphs are unaffected; they are served by the API from the device monitoring log.
Tags page redesigned to display data as tree table
Improved tag create/update/delete interface and drawer layout
Tags can be unassigned directly from tags panel
Tag elements across project are clickable and work as navigation to entity filters
Company credit statistics no longer swap the values of "Projected usage in months" and "Current monthly usage", and the remaining-credits alert now reports the correct number of months left.
Applet detail pages no longer repeatedly reload when the selected and latest applet version is 0.0.0.
Applet detail pages now refresh all version-specific content when switching versions.
Member invite flows look up accounts case-insensitively (the pre-check and post-invite lookups now match the lowercased email the platform stores), adding an organization member no longer resets an existing company member's role to guest, and admin role changes for existing company members go through the privilege command instead of the invite command, which now rejects existing members
The Event Stream exporter tab, detail drawer and create action no longer fail for a freshly created exporter, whose last successful export timestamp is empty until the first delivery succeeds. A single such exporter previously broke the parse of the whole list response.
Device pairing no longer fails to load while a pairing is still unverified.
(internal) Root cause of the two entries above: the API validator generator dropped nullable: true from date-time fields, so any response carrying an empty timestamp failed validation.
(internal) The Judo access denied page no longer crashes to a white screen (it used the box app's useTranslation without any I18nProvider mounted in the admin app; the page now renders plain English strings), and a failed socket authentication no longer blocks logged-out visitors from reaching the login flow — the denied-access gate now only applies to auth0-authenticated users.
(internal) Admin firmware upload now searches and paginates all existing scalar firmware types for the selected application type while still allowing custom values.
Device plan history card on the organization detail Device Plan tab, showing who changed the device plan, to which plan, and when; visible to organization owners and managers only
Core App version selector no longer shows duplicate, stale, or internal loading values while searching and loading results.
(internal) Storage upload proxy no longer rejects presigned Google Cloud Storage upload URLs with 403 "URL not allowed" on GCS-backed environments
Device package type filtering no longer leaves the package list stuck in a loading state when filter updates overlap, loading fails, or a device has many system packages.
Solution Hub detail pages now keep the shared Solution Hub sidebar item selected in both CloudControl and DevSpace, entitlement refreshes no longer make the CC/DS switcher alternate, and Solution Hub actions are hidden without GodMode access.
(internal) Firmware catalog records now carry a single firmware type with optional brand and OS version: the admin firmware page uploads one version per firmware type (with server-coordinated, retry-safe bulk processing and per-type outcomes), edits the metadata instead of device-type lists, and filters/sorts by the new fields; the admin firmware API keeps accepting and returning the deprecated deviceType/deviceTypes fields for old clients
Firmware version search now matches the new firmware metadata, displays a human-friendly name, and updates devices by the selected firmware UID.
Device settings now provide searchable, paginated core app and firmware version selectors with release details.
(internal) Added Solution Hub marketplace proof of concept.
Added a "How does this work?" onboarding walkthrough on the Plugins list page, covering what plugins are, creating them, versions & configuration, assigning to devices, and monitoring.
Sidebar navigation no longer reanimates or switches between CC and DS when moving between pages such as Home and Solution Hub.
Sidebar navigation no longer rebuilds and reanimates its menu when opening Solution Hub within the current navigation section.
Content Guard cards now keep a readable width and spacing on smaller desktop resolutions instead of squeezing or overlapping their content.
Sony Extra settings: the Device name field was removed from the About section, because the device name is synced natively and automatically
(internal) Core app version selectors now keep all versions in descending semantic-version order, and selected firmware versions are resolved for the correct device type.
Device detail: switching tabs no longer freezes the page for several seconds. Selectors holding the organization list and the device alert lists deep-compared their whole contents on every Redux action; they now derive from stable references instead
Device history now shows and filters device location and organization tag assignment changes
(internal) Admin firmware upload: Tizen firmware is now uploaded to the correct path, and the upload drawer now accepts the SHA1 checksum file required for BrightSign firmware, which previously could not be uploaded
Hardened authorization across many entities
Monitoring detail: selecting a policy in the filter sidebar now filters the device list again, and the policy list is capped with a Show more / Show less toggle like the alerts list
Tag statistics on the Tags page are counted again, including the Policy tags counter; unassigned tags no longer include tags assigned to policies
Opening the detail of a newly created organization no longer shows an insufficient-privileges error
Organizations are no longer created without a device plan: the create-organization drawer always preselects a valid allowed plan and refuses to submit an empty plan id, and the Device Plan tab no longer hides the plan selector for an organization without an assigned plan when the company has a single allowed plan, so the plan can now be assigned
Creating or deleting an organization no longer leaves the page blank, and the delete confirmation now shows a loading state until the organization is removed
The package version delete button spinner no longer keeps spinning after a successful delete
Removed the outdated "coming Q4 2024" organization-unit provisioning notice on the ChromeOS Provisioning page; the alert now simply links to the Google ChromeOS provisioning documentation
Device detail history tab "Filter by action" dropdown now includes Plugin and Runner action groups, which were previously missing
Open Emulator now passes the configuration-server URL (config_base_url) instead of the platform/gateway URL, so newly created emulators can fetch their configuration and connect
Google Cloud Storage presigned uploads under Workload Identity no longer fail with "Premature close" on Node 24: the transitive node-fetch reached through gaxios (used by the IAM signBlob call) is overridden to v3
Device configuration widget now offers a "Production US1" environment preset (us1.signageos.io subdomains); renamed the existing "Production" preset to "Production Root"
New telemetries tab on device detail
Renamed the device "Scripts legacy" tab to "Shell" and made it available to all users with access to the CustomScripts feature entitlement (on Linux devices), instead of being restricted to GodMode admins
Object storage can now be backed by either AWS S3 or Google Cloud Storage, selected with STORAGE_TYPE=s3|gcs. The storage bucket is configured with a single BUCKET option for both providers (the previous AWS_S3_BUCKET option still works as a fallback).
Bump @signageos/lib to 23.22.0 — serves /ready on main HTTP port to fix GCP LB health check (503 unconditional drop overload on US1)
Object storage can now be split into two buckets: user-data (applet, package, icon, content-guard, location, organization, exports) and public files (device firmware, front-applet, static assets). Configure with BUCKET_USER_DATA / BUCKET_PUBLIC_FILES and STORAGE_BASE_URL_USER_DATA / STORAGE_BASE_URL_PUBLIC_FILES; each falls back to AWS_S3_BUCKET and storage_base_url when unset, so existing single-bucket deployments are unchanged.
Single file applets now support defining configuration schemas (configDefinition) — users can define typed config fields (string, number, url, enum, secret, encrypted) directly in Box UI for singlefile applets
Config definition schema editor for creating and editing configuration schemas on singlefile applet versions
Timing configuration masking now uses DB-stored configDefinition with S3 fallback for multifile applets
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
Long text in detail-page Descriptions rows (script/runner/plugin/alert-rule descriptions, Supra hostname/clientId, billing info, device-plan IDs, organization/account names, deprovision summaries) is now truncated to a single line with the full value shown in a tooltip on hover, instead of wrapping to multiple lines
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
Added Generated by column to Organization VPN configs, allow managers to see all organizations configs, users only their own configs
(internal) fetchPayload function from @signageos/data-query package is wrapped by withTimeout function to ensure that the request will
not hang indefinitely
Remote Desktop button control for Tizen
Device list export CSV includes location address, gps and custom id
Device list has column which shows current applet version
Device auto recovery enable settings configuration moved to confirm popup
(internal) Device peer recover is now only for admins
Catching of component crashes on device detail page doesn't lead to an error page with only main menu available. Now only detail tab with
error shows error and other tabs are still accessible.
Custom pin icons to location and default custom pins for organization
Bulk provisioning QR code scanner sends the scanned data correctly so recipe can be created
(internal) privileges for removing from organizations on admin page - accounts
Fix organizations devices count for non-admin users
Device network connections behavior - showing only data that device reports. Active connections are those with reported IP address.
Prevented crashes when no DNS servers are reported.
(internal) Fix customScript interface. CustomScript type is used instead of string.
If you try to save the NTP server along with the timezone for the Emulator, it appears to save initially, but the NTP server gets
automatically deleted when the timezone is changed. The Emulator does not support this setting, and it is no longer available for this
type of device.
Alert rule target filters are visually aligned
Changing the filter now correctly resets the "Generate CSV" button for applet and system logs
(internal) remove electron dependency which was not used and greatly increased size of docker image
Simplified sorting of device network connections (info tab on device detail page)
Before creating a new support ticket, users are prompted to fill in a Pre-Deployment Checklist to ensure that common solutions have not
resolved their issue.
(internal) Support checklist is stored in database now
Locations and location tags to alert rule filter
Alert rule allows to add multiple emails that will be notified when alert is triggered
(internal) Support checklist respects "white-listed" company uids if any provided
Custom scripts editor has correct syntax highlighting on Linux devices, using bash instead of powershell
(internal) whole area of company select when switching company is clickable, not just the text
(internal) deprovisioned devices statistics on admin dashboard show correct data and whole statistics area is being loaded on demand
Device policy "EXTENDED_MANAGEMENT" (RM server) is now stable propagated to assigned devices
The device detail now accurately displays “Last Ping” as “a few seconds ago” instead of incorrectly showing “a minute ago” for the
60-second ping interval.
(internal) Data source for latest monitoringLog records
(internal) temporarily hide remote desktop tab on device detail page for non-admin users and application types other than BrightSign
Debug URL in Device Troubleshooting page pointing to correct Weinre instance
(internal) Fixed trial period check
(internal) Core app selects for admins. It does not fetch all possible anymore which broke selects but it fetches part and if anyone needs
version that is not shown in select searching can give more precise results
(internal) Better types definitions for data-query queries and mutations. Add support for data-queryuseMutation hook. Proper folder
structure for data-query operations.
Better page errors handling - no white pages anymore, user will be able to continue in the app
(internal) New type of applet configuration item for secret values
Based on a new secret value field the value is masked during the creation or update of the applet. Also, all configuration values are
masked in the device history log by default.
(internal) Fix adding and removing of event listener within useThemeBreakpoint hook
(internal) browser bundle issues - removed testing library from production bundle, add dynamic fetching of known passwords for validation,
removed data-heavy dependencies
Account API token creation privileges are now handled correctly
Unexpected login states now redirect to main login page
Sometimes the "Predicate not met after the specified number of attempts error" occurred during a new account invitation to a company. It
is fixed now and should not happen anymore.
Auth0 authentication was fully released as default authentication method
Waiting for a new screenshot taken after clicking on a "Take screenshot now" button (no confusing "There was problem taking screenshot"
message anymore)
For some addresses the Add Location form couldn´t be saved because of wrong parsing of the address. The Add Location form accepts wider
range of places now.
(internal) Abstracted legacy login to separate component, so there are no conflicts when we merge Auth0 feature branch
(internal) Fix CreateCompany types
(internal) Add missing env variables for prod/staging/experimental environments
Fixed deprovision device and deprovision modal visibility
Locations table responsivity
Organization device plan responsivity
(internal) If some devices are checked or filtered out by device filter, there is correct number of devices shown as a label of bulk
action button and in summary section on bulk action wizard page
(internal) Login HTTP response, and the time taken to respond are no different when a username does not exist, and an incorrect password
is entered or login success.
(internal) Security headers to prevent security violation (XSS attacks etc.)
Security improvements of signup process - during signup process there is no information if email is already registered. All instructions
are send by email so potential attacker has no access to them.
Security improvements of forgotten password process - system does not report on if the email is in the application or not.
Add Content Security Policy to application response headers
Recaptcha security check to prevent bots from submitting forms automatically - changed login page and change email password confirmation
modal
(internal) Recaptcha configuration keys to deployment values
(internal) Feature flags to respective places
Possibility to set device connection method in device policy - changed Device universal tab on device policy detail page
New organization form has new design. When new organization is created, application redirects to its detail.
Move setting of connection type from Info tab to Settings tab on device detail page.
Refactor Alerts page with antd for consistency and better UI
(internal) Custom Terms and conditions for whitelabel users
White-label settings for a custom domain - application can have optional settings (UI theme etc.) depending on a custom domain name
(internal) Data layer for company network
Validation of more complex Alert rule conditions (empty state handling)
(internal) Modification (integration) of data handling of white label settings, custom theme and company network. There is only one redux
state for that data - IWhiteLabelState. All data should be fetched by whiteLabelFacade.getWhiteLabel() method if no special case
needed. There is only one common saga encapsulate all white label settings
(internal) Rename CompanySettingsCache back to WhiteLabelSettingsCache
Page not found screen is shown for wrong or unaccessible URLs instead of automatic redirecting to homepage
Alert Rules page has unified table look and feel
Alert rule detail page has now validation for condition fields as well as for target organization field. User can't save alert rule when
these obligate fields are empty
Pagination on Live Status page works correctly now
(internal) Adapt types across whole application to new types distribution
User can't sort alerts by affected devices and last change at
Console warnings about preload loader asset
Device policy detail - Device specific tab - confusing administration of application types is now working as expected (After click on
checkbox, the order of tabs does not change.)
Alert rule detail - temperature condition - adding value by writing a number into input is now working as expected
Remove the extra timezone offset sign in timing form
Device policy detail - brightness and brightness schedule settings now works as expected, hours are correctly saved, schedule box can be
unchecked, etc.
Prevent user from setting undefined alert rule condition value by accident
Not working page size changer in pagination is now disabled on all pages
Network status bar now shows correct number of online devices which are on organization and also Company Masters and Owners can see all
organizations on their Company
Billing report shows all Organizations of Company where user is Manager or Owner
Back button on Applet detail page now works well. It gets user to previous page, not previous tab on Applet detail page
Use NProgress to handle device screenshot history
Correct timer format for lg devices when changed from api
Remove Antd loading spinner from company and organization user list
Replaced legacy Emulator icon with new one with current logo
Power Actions have new location in device detail, replacing selectbox for nice dropdown
Device detail stats looks better thanks to new layout
Pagination on Alert rule list page shows correct number of pages and works properly again
(internal) time format correcting function fixed for Safari browser
(internal) Add generics to isEqual from lodash to keep arguments types
(internal) Custom commands for using in E2E tests (create and deprovision emulator, create and delete applet, create, archive and activate
device policy)
Use "no device matching filter" screen instead of "no device" screen when choosing an organization without any device as a filter
selection on Device List page
(internal) Remove generator.ts & change the relevant imports to @signageos/lib
(internal) Tab Testing is only for admins
Show correct list of built applets according to selected app version and device vendor
Back navigation from device detail page is now working on first click and also url keeps data about filter
Condition for allow debugging applet based on certain front-display version
(internal) Sign in form is case insensitive
Organization select shows all organizations for account in all components and pages
Organization search is not dissapearing while fetching the data, changing pages does not call two renders instead of one and also
organization list does not show empty list page when search does not match any letters
Devices page pagination position
Organizations fulltext search (middle parts of organization name)
Optimizations: Prepared separation of telemetry & other data
List of recently added devices or created emulators on Add device page
(internal) Total devices counts per company on Dashboard page are computed directly from device facade instead of resolving from device
statuses. This is temporally solution.
Loading indicator added to Organization -> Packages screen
Badge within icon indicates CC, CC Front or application version
Icon is extracted from APK file and saved with package version
Umanaged packages (labeled as system packages) are also listed in Device detail -> Packages section, android-specific information after
the managed package row expanded
Packages which are incompatible (SDK version and ABIs) with device can't be installed on that device and they can be hidden in list in
Device detail -> Packages section
Added validation of version and packageName of Package version after it is uploaded