Release Notes
Recent changes made to digital signage platform.
Server Software
Version 12.1.7 - 2024-11-22
- Server replication configuration for new server useast3.
- Previously configured library item label is now reset when adding a new item.
Version 12.1.6 - 2024-11-15
- Added additional logging to help locate source of invalid requests.
- Server replication configuration for new server uswest3.
Version 12.1.5 - 2024-10-24
- Added screenLabel into screen data responses to fix an order of precedence issue when accessing screen label in a urlMacro.
- Server replication configuration for new servers europe4 and asia4 changed to exclude old servers europe3 and asia3.
Version 12.1.4 - 2024-10-11
- Added configuration for new server replication from asia4. Phase 1 introduction.
Version 12.1.3 - 2024-09-30
- Problem found replicating screen events between servers. Screen events since version 11.2.0 - 2024-01-20 were only stored on the local server the user connected to.
- Modified replication to perform complete screen object transfer if the modified screen has one or more events configured.
- Replication of removing all screen events temporarily disabled in this release to ensure we can rebuild missing.
Version 12.1.2 - 2024-09-29
- New europe4 server will now replace europe3. Replication configurations updated.
Version 12.1.1 - 2024-09-20
- Fixed problem sorting player software column on screens tab when mix of version number formats are used.
- Added configuration for new server replication from europe4. Phase 1 introduction.
Version 12.1.0 - 2024-08-23
- Added Bulk Data Update API.
- For updating multiple screens with the same data in a single API call.
- Bulk update requests are sent to
/api/bulk-data-update
.
- Documentation: Bulk Data Update API
Version 12.0.10 - 2024-07-24
- Added cache in front of Google Time Zone API.
- Improved project setup to support building in Visual Studio Code.
Version 12.0.9 - 2024-06-18
- Prevented automatic TLS certification for domains with more than 4 parts. This prevents a recursive subdomain problem when DNS includes wildcard.
Version 12.0.8 - 2024-06-06
- User navigation disabled when the require two factor cloud configuration option is enabled and the user has not yet set up two factor.
- Sign out button added to the setup 2 factor dialog.
Version 12.0.7 - 2024-05-14
- Updated SAML implementation to use any of the following attributes for populating a user Label.
label
urn:oid:2.16.840.1.113730.3.1.241
firstName, Firstname, FirstName, forename, Forename
lastName, Lastname, LastName, surname, Surname
Version 12.0.6 - 2024-04-21
- Two factor setup is no longer forced when creating/editing another user (i.e. not self) if the require two factor cloud configuration option is enabled.
- Cancel option on the two factor setup dialog is now disabled when when creating/editing another user (not self) when the require two factor cloud configuration option is enabled.
- Prevented two factor dialog and error dialogs from being cancelled by clicking area behind dialog.
Version 12.0.5 - 2024-04-15
- Fixed unhandled exception when manually adding a screen that had never connected to a server.
Version 12.0.4 - 2024-04-11
- Added new cloud configuration option to require users to set up two factor authentication. This option will prevent users disabling two factor authentication.
Users without two factor set up will be prompted to do so when they sign in.
- Added new condition builder to simplify targeting specific screens.
- The
screenId
field is now automatically added to screen data. It can not be changed. This simplifies using screen ID in conditions.
- Fixed a problem performing some SAML authentication operations.
Version 12.0.3 - 2024-03-04
- Fixed issue that could prevent remote RSS feeds from being updated.
- Players built after this date will not send direct proof of play if a configured dpopCondition contains an error.
Version 12.0.2 - 2024-03-01
- Resolved logging and monitoring issue that failed to acknowledge RSS update completion.
Version 12.0.1 - 2024-02-25
- Modified default selected software for newly connected Android devices to be SignageNode.
Version 12.0.0 - 2024-02-07
- Updated all Java archive dependencies used by server platform.
- Updated ACME implementation (certificate automation) to match API changes.
- Reduced server start time to under 1 second by optimising Morphia startup process.
- Reduced processing overhead when many screens request the same RSS while cache is being primed.
- Fixed issue preventing sequence item editor copying libraryItemId from a library item into sequence item.
This fix also ensures stars are removed from a library item when added to a sequence.
Version 11.3.0 - 2024-01-27
- Updated admin interface to use GWT 2.11.0 (release 2024-01-09).
- Significantly improved efficiency of Media RSS feed updating.
- Sequence only updated if an RSS change will affect playback. (Ignores metadata such as TTL)
- Note: The value of
rssMd5
is no longer the binary MD5 of the RSS response, it is a composite of RSS display data.
- Added support for
rssExpirationOffset
in sequence data to offset when an RSS feed will be updated.
(Useful when aligned with clock multiple of TTL or adding additional delay)
- The value of
rssExpirationMillis
in sequence data is now unused. Expiration will now be managed in server RSS caches.
This avoids updating a sequence when expiration changes after an update.
- Background update of an RSS feed updates media datasources before updating cache entry. This avoids pending resources during a sequence update.
Version 11.2.0 - 2024-01-20
- When sequence item display counts are incremented, replication data merge takes longer and can introduce a race condition if a screen communicates
during the data merge period. The following changes help resolve this issue:
- Modified server to server data replication to only update screen data fields that have changed during merge (not the entire screen object).
This change compliments the field level screen updates introduced in version 11.1.0.
A concurrent modification of the same field during the data replication merge is very unlikely.
- Increased the replication rate. A 500ms delay is used between repeat replication communications.
- Decreased the max objects transferred during replication communications to 2000. Smaller batches means lower data merge latency.
- Additional locking added to ensure only one RSS feed update for a given URL occurs concurrently when RSS cache is empty (startup).
- RSS feed expiration is now aligned with a clock multiple of TTL (when TTL set in RSS XML).
This coalesces multiple RSS feed updates into a single screen update when multiple RSS feeds are referenced.
- Avoids unnecessary data source update when a new cloud config is used but no custom blobstore is defined in the cloud config.
Version 11.1.8 - 2024-01-01
- Removed SignageNode players with build date before 2023-06-17 that contained expiration of 2024-01-01.
- Removed older players to encourage updating to more recent players.
Version 11.1.7 - 2023-12-18
- Fixed issue where duplicate sequence IDs could appear in library item.
Version 11.1.7 - 2023-12-17
- Sequences populated by RSS will no longer be updated if the MD5 of the RSS response body does not change. Workaround for broken revalidation on remote server (IBM).
Version 11.1.6 - 2023-12-16
- Automatically reset SignageNode warnings in admin interface when reverting to standard player.
- Marked
itemId
, libraryItemId
and userId
in admin interface data as read only.
- Fixed problem preventing loader communications using a server address that does not match a stored server/cloud configuration.
Version 11.1.5 - 2023-11-25
- Fixed problem preventing saving access controls as signed in user while masquerading.
Version 11.1.4 - 2023-11-24
- Made it easier to increase max results without changing user settings.
The dialog shown by clicking the pagination explanation button (!) now includes a button to refresh with limit of 10,000.
- Manually created screens that have never communicated are now shown without requiring extended offline filter to be enabled.
- Added a button to screen data tab to quickly jump to using the Quick Data API.
- Removed quick access Roku buttons as this functionality is deprecated.
Version 11.1.3 - 2023-11-19
- Events tab is now disabled by default for new users. Events will only be supported by older players.
- Fixed some issues with dragging components when creating a composite item displaying multiple inner items.
Version 11.1.2 - 2023-11-16
- Additional logging for replicating screen data with same operation action time.
- When a screen is updated at the same millisecond on multiple servers, the user modification time dictates the data to be saved during replication.
- Operations on large numbers of screens (over 20) will not send instant update requests to screens. Regular periodic player comms will be used.
- Instant screen update requests intentionally delayed. Repeat requests reset delay count down.
This coalesces unnecessary instant update requests during multiple quick update operations.
- Added support for
valid
and condition
into RSS items.
This enables a remote RSS Feed to set date ranges and conditions for items that will be processed by the player (even when offline).
- Improved RSS namespace processing to support multiple namespaces with no strict validation.
- Added support for custom
loaderCommsPeriod
and playerCommsPeriod
into cloud configuration data.
Version 11.1.1 - 2023-11-13
- Fixed problem preventing persistence of
sequenceId
when updating screens using Quick Data API.
Version 11.1.0 - 2023-11-11
- Loader communications and player communications now perform atomic field level updates instead of object level load and store. Atomic field updates avoid a rare race condition
that could occur if screen data is updated at the same time as loader or screen communications.
- Quick Data API for screen data updates uses atomic field level updates.
- Quick Data API for updating large groups of screens rewritten to significantly improve performance.
- Instant screen (UDP) update disabled when more than 100 screens are updated via Quick Data API. Updates will occur during periodic screen communications.
- A single blob upload failure to cloud storage in 60 seconds no longer triggers server health check alert. Retries are automatic so threshold increased to 3.
- Improved readability of Google map markers and changed marker for moving screens to read GPS and pin to black.
- Added support for configuring ads.txt in the cloud configuration.
- Added beta support for security.txt and robots.txt.
- Fixed Java Servlet processing bug that caused
Transfer-Encoding: chunked
header to be added to (empty) 304 responses.
Version 11.0.5 - 2023-11-05
- Increased performance of Quick Data API screen group updates.
- Fixed rendering problem preventing preview player displaying composite library items in admin interface.
- Schedule sequence type no longer marked as (new).
Version 11.0.4 - 2023-10-30
- Suppressed condition warnings/errors in server log output.
- Added LED option to screen editor to set widthOverride and heightOverride values for LED controllers.
Version 11.0.3 - 2023-10-27
- Added group label to subject line of screen status notification emails.
Version 11.0.2 - 2023-10-24
- Fixed problem processing time based conditions used in sequence export (RSS, Roku and VAST).
- Added strict requirement for time to be defined when using evaluation engine.
Version 11.0.1 - 2023-10-23
- Fixed problem with filters in API requests when time was not defined.
- Synchronized stacks engine evaluation to ensure state in concurrent API requests is not corrupted.
Version 11.0.0 - 2023-10-19
- Core stacks condition evaluation engine rewritten.
- Performance of traversing inner sequences significantly improved for complex sequence hierarchies.
- Improved processing outer item durations for inner sequence rotation.
- Selective logging for silent lookahead. Reduces log pollution when conditions have undefined variables. Used by SignageNode for precaching.
- New functions to help with undefined variables in item conditions. These functions are useful when you need to use data in a condition that is not defined in the item, sequence or screen.
isDefined("name")
Returns true if the data with the given name exists and can be used in condition evaluation.
isNullOrEmpty("name")
Returns true if the data is not defined, is null or is empty.
These functions make it possible to bypass errors caused by undefined variables using short circuit evaluation. For example
isNullOrEmpty("airportCode") || !stringContains("ATL", airportCode)
Remember to quote the name when using these functions!
- Multiple VAST sequences can now be stacked and work as alternatives. An alternative will be used if the item above fails or does not return an advert.
- Players released after 2023-10-11 use this core stacks engine update.
- Fixed problem where reencoding an item immediately after upload could fail with ResourceNotFoundException.
Version 10.3.7 - 2023-10-02
- Fixed user access escalation option when masquerading as a user that is not permitted to access an item. Failed actions can be repeated as user that signed in prior to masquerade.
- Fixed race condition in cache that could lead to NullPointerException if an entry is concurrently accessed and removed.
- Removed Twitter from default content builder list. Unfortunately Twitter / X is now hostile to external API integrations and can not be supported.
Version 10.3.6 - 2023-09-20
- Fixed problem where the soft links to sequences in library items could be added to sequence stack items. (
sequenceId_
prefix)
- Screen optimisation stage now strips out (
sequenceId_
prefix) from sequence stack items which is not needed by player.
- Removed data shared stats from home summary panel and group summary panel. This data is no longer accurate due to changes between standard player and SignageNode.
Version 10.3.5 - 2023-08-30
- Fixed problem removing starred items in library side panel when item dragged into sequence.
- Improved cache management of icon panel HTML under items.
Version 10.3.4 - 2023-08-21
- Fixed problem preventing some access controls from being removed.
- Revoking all access controls from a screen now removes player software and sequence configuration to reset it. This allows the screen to become accessible again via MAC to be reused.
- Prevented entities internal lists from exceeding 100 records (internal lists end with _#).
- Improved error handling by null safe exceptions and retries in admin interface.
Version 10.3.3 - 2023-07-22
- Added
filter
parameter to conditionally update specific screens in a group using Quick Data API. E.g. /api/group-screen-data/[GROUP-NAME]?filter=...
Version 10.3.2 - 2023-06-29
- Added auto-correction logic to prevent common typo of name in value. e.g. layer1=layer1=https://...
Version 10.3.1 - 2023-06-09
- Fixed problem selecting multiple media items from side panel.
- Improved performance of sequence panel cleanup.
Version 10.3.0 - 2023-06-02
- Expandable sequence library added to right hand panel of sequences page.
- Toggle between media library and sequence library.
- Sequences from sequence library can be dragged into a sequence to quickly add an inner sequence to a sequence.
- Sequences from sequence library can be dragged into an item of a schedule sequence to change the sequence played during the scheduled time block.
- The group select drop down within search/filter panel caused a drop in responsiveness when attached to the DOM (webkit bug?).
To keep keep user input responsive, the group select can now be shown and hidden by the group button besides the search button.
- Column select drop down now shown and hidden by a new columns button next to group button to keep functionality consistent with group select.
- New option to Find screens added to sequence options.
This option will transfer the user to the screens tab and show all screens the sequence is displayed on.
- Improved handling of inner sequence cyclic loop detection for sequence previews.
- Server replication delay now takes into account non direct replication via an intermediate server.
This reduces the health check failures when a single link is slow and data can arrive via another server in the replication group.
Version 10.2.4 - 2023-05-20
- Removed downloading slice from screen summary pie chart. This is no longer relevant because SignageNode streams through caches for instant playback.
This differs from older players which download fully before playback.
- Removed Shared data values from screen status history transfer chart. Only older players report how much they upload via peer to peer.
SignageNode streams through local caching proxies and this is only measured locally. (Connect to SignageNode to see transfer report).
- Downloaded and shared data values merged to give a single value for Internet downloads.
This is calculated by subtracting shared from downloaded for data from older players.
- Improved integration with Zencoder and Transloadit video encoding services with better error handling.
- Updated Transloadit API to use ffmpeg_stack v5.0.0.
- Fixed problem processing the same video BLOB by multiple encoders at the same time.
- Added advanced video re-encoding presets for H265/HEVC and VP9 and updated configurable defaults.
- Preview player in admin interface now runs stacks engine for 10 loops to help test inner sequence rotation.
- Removed warning for H.265 mp4 files since 99% of Android devices support H.265 now.
- Added warning to preview player when attempting to play H.265/HEVC video. Since web browser support is still poor.
- Added green video media file icon when H.265/HEVC is used by video resource.
- Added yellow video media file icon when there are video related warnings such as high bit rate.
- Reduced server to server replication to a single thread to reduce overlapping updates which wasted bandwidth.
Version 10.2.3 - 2023-04-29
- Added new alert button to screens tab. The alert button makes it easier to apply and remove a temporary sequence override which is commonly used for emergency alerts.
Button can be hidden by
showScreenAlertButton=false
in cloud or user data.
- Added sequence override selection to screen editor.
- Added cloud option to disable sign-in with password. Useful to force signing in with SAML, Google or Microsoft.
- Added server option to enter lock down. Regular users will be signed out and blocked from signing in while in lock down.
Used by system administrators in attack mitigation.
- Added ability to display a server message to users when in lock down.
- Improved button layout used on sign-in welcome screen.
- Added additional caching layer for item lists used for selecting sequences, groups and users.
- Sped up animations to make admin interface more responsive on older devices.
- Forcefully removed browser auto-complete in MAC address field because Chrome is ignoring autocomplete=false.
- Fixed problem storing previous service health-check events.
- Added more health check information for database create, update and delete rates and data warehouse insert rate.
- Improved HTTP connection keep-alive logic to close connections early when it is likely they will not be reused.
- Increased the maximum number of concurrently handled connections to 500.
- When max concurrent connections reached, keep-alive of active connections reduced to 500ms.
Version 10.2.2 - 2023-04-16
- Updated automatic domain certificate renewal 30 days prior to certificate expiry as recommended by letsencrypt.
Version 10.2.1 - 2023-04-11
- Playback simulator active storage used value excludes reuse of same content.
Version 10.2.0 - 2023-04-10
- Fixed problem in data warehouse loading chunks created between 2023-03-23 and 2023-04-10.
- TLS/SSL certificates are now renewed 30 days before they expire asynchronously when secure domain accessed.
Version 10.1.8 - 2023-04-03
- Google introduced GWT incompatibility in corechart version 52. This broke pie charts in admin interface. Google corechart is now frozen at version 51.
https://developers.google.com/chart/interactive/docs/release_notes#current:-april-2023
Version 10.1.7 - 2023-03-26
- Fixed problem hindering searching for users by email and groups by name.
- Suppressed error when operator data can not be saved (which is always the case when adminReadOnly=true)
Version 10.1.6 - 2023-03-24
- Added selection clear after library refresh to be consistent with behaviour on other tabs and ensure selected item data is refreshed.
- Improved certificate and private key sharing between servers after ACME process completes.
Version 10.1.5 - 2023-03-20
- Added support to preview audio only items in admin interface. (requires initial click to unmute, as with video preview)
Version 10.1.4 - 2023-03-17
- Fixed problem where empty/null values in API requests were failing to remove data from objects.
Version 10.1.3 - 2023-03-16
- Fixed problem generating web page thumbnails when web address contained some query parameters.
Version 10.1.2 - 2023-03-14
- Added SAML 2.0 to welcome page buttons when enabled.
- Fixed problem generating ds-loader.apk on some servers.
- Fixed problem extracting web page zip on some servers.
- Added new status monitoring page for internal use.
- Reduced logging levels for common warnings.
- Increased image editor max import size to 10MB/
- Fixed detection of redirect loops when loading datasources.
- Reduced download retry rate for datasource updates that fail.
Version 10.1.1 - 2023-03-10
- Added SAML 2.0 implementation.
- Fixed problem combining a group filter and text search.
- Fixed ambiguous downloaded column in screen status history.
- Fixed home tab recent user actions list when total actions less than 20.
Version 10.1.0 - 2023-02-28
- Abstracted logging to better support centralised logging.
- Added unified server logging to Google Cloud Logging.
- Added unified server monitoring to Google Cloud Monitoring.
- Added new health check for recent active user counts.
- Improved tracking and monitoring of authentication failures.
Version 10.0.2 - 2023-02-24
- Table column presets for small, medium and large screens.
- Custom column presets 1-4 can be applied in search panel and modified by users.
- Loading large tables of data is faster because scan for custom item data is no longer necessary when only showing default columns.
- Fixed issue where uppercase characters in base64 encoded email caused authentication failure for API communications.
- Uploads that refer to remote data source now tagged with signed in user rather than remote datasource address to aid searching user action report.
- A user with reporting disabled now has access to stack item campaign tab, but can not enable reporting on the item.
- Changed logic for updating screens if operator has no access. Previously this was possible if zero USER access controls were associated with screen (i.e. is new screen).
This meant that if only group access controls were associated with a screen, it was possible for a user to gain access to a screen if they knew the MAC.
This has been changed so that a screen can only be updated by an operator with no access if no player software has been configured.
- Changing the columns updates contents of dynamic cells that may need reloading.
Version 10.0.1 - 2023-02-10
- Improved rendering of sequence and composite thumbnail for high DPI screens.
- Added special thumbnail for Ad Server populated inner sequences.
- Added special thumbnail for custom resource items.
- Set a max width on group select drop down and allow text to wrap.
- Fixed option to view screen status history of a single screen (was missing first hex of ID in search).
- Moved vertical scrollbar for sequences to left of open library split.
- Fixed problem where a theme could display scroll bars when navigation bar height differs.
Version 10.0.0 - 2023-02-08
MAJOR RELEASE - PLEASE GET IN TOUCH IF YOU HAVE ANY ISSUES.
- Converted Mongo DAO to use Morphia 2.3.0 (completely replaces previous DAO which was based on Morphia 1.3.2).
- Rewrote all database queries to use modern Morphia syntax.
- Optimised database item iteration to reduce time holding on to pooled connections and reduce memory usage.
- Restricted internal database response data structures to
HashMap
and ArrayList
for better compatibility with gwt-rpc.
- Updated all other dependencies to latest stable versions.
- Built custom gwtbootstrap3 to use jquery-3.6.3
- Repackaged Web Traffic Manager (WTM) to be part of the stacks server project.
- Updated WTM to support TLSv1.3 including SNI support.
- Removed dynamic class reloading from WTM as it was not used and introduced possible memory leaks.
- Moved WTM HTTP routes into startup class out of config files.
- Rewrote SSL/TLS handling. One server socket can now serve both plain and secure connections by sniffing first 5 bytes of streams.
- Improved SNI support to more efficiently access certificates and private keys in key store.
- Added support for PKCS12 key stores.
- Added dynamic, self signed certificate generation when we have not completed ACME for new domains.
- Domain verification via ACME now occurs as soon as new domains are used.
- Support for Certificate Authorities that require external account binding. Set
wtmAcmeKeyId
and wtmAcmeEncodedMacKey
in server settings.
- Every new domain now gets its own unique private key for TLS communications.
- Optimised settings for TLSv1.2 and TLSv1.3. 10X data transfer performance at lower CPU load when using Java 17+.
- Added count of HTTP response codes to health check responses.
- Enabled OCSP stapling.
- Strict transport security enabled by default as soon as an SSL certificate has been installed.
- Added additional security headers for
Referrer-Policy
, Strict-Transport-Security
and X-XSS-Protection
- A strict
Content-Security-Policy
can now be enabled. It can be customised by contentSecurityPolicy
in cloud data.
- Moved cloud status testing from browser to server to avoid content security policy restrictions.
- Added
.well-known/security.txt
.
- Added security details to bottom of welcome and home screens.
- Changed session cookie name from session to targetr-sid and increased entropy to improve security.
- Changed two factor cookie name from twofactor to targetr-tfid and increased entropy to improve security.
- Separated data warehouse and replication authentication to aid transition to new secure keys.
- Added white background to two factor setup dialog so QR code works correctly with dark mode enabled.
- Removed face analytics support. (Russian links)
- Removed Automatic Advert Assignment portal (a3) - selfad.co for MediaCaddy.
- Removed support for RAM DAO.
- Simplified gwt-rpc to only use
HashMap
and ArrayList
for serialization.
- Added a custom GWT SerializationPolicy to ensure that gwt-rpc does not attempt to serialize detailMessage field in Throwable.
GWT issue filed here: https://github.com/gwtproject/gwt/issues/9793
- Improved error handing when gwt-rpc fails. Simplified error dialog and messages.
- Added support for adding additional error details to standard error responses.
- Removed class name requirements for GWT and changed compiler options to
-XdisableClassMetadata
and -XdisableCastChecking
.
- Item dragging zone now extends beyond the title. Dragging via options button also supported.
- Restyled draggable items to avoid text overlapping thumbnail and for better overall presentation.
- Drop down details for items referring to inner sequences show inner sequence label.
- Selection order of library items maintained when dragging into a sequence.
- Dragging items on mobile devices disables page scrolling temporarily.
- Dragging items to the left or right edges of a long sequence will trigger scrolling to help navigate to slot position.
- Added animation to illustrate position where a stack grows to accept a new dragged item.
- Maximum files dropped from local file browser to admin interface increased to 50.
- Maximum concurrent file uploads from admin interface increased to 4.
- Removed advanced data fields starting with
sequenceId_
from column list.
- Removed screen status report as its functionality is duplicated elsewhere and was not suitable for more than 100 screens.
- Separated reports dropdown menu into more readable divisions.
- Removed screen locations report as it duplicated functionality from home tab and used old APIs.
- Removed legacy and unused API endpoints for access controls, screen locations and screen status.
- Removed legacy and unused content builders.
- Reduced pagination widget to have a maximum of 7 buttons so better support very small screens such as phones.
- Screens table dynamically loads sequence names on demand (per page) to avoid slow sequence load for every screen in results.
- Moved the content building codebase from v1 in to stacks server. There are no longer any dependencies on TargetR v1.
- Removed WorldWeatherOnline datasource (not working). OpenWeatherMaps is now the only data source for the weather content builder.
- Improved error handling for bad responses from OpenWeatherMaps API.
- Web site preview thumbnails now handled by a redirect servlet to Thum.io.
- Updated white label banner to support dark mode.
- Colours set in stack, stack items and library items are drawn as a line under the label so label readability is not compromised by themes.
- Changed old taxi map marker T to be M for Moving screen.
- Updated admin interface initial loading screen with CSS animation.
- Added animations to opening/closing sequences and library on sequences tab.
- Added animations to opening/closing search panel.
- Improved support for changing browser size after initial loading.
- Extra cleanup routines execute when closing sequences to decrease DOM complexity and improve drag performance.
- Added language strings to error exceptions in admin interface to support internationalisation. (need more translations)
- Unified server-side and client-side item filtering.
- Reduced memory footprint of server-side filtering.
- Added automatic reload of screen data when editing a screen that originates from stale list data.
- Added animation when making multiple selection and adding resources to items to highlight important buttons.
- Added reset button to the test data dialog. This is to help clearing the date/time which is problematic due to dual setting.
- Added new wizard for creating simple schedule conditions based on weekdays.
- Disabled text autocomplete on screen MAC address entry and labels.
- Display connection information on admin interface welcome screen.
- Added option to require secure player communications to cloud configurations. (insecure comms blocked)
- Added option to require secure blobstore communications to cloud configurations.
- Added option to enable a strict content security policy.
- Added user option
adminReadOnly
to prevent a user from making changes to any items in admin interface.
- Added cloud config option to hide connect button for connecting to SignageNode players.
showConnectOption=false
- Tunnel connections from multiple users can be multiplexed into a single shared connection to a SignageNode.
- Tunnel security between browsers, servers and SignageNodes has been enhanced by using decoupled link identities.
- Tunnel error reporting improved with friendly errors for timeouts and connection failures.
- Fixed tunnels streaming continuous data e.g. live logs.
- Rewrote ANT build scripts to simplify building and testing process.
- Improved support for running stacks servers on Microsoft Windows and MacOS.
- Server now requires Java 11 and supports 17 (recommended).
Version 9.9.10 - 2023-02-04
- Enhanced replication to more efficiently catch up after prolonged offline period.
Version 9.9.9 - 2022-12-21
- When a group is specified in cloud config, new screens and new users are added to that group AND groups that have access to that group. (2 levels)
This is so that large partners can still access new users and screens if they are assigned to a child group and the user has group recursion disabled.
- Added group ID and group name as search tokens for group selection search in search panel.
Version 9.9.8 - 2022-12-18
- Added select all and deselect all buttons to multiple group search drop down.
- After a server search (enter button), widening a search (via backspace or delete) performs server search again to show full results.
- Modified behaviour of the max results limit exceeded button to show popup once or on mouse hover. Click no longer goes to user settings as it caused confusion and too many users increasing limits.
Version 9.9.7 - 2022-12-13
- Additional user setting to restrict group access control processing. (performance enhancement for many groups in a master group)
accessControlProcessing=disableGroups
- Only show items the user has direct access to.
accessControlProcessing=disableGroupRecursion
- Only show items the user has direct access to and items within groups the user has direct access to.
accessControlProcessing=full
(default) - Show all items the user has direct access to, items within groups the user has direct access to and indirect access via child groups.
- Added new access control processing setting in user editor.
- Added option to change default table page size in user editor.
- Added option to change default max results in user editor.
- Significantly improved performance of search panel group selection when there are thousands of groups.
- Added REST API export of a list of objects as CSV. E.g. /rest-api/v1/screens/full.csv
- Added extra logging when synchronising data between servers if multiple user modifications could cause a race condition.
- Changed screen user modification timestamp to be time of load, not time of save. This should reduce chances of slow processing causing race conditions.
Version 9.9.6 - 2022-11-23
- Removed older player software except last revision of each major version.
- Fixed problem that could prevent stacks engine from completing evaluation when no valid items in main sequence.
Version 9.9.5 - 2022-10-30
- Added new sequence type for scheduling inner sequences to play based on date/time. (UI changes coming soon)
- Added functionality to break from inner sequence playback when an outer sequence item condition changes. This is used for scheduled inner sequences.
conditionScope=extend
- Added functionality to extend scope of data to include data in outer sequence items.
dataScope=extend
- Added option to automatically adjust item duration if full playback would exceed end of a scheduled time block.
canFinishEarly=true
.
- Added setup button for schedule sequences.
- Added setup scheduling options:
- Months of year
- Days of month
- Days of week
- AM and PM
- Working hours
- 6 hour blocks
- 4 hour blocks
- 3 hour blocks
- 2 hour blocks
- 1 hour blocks
- Fixed problem changing stack item label when item refers to an inner sequence.
- Added pagination when selecting library item for composite item or event action. (Missing since 9.9.1)
- Applied default timezone to playback simulator to match browser timezone.
- Unified test data used for sequences and playback simulator.
- Moved the Set test data button to top of sequences tab and named
a=b
- Removed Media RSS buttons from sequence and screen options drop down list. (Rarely used)
- Sequence option to remove expired items is now hidden if there are no expired items.
- Added RSS, Roku and VAST buttons next to REST API button in sequence and screen data tabs. (Alternative formats)
- Removed World Weather Online datasource because API is no longer reliable.
- Optimised MondoDB database connection settings.
Version 9.9.4 - 2022-10-22
- Added SignageNode Error Map report. Disabled by default, enable by
showSignageNodeErrorReport=true
in user or cloud data.
- Removed remaining references to GLPlayer, name change to SignageNode is now complete.
- Added SignageNode transition animation options to advanced tab of sequence items.
- Removed legacy image transition options from admin interface.
- Added information alerts for sequence frames and events to highlight differences between player software.
- Added multiple selection option to remove selected screens from all groups it is a member.
Version 9.9.3 - 2022-09-10
- Added additional replication check to prevent race condition when updating screen data
on a different server to that communicating with the screen. (sequenceIdOverride, layers, settings)
- Screen sequence overrides sent from player data to server is ignored.
Version 9.9.2 - 2022-09-07
- Increased default strictTransportSecurityMaxAge to 31536000 when strictTransportSecurity enabled.
Version 9.9.1 - 2022-08-14
- Updated library grid to avoid page scrolling when browser width multiple of 100.
- Removed the lower pagination panel to reduce clutter.
- Added ellipsis to conditions in hover-over item details to fix layout issue when long conditions set.
- Increased max editable events to 1000.
- Screen clone operation now supports cloning events.
- Added clear button to screen multiple selection dialog to aid cloning subset of configuration data.
Version 9.9.0 - 2022-07-12
- Removed support for Internet Explorer.
- Added new warning when colour profile is yuv422p
- Updated GWT build to use gwt-2.10.0.
- Updated all dependencies to latest versions.
Version 9.8.5 - 2022-05-25
- Added expire option to multiple selection dialog.
Version 9.8.4 - 2022-05-18
- Added sequence override option in screen multiple selection dialog. A sequence override will temporarily set a different sequence without removing a previously selected sequence.
This is useful for displaying a custom sequence on many screens and then reverting back to existing sequences.
Version 9.8.3 - 2022-05-18
- Added new warning icon for stalled playback state reported by GLPlayer.
Version 9.8.2 - 2022-03-04
- Fixed problem preventing the item reactivate button working when screen time zone is used for end time.
Version 9.8.1 - 2022-02-15
- Fixed problem preventing widgets from being listed when creating composites.
Version 9.8.0 - 2022-02-09
- Added additional replication check to prevent race condition when updating screen data on a different server to
that communicating with the screen. (userModifiedMillis is used to detect and prioritise change) Example of issue:
- User updates screen data on server A
- Player updates screen data on server B (before A to B replication)
- Replication from server B to server A
- Replication from server A to server B
- User update lost!
Version 9.7.9 - 2022-01-26
- Reduced server startup overhead by delaying temporary datasource cleanup and data warehouse queue importing.
Version 9.7.8 - 2022-01-13
- Screen software selection drop down list grouped by player type.
Version 9.7.7 - 2021-10-17
- Added support for advanced video encoding option
audio_loudness_level
.
Version 9.7.6 - 2021-08-07
- Moved Image editor option to second item in drop down of SVG items.
Version 9.7.5 - 2021-07-10
- Find sequence and find library item options can now be right clicked to open in new window.
- Open/closed state of library side panel on sequence tab saved in user data.
- Added preliminary support for
timePoint
in a stack (only used by glplayer)
Version 9.7.4 - 2021-06-01
- Added preliminary support for GLPlayer including local web server connection tunnel.
Version 9.7.3 - 2021-03-11
- Added static media snapshots of dynamic resources to RSS output.
Version 9.7.2 - 2021-01-20
- Admin interface group editor now includes functionality to remove members.
- Imports via the upload API can now be asynchronous by adding header
X-AsynchronousImport: true
. Import response will return OK
immediately and import in the background.
- Charsets incorrectly added to video Content-Type are automatically removed.
Version 9.7.1 - 2021-01-08
- Added reporting support for items referring to inner sequences. Report records will be created when the first item from the inner sequence is displayed. Requires android-player-25.2+.
Version 9.7.0 - 2020-12-30
- All Java dependencies updated to latest versions.
- Fixed blob upload log reports containing no source.
Version 9.6.2 - 2020-11-19
- Adding library items via REST API and sequence manipulation API now automatically updates the sequenceId fields inside the original library item.
This is to support propagating subsequent library item updates back into sequences via
updateSequences=true
.
- Added support to update library item data using the Quick Data API.
Version 9.6.1 - 2020-11-13
- Automatic conversion of first page of uploaded PDF to image.
Version 9.6.0 - 2020-11-11
- Extended VAST functionality to support Vistar Ad serving API.
- Improved versatility and presentation of Ad Server configuration options.
- Disabled previewing Ad Server responses in admin interface by default.
Version 9.5.3 - 2020-10-29
- Added Playback Simulation API.
- Suppressed VAST update when viewing an outer sequence containing a VAST inner sequence.
- Fixed problem with mouse hover sequence preview in screens tab.
- Fixed image editor import file size measurement.
Version 9.5.2 - 2020-10-22
- Updated simulate option for screens to start from last known item displayed.
Version 9.5.1 - 2020-10-19
- Fixed issue with previewing items in admin interface.
- Added image editor import file size limit of 1MB.
- Increased max upload size for content builders (including image editor) to 16MB.
Version 9.5.0 - 2020-10-13
- Fully integrated Method Draw image editor (SVG).
- Create with image editor added to new item options.
- Image editor option added to items containing SVG file.
- Image editor SVG rendered to PNG in browser to achieve better WYSIWYG.
- Client side SVG and PNG automatically updates item on completion.
Version 9.4.0 - 2020-09-27
- Changed non-descriptive resource list buttons to a descriptive drop down menu.
- Removed PicMonkey - Requires Flash.
- Removed Canva - Saving unreliable and too commercial.
- Removed Pixlr - Integration broken.
- SVG editing support added:
- Uploaded SVG files are now kept (and converted to JPEGs).
- Added option to edit SVG.
- Saving SVG updates item with SVG and JPEGs.
Version 9.3.11 - 2020-08-14
- Added translation to German for Admin interface.
Version 9.3.10 - 2020-07-31
- Added option to change the max loop count in the playback simulator.
- Added commonly used data names to playback simulator data dialog.
- Fixed race condition in admin interface that could lead to uncaught exception when preparing item details popup.
- Added rotation options for Weather, RSS and Currency content builders for screens mounted in portrait without hardware rotation support.
Version 9.3.9 - 2020-07-13
- Removing an item from a sequence in admin interface removes reference to sequence from library item.
- Added Admin Interface option to update sequences a library item is used in when saving.
- Added REST API option to update sequences a library item is used in when updating library item. Add
?updateSequences=true
to REST API query.
Version 9.3.8 - 2020-07-11
- Find Sequences option added to library item drop down to locate where a library item has been used.
- Library item access control details popup and item details popup combined into single popup.
- Item details popup for stack items lists the groups a referenced library item is a member of.
- Add libraryItemId to evaluated sequence responses.
- Integration with Amazon CodeGuru profiling.
- Web interfaces compiled with GWT 2.9.0
Version 9.3.7 - 2020-06-28
- A createdMillis field is now added to new sequence items.
- A modifiedMillis field is now updated when sequence items are changed.
- A sequenceId is added to library items when they are added to a sequence. This will be used in the future.
- Fixed recurring VAST error when a VAST sequence contains a pending item.
Version 9.3.6 - 2020-06-05
- Fixed issue where saving a screen without selecting a new sequence could remove an exisiting sequence. This problem affected users with access to over 1000 sequences.
Version 9.3.5 - 2020-05-23
- Roku direct publisher feed (json) support added. Experimental.
Version 9.3.4 - 2020-05-03
- Adding a new image resource to an item removes all existing thumbnail resources and creates a new one.
- Automatic quick fix applied to bady formatted .vtt files.
- Increased system CPU warning temperature (when known) to 65 degrees.
- Added option to re-encode videos using Transloadit in advanced encoding dialog.
Version 9.3.3 - 2020-04-17
- Fixed issue with sequence selection typeahead that prevented some sequences being shown.
- REST API updated to hide low visibility items unless groups specified.
- Added sequence manipulation API for adding and removing items within sequences.
Version 9.3.2 - 2020-04-14
- Added support for low visibility access controls.
- Added user option
reencodeOption=advanced
to make custom video re-encoding options available.
- Added
/debug/download-queue/[SCREEN-ID]
endpoint to test new download priorities and conditions.
- Drop down list of groups in search panel populated more efficiently.
- Fixed problem with x button for closing modal dialogs.
Version 9.3.1 - 2020-04-06
- Increased size of automatically generated thumbnail to 200 pixels.
- New thumbnails include
thumb=true
in resource data. Previously, image resources less than 100 pixels were regarded as thumbnails.
- New thumbnail replaces old thumbnail. Prevents duplicate thumbnails when re-encoding.
- Changed configuration for re-encode option to apply 12mbps maximum as setting an average resulted in much bigger files for low motion videos.
- Player API response further optimised to remove unnecessary data.
Version 9.3.0 - 2020-04-05
- Added functionality for triggering re-encoding operations using the REST API.
Version 9.2.0 - 2020-04-03
- Refactored client side upload queue to better support many files. Batch size 32, 4 concurrent uploads.
- Improved error handing when an upload fails. New retry option.
- Updated item progress bar to reflect upload, processing and deployment status.
- Improved navigation bar for tablets and devices with medium resolution screens.
- Changed configuration for re-encode option to target 4mbps average (instead of 10mbps maximum).
Version 9.1.0 - 2020-03-19
- Server-side access control processing rewritten to reduce memory footprint and CPU overhead.
- Support added for access control flags. (will be used in the future)
- Fixed hierarchical group permission processing so child groups of a read only parent access
control inherit the read only flag.
- Moved authenticator code entry into main sign in form to work around a chrome auto-complete bug.
- When masquerading, any operation that results in a permission exception can be repeated as the
user prior to masquerading (who will typically have required permissions).
- Improved permission error handling.
Version 9.0.1 - 2020-03-11
- Asset serving signature cache reset if a file has been modified.
- Incorrect password lockout relaxed. Threshold is now 50 failures per IP address or 5 failures per user
within 10 minute window. User failure count reset to zero if user password updated by another user.
- Improved error handling for VAST and RSS populated sequences.
- Added new bulk selection operation to revoke all user and group access controls.
- Updated bulk selection dialog to include additional information.
- Included ad status information to selfad.co activation page.
- Reversed list of ads on selfad.co activation page so most recent on top.
Version 9.0.0 - 2020-03-08
- Added support for sequences populated by VAST. Requires android-player-22.0.apk+ or android-exoplayer-9.0.apk+
- VAST sequences should be referenced as an inner sequence from the main sequence.
- Players fetch and download Ads every 10 minutes asynchronously.
- Impression reporting and tracking is performed by the player synchronously to playback.
- Simplified display tab by moving dynamic import option into regular import option as a checkbox.
- Added content type selection to streaming media option to avoid needing
live-image-
protocol prefix
for JPEG/MJPEG image rendering.
- Changed RSS and VAST sequence loading failure behaviour to load the last known sequence state.
Version 8.4.2 - 2020-02-26
- Added support for a read-only system administrator.
Version 8.4.2 - 2020-02-26
- Removed option to import from YouTube.
YouTube has made changes making extracting the raw video more difficult.
- Removed header
X-Frame-Options: SAMEORIGIN
from preview to support
embedding into a web page using an iframe.
- Added support for custom streams
liveimage-http://
and
liveimage-https://
.
Version 8.4.2 - 2020-02-19
- Suppressed the recent restarting warning for screens with
standbyCondition
configured
(which periodically sleeps and restarts by design).
- Added
extendedOfflineThreshold
to customise threshold for when screens are hidden from screens tab.
- Added support for dash (-) in cloud configuration names to allow domain customisations that contain a dash.
Version 8.4.1 - 2020-02-11
- Fixed issue where refreshing screens table hid currently applied warning filters.
- When backup server used,
backupServerUser=true
is added to screen data.
This can be useful for detecting when networks have the primary server blocked.
- Displays a warning popup if a screen filter hides all screen results.
Version 8.4.0 - 2020-02-11
- Screens offline over 31 days not shown on screens table. Use new filter button to display them.
- Added filter button to screens table. Filter by:
- Connectivity
- Warnings
- Custom status
Version 8.3.6 - 2020-02-06
- Added warnings column to screens table.
- Warnings include:
- Missing communications
- Extended offline
- Missing data
- Not enough storage
- Low on storage
- Downloading
- WiFi signal low
- Player starting
- Multiple recent restarts
- Update pending
- HDMI not connected
- System overheating
- Slow download speeds
- Player not loaded
- Analytics error
- Software needs updating
- Updated users to enable new Warnings column if the column On (where warnings were previously) enabled.
Version 8.3.5 - 2020-02-04
- Added player software recommendation text to software tab when editing screens.
- Changed how software is referenced in configuration files.
- Included analytics players in the main software list so
/analytics
is not required to see it.
- Additional validation for uploaded .vtt files to prevent low level caption renderer crashes on Minix x88i.
- Checks timestamps are not zero.
- Checks timestamps are valid format (e.g. no comma separator).
- Checks end timestamp is after start timestamp.
- Changed stack item editor behaviour when selecting new library item.
- All library item data (including libraryItemId) added to stack item data.
- Same behaviour as dragging from right hand library panel.
- Library item events added to events already defined in the stack item.
- Existing events are not removed.
- Alternate cloud configuration specified in address path overrides session expiration settings.
- Updated how view customisations (such as columns) are saved to better support multiple browser windows.
Version 8.3.4 - 2020-01-22
- Added option to find library item to stack items that reference a library item.
- Added Item map, a new visualisation to display mapping between sequences, inner sequences, stacks, stack items and library items.
Version 8.3.3 - 2020-01-08
- Improved styles for dark mode.
Version 8.3.2 - 2019-12-23
- Support for adding custom fields to display report and display summary via reporting API.
- Add the field name prefixed with
libraryItem.
, sequence.
or
screen.
to the fields
parameter of the API request. For example:
...&fields=time,itemId,sequenceId,screenId,screen.customFieldName
Version 8.3.1 - 2019-12-18
- Fixed JavaScript error when creating a new Cloud in admin interface.
- Fixed JavaScript error when verifying Google CAPTCHA or Authenticator code.
Version 8.3.0 - 2019-12-13
- When screens communicate, sequenceId in object is copied to sequenceId in object data. (So accessible via JavaScript)
- Updated MaxMind GeoLite2 City database.
- Moved updating the usedBy field to a new thread so it does not delay fetching a sequence.
- The usedBy field processing is delayed by 1 minute with multiple updates within 1 minute consolidated.
- Added dark mode. Will be enabled if system set to use dark mode.
- Added dark mode override option to cloud configuration.
Version 8.2.2 - 2019-12-09
- Uploads and imports over 4GB blocked to prevent problems storing large files in blobstores and on devices using older
filesystems. Files over this size must be re-encoded or split first.
Version 8.2.1 - 2019-12-04
- Fixed second issue resulting in the busy cog icon in admin interface continuing to spin when populating
drop down list of sequences for selection.
Version 8.2.0 - 2019-11-29
- REST API behaviour updated for initial Access Controls upon object creation:
- When new objects are CREATED they are made accessible to the operator (the user who authenticated) AND
all groups the operator is a member of (as listed in the access tab for the user who authenticated).
- If new objects should not become members of the groups the operator is a member of, the query string
?autoGrantGroupAccessControls=false
can be added to the request.
- When existing objects are UPDATED the access controls are NOT modified.
Version 8.1.3 - 2019-11-27
- Fixed issue resulting in the busy cog icon in admin interface continuing to spin after sequences loaded.
- Set width of information popups containing error or condition to 500px to improve readability.
Version 8.1.2 - 2019-11-25
- Extra condition pre-processing to replace smart quotes with regular quotes.
- Screen status notifications only sent when offline count changes.
- Screen status notification sent when all screens back online after being offline.
- Screen status checked every 10 minutes for notifications.
- Screen status notifications can be sent from staging server by adding
test=true
into group data.
Version 8.1.1 - 2019-11-17
- Fixed problem where data from previous use of the multiple selection dialog is re-applied on
subsequent use if data tab not clicked.
Version 8.1.0 - 2019-11-17
- Screen status notifications
- New advanced group option to send offline screen notifications to users via email.
- When enabled, hourly checks will be performed on all screens in the group.
- One or more offline screens in the group will trigger a notification email to be sent to
users that have direct access to the group (i.e. in group access tab).
- Screen status checked every 1 hour for notifications.
- E-mails will be sent from screenstatus.net via SendGrid.
- Updated all dependencies to latest versions.
- Updated data access layer to support running without starting additional services.
- Added simple API for fetching screenshots and logs from devices. (unpublished)
Version 8.0.3 - 2019-11-12
- External process for removing compressed chunks updated to support safe removal during transition
from regular compressed chunks to cold compressed chunks.
Version 8.0.2 - 2019-11-11
- The remove expired sequence option now only removes items with an end date that is before the current time.
(Previously items with no end date were incorrectly removed.)
- REST API updated to not overwrite objects created date.
- Fixed problem querying user action reports that cross from previous year to current year.
- Fixed problem querying blob log reports that cross from previous month to current month.
- Added support to migrate chunks in data warehouse to cold storage.
- New data warehouse life-cycle: Hot File, Compressed Chunk, Cold Compressed Chunk.
- External process to move chunks over a specific age into cold storage.
- Archive index references chunks in cold storage.
- A data warehouse query can dynamically load chunks from cold storage.
- Support for Google Cloud Storage for cold storage object bucket.
- Added new event trigger for RS232 input.
- Added support for regular expression matching to barcode, NFC and RS232 pattern scanning.
Version 8.0.1 - 2019-10-24
- Updated smart display pacing logic.
- When play count above pacing, play probability divided by 1.5.
- When play count below pacing, play probability multiplied by 1.5.
- When decreasing - less than 0.01 is rounded to 0
- When increasing - less than 0.01 is rounded to 0.01, maximum 1.0
- Added a new dialog to initialise starting condition when a target play count is set.
- Suppressed alert from JsException when removing the typeahead from the DOM after touch event.
- Improved sequence, group and user selection select/typeahead component to display more information.
- Moved extend visibility option to be next to select/typeahead component it affects.
Version 8.0.0 - 2019-10-13
- Servers maintain play counts for each item with reporting enabled.
- Play counts synchronised with item metadata periodically (10 minutes).
- To maintain counter increments during asynchronous data replication with eventual consistency,
one counter for each server (shard) is stored. Replication uses idempotent maximums to merge shards.
- Sequence item metadata only updated after changes are detected.
- Added support for Targets and smart display pacing.
- Added option to define a target play count for an item.
- System dynamically changes probability of displaying item to reach target by end date. (smart display pacing)
- Reporting tab replaced with Campaign tab.
- Start and send dates moved to Campaign tab.
- Added progress bars to show play counts and current pacing.
- Consolidated some library item options to Defaults tab to clarify that these options are not directly linked
to a stack item when added to a sequence.
- Added support for bounce authentication. By referring a user to a special address they can be automatically signed in.
For example:
/auth?email=me@mydomain.com&password=mypassword
. This will create a session, add a cookie
and redirect to the admin interface. This must be performed over a secure connection and has security implications (not recommended).
Version 7.6.9 - 2019-10-05
- Fixed problem selecting a screen/sequence for the playback simulator when over 10,000 screens/sequences.
- Inner sequences containing inner sequences introduced a premature MaxDurationExceededException when items
referring to the inner sequences did not have durations exceeding the total duration of items referring to the inner
sequences at the deeper level.
The result was inner sequence rotation applied incorrectly and valid items skipped in the deeply nested inner sequence.
If deeply nested inner sequences are in use, please update players to android-player-21.2 and android-exoplayer-8.2.
Alternatively, items referring to inner sequences can be configured to have a duration longer than the total
duration of the inner sequence items to prevent the issue occurring.
- Static
random
value reset after an item is displayed if data
reused.
- Fixed problem detecting and propagating sequence frame updates to players.
- Updated gwtbootstrap3 to version 1.0.0 and gwtbootstrap3-extras to version 1.0.0.
Version 7.6.8 - 2019-09-30
- Fixed problem with anonymous registration that resulted in a JavaScript error displayed in admin interface.
Version 7.6.7 - 2019-09-25
- REST API updated to ensure
itemId
is automatically allocated and added to items when report=true
is set.
Version 7.6.6 - 2019-09-13
- Fixed problem where dragging a modal window breaks scrolling vertically.
Version 7.6.5 - 2019-09-01
- Added exception propagation when accessing a remote data warehouse.
- Exceptions from data warehouse summary report API returned in response.
These were previously hidden by sending CSV header line too soon followed by no records.
- Better support for string representation of date/time in stack items for when items must be displayed
according to the screens timezone and not the admin user.
Version 7.6.4 - 2019-08-25
- Fixed API import problem when HTTP server returns data with chunked encoding and no defined content length.
- Updated YouTube importer to download 1080p video stream and identify incompatible streams with
use_cipher_signature=true
set.
Video format preference order 37, 22, 18.
- Added support libraries for PDF generation ready for PDF summary reports in next release.
Version 7.6.3 - 2019-08-13
- Updated re-encoding progress to be based on input file size.
- Increased max duration for re-encoding to 1 hour.
- Changed visual style of long errors in item details.
Version 7.6.2 - 2019-08-10
- User action records created for all objects updated as part of a multiple selection / bulk operation.
- Increased bulk screen instant update threshold from 10 to 50.
- A3 now counts number of potential advertisers viewing an advertising group.
- Screen response optimisation to remove A3 items where
adSuitable == false
. A3 assigned
items will not be preemptively downloaded by devices until adSuitable == true
.
Version 7.6.1 - 2019-08-06
- Added support for custom update packages. Admin interface option added to commands list when
loaderVersion >= 15.0
.
- Added additional validation logic to REST API for User, Group and ServerConfig objects.
- Fixed sequence not found error when saving a screen with uncleared sequence typeahead from previous save.
- A3 interface updated to support setting
adSuitable
and adEnabled
via toggle switches.
- Fixed problem relaying UDP between servers when administrator and screen in different geographic regions.
Version 7.6.0 - 2019-07-14
- Updated all .jar dependencies.
- Added custom URL handling for selfad.co.
- SendGrid integration for sending e-mails.
- Automatic Advert Assignment (A3) updated:
- Video advert support added.
- Slot duration restrictions applied to videos.
- Activation e-mails.
- Support for enabling / disabling adverts using authorised link in activation e-mail.
- Advert pools. Uploaded adverts create additional slots. Designed to be used as an inner sequence, where
a single advert is shown each loop of the main sequence. This allows displaying more adverts than slots in the
main sequence.
- New sequence type for Advert pools. This sequence type grants A3 permission to add items.
- Assigning a
customId
that is already used in a sequence no longer merges items to use the same itemId
for reporting.
This means a customId
functions more like a tag where reporting on a customId
can
return multiple unique items. Logic for RSS sequences differs because the RSS GUID is used as
a unique identifier and is used to prevent creating different reporting items when RSS feeds update.
- Added support for
additionalReadOnlyData
in cloud configuration to mark custom data fields as read-only.
For example additionalReadOnlyData=LicenceID
in active cloud configuration would prevent users changing the LicenceID field in item data.
Version 7.5.3 - 2019-06-28
- Composite item label updated if display item updated by selecting a new item from the library.
Version 7.5.2 - 2019-06-25
- Groups in group selection list sorted alphabetically.
- Group name hidden in group selection list unless there are duplicate labels.
- Added checkbox option to permanently disable showing the Too many items warning.
- Fixed issue where copied library items, sequences and clouds were not automatically added to groups the operator is in.
- Fixed issue where adding data to a custom launch intent threw an umbrella exception.
Version 7.5.1 - 2019-06-24
- Fixed umbrella exception that appeared after clicking the multiple selection button.
- Improved handling of InvalidEmailException and InvalidNameException.
Version 7.5.0 - 2019-06-22
- Admin interface object data UI editor only built on demand when data tab clicked.
Significant speed up for editing objects with many data fields such as users and screens.
- Fixed issue where 2nd edit of object fields was not saved unless set in data tab.
- A3 updated to show count of screens that will show new advert on map.
- Fixed
usedBy
field which was incorrectly maintained in stacked sequences.
- Fixed sequence not found error when saving a screen with sequence typeahead unpopulated.
- Fixed issue where help tips were not removed after clicking OK.
Version 7.4.9 - 2019-06-19
- Updated HTTP header parsing for overriding media processing in upload handler. Options are:
X-MediaProcessing=noprocess
- Disable all media processing
X-MediaProcessing=norescaleimages
- Disable generation of additional rescaled images
X-MediaProcessing=novideoimages
- Disable generation of preview images for videos
- Updated datasource redirection logic to correctly pass referrer datasource options.
- Server ignores reports sent from devices if
report=false
set in screen data.
Version 7.4.8 - 2019-06-03
- When Require secure authentication (HTTPS) enabled, existing insecure sessions over HTTP will be blocked
- Added option to include
Strict-Transport-Security
header. The following data is needed in cloud options:
strictTransportSecurity=true
strictTransportSecurityMaxAge=86400
.
Version 7.4.7 - 2019-06-03
- Added option to cloud configurations to require (force) authentication over HTTPS
- Email and password fields disabled on sign in page.
- Blocks authentication requests from insecure domain.
- Uses secure session cookie.
- Adds HttpOnly cookie flag to prevent JavaScript cookie access.
- Disabled HTTP TRACE method for Java Servlets.
- Removed extended information from HTTP error pages.
- Added
X-Frame-Options: sameorigin
to admin interface page to prevent wrapping in iframe.
- HTTPS forced for authentication after new SSL certificates issued.
- Blocked uploads with filename ending with
.exe
and .js
.
Version 7.4.6 - 2019-05-28
- Added support to change Email to Username as configured in cloud config by
userIdentifier=username
Version 7.4.5 - 2019-05-25
- Add
null
BLOB uploader. This is to support additional addresses for already populated blobstores.
- Added additional server healthcheck for loader communications.
- Ensured healthcheck fails immediately after shutdown starts.
- Reduced shutdown time when no datasources are active.
- Added 10 most recent healthcheck
events
to healthcheck API response.
Version 7.4.4 - 2019-05-15
- Added support for launching custom Android Intents. (requires android-player-18.2+ or android-exoplayer-5.2+)
Version 7.4.3 - 2019-04-30
- Abstracted blob uploaders so they can be used by external synchronisation systems.
- Added additional blobstore in Ireland to begin blobstore migration.
Version 7.4.2 - 2019-04-28
- The created date column now visible for groups and cloud configs (when visible columns not customised).
- The created date used as default client-side sort for groups and cloud configs.
- Fixed problem where column customisation lost if refresh clicked before preferences saved to server.
- Added
sequenceIdOverride
to enable quick override of a screens sequenceId
without losing
configured setting of sequenceId
.
This will be used to show emergency items and to temporarily disable non-paying customers.
Version 7.4.1 - 2019-04-14
- Increased security by strict policy on incorrect passwords to combat brute force password attacks.
- 5 incorrect passwords and the server will ignore subsequent password attempts.
- After 10 minutes of zero attempts, user or source IP can try again.
- Increased security by comparison with 100,000 most common passwords.
- New passwords can not match password in the common passwords list.
- Users with existing passwords in the list will receive a warning when signing in.
- Fixed problem showing web page zips in item info icons and details
- Added support for
maxBitrate
to configure threshold for displaying bitrate warning.
Version 7.4.0 - 2019-04-06
- The item erase button no longer requires the user erase feature to be enabled.
The erase button is enabled for all item types except screens which are maintained for billing and statistics purposes.
The reason for this change is to reduce the name/email collisions caused by existing clouds, groups and users in the system
and also prevent items accessible to groups no longer maintained.
- New button to increase the maximum items loaded in a single query.
- Reduced the default maximum items loaded to 1000 to improve performance for users managing large numbers of items.
- Moved the warning when maximum items exceeded to point at new button.
- Fixed problems with pagination when filtering and sorting applied.
- Rewrote selection, drag and drop logic for faster construction of large sequences.
- Made item thumbnail visible while dragging. (removed drag proxy)
- Added right click support for displaying library item and stack item menus.
- A VTT file with matching MP4 file is merged into a single item when dragged simultaneously into admin interface. (names must match)
- Fixed subtitles in admin interface when previewing a video with subtitles.
Added workaround to CORS restrictions preventing accessing VTT BLOBs from remote blobstores.
HTML5 player now proxies VTT BLOBS through the server hosting the JavaScript.
- Admin interface performance optimisations:
- A configured
maxResults
aborts server-side object loading except when filtering.
- Server-side filtering only performed when search query provided.
- Sorting only performed client-side
- Improved pagination responsiveness by deferred thumbnail rendering.
- Dropped support for Internet Explorer 8 and 9 (removed from GWT permutations)
Version 7.3.6 - 2019-03-28
- Group totals now recursively count items in sub groups.
- Group summary option shown for all groups (not exclusive to groups containing screens)
- Fixed error displaying options drop down for groups when items column was hidden.
- Fixed error saving sequence for screen after switching from extended visibility back to normal.
- Setting max two factor age in cloud config to zero will force users with 2nd factor enabled to provide code every time they sign in.
- Two factor authentication made available to all users and no longer requires
twoFactor=true
in cloud.
- Basic authentication is not accepted if two factor authentication enabled.
- 3rd party sign in (oauth) is not accepted if two factor authentication enabled. (We may support hybrid later).
- Improved admin interface error reporting.
- Updated storage information bars and warnings.
- Added support for GWT Super Dev Mode and GWT Code server.
Version 7.3.5 - 2019-03-13
- New group summary dialog that shows screen status similar to the home tab.
- New drop down options for groups that contain screens:
- Group summary
- Screen status history
- Display summary
- Display report
- Collected data
- Item counting optimisation for groups table.
Version 7.3.4 - 2019-03-06
- Changed default button ordering in dialogs to match Googles guidelines.
- Changed sequence "edit" button to "open" and enlarged.
- Replaced floppy disk icon with tick as this skeuomorphic icon is now very dated!
- Added more IDs to interactive elements to aid automated testing.
- Improved GPS movement map for displaying screen locations for infrequent display records.
- Added
showAddItemOption=false
to hide the add item option from sequences.
- Extended
showEditOption=false
to disable stack item double clicking and dragging.
Version 7.3.3 - 2019-03-01
- Fixed problem displaying screen status report.
Version 7.3.2 - 2019-02-27
- Library performance dramatically improved by caching item information icons.
- Changed search box behaviour to search local cached data. To search beyond max results limit it is necessary to press refresh or return.
- Searching by group now much faster especially when following links from the groups tab.
- Updated multiple selection options for screens to support viewing screen status history for selection of screens.
Version 7.3.1 - 2019-02-19
- Admin interface preview player updated to maintain mute setting after audio first enabled.
- Preview player navigation controls only show when mouse positioned center left or center right.
- Preview player video controls only show when mouse clicked on video.
- Numerous cosmetic changes to preview player.
- Fixed looping reload of user action widget on home screen when there are 1000 records.
- Fixed problem with dialog dragging where position would not follow mouse correctly.
- JQueryUI removed, features such as dialog dragging now implemented internally.
- Added IDs to interactive elements in admin interface to aid automated testing.
Version 7.3.0 - 2019-02-14
- Added map marker image generating servlet to replace deprecated Google maps marker service.
- Markers on Google map on home tab now show info window when clicked with additional details.
- Added custom map marker for moving screens (
collectGps=true
in screen data)
- Fixed looping reload of user action widget on home screen when there are 1000 records.
Version 7.2.7 - 2019-02-12
- Updated home screen map to display numbers in markers when multiple screens have the same GPS location.
- Mouse hover over map marker lists all screens in location of the marker.
- Clicking a marker performs a search for all screen in location.
- Added support for comma separated list of IDs to search to return multiple items in single search.
Version 7.2.6 - 2019-02-07
- Changed scale for charts so single digit values are not repeated.
- Fixed rare race condition when saving custom columns in user data for display report and display summary.
- Fixed group recursion, which could fail if there is no search criteria in view state.
Version 7.2.5 - 2019-02-01
- Fixed error in User and Group summary report for active screen count.
- Removed APK link from sign in page for all clouds. Google marked one domain as "unsafe" and it
is assumed this is the reason.
- Added option to disable group recursion.
By default, group recursion automatically lists items contained in nested groups.
Adding
groupRecursion=false
to user data will disable group recursion and limit the visible
depth to the first layer of access controls. I.e. Items the user has direct access to and items
contained within groups the user have direct access to.
Version 7.2.4 - 2019-01-30
- Fixed screen status history report CSV where date/time ranges were shifted back by 1 record.
- Abstracted clickable items in tables to use bootstrap badges for simplicity and efficiency.
- Made email address in user table clickable to quickly contact customers.
- Temporary fix to help prevent Google Map widget displaying gray tiles. (Still not perfect - Google bug)
- The clear screen location button was not fully removing location. This is now fixed.
- Optimised popup placement when near window edges.
Version 7.2.3 - 2019-01-25
- Fixed browser lock-up problem on screen status history report page. Still needs further optimisation.
Version 7.2.2 - 2019-01-24
- Added items column to groups table.
- Displays count of each object type in the group.
- Each count can be clicked to search items of that type in the group.
- Added list of groups user is a member of to home tab.
- Added support for group searching in the URL fragment.
- Fixed problem generating CSV report for screen status history.
Version 7.2.1 - 2019-01-19
- Added option to prevent a user signing in. This option will also sign them out immediately.
- Added option to show a message to a user when they sign in. This message will also be shown if they
attempt to sign in when the account is not enabled.
- Added multiple selection options to enable and disable user features.
- Added sort functions to items listed in the edit group dialog.
- Changed REST filter operation to return false if the condition throws an error. This means a filter will not
cause an API call be aborted if an object is missing a data field.
- Added support for fetching user and group summaries using the REST API (not public yet - used by invoicing).
- Fixed rare race condition when saving custom columns in user data. Column saving will now only occur after no changes to
columns are made for 5 seconds.
Version 7.2.0 - 2019-01-13
- Added new parameters to REST API to support searching users by email, groups by group name and server configs by name.
- Added
type
field to REST API responses to simplify object deserialization using Jackson annotations.
- Added ability to search for access controls by actor (user or group) added to REST API
- Added ability to search for access controls by object added to REST API
- Created full Java client (REST API) to simplify communications between Java applications using REST API. (Used for invoicing project)
- Updated simple REST examples and added dynamic resource import example.
- Added property to stop creating action records for API operations. Add
actionRecordsForApi=false
to user data.
- Added player communication status to screen "On" column.
- Count of screens downloading on home tab now requires player to be active and data missing.
- Selecting checkbox to show custom screen status on home tab now automatically refreshes pie chart.
- Added ability to filter by parent group to user and group summary report.
Version 7.1.6 - 2019-01-05
- Changes to dynamic resources inside a composite item were not being detected by modification checks. This is now fixed.
Version 7.1.5 - 2018-12-13
- Group dialog only loads items in group when items tab is clicked.
- Fixed issue with building location conditions where regions with no address are clicked.
- Preview fixed for composite items within a sequence within a sequence frame.
Version 7.1.4 - 2018-12-07
- Updating numeric values in composite item editor now changes the preview correctly.
- Drawing tool for location builder map now reset when component reused.
- REST API changed so that POST returns 201 (created) instead of 200.
- REST API changed so that system administrators can not perform POST, PUT or DELETE. System administrators have too
much power and this closes a possible attack vector.
- Added new Quick Data API endpoint
/api/group-screen-data/{group-name}
to support updating data of
all screens in a group with a single API call.
- Added additional column to library to display both active resource size and total resource size.
Version 7.1.3 - 2018-11-28
- Fixed problem where user defined aspect ratio was not sent to content building services.
- Added support for content building services to return without
url
parameter to support cancelling.
- Added new summary types for daily active screen counts and daily data downloaded.
- Added new summary types for hourly active screen counts and hourly data downloaded.
- Added options
showRssPreviewOption showRssPreviewOption showExpireOptions showFindSequenceOption showCopyOption showRemoveOptionshowEditOption
to support further customisation of the admin interface.
- If home tab is disabled for a user and library and sequence tabs are not, the sequence tab will be shown after sign in.
Version 7.1.2 - 2018-11-21
- Content builder definitions are now loaded after clicking "build content using another service"
rather than with the admin interface configuration. This is to support loading and refreshing remote 3rd party content
builder specifications on demand.
- Added new boolean field,
serverImport
, to content builder definition to support content builders that return a
URL that should be displayed in a WebView rather than importing binary data server side. This is for live HTML5 content.
- Updated number formatters to avoid bugs with locales that use a comma for the decimal separator.
Version 7.1.1 - 2018-11-13
- Added new panel to home tab to display recent user actions.
- Added new panel to home tab to display billing status. Only shown when
showBillingStatus=true
in cloud config.
- Added new option to clone screen configuration to another screen. This is useful when replacing hardware.
- Additional verification of blob files prior to upload to prevent possible retry loop if size is zero. (Object stores do not support zero sized objects)
- Extra verification of small blob files to ensure MD5 is correct. (Double checks vtt fix)
- Updated AWS API libraries.
- Updated GCP API libraries.
- Updated MongoDB driver.
- Updated and reconfigured SLF4J.
Version 7.1.0 - 2018-10-10
- Added multiple selection for managing groups.
- Redesigned user summary report. Now known as user and group summary. Additional summary types added to help
with invoicing partners and end customers.
- Added search option to filter by label and group name.
- Added data type option to show only users, groups or both.
- 6 different summary types:
- Item counts.
- Active screen counts.
- Total data stored.
- Total data transferred.
- Monthly active screen counts. (used for billing)
- Monthly data downloaded.
Version 7.0.4 - 2018-10-10
- Added summary chart to top of screen status history report.
- Fixed problem displaying items in user action report not associated with an object.
Version 7.0.3 - 2018-10-04
- Fixed issue with saving cloud configs where the active cloud config was returned rather than the new cloud.
Version 7.0.2 - 2018-09-30
- Fixed issue with signature generation when uploading blobs with meta-data containing non ASCII characters.
Version 7.0.1 - 2018-09-29
- Updated Apache commons libraries.
- Updated MongoDB driver and Morphia.
- Updated AWS SDK for S3 Uploads.
- Replaced GCS JSON implementation with Google's client library for GCS. Note changes required to blobstore configs.
- Abstracted blob upload retry logic to use common exponential backoff algorithm.
- Updated Maxmind GeoIP client library.
- Updated bouncy castle encryption libraries.
- Updated Jackson JSON parsing libraries (serverside only).
- Updated e-mail parsing libraries.
- Updated JPEG meta data readers.
- Busy status now cleared before admin interface redraw to improve responsiveness.
- Built new Maven project for fetching and managing dependencies. (manual updates)
Version 6.6.5 - 2018-09-27
- Redesigned condition builder to use a wizard style work flow.
- Added new condition building option for setting a display frequency. Builder generates conditions for
displaying item once every X loops or with X probability.
Version 6.6.4 - 2018-09-18
- Fixed permission issue that prevented listing public widgets and templates if active user not granted access to groups.
- Caching layer added for cloud configurations to speed up applying customisations.
- Performance enhancements for server side filtering and sorting.
- Performance enhancements for client side filtering and group selection.
- Fixed issue that could cause a failed blob upload to Google Cloud Storage to not retry automatically.
Version 6.6.3 - 2018-09-11
- Querying by a specific group now includes results for groups within the group (nested grouping). This
operation is used when filtering by groups in admin interface and REST API.
- Added new option to filter REST API results. The parameter
filter
can take a predicate which
will be applied to a list of objects. For example &filter=modifiedMillis>1536839304634
.
Please note, the filter value must be URL encoded.
- Display report records sent to server can now be queued or disabled to facilitate data warehouse management.
Disabling data warehouse writes causes player to retry later and suppresses regular player commms for updates.
Version 6.6.2 - 2018-09-10
- Data warehouse V1 fully disabled.
- Data warehouse V1 removed from codebase.
Version 6.6.1 - 2018-09-06
- Removed backend selection drop down list from admin interface.
- Removed legacy code for data warehouse V1 backend from admin interface.
- Fixed problem with custom columns for summary reports being reset unexpectedly.
- Fixed continuous loading loop when viewing the GPS movement map.
- Updated GPS movement map to better support large GPS position jumps when GPS data is intermittent.
- API summary reports now use data warehouse V2.
- API report requests now ignore
backend
parameter and use data warehouse V2 regardless.
- Data warehouse V1 no longer used for reads. (writing will be disabled in next release)
- Updated GeoLite2 database and library. (Used for resolving IP to location when no GPS data)
- Full clean and rebuild with latest build tools.
Version 6.5.1 - 2018-08-23
- Modified data warehouse splicing logic to reduce memory footprint.
- Queries aggregating a small number of screens/items (under 50) spliced by time.
- Server side filtering now uses visible columns for non custom search parameters.
Version 6.4.12 - 2018-08-20
- Added upload and import limit of 4GB. This limitation is needed because:
- Android secondary partition, SD cards and USB mass storage using FAT can not store files larger than 4GB.
- Google Cloud Storage does not support uploading over 5GB in a single transfer.
- Fixed exception when filtering report by both a user and a group simultaneously.
Version 6.4.11 - 2018-08-16
- Fixed minor layout issue showing access control tab on small mobile devices.
- Disabled option in admin interface to query Warehouse V1. Does not affect reporting API, but users are
encouraged to move to
backend=warehouseV2
ASAP.
Version 6.4.10 - 2018-08-13
- Disabling the reporting feature
showReports=false
now also prevents using the API for reporting.
- Restricted column width used for groups and user labels in access control tab of dialogs.
Version 6.4.9 - 2018-08-09
- Invalid screen IDs and item IDs sent in display reports from devices now ignored.
File corruption most likely cause, especially when devices are not shut down correctly.
- Fixed NPE when handling e-mails sent without a from address in the headers.
- Default display report backend when not specified is now warehouseV2.
- Added logging to track use of deprecated display report backend.
- New option added to remove dialog to support reuse of an email address, group name or cloud config name.
New option simply appends a timestamp to email / name so that it is no longer in use and can be reclaimed.
- Fixed search box that sometimes returned the wrong results when search delayed.
- Added condition length limit of 8K. Exceeding limit will show error in admin interface. New players will
evaluate these conditions to false.
Version 6.4.8 - 2018-07-24
- Fixed problem with data editor ignoring updates to data after it is removed. One known consequence was
default duration (60 minutes) lost when selecting a new inner sequence for an item.
- Clicking anywhere on the video playback preview will now unmute audio.
Please note: videos start muted so autoplay will function (recent Google Chrome policy change breaks autoplay with audio).
- Unified the item duration logic.
durationMillis
not set if it matches a resource duration or the default (10 seconds).
- Fixed number formatting problem when resource or item millisecond less than 100.
Version 6.4.7 - 2018-07-19
- Instant updates are now quicker when updating screen data in admin interface.
- Instant updates are no longer attempted if the server has not had recent UDP confirmation from DS Loader.
- Instant updates using the remote trigger API for screen groups now skips screens without UDP connectivity.
- Improved proxying UDP between servers as required for firewall hole punching.
Version 6.4.6 - 2018-07-17
- Updated location condition builder to support defining multiple circles and polygons on the map.
- Added Device start column to screens table. Uses
hardwareBootMillis
.
- Added detection of multiple devices sharing the same MAC by monitoring
hardwareBootMillis
for significant jumps backwards in time. When a duplicate is detected,
hardwareBootMillisDebug=duplicate
is added to screen data.
- Changed default time formatter to include seconds in tables.
- Fixed problem displaying last UDP comms time in screen table.
Version 6.4.5 - 2018-07-11
- Fixed over-caching of player API response which sometimes prevented automatic updating of dynamic content such as weather images.
- Server side searching by EntityInfo (as used by sequences tab) is now consistent with client side searching.
- Warning for multiple recent starts not shown if screen is offline.
- Weather translation for Swedish updated.
Version 6.4.4 - 2018-07-03
- Changed
groupId
filter behaviour in data warehouse v2 backend to match v1.
- Admin interface for display reports now changes group label to clarify if report
is filtered by group of screens, sequences or library items.
- Fixed data duplication problem when changing data names in the data tab.
- Replaced sign in prompt when a permission error occurs while masquerading with an error message. Signing in
as another user in the middle of a masquerade session does not work as expected so functionality has been removed.
- Label of composite item updated if a new library item is selected.
- Updated legacy content builders to use UTF8. Unfortunately many APIs we use only support English terms though.
- Added workaround to enable auto-playing videos in HTML5 preview (recent versions of Chrome prevent this).
The workaround is to mute the video by default.
Version 6.4.3 - 2018-06-28
- Fixed problem searching for meta data by email, group name or cloud config name.
This caused problems manually adding new access controls.
- Improved validation of display report records sent from players.
Version 6.4.2 - 2018-06-21
- Fixed issue where reporting data referencing a missing screen would cause report generation to fail.
- Fixed NPE when searching for an ID that does not exist.
Version 6.4.1 - 2018-06-19
- Changed behaviour of data tabs.
- Data tabs now highlight changes made to data with yellow stars.
- All updates are visible and modifications made in the data tab take precedence.
- The data tab can be used for advanced modifications and provide understanding of how various options relate to stored data.
- Added options to set scrolling text, NFC URL and Beacon URL in screen edit dialog.
- Fixed problem generating reports by Item ID and Library Item ID.
Version 6.3.2 - 2018-06-15
- Searching by text that looks like an ID now performs fast ID fetch rather than full search.
- Manual text entry of indirectly accessible users and groups within access tab of items is now case insensitive.
- Fixed issue where the incorrect access controls were applied to new items when a sign in performed while masquerading.
- Added additional retry logic for uploading blobs to S3 and GCS.
Version 6.3.1 - 2018-06-06
- Larger number of concurrent uploads and downloads supported. Fixed issue where ThreadPoolExecutor did not apply the
expected level of concurrency.
Version 6.3.0 - 2018-05-25
- Removed legacy (MySQL) database connectivity.
- Data warehouse V2 used exclusively for user actions (audit trail), blob upload log, collected data and screen status history.
- Data warehouse V2 now the default for display reports, data warehouse V1 will remain active for a limited time.
- Updated style of library items and stack items to support more info icons and removed shadows which were degrading performance.
- Selecting None from suggestion boxes removes the selection.
- Any errors updating dynamic content now shown in item details.
Version 6.2.1 - 2018-05-21
- Options to jump to display reports and display summary now correctly pre-populate search criteria.
- Suggestion boxes for sequences, screens and groups correctly loaded when jumping between tabs.
Version 6.2.0 - 2018-05-16
- Added sequence playback simulator.
- Creates a report with information about items that will display based on configurable data such as date/time.
- Displays a summary of duration and storage requirements.
- Additional error responses added for invalid API requests.
- Worked around a bug in DS Loader that could cause app restart immediately after booting. Note, new DS Loader recommended.
- Added GPS movement map link to display report when screen GPS data collected with
collectGps=true
.
- Added suggestion boxes when specify screen, sequence or group for reports.
Version 6.1.0 - 2018-05-12
- Newly added library items starred. Star removed after they are added to a sequence.
- Display report CSV now always generated on server to avoid browser limitations.
- Sanitised input to oauth2callbacks eliminating possible cross site scripting.
Version 6.0.2 - 2018-05-08
- Fixed bug where longitude was displayed in latitude column.
- Reordered columns so latitude comes first.
- Fixed location heatmap for display reports.
- Display report CSV and heatmap now open in new windows/tabs.
Version 6.0.1 - 2018-05-04
- If there are multiple thumbnail candidates in one item, the most recent is used. (Based on
modifiedMillis
in resource data).
- New header
X-MediaProcessing=noprocess
added to upload requests disables automatic media processing. Note: This
advanced option requires metadata to be sent in the data of the pending resource, for example image width
and height
.
- Custom data added to a pending resource is copied to final resource after completion if it does not exist.
- The invalid Content-Type
text/txt
is now fixed by using supplied file extension.
Version 6.0.0 - 2018-05-03
- Data warehouse version 2 introduced with support for custom record types:
- Standard display records.
- Display records containing longitude and latitude. Designed for moving screens. (
collectGps=true
required in screen data)
- Collected data. (Email addresses, phone numbers, text, URLs etc as configured in events)
- User actions (audit trail).
- Blob upload records. Added
blobstore
field to identify uploads to multiple blobstores.
- Screen status history records. Changes to structure to avoid need for aggregation.
- After a transitional period, data warehouse version 2 will replace the legacy (mySQL) database and version 1 data warehouse implementation.
- Updated all reports ready for data warehouse version 2:
- Backend selection options. (while we transition)
- Configurable columns for display summary and display reports.
- Columns for custom ID and library items referenced from records.
- Columns for GPS longitude and latitude. Note: When GPS is not known at specific point in time, values are gray and taken from current screen data.
- Support for filtering by screens in a group in addition to other criteria.
- CSV built client-side using the selected columns.
- Link to show GPS locations as a heat map.
- Screen status history now uses data warehouse version 2:
- New implementation improves screen summary chart generation speed by 10X.
- Processor intensive aggregation no longer necessary.
- Fixed problem where aggregated records were incorrectly offset by 10 minutes. (Note historical records will show this discrepancy)
- CSV download option (and API response) returns a more understandable format with start and end times for each time period.
- Large report queries that exceed number of records that can be displayed in admin interface interrupted to avoid wasting resources. Default limit currently set at 100,000 records.
- Record queues are now persisted to local storage, so an unexpected server failure will not result in losing queued records in RAM.
- Atomic record queue re-processing to cope with communication failures between servers.
- Data warehouse version 2 uses LZ4 compression for archiving instead of GZIP to significantly speed up record processing.
- New records and report communications between servers chunked and compressed using LZ4.
- Display summaries spanning thousands of screens and larger periods now possible using dynamic criteria splicing by screen and time.
- Re-encoded videos uploaded to custom blobstores if defined in active cloud configuration.
- Fixed problem where pending resources are removed prematurely if createdMillis not defined in data.
- Blob upload stall detection now waits 5 minutes before aborting. This helps avoid aborting early if blob uploads are queued.
- Added new pie segment for number of screens downloading to screen status on home tab.
- Admin interface now built with GWT 2.8.2.
Version 5.6.6 - 2018-03-25
- CSV updated to remove gpsLatitude and gpsLongitude because they broke badly written partner integrations.
- Reporting API updated to support use of the parameter
fields
to select what fields to include in the report.
Version 5.6.5 - 2018-03-24
- Fixed error caused by clicking a sequence item if the create sequence feature for the user was disabled.
- Fixed problem shift clicking a range in a table when no previous item selected.
- Increased maximum label length before trimming in tables to 60 characters.
- Fixed caching issue where endDateTime in items generated invalid Last-Modified in screen response.
- Support for receiving display records containing GPS location. (not stored yet)
- Display report CSV updated to contain gpsLatitude and gpsLongitude. Note these will currently be
set to the last known location. In a future version, the current location will be stored in display records
when
collectGps=true
set in screen data to support moving screens.
Version 5.6.4 - 2018-03-02
- Fixed problem with redirected imports not uploading data to custom blobstores defined in active cloud config.
- All exceptions related to blobstore uploads are now logged.
- Added more information about blobstore uploads to server health check.
- Minutely healthcheck fails if there are failures to upload to one or more blobstores.
- Added information about warehouse chunk queue to server health check.
- Changed standard jvmFreeMemory to custom jvmAvailableMemory to provide a more useful metric for health checks.
- Patch for .vtt files containing 00:00:00.000 now ignores first header to ensure fix successful.
- Items built using a template or widget no longer inherit created date of source.
- Controls added to videos shown in preview.
Version 5.6.3 - 2018-02-27
- Replaced play and stop icons in screen status history report with exclamation mark, warning icons.
A play icon did not emphasise that there could be a problem with devices crashing/rebooting.
- Re-enabled body text selection. This previously caused unwanted highlighting when dragging, but modern browsers
now handle this correctly and highlighting text elsewhere is useful.
- Removed itemId and sequenceId columns from collected data report. This is in preparation of future changes
to optimise how we collect, store and process GPS data in this report. It will be necessary to join display
report and collected data report to reconstruct the columns in the future.
- Group and email suggestion boxes now move exact matches by name/email to top of list of results if there
are more results than what are going to be displayed.
Version 5.6.2 - 2018-02-22
- Added button to collected data report to show collected GPS data as a Google heatmap.
- Fixed screen API response for stack items with floating start and end dates used by A3.
Version 5.6.1 - 2018-02-19
- Fixed problem with alert dialog that could cause "Maximum call stack size exceeded" error to be displayed.
Version 5.6.0 - 2018-02-18
- Data replication information now includes replication points of sources of a source.
This information is used to avoid unnecessary duplicated replication when replicating from multiple sources.
It also means that replication can maintain speed in the event of a very low transfer rate in one direction between two servers.
- Replication rate between geographically distant servers reduced to once every 5 seconds.
Version 5.5.0 - 2018-02-16
- Display report and summary report now include the Item ID column.
- Display report and summary report show a warning if screens have not sent all reporting data up to the end date specified.
- Display summary report includes total showings for all items/screens.
- Display summary report now reset when clicking a display summary option from an item or screen.
- Removed finish masquerading option because in many cases it failed to close the browser window and caused confusion.
- Fixed problem where browser session timeout before server session timeout could cause stack overflow error.
- Simplified how object metadata is transfered between frontend and backend. EntityInfo objects are now generic and only contain required data.
- Player API response no longer includes expired items.
- A3 introduction and basic guide added.
Version 5.4.6 - 2018-02-08
- Fixed problem with date parsing that prevented updating the month in date text fields.
Version 5.4.5 - 2018-02-07
- Fixed problem displaying summaries when over 1,677,721 (including duplicates) records were processed. This
only affected the view in the admin interface and not reporting done via the API or download CSV button.
- Added a debug button to the reporting info dialog so we can see more details about the query to solve
potential problems with date ranges.
Version 5.4.4 - 2018-02-06
- When masquerading as a user with a custom cloud config, the config is also sent in upload metadata. This means uploads will also
be transferred to any custom blobstores set in the custom config.
- Added active transfer details to item info popups.
- Fixed screen table error triggered by sequences with no label.
- End date entry components set to 1 millisecond before selected date to help with adjacent time ranges.
- Timeout for server to server warehouse report data transfer increased.
- Display report and summary de-duplication optimised for faster results.
Version 5.4.3 - 2018-01-31
- Playback reporting on items referring to inner sequences is no longer supported.
- Error displayed when saving item with playback reporting enabled that refers to inner sequence.
- When saving a sequence in admin interface, playback reporting option on existing items referring to inner sequences is automatically disabled.
- Screen communications now removes reporting option on items referring to inner sequences.
- Display reports and summaries are now processed to remove invalid and duplicate records. An invalid record has an unexpected time, a missing itemId or screenId. A duplicate record has the same display time, itemId and screenId as a previous record.
- Increased the max display report size shown in admin interface from 10,000 to 100,000 records.
- Automated Advert Assignment (A3) Prototype 1
- Added item scheduling table.
- Added advert upload functionality.
- Schedule advert button adds item to sequence stacks with defined schedule.
Version 5.4.2 - 2018-01-25
- The
seqeunceId
field in legacy database for display reports and collected data reports is no longer used.
The itemId
is now used to look up the ItemInfo metadata which includes the sequenceId
.
This results in more compact storage in the legacy database and more consistent results when comparing data with the new data warehouse.
Note, if an itemId is duplicated across multiple sequences then the wrong sequence may be referenced. This regresses change made in 5.3.0.
- Removed unused field
sequenceId
from StackItem.
- Any
sequenceId
sent from players in display reports is ignored and new players will not send it.
- Default reporting backend when not specified in API request is now the data warehouse.
Version 5.4.1 - 2018-01-19
- Aggregation options hidden from display report where they should not be shown.
Version 5.4.0 - 2018-01-18
- DataSources referencing remote objects now use SHA256 of the URL as the ID irrespective
of the length. The URL is now stored within
data.url
. This should resolve replication
issues with URLs over 512 characters and previous issues with 1024 character URLs.
- 6,946 active DataSources migrated to new schema.
- Updated cleanup script to remove unused and invalid DataSources.
- Various updates to support Raspberry Pi player migration.
Version 5.3.4 - 2018-01-16
- Added frontend support for aggregating display summary report by screen and item-screen.
- Fixed problem updating preview of inner sequence when inner sequence contains no items.
- Limited the number of files that can be dropped into browser at once to 10.
- Fixed issue with WTM that resulted in blocking proxies such as squid.
Version 5.3.3 - 2018-01-15
- Fixed exception caused by selecting random in the advanced condition builder.
- Added backend support for aggregating display summary report by screen and item-screen.
- Screens offline for over 28 days no longer included in the hom screen status pie chart.
- Fixed problem saving the 2nd factor age in cloud configuration
- Added support for a default sequence to be applied to new screens.
This is set by adding
sequenceId
in cloud config screen defaults.
Note: desiredPlayer
will also need to be set to start playback.
Version 5.3.2 - 2018-01-07
- Changed default reporting backend to the new data warehouse.
Version 5.3.2 - 2018-01-07
- Changed default reporting backend to the new data warehouse.
- Updated date selection widgets to reset seconds field to zero.
- Updated condition builder to allow manual text condition editing after building.
- Editing a composite item now correctly displays the composite editing options.
- The library is shown in several places. Adding, removing or updating library items anywhere will now encourage a refresh everywhere.
- Stale content refreshes when switching between tabs based on last refresh time not tab change time.
- Item paste operation duplicates all additional data associated with the copied item.
- Added 1 second delay to thum.io for rendering thumbnails. Helps when HTML component runs JavaScript.
- Set thum.io to use Europe-1 server when rendering Zipped web pages as US-East-1 appears to be blocked.
- Added option to use time zone of screen rather than time zone of user for stack item start and end date evaluation.
Option currently unavailable for non admin users until players updated. Required and used by A3.
- A3 can now display the available time slots and reserve them (basic scheduling).
- Importing media using URLs longer than 1024 bytes is now possible. When a URL is longer than 512 bytes the SHA 256 hash of the URL is used as
the primary key for the DataSource object. The full URL is stored in a new data field
fullId
and automatically reapplied when the DataSource is
saved or accessed via DataSourceDao. This fixes the MongoDB 1024 byte key length limitation.
Version 5.3.1 - 2017-12-31
- Updated the display tab for items to improve access to various upload, import and building options.
- Added new option to build HTML content from template.
- HTML template and HTML widget library now populated by
templateGroupIds
and widgetGroupIds
set in data of cloud config or user config. This facilitates having multiple groups of templates and widgets for different
users.
- HTML template option only shown when user has add composite widget feature enabled. (This may change in next release)
- Screen status history report screen label now performs screen search when clicked.
- Fixed issue where very fast uploads failed to refresh item list and remove progress bars.
- Added default start time and end time for report downloads. When not specified, last 24 hours are returned.
- Preview option for Zipped web pages added.
- BlobExtractServlet at
/blob-extract/
downloads blob and serves unzipped files for previewing zipped web pages.
- Integration with thum.io for rendering admin interface thumbnails of web pages and zipped web pages.
- Added support for resume delay over 1000 seconds.
Version 5.3.0 - 2017-12-09
- Changed behaviour of sorting by ON column. Screens grouped by on/off and then label rather than lastLoaderCommsMillis. This provides a more consistent view where screens do not move around when refreshing.
- Changed default sort order for the screen status history report to use the updated ON column sorting.
- Removed option to edit screens from screen status history reports. Reports should not be able to perform updates.
- Changed default max duration for items referring to inner sequences to 1 hour - Most users want inner sequences to play more than 10 seconds and inner sequence rotation is often misunderstood, so long default is better.
- Fixed group selection problem for reports where group was reset unexpectedly.
- Fixed problem where group selection was still visible when an ID was used in reporting criteria. Group filtering is not currently supported when reporting by ID.
- Removed unnecessary initial load of screen status history before screens shown in report.
- Changed reporting API to use stored sequenceId for legacy reports instead of sequenceId in item metadata. Note, sequence may be wrong in data warehouse if same ID used for multiple sequence items in different sequences.
- Subtitle .vtt files modified when uploaded to prevent potential crash. 00:00:00.000 replaced with 00:00:00.001 to avoid divide by zero exception in subtitle renderer on Minix devices.
- Removed disabled items from screen response JSON. This reduces unnecessary data transfer to screens.
- Background update of datasources not queued if already in queue.
- Optimised SequenceLinker to flatten deep inner sequence structure into fewer database queries.
- Admin interface thumbnail renderer flattens deep inner sequence structure to speed up composition.
- Search behaviour changed when spaces are used.
- Search string split into multiple search terms by spaces.
- Items that contain all search terms are shown.
- Added new field
usedBy
to sequences for performing dependency lookups.
- SequenceTool replaced with SequenceLinker with functionality for updating
usedBy
field.
- Base sequences
usedBy
is populated by upper sequences referring to them.
- Inner sequences
usedBy
is populated by outer sequences referring to them.
- Sequences in
usedBy
checked and removed when sequence refreshed.
- Automated Advert Assignment (A3) uses new field to discover all screens connected to a sequence and that will display an advert slot.
- Remove dialog uses new field to notify user when an outer sequence or upper sequence will be affected by removing a sequence.
- Automated Advert Assignment (A3)
- Please note: A3 is still in development and for alpha testing only.
- Split slot settings dialog into multiple tabs.
- Added option to enable A3 to slot settings.
- Added new user interface module for A3. Currently located at
/ad/group-name
.
- A3 lists advert slots in sequences within the specified group.
- A3 shows map of locations that will display advert slot.
- A3 shows list of time periods available to show advert.
Version 5.2.3 - 2017-11-20
- Removed options button from screen status history report.
- Added additional check to ensure file upload data sent matches value set in Content-Length header.
- Added last error details to data sources.
- Admin interface shows error messages for pending resources.
- Reduced refresh delay after last item finishes uploading.
- Failed dynamic resource updates now retry with exponential backoff.
- Updated screen status history to work better with reporting on thousands of screens.
- Added screen option to view screen status history.
Version 5.2.2 - 2017-11-15
- A colour can be assigned to library items and sequence items.
- Advanced erase feature made available. Unlike remove, items will be erased from all users and groups.
- When importing a URL that is already cached, a new cloud config will force an update. This ensures custom blobstores are updated.
Version 5.2.1 - 2017-11-07
- Stalled and slow transfers to blobstores now detected and aborted.
- Excessive concurrent blobstore uploads detected and aborted.
- Blob uploader refactored and untangled from media processor.
- Upload error feedback to UI improved.
- Additional performance logging added to media processing.
- Fixed issue where current user was re-added to access tab if all users and groups were removed from the access tab.
- Range selection using shift fixed for non default sort order.
Version 5.1.11 - 2017-11-06
- Reduced max concurrency setting for dragged file upload to 2.
- Added additional exception logging to upload servlet.
- Updated currency content builder to use data from http://fixer.io/.
Version 5.1.10 - 2017-11-03
- Added columns to library table for start date, end date and condition.
- Pending resources in library items and sequence items replaced if complete when requested from REST API.
Version 5.1.9 - 2017-10-30
- Find sequence and base sequence links now add current sequence to browser history so browser back button works.
- Report downloads now include more information in filename to help manage multiple files.
- Added custom ID search support to report download.
- Fixed problem where sequenceId was missing from some (BETA) report downloads.
- Moved user features from advanced tab into dedicated features tab.
- Cloud, Group and User editor dialogs default to having the label box focused (instead of first tab)
- Admin interface sequence refresh triggers UDP screen update notification when last pending resource completes to reduce media download delay.
Version 5.1.8 - 2017-10-23
- Fixed issue filtering library items by custom data.
- Fixed issue setting multiple screens to a sequence of None.
- Fixed issue logging size of blob uploads for items that are not processed.
- Moved library item paste button into add library item panel to be consistent with add sequence item panel.
- Increased size of data source column on media upload report.
- Added top pagination to reports.
Version 5.1.7 - 2017-10-20
- Moved item and library item reporting option from advanced tab to dedicated reporting tab.
- Reporting tab hidden from users with no reporting access.
- Added option to search by custom ID to display reports and display summary.
- Changed default date ranges for reporting to be current day.
- Changed date/time format to include seconds.
Version 5.1.6 - 2017-10-18
- Searching now performed over data in (most) visible columns of tables (including custom data).
- Loading status not shown when updating group select box. Prevents confusion on reports that need button press.
Version 5.1.5 - 2017-10-17
- Added option to hide service status from home tab
showHomeServiceStatus
.
- Removed option to preview web page zips. (only possible on dedicated player)
- Sequence tab refresh no longer reverts to page 1 when uploading completes.
- Changed warning message for selecting exoplayer to require Android KitKat. While it works on JellyBean it has some issues and due to poor WebView we want to discourage JellyBean now.
Version 5.1.4 - 2017-10-13
- Moved button to select expired library items into the filters.
- Reduced components used by sequence heading widget to improve performance.
- Added serverside check for setting invalid
serverAddress
.
Version 5.1.3 - 2017-10-10
- Added condition tab to library items. This allows items to be pre-populated with start date, end date and advanced conditions before they are added to sequences.
- Added button to library to quickly select expired items (for removal).
- Fixed problems with undo and redo of sequence actions when navigating multiple pages.
- Added touch icon to item details for items that have touch events.
- Added subtitles icon to item icon panel for items that have subtitles.
- Added workaround to fix .vtt subtitles uploaded as text/plain to automatically change content type to text/vtt.
- Datasources associated with failed upload connections are now removed immediately after failure.
Version 5.1.2 - 2017-10-06
- Moved base sequence option into the sequence type drop down within sequence settings.
- Fixed issue where inner sequence and composite library item preview failed to refresh correctly.
- Fixed issue preventing new datasources from being created. Affected content builders and YouTub import.
Version 5.1.1 - 2017-10-04
- Fixed issue that prevented some datasources from completing data transfers.
Version 5.1.0 - 2017-10-04
- Sequences no longer wait for server response after a change has been made. This significantly speeds up multiple edits on a slow connection.
- Multiple items can be uploading while the sequence is modified without causing pending resources to disappear due to unsequenced concurrent update.
- Item thumbnails are updated as each item completes rather than waiting for all items to complete.
- Changed how pending and dynamic resources in sequences are updated to avoid concurrency issues.
- Pending resources are automatically removed if they do not complete within 12 hours.
- Added support for displaying images smaller than 100x100. Previously they were assumed to be thumbnails and disabled by default.
- Sequence items as well as files can now be dragged into the library add button.
- Added tool tip to sequence item and library item add buttons to clarify that files from file browser can be dropped on to them.
- A selected sequence item can now be deleted by pressing the delete key.
- When multiple sequence items are selected, pressing the delete key brings up to multiple selection dialog, where delete option is available.
- Removed invalid options from multiple selection dialog when sequence items are selected.
- Changed the wording on the Force Save alert dialog to better explain the situation. Terminology changed to Overwrite.
Version 5.0.1 - 2017-09-29
- Updated Admin interface to be built on GWT 2.8.2 (snapshot 2017-09-28) to fix positioning bug triggered by Chrome 61+ as documented here:
https://github.com/gwtproject/gwt/issues/9542. The bug affects popup positioning
and drag and drop when the page is scrolled. The result is elements displaying higher up the page than they should.
- Updated Apache Commons FileUpload to 1.3.3
Version 4.13.0 - 2017-09-25
- Added
showDownloadButton
, showMultipleSelectButton
and showSearchButton
to support hiding buttons and functionality from users and cloud configs.
- Changed access control editor to show label and email/group name on separate lines to better support long group names.
- Added resource counts columns to library table view.
- Updated GWT Bootstrap to 0.9.4.
- Updated GWT Bootstrap extras to 0.9.4.
- Updated GWT Drag and Drop to 3.3.4.
Version 4.12.4 - 2017-09-20
- Added
groupId
and groupName
query parameters to REST API to filter list results.
- Added support for software packaged as APK. This allows software to be installed on Android devices without DS Loader.
- Added warning if exoplayer software selected on pre Jelly Bean devices.
Version 4.12.3 - 2017-09-14
- Display report writing to legacy database optimised to use larger batches more frequently.
- If backlog of uncommitted display records exceeds threshold, players instructed to send later.
Version 4.12.2 - 2017-09-01
- Previous barcode value correctly shown in barcode editor field and not lost when saving.
Version 4.12.1 - 2017-08-18
- Fixed slogan and manual links on loading screen.
- Increased visibility of busy bar.
- Added SSL to blepw.net domains and added placeholder pages.
Version 4.12.0 - 2017-08-17
- Bluetooth low energy physical web implementation.
- Screens can now broadcast a beacon that helps connecting to the platform from a nearby device.
- New domain http://1.blepw.net/ used to facilitate BLE beacon requirements.
- Enable BLE beacon transmission by adding
beaconConfig=blepw
to screen data. Requires Android 5.1 and hardware support.
Version 4.11.7 - 2017-08-11
- Download option for new warehouse backend display reports and summaries.
- Browser time zone applied to downloaded reports.
- Default start and end times in report forms changed to give predictable output.
Version 4.11.6 - 2017-08-05
- Reporting records only added if response sent without comms exception. This should prevent duplicated display report records caused by a client retry.
- Fixed incorrect screen stats update that could occur if hourly stats aggregation failed but daily stats update succeeded.
The result was one hour of data from the month before being merged into daily stats.
This problem is known to have occurred end of July and resulted in some screens having incorrect daily stats.
Version 4.11.5 - 2017-07-29
- REST API updated.
- The device MAC is now required when creating a screen via the REST API.
- Some screen data is now protected against being overwritten by the REST API and can not be updated.
- Suffix added to user action report records:
by REST API
.
- Cloud config defaults added to new items created with REST API.
- REST API examples include creating a new screen with MAC if one does not exist.
Version 4.11.4 - 2017-07-20
- Warehouse reporting (BETA) improvements.
Version 4.11.3 - 2017-07-17
- New sequence type for automatically shuffling sequence order.
- When enabled, stacks in a sequence are shuffled before the first stack is evaluated.
- Re-shuffles if shuffled first item is same as last item to prevent displaying same item twice.
- Requires android-player-12+
- Sequence preview on mobile web browsers can not auto play videos (browser limitation). To play a video, the preview can now be touched.
Version 4.11.2 - 2017-07-15
- Option to view collected data added to screen options drop down menu.
- Display report, display summary, collected data report, user actions report and upload report no longer automatically start
searching or refresh. User must select date range and press a button.
- Group box for reports refreshed when report page shown.
- Maximum number of records shown for reports now set at 10,000.
- Warehouse (beta) search now performs searchs up to end date (but not including) to match legacy reports.
Version 4.11.1 - 2017-07-10
- Item selection models rewritten
- When dragging multiple items from a stack, the stack is now preserved rather than items being placed into adjacent slots.
- When dragging multiple items from non adjacent slots, they are consolidated (no gaps) when dropped.
- Sequence items are deselected when sequence is closed.
Version 4.11.0 - 2017-07-06
- Item selection models rewritten
- Selection uses CTRL (multi) and SHIFT (range) just like files in standard file managers.
- Multiple stack items can now be selected.
- Multiple selection actions such as remove and add data will apply to selected stack items.
- Dragging a stack item when multiple stack items selected will move them all into adjacent slots.
- Library item check boxes removed to match new selection model and improve performance.
- Fixed issue editing sequences referring to a deleted base sequence.
- Detection and warning when base sequence hierarchy or inner sequences generate infinite loop
- Frontend display reporting linked to new backend data warehouse. (Still not active, legacy still in use)
Version 4.10.3 - 2017-06-23
- Added new function to conditions to support custom timezone evaluation (override screen time zone). For example:
time.between("19:00", "21:00", "Europe/London")
- Requires player 11.11+
- Added option to find inner sequence from outer sequence item drop down menu.
- Added option to find inner sequence from composite sequence item drop down menu.
- Two factor authentication lifetime can now extend beyond max session lifetime.
- Code required if using another computer or web browser.
- Code required after max age (30 days by default).
- Max age configurable in cloud config.
Version 4.10.2 - 2017-06-03
- Removed duplicate download button from screen reports.
- Periodic health check statistics continue to update after uncaught exception.
- A composite displayed by an event action can now contain a button. Event trigger tab and action tab converted to panels.
Version 4.10.1 - 2017-05-30
- Updated key for storage bar graphic to match pending/queued/missing colours.
- Enlarged bar for pending/queued/missing so it is always visible even if less than 1 pixel.
- Ability for system administrator to change some server settings without restart. (updated settings are not saved)
- Change server health status to force server in/out of active pool of servers.
- Change default loader comms rate and default player comms rate.
- Change number of threads used for uploads, downloads and media processing.
- Queue reporting database writes.
- Disable replication from other servers.
- Added download button to export CSV for tables (client side export). Only exports visible columns.
Version 4.9.10 - 2017-05-21
- New column for screens to show how much data is queued for download and not currently available.
Version 4.9.9 - 2017-05-19
- Flashing chip icon to show when a device is missing data and not downloading.
Version 4.9.8 - 2017-05-17
- Fixed issue that caused updated access controls to be reset if access tab clicked after adding new controls.
Version 4.9.7 - 2017-05-16
- WTM HTTP request handler concurrency increased to 64 threads to support increased load on us-east-1
Version 4.9.6 - 2017-05-12
- Server performance admin page updated to show more health information.
- A configured screen
updateCondition
no longer overrides playerCommsPeriod
when performing player comms.
- Fixed NullPointerException that could occur after a session expired.
Version 4.9.5 - 2017-05-07
- Browser cookie expires as configured by max session age in cloud config.
- Session ID changed when signing in after max session age. This will effectively sign out of other browsers (but not tabs in same browser).
- JavaScript session expiration now checks with server to see if new session has been started before displaying session time out dialog.
- New option to quickly add a button (touchable area) to a composite for interactivity. Avoids needing transparent PNG. Requires android-player-11.5
- Delay added to home tab before data loaded into panels to improve responsiveness when logging in.
- New reporting database implementation added. Not activated yet.
Version 4.9.4
- Copying a StackItem or a Sequence of StackItems clears itemId used for reporting in new items. This is necessary because future reporting databases will not store sequenceId. Instead the itemId will refer to an ItemInfo that contains sequenceId.
Version 4.9.3
- Composite item editor rewritten to combine both visual and coordinate based configuration.
- Standby period time drop down lists replaced with text area to accept advanced conditions.
Version 4.9.2
- Fixed problem where events are lost in library items if an item is reloaded, then saved again.
Version 4.9.1
- PNG encoder changed to ObjectPanet.
Version 4.9.0
- PNG encoder changed to PNGJ with compression setting optimised for higher performance.
- Colour fix for images now only applied if the source image contains alpha channel.
- Background option added to Weather, Currencies, Stocks, RSS Feed and Twitter content builders.
- Background can be removed allowing a custom background to be displayed using a sequence frame or composite.
- Fix for screen status history shifting February data into March.
Version 4.8.4
- Search and group filter added to screen status report.
Version 4.8.3
- Search and group filter added to screen status report.
Version 4.8.2
- Screen status report added for live status monitoring
- Previous screen status report renamed to screen status history.
- Screen status icons display tick and stop inner icons.
- WTM changed to exit upon failed initialisation which will then be restarted later by systemd.
- S3 buckets no longer checked at startup to reduce service startup time to under a second.
Version 4.8.1
- Obtrusive data source error for failed uploads removed. (Added to item details)
- Server shutdown hook now correctly cleans up active data transfers during restart.
- Logging added to server shut down hook.
- Error messages for failed uploads improved.
- Web Traffic Manager (WTM) tools added to query server state and active threads.
- WTM JSON serialization updated to use same Jackson version as stacks.
Version 4.8.0
- Display summary now displays progress bar while processing summary.
- Display summary chunk reduced to 6 hours.
- Display report defaults to a single day.
- Report item search forces a report refresh.
- Stall detection for blob uploads. (warning to logs)
Version 4.7.11
- Content builders updated to cache and reuse icons.
- Single threaded icon loading. Hopefully prevents occasional livelock experienced on us-east-1 when building content.
- Timeout added to loading twitter icons.
Version 4.7.10
- Column visibility state saved in user data and reloaded at sign in.
- Ability to grant access to an external user by email address (was not possible in 4.7.9 due to drop down list)
- Popup info panels for item details, access controls, sequence previews and storage details now use SmartPopupPanel to ensure they not pop up off screen.
Version 4.7.9
- Access controls simplified for granting access to additional users and groups.
- New component for selecting users and groups.
- Drop down list of users and groups populated and updated when access tab clicked.
- A text box with suggestions is displayed if list exceeds 1000 items.
- Label and email address shown for users.
- Label and name shown for groups.
- Bulk item updating uses new user and group selection components.
- When masquerading, a new option is available to extend visibility beyond the active user.
- Helps selection of users, groups and sequences that are not accessible to the current user.
- Located above finish masquerade item top right of admin interface.
- Saving items before drop down lists are populated can no longer result in clearing a previously configured value.
- Busy icon displayed when populating drop down lists.
Version 4.7.8
- Replication now occurs every 900 milliseconds to encourage single secure connection reuse.
Version 4.7.7
- Frontend additions for two factor authentication.
- Fixed bug that incorrectly labeled statistics data from 2016-02-29 as data for 2017-03-01 .
Version 4.7.6
- Returning to a tab that has not been used in 5 minutes will trigger a automatic refresh.
- Returning older browser window that has not been used in 5 minutes will trigger an automatic refresh.
- Session timeout added to client JavaScript so the timeout message occurs without call to server.
- HTML5 player enhanced to support transparency of sequences used in composites.
Version 4.7.5
- Previewing a library item or a stack item now uses the HTML5 player rather than linking directly to a blobstore.
- Subtitle track support added to HTML5 video preview.
- Moved information about HTML5 preview limitations from admin interface into HTML5 player.
Version 4.7.4
- Granting access to additional users when item first saved now works correctly.
- Duration of successful burn-in test added to screen status as HH:mm:ss.
Version 4.7.3
- Fixed problem bulk updating custom players back to regular player.
- Changed colours for home tab data transfer graph.
- Fixed warning to display when building content and forgetting to press build.
Version 4.7.2
- Content builders now handle high concurrency better. Network I/O occurs prior to image rendering which is limited by Semaphore.
Version 4.7.1
- Fixed replication bug caused by multiple concurrent replication tasks writing state to replication.properties at same time.
Version 4.7.0
- Concurrent replication from multiple servers.
- Replication status and offset per server source added to home tab.
- Test status result added to home tab pie chart and map.
- New optional column for transfer speeds added to screen table.
Version 4.6.10
- Sorting by screen software column no longer uses a simple alphabetical sort. This ensures android-player-10.x comes after android-player-9.x.
- Health checking query optimised to reduce number of fields analysed in result set.
Version 4.6.9
- Removed links to specific reports from various menus and buttons if the reports are hidden.
- Added an alert message if an attempt is made to access a report or tab that is hidden from a user.
- Added synchronized block to prevent concurrent signing of ds-loader.apk before using cached version.
Version 4.6.8
- Added ability to hide each individual report item in the report tab. See Manual.
- Fixed problem with new screens not getting the correct access controls.
Version 4.6.7
- Fixed download option for screen status report.
Version 4.6.6
- When adding a new user auto-setup now grants new user permission before saving to avoid permission exception if the screen is already configured.
- Health checking is now continuous and uses separate threads (no longer on the request thread).
Version 4.6.5
- Searching by multiple groups fixed.
Version 4.6.4
- Searching groups and viewing item history for group fixed.
Version 4.6.3
- Ability to search multiple groups for items.
- Search optimised to use client search when possible.
- Added copy option to users and cloud configs.
- Changed the disable item option to expire item option.
- Changed the enable item option to reactivate item option.
- Added sequence option to remove expired items.
- Fixed send log command for narrow browsers such as phones.
- Added send log command to screen drop down.
- Open sequences and sequence library panel no longer perform full refresh when window resized.
- Accessibility improved by supporting keyboard focus better.
- Cloud configurations can now apply defaults to new library items.
- Cloud domains not checked if known online in session.
- Maximum concurrent uploads increased to 4.
- WTM now correctly constructs full URL in sendRedirect() as per RFC.
Version 4.6.2
- Removed item option to preview composite.
- Added item option to preview static web page.
Version 4.6.1
- Added option to quickly enable and disable stack items. Disable sets the end date to the current time. Enable clears start and end dates.
- Fixed problem where re-encode option did not hide popup allowing option to be clicked multiple times.
- Improved logic for drop down menus to ensure they never appear above the top of the screen.
Version 4.6.0
- Edit buttons replaced with more options button (vertical ellipses) with a drop down menu of options.
- Remove and edit buttons on stack items moved into more options button.
- Additional option on bottom of dialogs moved to more options buttons.
- Links from item details moved into more options button.
- Labels in tables can now be clicked to edit items.
- Access controls in dialogs only loaded and saved if the access control tab is clicked.
- Group name for new groups initialised to simplified label followed by cloud config name.
- Screen location map added to reports drop down.
- New sequence mapping report added.
- Sequence mapping report shows links between sequences and screens.
- Sequence stacking illustrated by base on the left linking to top sequence to the right.
- Sequence and screen labels can be clicked to open item in admin interface.
- Upper sequences no longer open when base is modified.
- Library items now show icon if reporting enabled.
- Whitespace at beginning and end of labels removed when saving.
- Labels limited to 40 characters in tables. Full label can be seen on mouse over.
- Drop down menus now display at sensible locations if near edges of screens.
- Large drop down menus on small screens now display in the center.
- Stacking icon shown for sequences that are stacked on a base.
Version 4.5.4
- When dragging from library to a sequence, selected library items are also added in adjacent slots.
- Icon for composites changed to more closely resemble multiple positioned items.
Version 4.5.3
- Colour of a slot header can now be set.
- Stack item now displays an icon if reporting enabled.
- New sorting options for reports.
- Warnings added when moving, inserting and removing slots.
- Summary report now updates UI asynchronously from RPC calls to improve performance.
- Searching screens for testStatus value now works as expected.
Version 4.5.2
- Prevented list scroll bars disappearing after a modal close button pressed and subsequent cancel or save button used.
- Modal abstraction enhanced to better support multiple modals.
- Added new event action to open a 3rd party application from the player.
Version 4.5.1
- Yahoo! OAuth2 service provider added.
Version 4.5.0
- OAuth2 abstraction to support additional service providers.
- Microsoft OAuth2 service provider added.
- Ability to set different OAuth2 provider details for each cloud config.
- New authentication tab for cloud configs.
- Improved button flow on mobile devices.
- Experimental support for operating as OAuth2 service provider for authorisation of API calls.
Version 4.4.0
- New column for screen table to send commands to restart and skip between items (hidden by default).
- Reliable UDP relay no longer requires fully connected mesh replication.
- UDP relay between regional servers no longer waits for replication before sending triggers and actions.
- UDP relay requiring screen data transfer now waits for modifiedMillis to update rather than replication.
Version 4.3.3
- Device storage status changed to ignore deletable, reserved data in free space warning.
- Condition group now defaults to having a single condition.
- Slot headings are shown for all slots (including slots with stacking disabled) when base is shown.
- Tool tips for stack headings now show slot label, slot number and all restrictions.
- Spaces, tabs, CRLF and LF acceptable as separated in list of MAC addresses.
Version 4.3.2
- Additional invalid characters in a list of MAC addresses ignored.
- Links for base sequences removed if referenced sequence not accessible to user.
- Mouse over area for item details enlarged.
- Library items have separate mouse over areas for access controls and item details.
- Fixed issue where a resource with no content type could prevent item widget displaying in admin interface.
- Offline markers on maps hidden if there are more than 500 markers.
- Map no longer updated when home tab clicked except on refresh.
- Progress bars when datasource missing no longer flicker.
- Missing datasource error displays for longer and can be dismissed.
- Device data transfer dialog now includes a timeout at 60 seconds.
- Improved support for ipv6.
Version 4.3.1
- Reporting options added to library items. These options function as defaults for when the library is copied to a sequence.
- New advanced tab for library item editor including buttons to jump to display report and summary.
- Ability to perform mass update on a list of MACs even if no screens are selected.
- New storage, download and warning icons for screen status.
- Tabs only refresh when first loaded or when refresh button is pressed.
- Home tab includes refresh buttons.
- User and group summary split into 3 different API calls (counts, storage, screen)
- Additional date ranges added to screen statistics on home tab.
- Default date range for screen statistics on home tab is now 3 months.
- Added shake animation when password is incorrect.
- Small change to hopefully make list scrollbars return after a modal for some custom themes.
- Analytics player updated to 10.3 (Analytics library 1.6.1).
Version 4.2.2
- Replication bug where ghosts appear after a save and a delete in quick succession fixed.
- New web pages for monitoring server status.
- Duplicate value bug in online status bar chart fixed.
Version 4.2.1
- Display report now shows displayed sequence items that were added from the library.
- Pagination restricted to 10 items to prevent excessive page links.
- Loading animation moved to index page so it displays before GWT starts.
- Clear location option added to screen multiple selection dialog.
- Data UI component rewritten to resolve delete and premature sorting problems.
- ETags now are correctly quoted as defined in RFC7232.
- WTM updated to protect against Slow Loris and similar DOS attacks.
- Server max concurrency increased.
Version 4.1.0
- Screen time zone override added to location.
- Time zone updated when new location search result selected or map pin moved.
- Time zone automatically set for new screens.
- JPEG Exif information read and images with custom orientation are now rotated prior to upload to blobstore.
- To ensure the best compatibility and image file size, all uploaded images are re-encoded.
Version 4.0.2
- Sequence selection no longer reset when switching between dialog tabs.
- A max duration in a sequence above another is now reset on next save if a max duration has been set in sequence below.
Version 4.0.1
- Multiple concurrent updates of the same datasource now block and wait if no existing snapshot.
- Concurrent blob upload performance and media processing speed improved.
Version 4.0.0
- Libraries updated, repackaged and refactored.
- Core classes for clients and server separated.
- Server now compiled for Java 8 and clients Java 6 to maintain compatibility with early Android.
- Server now uses Jackson 2.8.2.
- Amazon Web Services SDK updated to 1.11.37.
- Maxmind geoip updated to 1.2.1.
- Mongo driver updated to 3.3.0, Morphia 1.2.1
- Stacks engine and player controller repackaged.
Version 3.2.0
- New display summary added to reports.
- Display summary displays the number of plays of each item.
- Reporting tab options reordered.
- Screen statistics on home screen changed to default to 60 days with options of 8 hours, 48 hours and 5 years.
- Animation added to graphs on home screen.
Version 3.1.9
- RPC loading requests now cancelled when switching to a different tab.
libraryItemId
is not populated in stack items when dragging from library into sequence.
Version 3.1.8
- Circles drawn on map to illustrate active area when building location based conditions.
- Google maps integration now uses latest release of API by default.
Version 3.1.7
- Data source monitoring and refresh now more responsive, can detect data source failure and show red progress bar.
- Location conditions can now be set in meters and yards.
- Location builder will display a previously set location condition.
- Sequence test data dialog updated to include analytics test data and location select button.
Version 3.1.6
- New button in data tab of objects to open the REST API endpoint.
Version 3.1.5
- The snap to grid option for composite items is stored.
- Library dialog always refreshes.
- Refresh button icon spins when server search occurs.
- RESTful API updated and is no longer read-only.
Version 3.1.4
- Fixed problem assigning groups while masquerading if the end user does not have access to the group.
Version 3.1.3
- Sort by modified date option added to sequences tab.
- Auto setup last mac address fix.
Version 3.1.2
- Highlighted rows in table stay highlighted after refresh.
- Sequence frame feature now available by default.
- Masquerade chaining support.
Version 3.1.1
- Last clicked row in table remains highlighted.
- Table view added for library.
- Slots can now be given a label.
- A slot can now be moved and all items in the stack will be moved too.
- A new slot can be inserted shifting all slots to the right.
- User agent set for remote imports.
User-Agent: TargetR-Stacks/version
Version 3.0.1
- Support for adding a Frame around sequences.
-
- Display additional items around a sequence without creating composite items.
- New tab named Frame in sequence settings.
- Frame can be disabled for individual items within the sequence.
- Requires android-player-9.0 or above.
- Support for uploading and displaying single HTML pages not in a web page zip.
Version 2.21.3
- Fix for finding content type of data sources imported from remote FTP servers.
Version 2.21.2
- Admin interface more accurately reports active uploads and dynamic datasource updates.
Version 2.21.1
- Exceptions now sent to StackDriver error reporting via fluentd for analysis.
Version 2.20.5
- Option to show branding image top left of admin interface.
- Screen status icon now clickable to sho screen status history.
Version 2.20.4
- Selection removed after bulk operation.
- Max results label moved to a notify message.
- Several minor cosmetic changes to make interface more compact.
- Google maps now sends API key to support new domains.
Version 2.20.3
- Fixed problem that prevented modal dialogs scrolling if more than one opened.
Version 2.20.2
- Screen edit functionality can be disabled for a user.
- Disabling sequence create feature also disables edit sequence settings, copy and remove.
- Default order for reports is now most recent on top.
- Default start date for display reports now set to day before current.
- Multiple selection button now shows the number of selected items.
- Screen status report now fetches status history in pages size chunks to support more screens.
Version 2.20.1
- Option to display labels of items in a sequence.
- Label will slide in from bottom and display above images and videos.
- Works well in combination with ken-burns effect.
- Showing labels can be enabled by default in sequence settings.
- Advanced configuration options include
labelTextSize labelColor labelBackgroundColor labelTransitionDuration labelMaxLines
.
- Requires android-player-8.5 or above.
Version 2.19.3
- Added cloud config column to users table.
- Fixed issue where additional access controls were lost when new items added.
Version 2.19.2
- Fixed issue where an inner sequence containing more than one of the same inner sequence reported an error.
Version 2.19.1
- Columns in tables can now be shown and hidden. Selection of columns available by pressing search button.
- Changed default max results to 5000. Set
maxResults=1000
in user data to revert.
- Pagination buttons added above and below lists.
- Fixed issue where save button remained disabled after a warning dialog was shown.
Version 2.18.5
- Reduced size of data on the data tab to see more.
- Changed default page size to 20. Set
pagesSize=10
in user data to revert.
Version 2.18.4
- Small sequence preview shown for sequences used inside composites.
- Duration box split into minutes and seconds.
- Items grayed out if no resources are available for display.
Version 2.18.3
- Screen storage details updated to display coloured key on mouse over.
- Save buttons disabled when network communications are active and re-enabled when complete to prevent duplicate clicks.
Version 2.18.2
- Preview images for inner sequences now more accurately represent what will display.
- Fixed problem where a sequence of 10 or more inactive slots could cause subsequent condition evaluation to be skipped.
Version 2.18.1
- Content builders now use the Roboto font by default.
- Content builders now output higher quality JPEG images (0.9).
Version 2.17.5
- New option to update a sequence from a Media RSS feed immediately. (Overrides TTL and caches)
Version 2.17.4
- Media RSS items can now generate composites for displaying text below the media. Needs player support (beta).
- Additional checks to ensure that an inner sequence does not refer to an outer sequence causing an infinite loop.
Version 2.17.3
- Option to create sequence from Media RSS now includes option to auto update. (Same as setting sequence type as Media RSS)
- Multiple test HTML pages for demonstrating remote control using API triggers.
Version 2.17.2
- User auto-setup option allows lower case MAC address and spaces.
- Building location condition now adds comment.
Version 2.17.1
- Added new condition builder to help with building conditions using analytics data.
- Updated the weather content builder to use Open Weather Maps in addition to World Weather Online.
- Added language support to weather content builder (beta).
- Added ability to set digital signature key index into cloud configuration.
Version 2.16.2
- Calculation of duration changed to use max duration of inner sequence rather than outer item duration. This affects
reported duration of sequences with 2 or more levels of inner sequences.
- Standby condition and period can be overridden in screen data.
Version 2.16.1
- New report that lists uploads to the blobstore for media distribution. (Logging started 2016-03-24)
- Thumbnails added to display reports and collected data reports.
- Content builders now apply black polished wood texture rather than default blue. This helps avoid colour clashes.
Version 2.15.4
- User action report can be downloaded as CSV for spreadsheets.
- User action report can be downloaded as a Gource custom data file for visualisation.
- Advanced condition builder improved - time.between(...) added.
Version 2.15.4
- The communications with the player can now be customised.
- Reduced communication rate option, useful for when data transfer is expensive.
- Custom time period. Specify a specific time to perform updates and download new multimedia.
- The home tab for a user can now be hidden.
- Options to edit user settings and show user history added to user button, top right of interface (so home tab not required).
- Screen status report now supports displaying a server managed subset of screens for when 1000 screen limit exceeded.
- Drag and drop from file browser into the library or sequence enhanced.
- Dropping multiple files into the library now shows upload queue size.
Version 2.15.3
- New filter button added to library. Filter by type, resolution, aspect ratio and duration.
- New sorting options added to library.
Version 2.15.2
- Dragging items from library to a sequence more efficient (no longer rebuilds sequence).
- Library now uses 1/3 of width of sequence tab when open.
- Removed browser support warning for Safari. Works great in Safari now.
- Undo and redo buttons moved to sequence header when there is space.
Version 2.15.1
- Library button in sequence view shows library alongside sequences.
- Library items can now be dragged into sequences.
- Items can now be dragged between sequences.
Version 2.14.2
- Library items and stack items display further details when mouse is hovered over icons.
- Animation added to popup details.
Version 2.14.1
- Initial communications rate with DS Loader increased to help set new dynamic clock in player.
- Administration interface AbstractForm extended to remove unnecessary IFrame (faster modal dialogs).
- Additional check to ensure ACLs are loaded before saving items.
- Full list of users and groups visible when performing bulk operations while masquerading.
Version 2.13.1
- Cloud configurations can now include password policies.
- Full list of sequences visible and can be set as a bases while masquerading.
- New warnings for session expiration and masquerading errors.
Version 2.12.3
- Top navigation bar icons added to reporting section.
Version 2.12.2
- MongoDB library updated to 3.2.1
- Morphia library updated to 1.0.1
- Jackson library updated to 2.3.2.
Version 2.12.1
- Server now processes e-mail and can add e-mailed media to sequences.
- Added new custom type drop down in sequence settings.
- New custom sequence type for populating sequences by e-mail.
- Media RSS tab moved under custom sequence type.
- Fixed error message when uploading custom theme elements to cloud config.
Version 2.11.1
- Reporting database moved to Google Cloud SQL.
- Links added to report rows in user interface.
- Report streaming to support large report downloads.
- New screen status report added.
- Screen status logged every 10 minutes.
- Aggregated statistics for hourly, daily and monthly.
- Screen statistics graphs on home tab.
Version 2.10.1
- Results of test player displayed in screen status column.
SignageNode
Connect to the SignageNode admin interface for latest release notes.
2023-06-02
- Fixed problem sending custom data and some metrics back to server during player comms. (2023-04-13 no longer available for this reason)
- Fixed problem reusing playback state data when looking ahead for items to cache.
- Fixed problem where a cached redirect response could not be replaced with binary response upon cache revalidation.
- Added option to use screencap for screenshots to avoid playback stutter on some devices.
- Set screencap as the default screenshot strategy for CE420 devices.
- Added support for sending CEC commands for test purposes. Limited hardware support.
- Updated exoplayer to 2.18.7
- Changed default exoplayer buffer size to 24MB because automatic setting caused out-of-memory issues playing high bitrate videos.
- The following data is now passed into DS Loader to match behaviour of standard player autoStart, maxOfflineMinutes, restartTime, rebootTime, exitTime, timeZoneOverride
2023-04-13
- Added support for (alternative) tiles inside a VAST player item. These tiles will be displayed if no advert returned from VAST server or there is a failure.
- Fixed problem that prevented normal stacks sequence progression after 10,000 loops of main sequence.
- Improved transition animation after a VAST item completes by extending duration of inner tile.
- Updated exoplayer to 2.18.5
- Updated stacks player communications to use libraries from stacks server 10.0.0.
2022-12-12
- Updated exoplayer to 2.18.2
- Resolved issue where an item in an inner sequence with duration exceeding outer sequence item duration could cause inner sequence rotation to fail.
2022-11-23
- Fixed problem that could prevent stacks engine from completing evaluation when no valid items in main sequence.
2022-11-20
- Fixed race condition that could prevent composite players from looping. (caused layer1 branding disappearance)
- Added
layer1PlaybackState
to data sent to stacks servers. (for detecting faults on layer1)
- When items flagged as fullscreen, layer animator moves upper layers above top of screen.
- Improved fault handling for failed Proof of Play callbacks.
- Fixed problem downloading log snapshot through tunnel. Note: live log streaming remains unstable through tunnel.
- Added
ScrollingItemPlayer
for scrolling list of items from right to left (like scrolling text).
- Added support for
widthOverride
and heightOverride
for screens that only display top left region of output resolution. (taxi toppers)
- TargetR stacks engine updated:
- Added functionality to break from inner sequence playback when an outer sequence item condition changes. This is used for scheduled inner sequences.
Add
conditionScope=extend
to outer sequence data to enable.
- Added functionality to extend scope of data to include data in outer sequence items.
Add
dataScope=extend
to outer sequence data to enable.
- Added option to automatically adjust item duration if full playback would exceed end of a scheduled time block.
Add
canFinishEarly=true
to displayable item or inner sequence to enable.
2022-10-13
- Busy spinner displayed on finished active item if next item is not prepared on time. (ImagePlayer and ExoPlayer)
- Improved error handling and escalation inside CompositePlayer.
- Macro variables used inside
uriMacro
are automatically URL encoded.
- Force cache revalidation when no HTTP caching directives specified in cached response.
- Timeout used for cache revalidation now configurable in settings.
- Remote playlist time points removed in favor of HTTP caching directives.
- Added additional control buttons to HorizontalControlPlayer including playback speed and volume.
- Optimised layer updates and persistence.
- Added support for layer changes specified in sequence and item data.
- Added layer update information to messages.
- Added animation interpolator for stall progress and changes to layer margins.
2022-10-01
- Added
errorCountLastHour
and warningCountLastHour
for reporting recent issues.
- Status page updated
- Recent error count and warning count displayed on status page.
- Moved cache priming information from transfers page to status page.
- Added recent event timeline to status page.
- Shader compilation errors added to messages on status page.
- Data transfer errors added to messages on status page.
- Added option to filter messages on status page.
- Simplified message categorisation into NETWORK, INFO, WARNING, ERROR.
- Messages saved on stop and loaded on start.
- Added option to change connection timeout to settings page.
- Added option to change number of connection retries to settings page.
- Set default connection retries to 1.
- Added transfer speed timeline to speeds page.
- Nodes report additional bandwidth metrics for better traffic management decisions. Metrics include:
- Current Internet bitrate. (bits in last second)
- Max Internet bitrate. Max of 60, non zero, one second samples.
- Current LAN bitrate. (bits in last second)
- Max LAN bitrate. Max of 60, non zero, one second samples.
- Added additional bandwidth measurements to list of caching proxies on cache page.
- P2P dialect updated. LAN nodes must be this version or above to communicate.
- Playback delayed until cache has had time to be scanned. This avoids unnecessary transfers before cache is ready.
- Fixed delay stopping controllers when renderer fails to complete pending jobs.
- Added a busy indicator for when content can not be played or videos stall. Period before resuming illustrated by full revolution of colour. Main layer only.
- Green spinner displayed when waiting for cache scan to complete during startup.
- Yellow spinner when cache before playing enabled and items are not cached.
- Red spinner after 3 or more consecutive failures. (delayed resume)
- Black and white content with white spinner for video stalls. (low bandwidth)
- Improved handling and reporting of ExoPlayer video stalls.
- Fixed revalidation of no-cache directives when age is still zero. This prevented quick retries.
- Reduced frequency of stream interruption when cached ranges are fragmented.
- Updated ExoPlayer to use CueGroups for caption display.
- Optimised shader selection, loading and compilation.
- Shader compilation now occurs immediately before progressing. This avoids frame drop during early item preparation.
- Performance optimised playback shader used when no playback shader or active transition shader.
- ShaderToy playback shaders fade in during transition period because custom transition shaders can not be used.
- Added another 20+ playback shaders.
- Increased fast cache validation timeouts to decrease network messages.
2022-09-18
- Removed FPS and data transfer rate display from
DynamicControlsPlayer
.
- Added transparency to QR code of admin address in
DynamicControlsPlayer
.
- Added transparency to
HorizontalControlsPlayer
.
- Added support to set global playback speed. Half speed:
setPlaybackSpeed(0.5)
Double speed: setPlaybackSpeed(2)
.
- Replaced
pause()
and play()
operations with setPlaybackSpeed(0)
and setPlaybackSpeed(1)
.
- Added
glZoom
, glPanX
and glPanY
to settings for zooming and repositioning the view port.
- Added mouse wheel support for zooming.
- Added smooth interpolation of viewport changes.
- Added more connection information and links to admin interface home page.
- Improved support for IPV6. (IPV4 still required for peer to peer).
- Unified VAST callback thread pool with main player.
- VastComms is now an instance of VastPlayer and isolated from unrelated communications.
- Added support for
vastUserAgent
to override User-Agent header for specific VAST communications.
- Implemented playback synchronisation for stacks sequences.
- Menu button now toggles showing admin interface on device.
- Back button performs browser back when showing admin interface on device.
- PAGE_UP and PAGE_DOWN for next and previous navigation - CELabs remote.
- Touch events for inner composite tiles passed to child tile controllers.
- Touch events propagate through gaps in tiles in layers above main layer.
- Optimised transition buffer capture to use common window coordinate space.
- Fixed issue applying playback shader when transition shader disabled.
- Separated playback shaders from transition shaders. Playback shaders run after transition completes.
- Adapter for running simple ShaderToy GLSL shaders and some examples.
- GLSL sourcecode loading moved to controller thread during item preparation.
- Added GLSL shader information to tile status page
- Loading tile data waits for OpenGL surface to become ready.
2022-10-01
- Initial state of validation on settings page fixed.
- Button to Add all incorporated into simple playlist editor.
- Simplified linear and looping playlist implementations.
- Added setting to enable and disable CORS request processing.
- Moved password protection configuration to general settings page.
- Changed session to session-key in cookie to avoid replacing session configured by tunnel server.
- Enhanced the JavaScript API to support more operations.
- Added API examples page. Examples can be modified and run from the page.
- Added link to online documentation page and release notes.
- Added transition shader selection to simple playlist editor.
- Updated admin interface JQuery to 3.6.1.
- Updated bootstrap icon set to icons.getbootstrap.com.
- Updated configuration of HTTPS server on port 9098.
- Self signed certificate expiration extended to 2100-01-01.
- Added subject alternative naming to HTTPS connections. SANs included: signagenode, sn, sn1 to sn8.
- Self signed certificate marked as a Certificate Authority to make it easier to import into modern Android devices.
- Added encryption section to security page.
- Reduced memory footprint of screenshot pixel format conversion.
- Drag panning and pinch zooming moved into
CustomGestureDetector
.
- Added swipe up gesture to skip 10 items.
- Added swipe down gesture to toggle pause.
- Added
RssHeadlineScrollingTextPlayer
to scroll a RSS feed of headlines across the screen.
- Seek parameters changed to use CLOSEST_SYNC for fast manual scrubbing and EXACT when offset defined in item data.
- Changed ExoPlayer buffering defaults:
- Buffer fill duration before start playback: 1 second
- Buffer fill duration after stall before resume: 5 seconds
- Target buffer duration during regular playback: 30 seconds
- Maximum buffer duration during regular playback: 1 minute
- Target buffer size: 24MiB
- Verified 120 FPS video playback capability on devices that have screens that support 120hz.
- Modified speed test to display the tested blobstore address.
- Cache priming of framed sequence when caching strategy is cache before playing now works as expected.
- When a playlist for a layer is defined in data, the layer editor is disabled and a warning is displayed in the admin interface.
- When a remote settings location is defined in data, a warning is displayed in the admin interface.
2022-08-21
- Fixed a problem sending some VAST errors back to advert servers.
- Added auto timing adjustment for when VAST video playback duration does not match template definition.
- Increased the default maximum bitrate for VAST media to 50,000kbps. Can be set with
vastMaxBitrate
.
- VAST media files not marked as progressive can now be played (when cache before playing not enabled).
- Increased concurrency to 10 for VAST impression and tracking callbacks.
- Added more logging for VAST communications. Enable with
vastDebug=comms
in screen data.
- On screen metrics for AdminPlayer now include LAN transfer rate in addition to Internet and Localhost.
- Colour coded transfers on transfers admin page to highlight cache effectiveness.
- Green source means transfer is internal (local cache).
- Yellow source means transfer is from a cache on same LAN as target.
- Red source indicates transfer is from the Internet.
- Separated admin interface communications JavaScript to make API communications easier.
- API communications now uses JavaScript async await and fetch APIs.
- Improved error handing in admin interface.
- A background color is now applied to ImagePlayer when image includes alpha channel and background color specified.
- Removed Google Photo support because local address flow disabled and out of band flow deprecated.
See here.
- Rewrote redirection logic of caching proxy to ensure redirects to same address are only cached once.
- Updated controller retry delay heuristics to follow these rules:
- 15+ consecutive errors, 60 seconds delay before next attempt.
- 10+ consecutive errors, 30 seconds delay before next attempt.
- 5+ consecutive errors, 10 seconds delay before next attempt.
- 3+ consecutive errors, 5 seconds delay before next attempt.
- Simplified presentation of horizontal control for setting playback position.
- Created a dynamic controls preset that displays horizontal control, skip controls and admin QR code.
- Fixed problem where loaded transfer metrics could incorrectly mark old transfers as active.
- Reduced delay that caused scrolling text to start in the incorrect position.
- Improved transition fluidity when skipping from CompositePlayer to another another Player.
- Improved handling of child controller finish signal to promote timely cleanup.
- Shader binding now only performed once at shader compilation, not every frame.
- Decreased draw time by face culling reverse of triangles used to draw textures.
- Capped internal texture rendering rate of players that extend AbstractAnimatedCanvasPlayer to OpenGL rendering rate.
2022-08-14
- Interrupting playback (using previous, next or start) now stops active item data transfers to
speed up preparing next item.
- Transfer metrics are persisted during restart.
- Transfer metrics reset date and time displayed on transfer page.
- Fixed problem where a background layer could interfere positioning of layers above.
- Fixed problem where video start offset resulted in last second of playback skipped.
- Added more comprehensive player state information to tile status page.
- Added button to view cache item metadata on cache page.
- Simple drag and drop playlist creator now loads active playlist from TDJ.
2022-07-23
- Rename from GLPlayer to SignageNode.
- Updated exoplayer to 2.18.1
- Disabled HLS chunkless preparation because it breaks some HLS captions in exoplayer 2.17.1 and up.
- Added support for
application/x-subrip
- Improved error handling when a CompositePlayer fails to prepare an internal tile.
- VAST player detects and skips videos that can not be prepared ahead of time.
- Fixed issue preventing changing active playlist between linear and looping.
2022-06-27
- Improved performance when manually navigating a playlist by many items.
- Added recovery mechanism when ExoPlayer stalls in ready state shortly after starting.
2022-06-25
- Fixed problem preventing playlist progression after 4 or more exceptions in quick succession.
2022-06-12
- Fixed incorrect selection of best resolution resource when rotation configured.
- Added support for
impressionCallbackAddress
for sending an HTTP GET request to an address when an item displays.
- Removed experimental sequence/playlist time point support in preparation for full schedule implementation.
- Added dynamic clock correction when linked to stacks server.
- Improved how remote settings files are loaded and applied.
- Fixed problem redirecting to locations that did not use full URL.
- Fixed problem with AbstractAnimatedCanvasPlayer and AbstractCanvasPlayer that could lead to resource leak.
2022-05-21
- Rolled back exoplayer to 2.16.1 because live captions were not working in 2.17.1
2022-05-18
- ExoPlayer instances are fully released and not reused if an error is detected.
- Three sequential failures when starting video playback will trigger Android Media Server fix.
- Android Media Server fix kills malfunctioning mediaserver process (rooted devices only).
- Main layer playback state (active, paused, stalled) added to screen data in stacks server responses. E.g.
playbackState=stalled
- CompositePlayer and MosaicPlayer waits for all child players to prepare (or throws error).
- Concurrency for CompositePlayer improved by avoiding unnecessary locks.
- Transition shader precompiled during item prepare period, max one per frame.
- Texture allocation during item prepare period, max one per frame.
- Texture deletion serialised, max one delete per frame.
- Only the overlapping tile pixels prior to a transition are captured to transition framebuffer.
- Next item preparation waits for transitions to complete to reduce transition jitter.
- Fixed bug where dynamic duration is set incorrectly if same item is prepared while playing (same item loop).
- Modified error handling to display transparent tile if there are multiple failures in a row. (Error backoff)
- Failure to load media will purge item from cache to recover from storage corruption.
- Added conversion of
offsetMillis
for items in stacks sequences to support skipping start of video.
- Performance enhancements to caching proxy to significantly reduce LAN latency.
- GPS tracking support added for moving screens (taxis, busses, cars, bikes etc).
- GPS added to display report records when
collectGps=true
in screen data.
- Image grid examples added to test displaying many tiles using MosaicPlayer and CompositePlayer.
2022-04-21
- Aggressive cache reuse when offline. Validation ignored.
- When cache before playing strategy enabled, startup is delayed while cache is scanned/indexed.
- Distributed storage strategy now prioritises local storage when there are duplicates on LAN.
- When using stacks platform and offline, last known response is reused without validation.
- When using stacks platform, selected sequence is used for main layer by default, not demo sequence.
2022-04-02
- Added support for VAST tracking events inside wrapper creative.
- Changed node-to-node transfer history to store 1 hour of recent data transfers.
- Default values from stack and sequence inherited by item (e.g. ad=true).
- Missing inner sequences no longer interrupt cache priming (which could lead to a stall).
- Added support to restart stacks sequence from start.
- Added node-to-cache data transfers to transfers page.
- Added location of upcoming media required for playback to transfers page.
2022-03-23
- Added ShowIntroPlayer, a subclass of MovingPlayer that moves on screen when main layer content is not an advert, not a bumper and at least 10 seconds.
- Improved logic for checking if an item within a composite can play when Cache before playing is enabled.
- Updated layer 1 preset for ReachTV and quick setup. (v3b branding)
- Transfer rate average returned to connected stacks server as
blobDataDownloadedRate
.
2022-03-16
- Moved all future item queries to controller thread to protect playlist from concurrent access.
- Fixed issue preventing skip of uncached composites when cache before playing option enabled.
- Improved animation logic for MovingPlayer and subclasses IntroPlayer, PopupPlayer, AdvertCountdownPlayer.
- Added animation interpolator support
BEZIER, BOUNCE, OVERSHOOT, ANTICIPATE_OVERSHOOT
for MovingPlayer and sub classes.
- Fixed problem with AdvertCountdownPlayer double counting remaining time for some adverts.
- Added preliminary support for scanning /storage/ for possible cache locations (requires extra permissions).
- Fixed issue that created duplicate nodes on speeds and transfers pages.
- Added support for
refererOverride
.
- New layer 1 preset for ReachTV and quick setup. (v3 branding, local storage default)
2022-03-02
- Image exif orientation automatically updates tile item
imageRotation
and flipHorizontal
.
2022-02-13
- Added new speed test page to admin interface for testing Internet, LAN and storage data transfer rates.
- Data moved from primary to reserve storage more aggressively when primary storage is low.
- Implemented AdvertCountdownPlayer to display a countdown timer until adverts ends.
- Added support for loading settings from a remote JSON file.
- Improved stability of transitions by reducing use of smoothstep in GLSL (known to cause issues on Minix x88i).
2022-02-04
- Added proxy groups. A proxy group name must match for nodes on the same subnet to communicate.
- When using Local storage strategy together with Cache as fast as possible or Cache before playing
and an item is available elsewhere on the LAN it will be copied from LAN to local cache.
- Only files 1MB or larger are moved to additional (reserve) storage.
(Overhead of small files on FAT formatted drives is problematic.
Better to keep in primary storage or re-download later if needed.)
- Added total cache used and total cache unused values to cache page.
- Fixed issue with proxying files over 2GB.
- Speeds diagram uses positioned nodes rather than force directed.
- Speeds and transfers diagram shows nodes sorted alphabetically.
- New heuristics for when to move cache items from primary to additional storage.
- Added additional status messages when there are storage problems.
- Optimised how cache primer performs cache lookup.
- Optimised how screenshots are converted to JPEGs.
2022-02-01
- Added functionality to move cache files to additional (reserve) storage locations.
- When primary storage is full and additional storage available, old cache files will be moved rather than deleted.
- Cache files in additional storage locations can be streamed directly if required later.
- Oldest unused cache files in additional storage locations automatically deleted when nearing capacity.
- Automatically adds
/mnt/external_sd
(SD card) and /mnt/usb_storage/USB_DISK0/udisk0
(USB storage) to additional storage locations if detected at startup.
- Removed option to select cache storage location from settings. This is now fully automatic.
- Cleanup (move or delete) of 500MB occurs every 30 seconds if free space less than 1GB.
- P2P dialect updated. LAN nodes must be this version or above to communicate.
2022-01-26
- Added additional storage strategy options.
- Local storage strategy always uses local cache for streaming (new).
- Distributed storage strategy uses any cache on LAN for streaming.
- Added cache to cache data transfers for local cache priming.
- Fixed problem deleting orphan cache file after modification.
- P2P dialect updated. LAN nodes must be this version or above to communicate.
2022-01-20
- Significantly improved heuristics for cache priming and cleanup.
- Cache priming limited to upcoming 100 items. (Checked every 30 seconds)
- Cache cleanup does not delete upcoming 100 items.
- Reduced delay handling multiple concurrent requests for same uncached item. (Common when MP4 moov at end)
- FramedSequencePlayer handles swapping sequences better.
2022-01-18
- Status page in web admin now lists messages in searchable table.
- Cache before playing mode checks caches and skips more efficiently.
- Cache priming prioritises items in layers above main layer (important for frame components).
- Caching automatically disabled if less than 200MB free space.
- Error added to messages when automatic storage cleanup fails.
- Improved error handing when LAN proxy connections fail.
- Added FramedSequencePlayer to allow additional stacks sequences to be displayed on a layer.
- P2P dialect updated. LAN nodes must be this version or above to communicate.
2022-01-11
- Settings apply button hidden until active settings loaded to prevent data loss.
- Cache storage queried every 30 seconds and cleanup triggered when less than 500MB free space.
- Cache cleanup attempts to free 500MB each cleanup cycle.
- Cache priming reset during cache cleanup and limited free space.
- Cache file references can no longer change during successful revalidation.
- Software canvas used by default for multi-threaded operation and better stability.
2022-01-06
- Exoplayer audio failure no longer sets volume to zero. Instead, a second attempt to play with no audio layer occurs. This prevents permanent mute problem.
- Recent data transfers now listed on the transfers page.
Android ExoPlayer
Support for this player has ended. It is recommended you switch to SignageNode which includes ExoPlayer video decoding internally.
2023-04-13
- Updated version numbering to use release date format.
- Updated stacks player communications to use libraries from stacks server 10.0.0.
Version 12.0 - 2020-11-13
- Added Vistar Media Ad Server support. (ALPHA)
- Improved support for updating multiple inner VAST sequences.
Version 11.3 - 2020-10-16
- Added option to turn off playback synchronisation packet broadcasting with
syncBroadcast=false
in screen data. This can help support larger numbers of synchronised screens without unexpected resynchronisations.
- Items populated by VAST will only play once, even if a VAST update fails.
- Fixed issue where changes to a VAST address defined in a sequence was not applied without player restart. (version must change to trigger update)
- Added option to enable WebView debugging by setting
webContentsDebuggingEnabled=true
to screen data.
- Added local web server capability to receive triggers
/trigger?name=trigger-name
.
Version 11.2- 2020-08-13
- Fixed problem reading item data using the JavaScript
DigitalSignage.getData(..)
function.
- Stack data now included in data available via
getData(...)
JavaScript.
- Added support for additional VAST impression macros: START, DURATION, CACHEBUSTING.
- Added new option
vastDebug=comms
for debugging communications made by VAST sequences
Version 11.1- 2020-07-30
- Added experimental support for
vastPost
for VAST requests requiring a custom request body.
Version 11.0 - 2020-07-06
- Added Direct Proof of Play (DPoP)
- Changed VAST implementation to only update 5 minutes before item predicted to be displayed.
- Improved logging to include classname for core components.
- Google ExoPlayer library updated to version 2.11.7
Version 10.0 - 2020-04-10
- Added support for
downloadPriority
and downloadCondition
to provide more
control over what order and when resources are downloaded.
- Fixed problem hiding sequence frames when an item in the sequence explicitly requests it.
Version 9.1 - 2020-03-19
- VAST Macros can now include screen data. For example
[country]
, [timeZone]
etc
- VAST sequences only updated from source if they have been displayed.
- The caching period before updating a VAST can be set in sequence data with
vastMaxAge
(milliseconds to re-use). Default is 10 minutes.
Version 9.0 - 2020-03-03
- Google ExoPlayer library updated to version 2.11.3
- Support for HLS and DASH.
Use option to link streaming media and replace
http://
in the image address with hls-http://
or dash-http://
- Support for a continuously updating image source (JPEG and MJPEG).
Use option to link streaming media and replace
http://
in the image address with
liveimage-http://
- Added support for authentication to live images. Add to address, for example
liveimage-http://username:password@192.168.0.10/mjpg/video.mjpg
- Added additional verification to reporting. Reporting records now only created after successfully
starting videos and images.
- Added ALPHA support for VAST sequences.
- New data broadcasting functionality.
- Removed support for
cleanupThreshold
as it was known for causing download loops
when items were scheduled to display in the future. Replaced with blobstoreMaxSize
which is the maximum size in bytes that can be used for storing blobs.
Version 8.6 - 2020-02-06
- New prototype data broadcasting functionality for testing.
Version 8.5 - 2020-01-08
- New WebView JavaScript interface functions:
putScreenData(name, value)
for inserting new data into the current state.
This screen data will be returned to the server during the regular communication cycle.
getPlayerTime()
returns the internal player time in milliseconds since epoch.
This time is updated based on server time and is typically more accurate than the system clock
(especially if NTP is blocked or disabled).
Version 8.4 - 2019-12-14
- When downloading blobs locally via p2p, priority is given to using peers that have complete and verified blobs
(rather than incomplete, unverified blobs which could be corrupted).
- WebView JavaScript interface
getData()
function will also search main sequence data if requested
data is not found in screen data, current item data or current sequence data.
Version 8.3 - 2019-11-10
- Added support for barcode readers that use TAB as a termination character.
- Added
systemCpuTemp
, systemDisplayMode
and systemLoadAverage
to screen data.
Data taken from /sys/class/thermal/thermal_zone0/temp
,
/sys/devices/virtual/display/HDMI/mode")
and /proc/loadavg
respectively. Please note the availability of this information is dependent on Android version and hardware
configuration.
- RS232 monitored and text lines added to rs232input in screen data. (Most recently received ASCII line)
- Added support for RS232 input triggers to event system.
- Added support for regular expression matching to barcode, NFC and RS232 pattern scanning.
Version 8.2 - 2019-10-03
- Fixed problem with deeply nested inner sequences skipping items (see server notes 7.6.9).
- Fixed problem fetching recently updated screen data using JavaScript interface.
Version 8.1 - 2019-09-13
- Fixed problem preventing events added to the screen from firing.
Version 8.0 - 2019-09-04
- Local web server added. Enable by adding
localWebServerPort=9090
- View and watch live logging information.
/log
- View contents of local blobstore and download status.
/blobstore/
- Access media in the local blobstore.
/blobstore/[blob-id]
- Access current player state.
/player-state
- DS Loader does not stop running when launching another activity from an event with a resume delay set. DS Loader
will return to the foreground after the configured resume delay.
- Scrolling text is hidden when
blackCondition=true
.
- Google ExoPlayer library updated to version 2.10.4
Version 7.2 - 2019-08-13
- Downloads are saved to the blobstore location with most available storage.
- Storage cleanup triggered when storage used exceeds
cleanupThreshold
.
For example, cleanupThreshold=0.8
performs cleanup when a blobstore location
exceeds 80% of the available storage. Cleanup will delete unused, cached BLOBs.
- Fixed possible delete and download loop when a blobstore location has inadequate
storage available. The measurement for preallocated storage was incorrect, this could lead to blobstore
locations marked as inadequate when they met the storage requirements.
Version 7.1 - 2019-06-25
- Fixed event duplication problem that subsequently caused double execution of triggered actions.
Version 7.0 - 2019-06-22
- Duplicate, matching triggers can now execute multiple actions.
Prior to this release, a trigger would only execute the the first action in event list.
Please check interactive configurations that use multiple events as this change could have unexpected consequences
if there is a reliance on subsequent actions not executing.
- Data from base sequences added to playback data and accessible via JavaScript interface.
- Fixed problem displaying single web pages on Android 9 (API level 28) and above.
(Caused by disabled MIME type sniffing so pages rendered as
text/plain
)
- Changed default WebView cache to 20 views. (
webviewReuse=20
)
- Changed webview caching behaviour to support redirects from the initial page.
- Fixed problem where web pages configured as non-interactive could be interacted with.
- Fixed problem where web page DigitalSignageStartCallback could be called before page loaded.
- Added F10 key to ask exit.
- Local display report file deleted when
report=false
set in screen data.
- New display records with date prior to 2019-01-01 ignored. Assumes system clock failure.
- New display records with date prior to
lastDisplayRecordMillis
ignored.
Version 6.2 - 2019-06-04
- Added support for
fullscreenWarningText
to display full screen warning.
Version 6.1 - 2019-05-31
- If counting storage takes over 10 seconds, a storage cleanup is triggered. Cleanup will delete unused, cached BLOBs.
- Added support for
Uri
to extra STREAM intent.
Version 6.0 - 2019-05-29
- Google ExoPlayer library updated to version 2.10.1
- Invalid BLOB download responses aborted prior to downloading body. (Content-Length header must match expected length)
- Stored BLOBs larger than length defined by BLOB ID are deleted.
- Duplicate BLOBs found in multiple local blobstores deleted. If BLOBs are incomplete, only largest BLOB is kept.
Version 5.3 - 2019-05-23
- Fixed problem creating display report records for items that were not using the exoplayer for playback. (Images and webpages)
Version 5.2 - 2019-05-15
- Added support for launching custom Android Intents.
- Added support for displaying a local camera stream on the screen. To configure, add an item to display streaming media with the address
camera://0
or camera://1
Version 5.1 - 2019-05-03
- Google ExoPlayer library updated to version 2.9.6
- Outbound connections to blobstores and stacks servers now include
Referer
header set to
the cloud config address and User-Agent
header set to player version and android version. This
will be useful for stats and fault finding.
Version 5.0 - 2019-01-13
- Google ExoPlayer library updated to version 2.9.3
- Playback speed adjustments only made if ConcatenatingMediaSource is 2% out of time.
- Maximum ConcatenatingMediaSource size set to 1000. After displaying 1000 media items in succession
a new ExoPlayer instance will be used.
- If ConcatenatingMediaSource is not at last item when next item is being prepared a new exoplayer
instance will be used to fix scheduling problems.
- Fixed problem with barcode scanning.
Version 4.9 - 2018-12-30
- The add data action is followed by an automatic refresh of the current slot in sequence.
This allows conditions in current slot to be re-evaluated and an alternate item to be selected. Typical
use case is to select a different language.
- Fixed touch event handling when hidden cached views are still in the view hierarchy above current view.
Version 4.8 - 2018-12-14
- Fixed problem that prevented touch events on composite items that contained no images from triggering.
- Resume delay now branches back to main sequence. Behaviour now matches standard player.
- Fixed several issues when branching back from event actions.
- Fixed issue with sequences starting with a composite item when a sequence frame is enabled.
Version 4.7 - 2018-11-26
- Standby black screen option is now always black, overriding any custom background colour that has been set in screen data.
Version 4.6 - 2018-11-14
- Fixed problem processing GPS location on devices set to a locale that uses a comma as a decimal separator.
Version 4.5 - 2018-10-08
- Added tilde support for passing data through to custom media streaming URLs. For example, the following URL will be updated
to replace
~screenId
with the screen ID of the active player:
http://www.example.com/video?screenId=~screenId
.
- Added support for receiving data and triggers over the local network. This enables sending GPS location
from a separate device on the local network. Contact us for GPS sending APK.
Version 4.4 - 2018-09-12
- The reported values for free storage space are now more accurately updated when custom settings are applied to
blobstoreInternal
, blobstoreExternal
and blobstoreDir
.
Version 4.3 - 2018-08-23
- Google Exoplayer library updated to version 2.8.4
- When
collectGps=true
the GPS location is stored periodically on the device. This stored GPS location
is then reused following a device restart until an accurate GPS fix is obtained.
Version 4.1 - 2018-08-09
- GPS data no longer added to collected data report when
collectGps=true
is set. This
is no longer necessary as the GPS coordinates are added to the display report.
- Added
requiredGpsAccuracy
to support setting the accuracy required for GPS to be updated.
Default is 50 meters.
- Fixed problem sending display report records when some records contained GPS and some did not. This
resulted in sending duplicate entries with the wrong GPS data if no GPS was available when player starts.
- Enhanced how dynamic clock is set after restarting the app using server time offsets.
Version 4.0 - 2018-07-26
- Changed video playback stall detection to be less strict to reduced unecessary restarts on slow devices.
- Fixed restart caused by specifying a BLE config when no supported hardware on device.
- Added support for displaying HDMI input directly on the screen (pass-through).
- Configured by adding a resource with a streaming media address of
hdmi://zidoo
.
- Designed for Zidoo X9s (Realtek chipset).
- Please note: Zidoo X9s can not play HDMI IN at the same time as another video. (waiting for new firmware)
Version 3.1 - 2018-07-12
- Added support for checking if GPS is inside a polygon for advanced conditions -
gpsInside(lat1,lng1,lat1,lng2,lat1,lng2)
- Key event handling updated. Recommend using android-player-17.1.apk if interactivity is required.
Version 3.0 - 2018-06-28
- Google ExoPlayer library updated to version 2.8.2
- Added new screen data option
reportOptions=verifyClock
to prevent storing reporting records
and collecting data if the clock has not be verified as correct.
- Monitors custom media sources for completion and can trigger progression.
- Built with Gradle 3.1.3 and Android tools 27.0.3
Version 2.2 - 2018-06-28
- Updated how display report data and collected data is parsed and sent to the server.
- Added more logging for player communications.
Version 2.1 - 2018-06-15
- Limited gapless playlist to 100 items before reinitialising ExoPlayer component (previously 1000). Long playlists appears to
cause stutter sometimes.
- Added more logging for NFC detection.
Version 2.0 - 2018-06-06
- Downloading prioritises active items and fills storage with scheduled items ordered by start date.
This enables using sequences larger than the storage available on the device providing storage is sufficient
for active items at any single point in time. Remaining storage is used for as many scheduled items as possible.
- When storage is full, the cleanup routine only deletes items necessary to download active items.
- Items scheduled later are deleted to make space for items scheduled sooner.
- Data sharing via p2p optimised to support larger networks of screens. Peer request list limited to 8 blobs.
When localPeerCount exceeds 8, random silencing reduces number of concurrent peer responses.
Version 1.4 - 2018-05-16
- Attempts to recover from situation where player start() called twice from DS Loader.
- Double start could result in a duplicate display records.
- When
collectGps=true
one duplicate record will be missing GPS.
- Issue more likely to occur on mobile data networks.
Version 1.3 - 2018-05-08
- Collected data report corruption issue fixed.
Version 1.2 - 2018-05-03
- Added workaround for proxies and firewalls that remove the Range header from requests. Download resuming not possible in such situations.
- Added additional 5 second delay after download failures to prevent network overload.
- Added
hdmiState
to screen data to report HDMI connection status.
Version 1.1 - 2018-03-02
- GPS location stored in display records when
collectGps=true
added to screen data.
Note: when downgrading, previously saved display records containing GPS data will be lost.
- Added
getScreenData(...)
to JavaScript interface.
- Added support for sending an RS232 command at startup by adding
rs232outputAtStart=...
to screen data.
Version 1.0 - 2018-03-02
- GPS values now use 5 decimal places in both screen data and collected data. Assuming hardware capable,
this is an accuracy of 1.1 meters. Extra decimal places no longer sent to server.
- The Android boot time is now added to screen data as
hardwareBootMillis
. This will allow
a app restart to be differentiated from a device restart.
- Scrollbars on WebViews now hidden unless resource is marked as interactive.
- After 4 months of testing, player has been promoted to version 1.0, stable status.
Version 0.12 - 2018-02-21
- After instructing exoplayer to start a video, an extra check is made to verify the video is playing .
If the video fails to start, the app will restart.
Version 0.11 - 2018-01-24
- Fixed problem where a duplicate report record was generated if an item was inside inner sequences and the item
referring to the inner sequence had reporting enabled. This player version will not create the duplicate but
will create a report record for the item referring to the inner sequence and items inside the inner sequence
as expected.
- The
sequenceId
field in display reports and collected data reports is no longer used. The
sequenceId
is now derived using the itemId
and ItemInfo metadata. This means report
storage and sending is more efficient.
- Removed unused field
sequenceId
from StackItem.
Version 0.10 - 2017-11-23
- Added support for
report=false
to screen data. This option will disable reporting entirely.
- Prevented reporting on items referring to inner sequences if there are no items ready to be displayed.
- When severe problems occur or main thread stalls, the player will auto restart and resume from the next slot.
This should ensure the full sequence does get displayed rather than restarting at slot 1.
- Modified the download decision logic to prioritise a large blob transfer if none active. This should make
better use of bandwidth initially when many small blobs are queued.
- Added branch back button
- Added default interaction animations
Version 0.9 - 2017-11-15
- Fixed restart problem caused by adding inner sequence to a sequence frame.
- Added Samsung RS232 Screen control.
Version 0.8 - 2017-10-21
- Fixed problem with playback data collection that could result in missing entries if playback sync enabled.
- Only prints insufficient storage warnings in logs if all storage locations are full.
Version 0.7 - 2017-10-20
- Added additional check to confirm video is playing before playback reporting.
- Reduced default buffers for ExoPlayer. Only small buffers needed since playback is from local files.
Version 0.6 - 2017-10-17
- Added playback reporting.
- Added additional logging to monitor playback state changes.
Version 0.5 - 2017-10-12
- Added support for showing labels.
- Fixed playback synchronisation issue when multiple devices on same network played different root sequences.
Version 0.4 - 2017-10-12
- Improved interactivity support.
Version 0.3 - 2017-09-22
- Fixed problem playing short videos less than 5 seconds.
- Fixed problem with sequence frame not filling screen if resolution changes while running.
- Added playback speed adjustment to more accurately synchronise gapless playback. Strategy:
- 3 seconds before current video due to finish, the predicted end time is compared to desired end time and video speed is adjusted to meet desired end time. This improves the start time accuracy of the next video.
Version 0.3 - 2017-09-22
- Fixed problem causing videos with subtitles to stall.
- Added support for remote API triggers.
Version 0.2 - 2017-09-20
- Linked events mechanism with new views.
- Added WebView support and view recycling/caching.
Version 0.1 Pre-release
- Replaced Android VideoView with ExoPlayer.
- Rewrote all views to support preparing ahead of time for quick view switching.
Android Player
2023-06-02
- Fixed problem sending custom data and some metrics back to server during player comms. (2023-04-13 no longer available for this reason)
- Fixed problem referencing custom data used in blob download decisions.
2023-04-13
- Changed version numbering to be date of code update for simplicity.
- Updated core client libraries to match 2023 server updates.
Version 28.2 - 2022-12-12
- Resolved issue where an item in an inner sequence with duration exceeding outer sequence item duration could cause inner sequence rotation to fail.
Version 28.1 - 2022-11-23
- Fixed problem that could prevent stacks engine from completing evaluation when no valid items in main sequence.
Version 28.0 - 2022-11-14
- Added functionality to break from inner sequence playback when an outer sequence item condition changes. This is used for scheduled inner sequences.
Add
conditionScope=extend
to outer sequence data to enable.
- Added functionality to extend scope of data to include data in outer sequence items.
Add
dataScope=extend
to outer sequence data to enable.
- Added option to automatically adjust item duration if full playback would exceed end of a scheduled time block.
Add
canFinishEarly=true
to displayable item or inner sequence to enable.
- Built using new Android developer tools. Please report any issues.
Version 27.0 - 2022-06-02
- Event triggers from built in web server are dispatched on main thread to solve concurrency issues.
- Added device reboot command to built in web server. Trigger by requesting
/reboot
(Rooted device required)
Version 26.5 - 2022-04-01
- Added support for VAST tracking events inside wrapper creative.
- Added support for
refererOverride
.
Version 26.4 - 2022-02-22
- WebView error page can be made black by
webviewErrorPage=black.html
in screen data.
- An item can verify recent working Internet connection by
lastServerResponseMillis + 60000 > time.millis()
in condition.
Version 26.3 - 2021-12-05
- Update to better support offline players.
Version 26.2 - 2021-11-11
- Fixed problem where VAST PNG images were incorrectly handled as MJPEGs and could cause display to glitch.
Version 26.1 - 2021-09-29
- Fixed problem where resume delay for an event action to display an item was being ignored.
Version 26.0 - 2021-09-09
- Enhanced event handling to support new event scope
eventScope=mainSequence
. This scope allows events in the main sequence to be evaluated when displaying an inner sequence. This helps build a top level schedule.
- Updated targetSdkVersion and build tools to version 29.
Version 25.5 - 2021-08-07
- DPoP no longer requires regular reporting to be enabled to function (sequence item id will be missing).
- DPoP can be enabled in VAST sequence data to perform additional proof of play callbacks. The response will contain
vastMediaUrl
populated with the advert media URL.
Version 25.4 - 2021-04-08
- Reduced number of I/O operations to better support external SD Cards and USB drives.
- When a path within
blobstoreDir
ends with /blobstore the directory is automatically created.
- Reduced sequence lookahead for VAST sequences to 10 items, 30 minutes.
- Reduced sensitivity of the app stall detection to avoid unnecessary restarts.
- Note that
blobstoreDir
is only cleared by clear data command if it matches paths defined in DS Loader 15.3.
Version 25.3 - 2021-02-05
- Report records on items referring to inner sequence are only created when the inner sequence displays at least one item.
- An HTTP 400 response to VAST request treated as an empty VAST to ensure no retries until after slot.
Version 25.2 - 2021-01-08
- Added a new watchdog timer that can detect stalls when starting video playback and restart the Android media server to attempt recovery (root required).
- Added support for
vastImpressionAddressAppend
which will append the value to the end of impression addresses defined within a VAST response when specified in the sequence data.
Version 25.1 - 2020-11-15
- VAST enhancements and fixes.
Version 25.0 - 2020-11-11
- Added Vistar Media Ad Server support. (ALPHA)
- Improved support for updating multiple inner VAST sequences.
Version 24.6 - 2020-10-16
- Added option to turn off playback synchronisation packet broadcasting with
syncBroadcast=false
in screen data. This can help support larger numbers of synchronised screens without unexpected resynchronisations.
- Items populated by VAST will only play once, even if a VAST update fails.
- Fixed issue where changes to a VAST address defined in a sequence was not applied without player restart. (version must change to trigger update)
Version 24.5 - 2020-09-04
- When no VAST ads are returned (204 response) subsequent VAST requests are postponed for 5 minutes (or vastMaxAge).
Version 24.4 - 2020-08-23
- Added option to enable WebView debugging by setting
webContentsDebuggingEnabled=true
to screen data.
- Added local web server capability to receive triggers
/trigger?name=trigger-name
.
Version 24.3 - 2020-08-13
- Added support for additional VAST impression macros: START, DURATION, CACHEBUSTING.
- Stack data now included in data available via
getData(...)
JavaScript.
- Added new option
vastDebug=comms
which can be added to screen data for debugging communications made by VAST sequences.
Version 24.2 - 2020-07-30
- Added experimental support for
vastPost
for VAST requests requiring a custom request body.
Version 24.1 - 2020-07-17
- Fixed problem reporting playback of audio only items.
Version 24.0 - 2020-07-06
- Added Direct Proof of Play (DPoP)
- Changed VAST implementation to only update 5 minutes before item predicted to be displayed.
- Improved logging to include classname for core components.
Version 23.0 - 2020-04-10
- Added support for
downloadPriority
and downloadCondition
to provide more
control over what order and when resources are downloaded.
- Fixed problem preventing composite sequences within a sequence frame from resuming.
Version 22.1 - 2020-03-19
- VAST Macros can now include screen data. For example
[country]
, [timeZone]
etc
- VAST sequences only updated from source if they have been displayed.
- The caching period before updating a VAST can be set in sequence data with
vastMaxAge
(milliseconds to re-use). Default is 10 minutes.
Version 22.0 - 2020-03-03
- VAST sequence support available for testing.
Version 21.7 - 2020-02-29
- Removed support for
cleanupThreshold
as it was known for causing download loops
when items were scheduled to display in the future. Replaced with blobstoreMaxSize
which is the maximum size in bytes that can be used for storing blobs.
- Added support for authentication to live images. Add to address, for example
liveimage-http://username:password@192.168.0.10/mjpg/video.mjpg
- Added additional verification to reporting. Reporting records now only created after successfully
starting videos and images.
- Added ALPHA support for VAST sequences.
Version 21.6 - 2020-02-26
- Support for a continuously updating image source (JPEG and MJPEG).
Use option to link streaming media and replace
http://
in the image address with
liveimage-http://
- New data broadcasting functionality.
Version 21.5 - 2019-12-26
- New WebView JavaScript interface functions:
putPlayerData(name, value)
for inserting new data into the current state.
This screen data will be returned to the server during the regular communication cycle.
getPlayerTime()
returns the internal player time in milliseconds since epoch.
This time is updated based on server time and is typically more accurate than the system clock
(especially if NTP is blocked or disabled).
Version 21.4 - 2019-12-14
- When downloading blobs locally via p2p, priority is given to using peers that have complete and verified blobs
(rather than incomplete, unverified blobs which could be corrupted).
- WebView JavaScript interface
getData()
function will also search main sequence data if requested
data is not found in screen data, current item data or current sequence data.
Version 21.3 - 2019-11-10
- Added support for barcode readers that use TAB as a termination character.
- Added
systemCpuTemp
, systemDisplayMode
and systemLoadAverage
to screen data.
Data taken from /sys/class/thermal/thermal_zone0/temp
,
/sys/devices/virtual/display/HDMI/mode")
and /proc/loadavg
respectively. Please note the availability of this information is dependent on Android version and hardware
configuration.
- RS232 monitored and text lines added to rs232input in screen data. (Most recently received ASCII line)
- Added support for RS232 input triggers to event system.
- Added support for regular expression matching to barcode, NFC and RS232 pattern scanning.
Version 21.2 - 2019-10-03
- Fixed problem with deeply nested inner sequences skipping items (see server notes 7.6.9).
- Fixed problem fetching recently updated screen data using JavaScript interface.
Version 21.1 - 2019-09-13
- Fixed problem preventing events added to the screen from firing.
Version 21.0 - 2019-09-04
- Local web server added. Enable by adding
localWebServerPort=9090
- View and watch live logging information.
/log
- View contents of local blobstore and download status.
/blobstore/
- Access media in the local blobstore.
/blobstore/[blob-id]
- Access current player state.
/player-state
- DS Loader does not stop running when launching another activity from an event with a resume delay set. DS Loader
will return to the foreground after the configured resume delay.
- Scrolling text is hidden when
blackCondition=true
.
Version 20.3 - 2019-08-13
- Fixed possible delete and download loop when a blobstore location has inadequate
storage available. The measurement for preallocated storage was incorrect, this could lead to blobstore
locations marked as inadequate when they met the storage requirements.
Version 20.2 - 2019-08-10
- Downloads are saved to the blobstore location with most available storage.
- Storage cleanup triggered when storage used exceeds
cleanupThreshold
.
For example, cleanupThreshold=0.8
performs cleanup when a blobstore location
exceeds 80% of the available storage. Cleanup will delete unused, cached BLOBs.
Version 20.1 - 2019-06-25
- Fixed event duplication problem that subsequently caused double execution of triggered actions.
Version 20.0 - 2019-06-22
- Duplicate, matching triggers can now execute multiple actions.
Prior to this release, a trigger would only execute the the first action in event list.
Please check interactive configurations that use multiple events as this change could have unexpected consequences
if there is a reliance on subsequent actions not executing.
- Fixed problem displaying single web pages on Android 9 (API level 28) and above.
(Caused by disabled MIME type sniffing so pages rendered as
text/plain
)
- Changed default WebView cache to 20 views. (
webviewReuse=20
)
- Changed webview caching behaviour to support redirects from the initial page.
- Added F10 key to ask exit.
- Data from base sequences added to playback data and accessible via JavaScript interface.
Version 19.3 - 2019-06-19
- Local display report file deleted when
report=false
set in screen data.
- New display records with date prior to 2019-01-01 ignored. Assumes system clock failure.
- New display records with date prior to
lastDisplayRecordMillis
ignored.
Version 19.2 - 2019-06-04
- Added support for
fullscreenWarningText
to display full screen warning.
Version 19.1 - 2019-05-31
- If counting storage takes over 10 seconds, a storage cleanup is triggered. Cleanup will delete unused, cached BLOBs.
- Added support for
Uri
to extra STREAM intent.
Version 19.0 - 2019-05-28
- Invalid BLOB download responses aborted prior to downloading body. (Content-Length header must match expected length)
- Stored BLOBs larger than length defined by BLOB ID are deleted.
- Duplicate BLOBs found in multiple local blobstores deleted. If BLOBs are incomplete, only largest BLOB is kept.
Version 18.12 - 2019-05-15
- Added support for launching custom Android Intents.
- Added support for displaying a local camera stream on the screen. To configure, add an item to display streaming media with the address
camera://0
or camera://1
Version 18.11 - 2019-05-03
- Outbound connections to blobstores and stacks servers now include
Referer
header set to
the cloud config address and User-Agent
header set to player version and android version. This
will be useful for stats and fault finding.
Version 18.10 - 2019-02-01
- Periodic blobstore integrity checking prevented from running at startup unless current time is after
corruptionCheckTime
and before corruptionCheckTime
plus 10 minutes.
Version 18.9 - 2019-01-30
- Added last known GPS fix to
gpsFixMillis
in screen data. This can be used in conditions to confirm GPS is working.
- Added additional periodic blobstore integrity checking. This re-checks the data in each BLOB file matches its name (fingerprint) daily.
Any file failing verification is deleted (and will be downloaded later). Failure increments
blobDataCorruption
in screen data.
If blobDataCorruption > 0
it is likely file storage on the local device is faulty.
Please note, this value will also be incremented if a proxy manipulates downloaded data.
Some mobile data providers re-encode images and videos to make them smaller. The player regards this as a Man In The Middle (MITM) attack
and will delete the data and increment blobDataCorruption
.
Default periodic check time is 03:00 (based on screen TimeZone). To change set corruptionCheckTime
for example corruptionCheckTime=07:00
to disable, set corruptionCheckTime=disable
. Please be aware that is does not affect existing verification checking
that occurs immediately after downloads complete.
Version 18.8 - 2019-01-05
- The add data action is followed by an automatic refresh of the current slot in sequence.
This allows conditions in current slot to be re-evaluated and an alternate item to be selected. Typical
use case is to select a different language.
- Custom media sources that fail to throw an error or complete within configured duration are now skipped. An additional 20 seconds
is added to this timeout to allow for buffering delays.
Version 18.7 - 2018-11-26
- Standby black screen option is now always black, overriding any custom background colour that has been set in screen data.
Version 18.6 - 2018-11-14
- Fixed problem processing GPS location on devices set to a locale that uses a comma as a decimal separator.
Version 18.5 - 2018-10-08
- Added tilde support for passing data through to custom media streaming URLs. For example, the following URL will be updated
to replace
~screenId
with the screen ID of the active player:
http://www.example.com/video?screenId=~screenId
.
- Added support for receiving data and triggers over the local network. This enables sending GPS location
from a separate device on the local network. Contact us for GPS sending APK.
Version 18.4 - 2018-09-12
- Fixed problem where the first two storage locations (
blobstoreInternal
and blobstoreExternal
)
could still be used even if they are disabled.
- The reported values for free storage space are now more accurately updated when custom settings are applied to
blobstoreInternal
, blobstoreExternal
and blobstoreDir
.
Version 18.3 - 2018-08-23
- When
collectGps=true
the GPS location is stored periodically on the device. This stored GPS location
is then reused following a device restart until an accurate GPS fix is obtained.
Version 18.2 - 2018-08-16
- If no GPS location is available when player starts with
collectGps=true
set,
gpsLatitude
and gpsLongitude
stored in screen data is added to display report records
instead.
Version 18.1 - 2018-08-09
- GPS data no longer added to collected data report when
collectGps=true
is set. This
is no longer necessary as the GPS coordinates are added to the display report.
- Added
requiredGpsAccuracy
to support setting the accuracy required for GPS to be updated.
Default is 50 meters.
- Fixed problem sending display report records when some records contained GPS and some did not. This
resulted in sending duplicate entries with the wrong GPS data if no GPS was available when player starts.
- Enhanced how dynamic clock is set after restarting the app using server time offsets.
Version 18.0 - 2018-07-25
- Fixed restart caused by specifying a BLE config when no supported hardware on device.
- Added support for displaying HDMI input directly on the screen (pass-through).
- Configured by adding a resource with a streaming media address of
hdmi://zidoo
.
- Designed and tested for Zidoo X9s (Realtek chipset).
- Please note: Zidoo X9s can not play HDMI IN at the same time as another video. (waiting for new firmware)
Version 17.1 - 2018-07-12
- Added support for checking if GPS is inside a polygon for advanced conditions -
gpsInside(lat1,lng1,lat1,lng2,lat1,lng2)
- Key events are now processed by all sequences currently on the screen.
Version 17.0 - 2018-06-28
- Added new screen data option
reportOptions=verifyClock
to prevent storing reporting records
and collecting data if the clock has not be verified as correct.
- Built with Gradle 3.1.3 and Android tools 27.0.3
Version 16.2 - 2018-06-28
- Updated how display report data and collected data is parsed and sent to the server.
- Added more logging for player communications.
Version 16.1 - 2018-06-15
- If a custom media resource has a known duration and known duration less than configured item duration the
sequence will progress automatically on completion.
Version 16.0 - 2018-06-06
- Downloading prioritises active items and fills storage with scheduled items ordered by start date.
This enables using sequences larger than the storage available on the device providing storage is sufficient
for active items at all points in time. Remaining storage is used for as many scheduled items as possible.
- When storage is full, the cleanup routine only deletes items necessary to download active items.
- Items scheduled later are deleted to make space for items scheduled sooner.
- Data sharing via p2p optimised to support larger networks of screens. Peer request list limited to 8 blobs.
When localPeerCount exceeds 8, random silencing reduces number of concurrent peer responses.
Version 15.3 - 2018-05-16
- Attempts to recover from situation where player start() called twice from DS Loader.
- Double start could result in a duplicate display records.
- When
collectGps=true
one duplicate record will be missing GPS.
- Issue more likely to occur on mobile data networks.
Version 15.2 - 2018-05-08
- Collected data report corruption issue fixed.
Version 15.1 - 2018-05-03
- Added workaround for proxies and firewalls that remove the Range header from requests. Download resuming not possible in such situations.
- Added additional 5 second delay after download failures to prevent network overload.
- Added
hdmiState
to screen data to report HDMI connection status.
Version 15.0 - 2018-03-02
- GPS location stored in display records when
collectGps=true
added to screen data.
Note: when downgrading, previously saved display records containing GPS data will be lost.
- Added
getScreenData(...)
to JavaScript interface.
- Added support for sending an RS232 command at startup when
rs232outputAtStart=...
added to screen data.
Version 14.5 - 2018-03-02
- GPS values now use 5 decimal places in both screen data and collected data. Assuming hardware capable,
this is an accuracy of 1.1 meters. Extra decimal places no longer sent to server.
- The Android boot time is now added to screen data as
hardwareBootMillis
. This will allow
a app restart to be differentiated from a device restart.
- Scrollbars on WebViews now hidden unless resource is marked as interactive.
Version 14.4 - 2018-01-24
- Fixed problem where a duplicate report record was generated if an item was inside inner sequences and the item
referring to the inner sequence had reporting enabled. This player version will not create the duplicate but
will create a report record for the item referring to the inner sequence and items inside the inner sequence
as expected.
- Removed unused field
sequenceId
from StackItem.
- The
sequenceId
field in display reports and collected data reports is no longer used. The
sequenceId
is now derived using the itemId
and ItemInfo metadata. This means report
storage and sending is more efficient.
Version 14.3 - 2017-12-08
- WebView error handling updated.
- Only errors loading the main page are displayed.
- Red error page replaced with more friendly centered message reading No Internet Connection with link to retry.
Version 14.2 - 2017-11-23
- Added support for
report=false
to screen data. This option will disable reporting entirely.
- Prevented reporting on items referring to inner sequences if there are no items ready to be displayed.
- When severe problems occur or main thread stalls, the player will auto restart and resume from the next slot.
This should ensure the full sequence gets displayed rather than restarting at slot 1.
- Modified the download decision logic to prioritise a large blob transfer if no large transfers active.
This should make better use of bandwidth when many small blobs are queued.
- Increased the branch limit from 10 to 100 to support deep interactive menu systems.
Version 14.1 - 2017-11-15
- Exit prompt shown when back is pressed 5 times rapidly.
- Added Samsung RS232 Screen control.
Version 14.0 - 2017-10-24
- Repackaged as APK to support easier testing in Android Studio without DS Loader.
- Avoids accessing blobstore as mode public (which was required in early Android for video playback).
- Only prints insufficient storage warning in logs if all storage locations are full.
Version 13.2 - 2017-09-08
- Player communications timeout increased to 60 seconds.
- Single background thread for player communications.
Version 13.1 - 2017-09-01
- Fixed problem applying
yOverride
.
Version 13.0 - 2017-08-17
- Bluetooth low energy physical web implementation.
- Screens can now broadcast a beacon that helps connecting to the platform from a nearby device.
- Enable BLE beacon transmission by adding
beaconConfig=blepw
to screen data. Requires Android 5.1 and hardware support.
Version 12.2 - 2017-08-05
- Display report records no longer written if time before the reporting epoc. This happens if the system clock is wrong.
Version 11.14 - 2017-07-15
- Support for RS232 HEX encoded output using
rs232outputFormat=hex
.
- RS232 logging improved.
Version 11.13 - 2017-07-06
- Output from RS232 after sending command is sent to logcat.
- After failing to send a command to RS232, reconnection is attempted.
Version 11.12 - 2017-06-27
- The
autoStart
setting can be applied to screen data. autoStart=false
will prevent ds-loader and the player starting after a reboot.
The default can also be added to the cloud config and will be complied into ds-loader.apk
Version 11.11 - 2017-06-23
- Added new functions for custom timezones in conditions.
- Fixed problem that caused unresponsiveness when processing large local display reports for sending. This problem
affected devices that connected after collecting data for a week or more offline.
Version 11.10 - 2017-06-03
- Empty barcode events ignored and not collected.
Version 11.9 - 2017-05-25
- Increased maximum player comms response size from 4MB to 16MB to support more complex sequences. This change
is designed to support complex composite items containing 100 or more internal elements.
Version 11.8 - 2017-05-18
- Storage statistics sent to server when downloads finish even when updateCondition=false.
- Transfer rate statistics are now based on most recent 10 downloads/uploads and not removed.
Version 11.7 - 2017-05-17
- Conditional logic for
internetBlobsCondition
and intranetBlobsCondition
now correctly evaluated when updateCondition=false
- Default value for
internetBlobsCondition
and intranetBlobsCondition
is updateCondition
. This change replaces the 10 minute delay
used in android-player-11.6 to detect when updates are disabled.
- When active period is too short to download the required data, downloading is controlled by evaluating the conditional logic above.
- Frequency of local blob request sending reduced to once every 30 seconds to support slow networks.
- Minimum acceptable transfer rate reduced to 4KB/s over a period of 1 minute to support very slow networks without dropping connections.
- If a local peer or Internet blob data transfer fails, a retry is not attempted for 5 minutes from same source.
- Note: This update will make downloading from secondary Internet blobstores more likely if there are frequent failures.
Version 11.6 - 2017-05-12
- Downloads from blobstores are stopped if player communication does not occur for 10 minutes.
- This ensures long running downloads are stopped if the player is not in an active period (i.e. updateCondition is false).
Version 11.5 - 2017-05-04
- Composite items containing no resources available no longer prevent composite from being displayed.
This is to support invisible touchable regions (or buttons) and avoid the need for invisible PNGs.
- Download sources that generated an error are now blocked for 10 minutes. (previously 1 hour).
Version 11.4
- Support for stretching images, bypassing aspect ratio lock. (
stretch=true
in items)
Version 11.3
- Player components are reused if onCreate() called twice during screen rotation. Requires DS Loader 12.7.
Version 11.2
- Support for RS232 output using USB to RS232 converters.
- Most Prolific and FTDI chipsets supported.
- Setup comms by adding data to screen:
rs232config=38400,8,1,none
(This example will set baud to 38400, bits to 8, stop bits to 1 with no parity)
- Send output directly from data in an item. For example
rs232output=avi=1
(This example will send avi=1
to the serial output)
Version 11.1
- Fixed issue that prevented fresh installations creating directories for blobstore in secondary location.
Version 11.0
- Peer to peer blob sharing version 2.
- Player periodically broadcasts a blob request list.
- Concurrent blob request processing provides immediate blob response.
- LAN data downloads interrupt active Internet downloads.
- Instant download resuming with nearest byte precision.
- Download queue dynamically updated when sequence changes mid download or a new blobstore added.
- Configurable download and upload concurrency. Defaults:
blobDownloadConcurrencyMax=2
blobUploadConcurrencyMax=2
- Configurable min and max transfer rates. Defaults:
blobTransferRateMin=10240
blobTransferRateMax=104857600
- Transfer rate data sent to server in data:
blobDataDownloadedRate
blobDataSharedRate
- Peer to peer v2 uses port 9097 for UDP broadcast.
- Blobstore reports storage statistics only when downloading.
Version 10.7
- Screen data for restartTime, rebootTime and exitTime transferred to ds-loader.
Version 10.6
- Added support for event actions to open 3rd party applications.
- Fixed problem introduced in 10.5 that prevented updating the dynamic clock.
Version 10.5
- A playback synchronisation request is not sent if a touch action has occurred within last 5 minutes. This means
touch actions no longer interfere with other screens timing on a sequence with playback synchronisation enabled.
- Status icon added. Enable with
showStatusIcon=true
.
Version 10.3
- A timeZoneOverride in screen data is now set as the system default.
Version 10.2
- Fixed issue that interrupted reporting if the user navigated to previous item.
Version 10.1
- Fixed issue that could lead to a storage becoming full if two large downloads started concurrently
with insufficient free space available for both.
Version 10.0
- Uses repackaged classes from server version 4.0.
Version 9.8
- Active sequence frames now updated (if required) when downloading completes.
Version 9.7
- Bar code scanning can now function even if there are no active items on the screen.
Version 9.6
- New option to collect GPS location and send to collected data report. Enable
collectGps=true
in screen data.
- Support for new conditional functions
distanceMeters(latitude,longitude)
and distanceYards(latitude,longitude)
.
Version 9.5
- Fixed problem where videos in a composite failed to start if
syncVideoMode=2
.
Version 9.4
- When playback synchronisation is enabled, video cleanup is delayed by 300ms. Reduces black gaps.
Version 9.3
- Barcodes and NFC data now added to screen data even if events not defined so the data can be used in conditions.
Version 9.2
- Fixed recursive framing issue that occured if a frame or composite item contained inner sequence.
Version 9.1
- Now and Next item information access for HTML sequence frames.
- Sequence offset item lookup added for JavaScript access.
rootSequence.offset(-1).label
returns label of previous item.
rootSequence.label
returns label of current item.
rootSequence.offset(1).label
returns label of next item.
rootSequence.offset(2).label
returns label of item after next.
- Please note that next items are a prediction based on current data used for item evaluation.
Version 9.0
- Support for sequence frames added.
Version 8.6
- Support for closed captions / subtitles added.
- Ensure captions are enabled in Android settings. (Menu->Settings->Accessibility->Captions)
- Upload .vtt subtitle file to the item in addition to the video. (Check listed as text/vtt after upload)
- For non-english language add the language to the data for the subtitle resource item. For example
language=es
.
- Android 4.4+ required.
Version 8.5
- Support for displaying labels of items in a sequence.
- Data from an inner sequence in a composite can now be accessed using JavaScript. For example
data named
headline
from a sequence with the label videos
can be accessed using DigitalSignage.getData("videos.headline");
Version 8.4
- A thumbnail image with use ticked prevented items displaying on player 8.3. This is now resolved.
Version 8.3
- Fixed issue where an inner sequence containing more than one of the same inner sequence reported an error.
Version 8.2
- Videos can be started at a specific offset using
offsetMillis
in item data.
offsetMillis
must be set to the number of milliseconds from the start of the video.
Please note that seek accuracy varies greatly between devices and video types.
Version 8.1
- An item will only be selected for display if all resources associated with the item are available.
- Resource selection updated to prefer matching aspect ratio images or videos for display area.
Version 8.0
- Core evaluation engine updated to handle inner sequences and branching more efficiently.
- Fixed problem where a sequence of 10 or more inactive slots could cause subsequent condition evaluation to be skipped.
- Data from composite items correctly added to URL when
~dataName
is used.
Version 7.6
- Fixed issue where two successive triggers in less than the duration of active transition could cause view hierarchy to be cleared.
- Added
stackNumber
to data for use in conditions.
Version 7.5
- Text rendering for displaying text items in composites (beta). To be used for rendering RSS title text at the same time as RSS images and videos.
Version 7.4
- API Triggers are now routed into active WebViews and call a JavaScript function named
DigitalSignageTriggerCallback(data);
.
This makes it possible to have a direct communication route into a interactive web page running on a device. Ideal for games where a smartphone acts as a controller.
Version 7.3
- Fixed bug that could occur if multiple videos are in a single item and the one selected to display has not completed downloading.
Version 7.2
- Core stacks engine updated to resolve issues with some advanced conditions.
- Video blanker for masking black screen seen between videos with another colour. Set
background=#FFFFFF
in screen data to enable and videoBlankerPeriod
to change the period at the beginning and end of playback to mask.
- Additional write check to ensure that read only storage is not included in free-space count.
Version 7.1
- Some devices throw a FileNotFoundException when they run out of storage space. This exception now triggers a cleanup.
The cleanup will remove all blobs in the blobstore that are not currently in use (reserved).
Version 7.0
- Devices that fail to serve valid blobs via p2p blob sharing get blacklisted and subsequently ignored.
- WebViews are cached and reused for quick web page display. Disable with
webViewReuse=0
.
- Minimum blob transfer rate controlled using
blobTransferRateMin
. Connections are terminated if transfer rate falls below this value. Alternate sources will be used.
- Maximum blob transfer rate controlled using
blobTransferRateMax
. Transfer is paused when rate exceeded. Useful for devices that can not download at high transfer rate and play HD videos at the same time.
- Transfer rates of blobs added to log output.
Version 6.6
- Event actions to show item with a undefined resume delay no longer causes app restart.
Version 6.5
- Screen cleared and controller removed when sequence set to none after being active. Resolves issue with
blackCondition
not functioning.
- Device TimeZone can now be overridden by setting
timeZoneOverride
in screen data.
- Overridden values such as
xOverride, yOverride, widthOverride, heightOverride
must follow convention of Override
being a suffix not prefix.
Version 6.4
- Multiple video playback synchronisation modes added see manual.
Version 6.3
- Event actions to show web page with a undefined resume delay no longer causes app restart.
Version 6.2
- Additional playback synchronisation optimisation to improve accuracy.
Version 6.1
- Playback synchronisation code rewritten.
- Players maintain an accurate local dynamic clock using server time.
- Items are scheduled based on the local dynamic clock to reduce effects of network latency.
- New settings
syncOffset
and syncVideoOffset
added to make small changes when hardware differs.
- Devices no longer send playback synchronisation data if they are downloading or missing content.
- All local players must be upgraded to version 6+ to use this new algorithm.
- Upgrading DS Loader to version 8.6+ will enhance accuracy of dynamic clock.
- When local peers download from a peer still downloading from the Internet, the local data streams are throttled
rather than trying again later. This removes the 1 minute retry delay that could cause slow local blob sharing.
Version 5.4
- Key sequences (such as from barcode reader) only trigger events in main sequence and not inner sequences within composite views.
Version 5.3
- Jackson JSON serialisation library updated to 2.3.2 (last version supporting Android 2.2).
Version 5.2
- SurfaceView added to FrameLayout at startup to remove flicker when VideoView added later. See
http://stackoverflow.com/questions/8772862/surfaceview-flashes-black-on-load/12636285#12636285
.
Version 5.1
- Bitmap cache now uses
ActivityManager.getMemoryClass()
instead of Runtime.maxMemory()
to
estimate how much memory to use for caching rendered bitmaps. This improves stability on devices that incorrectly report maximum memory.
Can be overridden by setting maxBitmapCacheSize
in screen data.
- Temp directory now emptied at startup.
Android Test
Version 1.7 - 2018-01-12
- Fixed problem that caused invalid comma separator to be used in GPS values when European locale used.
- Repackaged as APK.
Version 1.6 - 2017-07-28
- GPS status enhanced to show GPS location.
- Detection of video playback failure less strict. 3 second startup time allowed.
Version 1.5 - 2017-07-23
- GPS status checked. Android location manager used to report number of satellites. Not part of final test result.
Version 1.4 - 2017-05-24
- Patch to enable use of hidden WiFi networks.
Version 1.3
- Added additional logging to help debug unexpected device reboots.
- Added
testStartCount
and testEndCount
to help detect unexpected mid testing reboots.
- Additional checks to ensure server receives
testRunTime
after the long test and is reloaded after reboot.
Version 1.2
- After completing the long test the device will reboot (if rooted).
- Timer added to bottom left displaying the total time test has been running (burn-in).
- Timer resumes after a reboot to show total test run time.
- A failure will stop test and timer. A clear data command must be sent to test again.
- Test results sent to server updated:
testStatus
testFailReason
testRunTime
testCpuMegacalcsMin
testRamWriteRateMin
testRamReadRateMin
testRamWriteMax
testStorageWriteRateMin
testStorageReadRateMin
testStorageWriteMax
testStorageExtWriteRateMin
testStorageExtReadRateMin
testStorageExtWriteMax
wifiRssi
wifiSpeed
Version 1.1
- Does not report quick test pass until server has received result.
Version 1.0
- Now uses repackaged classes from server version 4.0.
Version 0.16
- Patch to fix incorrect network configuration for a large partner.
Version 0.15
- More accurate detection of available screen resolution. Also updates if ds-loader removes SystemUI.
- Vertical and horizontal line test to help detect if device pixel resolution matches screen pixel resolution.
Version 0.14
- Additional test results sent to server:
cpuMegacalcs
ramWriteRate
ramReadRate
storageWriteRate
storageWriteExtRate
storageWriteMax
storageWriteExtMax
storageReadRate
storageReadExtRate
testVideoPlayback
wifiRssi
Version 0.13
- Failure to write to primary storage now considered as fail. (Even if secondary is OK).
Version 0.12
- VideoView added and removed from view hierarchy instead of being reused.
Version 0.11
- No longer tests storage (ext) if it is unavailable or mounted as read only.
- Removed test checking read speed greater than 5MB/s.
- Added additional exception handling to WiFi test.
Version 0.10
- Method used for allocating random byte arrays for testing changed to reduce garbage collection.
- Method used for reading from files to verify written data updated.
Version 0.9
- Bug fixed which could result in the test running in 2 concurrent threads after a failure.
- Jackson JSON serialisation library updated to 2.3.2 (last version supporting Android 2.2).
Version 0.7
- WiFi speed and signal strength updated each second.
Version 0.6
- WiFi speed and signal strength displayed.
- Barcode of MAC address displayed to aid manufacture.
Version 0.5
- A temp directory is now used for testing storage (not blobstore).
- Reduced RAM quick test to 64MB.
- Reduced storage quick test to 128MB.
Android DS Loader
Version 16.1 - 2023-06-08
- Fixed problem where configured rebootTime could cause multiple reboots during the same minute.
- Improved reboot support for devices that ignored activity manager commands.
Version 16.0 - 2022-10-01
- Initial MAC address taken from eth0 when
Build.MODEL
is CE220
, CE420
or CE440
.
Version 15.5 - 2022-06-08
- Modified reboot command to gracefully reboot.
Version 15.4 - 2022-06-08
- Improved recovery from extended offline periods when using cable and WiFi disabled.
- Added second install attempt when updating DS Loader APK remotely.
Version 15.3 - 2021-04-09
- The clear data command will delete files in the follow locations if they exist.
/mnt/external_sd/blobstore
/mnt/usb_storage/USB_DISK0/udisk0/blobstore
Version 15.2 - 2020-06-15
- Preconfigured restartTime and rebootTime no longer require server communications to function after rebooting if the device has a battery backed clock.
- Added support for FLIR ONE thermal caemra for FeverFace player software.
Version 15.0 - 2019-08-05
- Added support to download, extract and execute special update packages.
The
update.zip
must contain a file named update.sh
containing shell commands for how to apply the update.
- When the option to Launch at startup and keep running is enabled, 2 Android alarms
are continuously set to re-launch DS Loader after a failure.
If the first launch fails, the 2nd occurs one minute later.
- Commands to post logs and screenshot now use a proxy server if configured.
- Device identification added to HTTP requests. (
screenId
in User-Agent
and serverAddress
in Referrer
)
Version 14.6 - 2019-05-08
- Reboot command no longer requires root permissions if APK signed with system key.
Version 14.5 - 2019-04-26
- Reboot command attempts to use Android power manager to trigger a system reboot. Note, this will only work
if the .apk has been signed with system key. If it fails, the standard reboot shell command is used (requires root).
Version 14.4 - 2019-04-07
- Some new devices were incorrectly reporting 000000000000 as the MAC. If this occurs, alternate ways of
reading the MAC address will be attempted. If they all fail, a random unused MAC starting 0200 will be used.
Version 14.3 - 2019-01-19
- Fixed problem with self upgrading. This prevented versions 13.0 and 14.0 from being able to upgrade
ds-loader.apk to new versions on some rooted devices. Upgrading DS Loader from these versions must be performed manually.
Version 14.0
- Android 9 Pie blocks all web requests without encryption by default. Unfortunately,
this prevents displaying clear text web sites, public blobstores and breaks proxy caching.
DS Loader 14 enables a network security configuration that sets
cleartextTrafficPermitted=true
to remove restrictions.
Version 13.0
- Fixed bug where DS Loader would start, exit and start again immediately after booting (if boot less than 40 seconds).
- Problem caused by player start notification sent to server before starting completed and without player version populated. The
server would instruct ds loader to change player, which required an app restart. Server side fix applied to prevent this
bug in 6.2.0.
Version 12.8
- Reads
autoStart
from default.properties. This allows the default autoStart
setting to be configured
in the cloud config and compiled into the custom APK.
Version 12.7
- Prevention of a second instance of a player starting when onCreate() called twice during rotation on some versions of Android.
Version 12.6
- Screenshot option now uses Android system screencap on rooted devices so hardware accelerated video can be captured.
Version 12.5
- APK rebuilt and versionName set to 12.5 and versionCode to 1205
Version 12.4
- New Android Intent added to support USB to RS232 devices.
Version 12.3
- Scheduled restart, reboot and exit applied from screen data restartTime, rebootTime and exitTime variables. (Requires player 10.7)
Version 12.2
- Issues "netcfg eth0 down, netcfg eth0 up" if device rooted, eth0 is active and no comms in last 10 minutes.
Version 12.0
- Now uses repackaged classes from server version 4.0.
Version 11.2
- Loader information no longer displayed when running as a daydream.
- Hardware product label and Android API version displayed top right.
- MAC address shown top left in addition to center to help with reading on screens where the full resolution not visible.
Version 11.1
- MAC addresses 525400123456 and 00904C112233 are blacklisted. If a device has either
of these MAC address or an address that starts 02 then new random address will be generated
and verified with the server to be unique before it is used.
Version 10.2
- Network interfaces monitored. A retry will occur sooner after a network interface reports being reconnected.
- Connection timeout and read timeout for posting logs and screenshots increased from 10 seconds to 30 seconds.
- Connections to post logs and screenshots will retry up to 5 times.
- DS Loader information now fades out before player starts.
Version 10.1
- Fix for devices that take up to a minute to restart. Life cycle changed so that finish() will cause management loop to exit and not wait for onDestroy().
Version 10.0
- Changed logic for automatic WiFi repair. WiFi is now turned off and on (reset) only after 20 successive communication failures.
WiFi will not be repaired if it is disabled (alternate connection assumed) unless it was known to be disabled when performing automatic WiFi repair.
- Log entries reformatted to highlight starting and finishing the main DS Loader management loop.
- New permissions added for supporting future features such as voice commands.
- The Android System UI is only killed if the device is known to be rooted.
Version 9.4
- Root detection moved off main thread to improve startup time and reduce chances of ANR warning at startup.
Version 9.3
- Detection of rooted devices is more reliable. Tests by attempting to write a temporary file to protected area of file system as super user and checking it exists.
Version 9.2
- Old v1 players are disabled, then killed then removed. (Device must be rooted)
Version 9.0
- Additional layer of security added to verify player update integrity.
Version 8.7
- Device TimeZone used by
restartTime
can now be overridden by timeZoneOverride
.
Version 8.6
- Server time sent to the player improving dynamic clock accuracy for playback sychronisation.
Version 8.5
- MAC address now listed in DS Settings.
Version 8.3
- Rooted devices search for and delete v1 players.
Version 8.2
- Temp directory (used for testing) now emptied at startup.