+65 6423 0692
+65 6423 0186

Release Notes

Cloud Platform

Version 6.6.4 – 2018-09-18

  1. Fixed permission issue that prevented listing public widgets and templates if active user not granted access to groups.
  2. Caching layer added for cloud configurations to speed up applying customisations.
  3. Performance enhancements for server side filtering and sorting.
  4. Performance enhancements for client side filtering and group selection.
  5. Fixed issue that could cause a failed blob upload to Google Cloud Storage to not retry automatically.

Version 6.6.3 – 2018-09-11

  1. 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.
  2. 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.
  3. 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

  1. Data warehouse V1 fully disabled.
  2. Data warehouse V1 removed from codebase.

Version 6.6.1 – 2018-09-06

  1. Removed backend selection drop down list from admin interface.
  2. Removed legacy code for data warehouse V1 backend from admin interface.
  3. Fixed problem with custom columns for summary reports being reset unexpectedly.
  4. Fixed continuous loading loop when viewing the GPS movement map.
  5. Updated GPS movement map to better support large GPS position jumps when GPS data is intermittent.
  6. API summary reports now use data warehouse V2.
  7. API report requests now ignore backend parameter and use data warehouse V2 regardless.
  8. Data warehouse V1 no longer used for reads. (writing will be disabled in next release)
  9. Updated GeoLite2 database and library. (Used for resolving IP to location when no GPS data)
  10. Full clean and rebuild with latest build tools.

Version 6.5.1 – 2018-08-23

  1. Modified data warehouse splicing logic to reduce memory footprint.
    • Queries aggregating a small number of screens/items (under 50) spliced by time.
  2. Server side filtering now uses visible columns for non custom search parameters.

Version 6.4.12 – 2018-08-20

  1. 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.
  2. Fixed exception when filtering report by both a user and a group simultaneously.

Version 6.4.11 – 2018-08-16

  1. Fixed minor layout issue showing access control tab on small mobile devices.
  2. 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

  1. Disabling the reporting feature showReports=false now also prevents using the API for reporting.
  2. Restricted column width used for groups and user labels in access control tab of dialogs.

Version 6.4.9 – 2018-08-09

  1. 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.
  2. Fixed NPE when handling e-mails sent without a from address in the headers.
  3. Default display report backend when not specified is now warehouseV2.
  4. Added logging to track use of deprecated display report backend.
  5. 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.
  6. Fixed search box that sometimes returned the wrong results when search delayed.
  7. 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

  1. 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.
  2. 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).
  3. Unified the item duration logic. durationMillis not set if it matches a resource duration or the default (10 seconds).
  4. Fixed number formatting problem when resource or item millisecond less than 100.

Version 6.4.7 – 2018-07-19

  1. Instant updates are now quicker when updating screen data in admin interface.
  2. Instant updates are no longer attempted if the server has not had recent UDP confirmation from DS Loader.
  3. Instant updates using the remote trigger API for screen groups now skips screens without UDP connectivity.
  4. Improved proxying UDP between servers as required for firewall hole punching.

Version 6.4.6 – 2018-07-17

  1. Updated location condition builder to support defining multiple circles and polygons on the map.
  2. Added Device start column to screens table. Uses hardwareBootMillis.
  3. 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.
  4. Changed default time formatter to include seconds in tables.
  5. Fixed problem displaying last UDP comms time in screen table.

Version 6.4.5 – 2018-07-11

  1. Fixed over-caching of player API response which sometimes prevented automatic updating of dynamic content such as weather images.
  2. Server side searching by EntityInfo (as used by sequences tab) is now consistent with client side searching.
  3. Warning for multiple recent starts not shown if screen is offline.
  4. Weather translation for Swedish updated.

Version 6.4.4 – 2018-07-03

  1. Changed groupId filter behaviour in data warehouse v2 backend to match v1.
  2. Admin interface for display reports now changes group label to clarify if report is filtered by group of screens, sequences or library items.
  3. Fixed data duplication problem when changing data names in the data tab.
  4. 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.
  5. Label of composite item updated if a new library item is selected.
  6. Updated legacy content builders to use UTF8. Unfortunately many APIs we use only support English terms though.
  7. 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

  1. Fixed problem searching for meta data by email, group name or cloud config name. This caused problems manually adding new access controls.
  2. Improved validation of display report records sent from players.

Version 6.4.2 – 2018-06-21

  1. Fixed issue where reporting data referencing a missing screen would cause report generation to fail.
  2. Fixed NPE when searching for an ID that does not exist.

Version 6.4.1 – 2018-06-19

  1. 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.
  2. Added options to set scrolling text, NFC URL and Beacon URL in screen edit dialog.
  3. Fixed problem generating reports by Item ID and Library Item ID.

Version 6.3.2 – 2018-06-15

  1. Searching by text that looks like an ID now performs fast ID fetch rather than full search.
  2. Manual text entry of indirectly accessible users and groups within access tab of items is now case insensitive.
  3. Fixed issue where the incorrect access controls were applied to new items when a sign in performed while masquerading.
  4. Added additional retry logic for uploading blobs to S3 and GCS.

Version 6.3.1 – 2018-06-06

  1. 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

  1. Removed legacy (MySQL) database connectivity.
  2. Data warehouse V2 used exclusively for user actions (audit trail), blob upload log, collected data and screen status history.
  3. Data warehouse V2 now the default for display reports, data warehouse V1 will remain active for a limited time.
  4. Updated style of library items and stack items to support more info icons and removed shadows which were degrading performance.
  5. Selecting None from suggestion boxes removes the selection.
  6. Any errors updating dynamic content now shown in item details.

Version 6.2.1 – 2018-05-21

  1. Options to jump to display reports and display summary now correctly pre-populate search criteria.
  2. Suggestion boxes for sequences, screens and groups correctly loaded when jumping between tabs.

Version 6.2.0 – 2018-05-16

  1. Added sequence playback simulator.
    1. Creates a report with information about items that will display based on configurable data such as date/time.
    2. Displays a summary of duration and storage requirements.
  2. Additional error responses added for invalid API requests.
  3. Worked around a bug in DS Loader that could cause app restart immediately after booting. Note, new DS Loader recommended.
  4. Added GPS movement map link to display report when screen GPS data collected with collectGps=true.
  5. Added suggestion boxes when specify screen, sequence or group for reports.

Version 6.1.0 – 2018-05-12

  1. Newly added library items starred. Star removed after they are added to a sequence.
  2. Display report CSV now always generated on server to avoid browser limitations.
  3. Sanitised input to oauth2callbacks eliminating possible cross site scripting.

Version 6.0.2 – 2018-05-08

  1. Fixed bug where longitude was displayed in latitude column.
  2. Reordered columns so latitude comes first.
  3. Fixed location heatmap for display reports.
  4. Display report CSV and heatmap now open in new windows/tabs.

Version 6.0.1 – 2018-05-04

  1. If there are multiple thumbnail candidates in one item, the most recent is used. (Based onmodifiedMillis in resource data).
  2. 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.
  3. Custom data added to a pending resource is copied to final resource after completion if it does not exist.
  4. The invalid Content-Type text/txt is now fixed by using supplied file extension.

Version 6.0.0 – 2018-05-03

  1. 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.
  2. After a transitional period, data warehouse version 2 will replace the legacy (mySQL) database and version 1 data warehouse implementation.
  3. 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.
  4. 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.
  5. 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.
  6. Record queues are now persisted to local storage, so an unexpected server failure will not result in losing queued records in RAM.
  7. Atomic record queue re-processing to cope with communication failures between servers.
  8. Data warehouse version 2 uses LZ4 compression for archiving instead of GZIP to significantly speed up record processing.
  9. New records and report communications between servers chunked and compressed using LZ4.
  10. Display summaries spanning thousands of screens and larger periods now possible using dynamic criteria splicing by screen and time.
  11. Re-encoded videos uploaded to custom blobstores if defined in active cloud configuration.
  12. Fixed problem where pending resources are removed prematurely if createdMillis not defined in data.
  13. Blob upload stall detection now waits 5 minutes before aborting. This helps avoid aborting early if blob uploads are queued.
  14. Added new pie segment for number of screens downloading to screen status on home tab.
  15. Admin interface now built with GWT 2.8.2.

Version 5.6.6 – 2018-03-25

  1. CSV updated to remove gpsLatitude and gpsLongitude because they broke badly written partner integrations.
  2. 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

  1. Fixed error caused by clicking a sequence item if the create sequence feature for the user was disabled.
  2. Fixed problem shift clicking a range in a table when no previous item selected.
  3. Increased maximum label length before trimming in tables to 60 characters.
  4. Fixed caching issue where endDateTime in items generated invalid Last-Modified in screen response.
  5. Support for receiving display records containing GPS location. (not stored yet)
  6. 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

  1. Fixed problem with redirected imports not uploading data to custom blobstores defined in active cloud config.
  2. All exceptions related to blobstore uploads are now logged.
  3. Added more information about blobstore uploads to server health check.
  4. Minutely healthcheck fails if there are failures to upload to one or more blobstores.
  5. Added information about warehouse chunk queue to server health check.
  6. Changed standard jvmFreeMemory to custom jvmAvailableMemory to provide a more useful metric for health checks.
  7. Patch for .vtt files containing 00:00:00.000 now ignores first header to ensure fix successful.
  8. Items built using a template or widget no longer inherit created date of source.
  9. Controls added to videos shown in preview.

Version 5.6.3 – 2018-02-27

  1. 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.
  2. 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.
  3. 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.
  4. 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

  1. Added button to collected data report to show collected GPS data as a Google heatmap.
  2. Fixed screen API response for stack items with floating start and end dates used by A3.

Version 5.6.1 – 2018-02-19

  1. Fixed problem with alert dialog that could cause “Maximum call stack size exceeded” error to be displayed.

Version 5.6.0 – 2018-02-18

  1. 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.
  2. Replication rate between geographically distant servers reduced to once every 5 seconds.

Version 5.5.0 – 2018-02-16

  1. Display report and summary report now include the Item ID column.
  2. Display report and summary report show a warning if screens have not sent all reporting data up to the end date specified.
  3. Display summary report includes total showings for all items/screens.
  4. Display summary report now reset when clicking a display summary option from an item or screen.
  5. Removed finish masquerading option because in many cases it failed to close the browser window and caused confusion.
  6. Fixed problem where browser session timeout before server session timeout could cause stack overflow error.
  7. Simplified how object metadata is transfered between frontend and backend. EntityInfo objects are now generic and only contain required data.
  8. Player API response no longer includes expired items.
  9. A3 introduction and basic guide added.

Version 5.4.6 – 2018-02-08

  1. Fixed problem with date parsing that prevented updating the month in date text fields.

Version 5.4.5 – 2018-02-07

  1. 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.
  2. 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

  1. 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.
  2. Added active transfer details to item info popups.
  3. Fixed screen table error triggered by sequences with no label.
  4. End date entry components set to 1 millisecond before selected date to help with adjacent time ranges.
  5. Timeout for server to server warehouse report data transfer increased.
  6. Display report and summary de-duplication optimised for faster results.

Version 5.4.3 – 2018-01-31

  1. 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.
  2. 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.
  3. Increased the max display report size shown in admin interface from 10,000 to 100,000 records.
  4. 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

  1. 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.
  2. Removed unused field sequenceId from StackItem.
  3. Any sequenceId sent from players in display reports is ignored and new players will not send it.
  4. Default reporting backend when not specified in API request is now the data warehouse.

Version 5.4.1 – 2018-01-19

  1. Aggregation options hidden from display report where they should not be shown.

Version 5.4.0 – 2018-01-18

  1. 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.
  2. 6,946 active DataSources migrated to new schema.
  3. Updated cleanup script to remove unused and invalid DataSources.
  4. Various updates to support Raspberry Pi player migration.

Version 5.3.4 – 2018-01-16

  1. Added frontend support for aggregating display summary report by screen and item-screen.
  2. Fixed problem updating preview of inner sequence when inner sequence contains no items.
  3. Limited the number of files that can be dropped into browser at once to 10.
  4. Fixed issue with WTM that resulted in blocking proxies such as squid.

Version 5.3.3 – 2018-01-15

  1. Fixed exception caused by selecting random in the advanced condition builder.
  2. Added backend support for aggregating display summary report by screen and item-screen.
  3. Screens offline for over 28 days no longer included in the hom screen status pie chart.
  4. Fixed problem saving the 2nd factor age in cloud configuration
  5. 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

  1. Changed default reporting backend to the new data warehouse.

Version 5.3.2 – 2018-01-07

  1. Changed default reporting backend to the new data warehouse.
  2. Updated date selection widgets to reset seconds field to zero.
  3. Updated condition builder to allow manual text condition editing after building.
  4. Editing a composite item now correctly displays the composite editing options.
  5. The library is shown in several places. Adding, removing or updating library items anywhere will now encourage a refresh everywhere.
  6. Stale content refreshes when switching between tabs based on last refresh time not tab change time.
  7. Item paste operation duplicates all additional data associated with the copied item.
  8. Added 1 second delay to thum.io for rendering thumbnails. Helps when HTML component runs JavaScript.
  9. Set thum.io to use Europe-1 server when rendering Zipped web pages as US-East-1 appears to be blocked.
  10. 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.
  11. A3 can now display the available time slots and reserve them (basic scheduling).
  12. 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

  1. Updated the display tab for items to improve access to various upload, import and building options.
  2. Added new option to build HTML content from template.
  3. 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.
  4. HTML template option only shown when user has add composite widget feature enabled. (This may change in next release)
  5. Screen status history report screen label now performs screen search when clicked.
  6. Fixed issue where very fast uploads failed to refresh item list and remove progress bars.
  7. Added default start time and end time for report downloads. When not specified, last 24 hours are returned.
  8. Preview option for Zipped web pages added.
  9. BlobExtractServlet at /blob-extract/ downloads blob and serves unzipped files for previewing zipped web pages.
  10. Integration with thum.io for rendering admin interface thumbnails of web pages and zipped web pages.
  11. Added support for resume delay over 1000 seconds.

Version 5.3.0 – 2017-12-09

  1. 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.
  2. Changed default sort order for the screen status history report to use the updated ON column sorting.
  3. Removed option to edit screens from screen status history reports. Reports should not be able to perform updates.
  4. 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.
  5. Fixed group selection problem for reports where group was reset unexpectedly.
  6. 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.
  7. Removed unnecessary initial load of screen status history before screens shown in report.
  8. 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.
  9. 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.
  10. Removed disabled items from screen response JSON. This reduces unnecessary data transfer to screens.
  11. Background update of datasources not queued if already in queue.
  12. Optimised SequenceLinker to flatten deep inner sequence structure into fewer database queries.
  13. Admin interface thumbnail renderer flattens deep inner sequence structure to speed up composition.
  14. Search behaviour changed when spaces are used.
    • Search string split into multiple search terms by spaces.
    • Items that contain all search terms are shown.
  15. 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.
  16. 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

  1. Removed options button from screen status history report.
  2. Added additional check to ensure file upload data sent matches value set in Content-Length header.
  3. Added last error details to data sources.
  4. Admin interface shows error messages for pending resources.
  5. Reduced refresh delay after last item finishes uploading.
  6. Failed dynamic resource updates now retry with exponential backoff.
  7. Updated screen status history to work better with reporting on thousands of screens.
  8. Added screen option to view screen status history.

Version 5.2.2 – 2017-11-15

  1. A colour can be assigned to library items and sequence items.
  2. Advanced erase feature made available. Unlike remove, items will be erased from all users and groups.
  3. 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

  1. Stalled and slow transfers to blobstores now detected and aborted.
  2. Excessive concurrent blobstore uploads detected and aborted.
  3. Blob uploader refactored and untangled from media processor.
  4. Upload error feedback to UI improved.
  5. Additional performance logging added to media processing.
  6. Fixed issue where current user was re-added to access tab if all users and groups were removed from the access tab.
  7. Range selection using shift fixed for non default sort order.

Version 5.1.11 – 2017-11-06

  1. Reduced max concurrency setting for dragged file upload to 2.
  2. Added additional exception logging to upload servlet.
  3. Updated currency content builder to use data from http://fixer.io/.

Version 5.1.10 – 2017-11-03

  1. Added columns to library table for start date, end date and condition.
  2. Pending resources in library items and sequence items replaced if complete when requested from REST API.

Version 5.1.9 – 2017-10-30

  1. Find sequence and base sequence links now add current sequence to browser history so browser back button works.
  2. Report downloads now include more information in filename to help manage multiple files.
  3. Added custom ID search support to report download.
  4. Fixed problem where sequenceId was missing from some (BETA) report downloads.
  5. Moved user features from advanced tab into dedicated features tab.
  6. Cloud, Group and User editor dialogs default to having the label box focused (instead of first tab)
  7. 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

  1. Fixed issue filtering library items by custom data.
  2. Fixed issue setting multiple screens to a sequence of None.
  3. Fixed issue logging size of blob uploads for items that are not processed.
  4. Moved library item paste button into add library item panel to be consistent with add sequence item panel.
  5. Increased size of data source column on media upload report.
  6. Added top pagination to reports.

Version 5.1.7 – 2017-10-20

  1. Moved item and library item reporting option from advanced tab to dedicated reporting tab.
  2. Reporting tab hidden from users with no reporting access.
  3. Added option to search by custom ID to display reports and display summary.
  4. Changed default date ranges for reporting to be current day.
  5. Changed date/time format to include seconds.

Version 5.1.6 – 2017-10-18

  1. Searching now performed over data in (most) visible columns of tables (including custom data).
  2. Loading status not shown when updating group select box. Prevents confusion on reports that need button press.

Version 5.1.5 – 2017-10-17

  1. Added option to hide service status from home tab showHomeServiceStatus.
  2. Removed option to preview web page zips. (only possible on dedicated player)
  3. Sequence tab refresh no longer reverts to page 1 when uploading completes.
  4. 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

  1. Moved button to select expired library items into the filters.
  2. Reduced components used by sequence heading widget to improve performance.
  3. Added serverside check for setting invalid serverAddress.

Version 5.1.3 – 2017-10-10

  1. 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.
  2. Added button to library to quickly select expired items (for removal).
  3. Fixed problems with undo and redo of sequence actions when navigating multiple pages.
  4. Added touch icon to item details for items that have touch events.
  5. Added subtitles icon to item icon panel for items that have subtitles.
  6. Added workaround to fix .vtt subtitles uploaded as text/plain to automatically change content type to text/vtt.
  7. Datasources associated with failed upload connections are now removed immediately after failure.

Version 5.1.2 – 2017-10-06

  1. Moved base sequence option into the sequence type drop down within sequence settings.
  2. Fixed issue where inner sequence and composite library item preview failed to refresh correctly.
  3. Fixed issue preventing new datasources from being created. Affected content builders and YouTub import.

Version 5.1.1 – 2017-10-04

  1. Fixed issue that prevented some datasources from completing data transfers.

Version 5.1.0 – 2017-10-04

  1. Sequences no longer wait for server response after a change has been made. This significantly speeds up multiple edits on a slow connection.
  2. Multiple items can be uploading while the sequence is modified without causing pending resources to disappear due to unsequenced concurrent update.
  3. Item thumbnails are updated as each item completes rather than waiting for all items to complete.
  4. Changed how pending and dynamic resources in sequences are updated to avoid concurrency issues.
  5. Pending resources are automatically removed if they do not complete within 12 hours.
  6. Added support for displaying images smaller than 100×100. Previously they were assumed to be thumbnails and disabled by default.
  7. Sequence items as well as files can now be dragged into the library add button.
  8. Added tool tip to sequence item and library item add buttons to clarify that files from file browser can be dropped on to them.
  9. A selected sequence item can now be deleted by pressing the delete key.
  10. When multiple sequence items are selected, pressing the delete key brings up to multiple selection dialog, where delete option is available.
  11. Removed invalid options from multiple selection dialog when sequence items are selected.
  12. 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

  1. 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.
  2. Updated Apache Commons FileUpload to 1.3.3

Version 4.13.0 – 2017-09-25

  1. Added showDownloadButtonshowMultipleSelectButton and showSearchButton to support hiding buttons and functionality from users and cloud configs.
  2. Changed access control editor to show label and email/group name on separate lines to better support long group names.
  3. Added resource counts columns to library table view.
  4. Updated GWT Bootstrap to 0.9.4.
  5. Updated GWT Bootstrap extras to 0.9.4.
  6. Updated GWT Drag and Drop to 3.3.4.

Version 4.12.4 – 2017-09-20

  1. Added groupId and groupName query parameters to REST API to filter list results.
  2. Added support for software packaged as APK. This allows software to be installed on Android devices without DS Loader.
  3. Added warning if exoplayer software selected on pre Jelly Bean devices.

Version 4.12.3 – 2017-09-14

  1. Display report writing to legacy database optimised to use larger batches more frequently.
  2. If backlog of uncommitted display records exceeds threshold, players instructed to send later.

Version 4.12.2 – 2017-09-01

  1. Previous barcode value correctly shown in barcode editor field and not lost when saving.

Version 4.12.1 – 2017-08-18

  1. Fixed slogan and manual links on loading screen.
  2. Increased visibility of busy bar.
  3. Added SSL to blepw.net domains and added placeholder pages.

Version 4.12.0 – 2017-08-17

  1. 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

  1. Download option for new warehouse backend display reports and summaries.
  2. Browser time zone applied to downloaded reports.
  3. Default start and end times in report forms changed to give predictable output.

Version 4.11.6 – 2017-08-05

  1. Reporting records only added if response sent without comms exception. This should prevent duplicated display report records caused by a client retry.
  2. 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

  1. 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

  1. Warehouse reporting (BETA) improvements.

Version 4.11.3 – 2017-07-17

  1. 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+
  2. 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

  1. Option to view collected data added to screen options drop down menu.
  2. 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.
  3. Group box for reports refreshed when report page shown.
  4. Maximum number of records shown for reports now set at 10,000.
  5. Warehouse (beta) search now performs searchs up to end date (but not including) to match legacy reports.

Version 4.11.1 – 2017-07-10

  1. 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

  1. 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.
  2. Fixed issue editing sequences referring to a deleted base sequence.
  3. Detection and warning when base sequence hierarchy or inner sequences generate infinite loop
  4. Frontend display reporting linked to new backend data warehouse. (Still not active, legacy still in use)

Version 4.10.3 – 2017-06-23

  1. 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+
  2. Added option to find inner sequence from outer sequence item drop down menu.
  3. Added option to find inner sequence from composite sequence item drop down menu.
  4. 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

  1. Removed duplicate download button from screen reports.
  2. Periodic health check statistics continue to update after uncaught exception.
  3. 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

  1. Updated key for storage bar graphic to match pending/queued/missing colours.
  2. Enlarged bar for pending/queued/missing so it is always visible even if less than 1 pixel.
  3. 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.
  4. Added download button to export CSV for tables (client side export). Only exports visible columns.

Version 4.9.10 – 2017-05-21

  1. New column for screens to show how much data is queued for download and not currently available.

Version 4.9.9 – 2017-05-19

  1. Flashing chip icon to show when a device is missing data and not downloading.

Version 4.9.8 – 2017-05-17

  1. 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

  1. WTM HTTP request handler concurrency increased to 64 threads to support increased load on us-east-1

Version 4.9.6 – 2017-05-12

  1. Server performance admin page updated to show more health information.
  2. A configured screen updateCondition no longer overrides playerCommsPeriod when performing player comms.
  3. Fixed NullPointerException that could occur after a session expired.

Version 4.9.5 – 2017-05-07

  1. Browser cookie expires as configured by max session age in cloud config.
  2. Session ID changed when signing in after max session age. This will effectively sign out of other browsers (but not tabs in same browser).
  3. JavaScript session expiration now checks with server to see if new session has been started before displaying session time out dialog.
  4. New option to quickly add a button (touchable area) to a composite for interactivity. Avoids needing transparent PNG. Requires android-player-11.5
  5. Delay added to home tab before data loaded into panels to improve responsiveness when logging in.
  6. New reporting database implementation added. Not activated yet.

Version 4.9.4

  1. 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

  1. Composite item editor rewritten to combine both visual and coordinate based configuration.
  2. Standby period time drop down lists replaced with text area to accept advanced conditions.

Version 4.9.2

  1. Fixed problem where events are lost in library items if an item is reloaded, then saved again.

Version 4.9.1

  1. PNG encoder changed to ObjectPanet.

Version 4.9.0

  1. PNG encoder changed to PNGJ with compression setting optimised for higher performance.
  2. Colour fix for images now only applied if the source image contains alpha channel.
  3. Background option added to Weather, Currencies, Stocks, RSS Feed and Twitter content builders.
  4. Background can be removed allowing a custom background to be displayed using a sequence frame or composite.
  5. Fix for screen status history shifting February data into March.

Version 4.8.4

  1. Search and group filter added to screen status report.

Version 4.8.3

  1. Search and group filter added to screen status report.

Version 4.8.2

  1. Screen status report added for live status monitoring
  2. Previous screen status report renamed to screen status history.
  3. Screen status icons display tick and stop inner icons.
  4. WTM changed to exit upon failed initialisation which will then be restarted later by systemd.
  5. S3 buckets no longer checked at startup to reduce service startup time to under a second.

Version 4.8.1

  1. Obtrusive data source error for failed uploads removed. (Added to item details)
  2. Server shutdown hook now correctly cleans up active data transfers during restart.
  3. Logging added to server shut down hook.
  4. Error messages for failed uploads improved.
  5. Web Traffic Manager (WTM) tools added to query server state and active threads.
  6. WTM JSON serialization updated to use same Jackson version as stacks.

Version 4.8.0

  1. Display summary now displays progress bar while processing summary.
  2. Display summary chunk reduced to 6 hours.
  3. Display report defaults to a single day.
  4. Report item search forces a report refresh.
  5. Stall detection for blob uploads. (warning to logs)

Version 4.7.11

  1. Content builders updated to cache and reuse icons.
  2. Single threaded icon loading. Hopefully prevents occasional livelock experienced on us-east-1 when building content.
  3. Timeout added to loading twitter icons.

Version 4.7.10

  1. Column visibility state saved in user data and reloaded at sign in.
  2. Ability to grant access to an external user by email address (was not possible in 4.7.9 due to drop down list)
  3. 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

  1. 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.
  2. Bulk item updating uses new user and group selection components.
  3. 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.
  4. Saving items before drop down lists are populated can no longer result in clearing a previously configured value.
  5. Busy icon displayed when populating drop down lists.

Version 4.7.8

  1. Replication now occurs every 900 milliseconds to encourage single secure connection reuse.

Version 4.7.7

  1. Frontend additions for two factor authentication.
  2. Fixed bug that incorrectly labeled statistics data from 2016-02-29 as data for 2017-03-01 .

Version 4.7.6

  1. Returning to a tab that has not been used in 5 minutes will trigger a automatic refresh.
  2. Returning older browser window that has not been used in 5 minutes will trigger an automatic refresh.
  3. Session timeout added to client JavaScript so the timeout message occurs without call to server.
  4. HTML5 player enhanced to support transparency of sequences used in composites.

Version 4.7.5

  1. Previewing a library item or a stack item now uses the HTML5 player rather than linking directly to a blobstore.
  2. Subtitle track support added to HTML5 video preview.
  3. Moved information about HTML5 preview limitations from admin interface into HTML5 player.

Version 4.7.4

  1. Granting access to additional users when item first saved now works correctly.
  2. Duration of successful burn-in test added to screen status as HH:mm:ss.

Version 4.7.3

  1. Fixed problem bulk updating custom players back to regular player.
  2. Changed colours for home tab data transfer graph.
  3. Fixed warning to display when building content and forgetting to press build.

Version 4.7.2

  1. Content builders now handle high concurrency better. Network I/O occurs prior to image rendering which is limited by Semaphore.

Version 4.7.1

  1. Fixed replication bug caused by multiple concurrent replication tasks writing state to replication.properties at same time.

Version 4.7.0

  1. Concurrent replication from multiple servers.
  2. Replication status and offset per server source added to home tab.
  3. Test status result added to home tab pie chart and map.
  4. New optional column for transfer speeds added to screen table.

Version 4.6.10

  1. Sorting by screen software column no longer uses a simple alphabetical sort. This ensures android-player-10.x comes after android-player-9.x.
  2. Health checking query optimised to reduce number of fields analysed in result set.

Version 4.6.9

  1. Removed links to specific reports from various menus and buttons if the reports are hidden.
  2. Added an alert message if an attempt is made to access a report or tab that is hidden from a user.
  3. Added synchronized block to prevent concurrent signing of ds-loader.apk before using cached version.

Version 4.6.8

  1. Added ability to hide each individual report item in the report tab. See Manual.
  2. Fixed problem with new screens not getting the correct access controls.

Version 4.6.7

  1. Fixed download option for screen status report.

Version 4.6.6

  1. When adding a new user auto-setup now grants new user permission before saving to avoid permission exception if the screen is already configured.
  2. Health checking is now continuous and uses separate threads (no longer on the request thread).

Version 4.6.5

  1. Searching by multiple groups fixed.

Version 4.6.4

  1. Searching groups and viewing item history for group fixed.

Version 4.6.3

  1. Ability to search multiple groups for items.
  2. Search optimised to use client search when possible.
  3. Added copy option to users and cloud configs.
  4. Changed the disable item option to expire item option.
  5. Changed the enable item option to reactivate item option.
  6. Added sequence option to remove expired items.
  7. Fixed send log command for narrow browsers such as phones.
  8. Added send log command to screen drop down.
  9. Open sequences and sequence library panel no longer perform full refresh when window resized.
  10. Accessibility improved by supporting keyboard focus better.
  11. Cloud configurations can now apply defaults to new library items.
  12. Cloud domains not checked if known online in session.
  13. Maximum concurrent uploads increased to 4.
  14. WTM now correctly constructs full URL in sendRedirect() as per RFC.

Version 4.6.2

  1. Removed item option to preview composite.
  2. Added item option to preview static web page.

Version 4.6.1

  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.
  2. Fixed problem where re-encode option did not hide popup allowing option to be clicked multiple times.
  3. Improved logic for drop down menus to ensure they never appear above the top of the screen.

Version 4.6.0

  1. Edit buttons replaced with more options button (vertical ellipses) with a drop down menu of options.
  2. Remove and edit buttons on stack items moved into more options button.
  3. Additional option on bottom of dialogs moved to more options buttons.
  4. Links from item details moved into more options button.
  5. Labels in tables can now be clicked to edit items.
  6. Access controls in dialogs only loaded and saved if the access control tab is clicked.
  7. Group name for new groups initialised to simplified label followed by cloud config name.
  8. Screen location map added to reports drop down.
  9. 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.
  10. Upper sequences no longer open when base is modified.
  11. Library items now show icon if reporting enabled.
  12. Whitespace at beginning and end of labels removed when saving.
  13. Labels limited to 40 characters in tables. Full label can be seen on mouse over.
  14. Drop down menus now display at sensible locations if near edges of screens.
  15. Large drop down menus on small screens now display in the center.
  16. Stacking icon shown for sequences that are stacked on a base.

Version 4.5.4

  1. When dragging from library to a sequence, selected library items are also added in adjacent slots.
  2. Icon for composites changed to more closely resemble multiple positioned items.

Version 4.5.3

  1. Colour of a slot header can now be set.
  2. Stack item now displays an icon if reporting enabled.
  3. New sorting options for reports.
  4. Warnings added when moving, inserting and removing slots.
  5. Summary report now updates UI asynchronously from RPC calls to improve performance.
  6. Searching screens for testStatus value now works as expected.

Version 4.5.2

  1. Prevented list scroll bars disappearing after a modal close button pressed and subsequent cancel or save button used.
  2. Modal abstraction enhanced to better support multiple modals.
  3. Added new event action to open a 3rd party application from the player.

Version 4.5.1

  1. Yahoo! OAuth2 service provider added.

Version 4.5.0

  1. OAuth2 abstraction to support additional service providers.
  2. Microsoft OAuth2 service provider added.
  3. Ability to set different OAuth2 provider details for each cloud config.
  4. New authentication tab for cloud configs.
  5. Improved button flow on mobile devices.
  6. Experimental support for operating as OAuth2 service provider for authorisation of API calls.

Version 4.4.0

  1. New column for screen table to send commands to restart and skip between items (hidden by default).
  2. Reliable UDP relay no longer requires fully connected mesh replication.
  3. UDP relay between regional servers no longer waits for replication before sending triggers and actions.
  4. UDP relay requiring screen data transfer now waits for modifiedMillis to update rather than replication.

Version 4.3.3

  1. Device storage status changed to ignore deletable, reserved data in free space warning.
  2. Condition group now defaults to having a single condition.
  3. Slot headings are shown for all slots (including slots with stacking disabled) when base is shown.
  4. Tool tips for stack headings now show slot label, slot number and all restrictions.
  5. Spaces, tabs, CRLF and LF acceptable as separated in list of MAC addresses.

Version 4.3.2

  1. Additional invalid characters in a list of MAC addresses ignored.
  2. Links for base sequences removed if referenced sequence not accessible to user.
  3. Mouse over area for item details enlarged.
  4. Library items have separate mouse over areas for access controls and item details.
  5. Fixed issue where a resource with no content type could prevent item widget displaying in admin interface.
  6. Offline markers on maps hidden if there are more than 500 markers.
  7. Map no longer updated when home tab clicked except on refresh.
  8. Progress bars when datasource missing no longer flicker.
  9. Missing datasource error displays for longer and can be dismissed.
  10. Device data transfer dialog now includes a timeout at 60 seconds.
  11. Improved support for ipv6.

Version 4.3.1

  1. Reporting options added to library items. These options function as defaults for when the library is copied to a sequence.
  2. New advanced tab for library item editor including buttons to jump to display report and summary.
  3. Ability to perform mass update on a list of MACs even if no screens are selected.
  4. New storage, download and warning icons for screen status.
  5. Tabs only refresh when first loaded or when refresh button is pressed.
  6. Home tab includes refresh buttons.
  7. User and group summary split into 3 different API calls (counts, storage, screen)
  8. Additional date ranges added to screen statistics on home tab.
  9. Default date range for screen statistics on home tab is now 3 months.
  10. Added shake animation when password is incorrect.
  11. Small change to hopefully make list scrollbars return after a modal for some custom themes.
  12. Analytics player updated to 10.3 (Analytics library 1.6.1).

Version 4.2.2

  1. Replication bug where ghosts appear after a save and a delete in quick succession fixed.
  2. New web pages for monitoring server status.
  3. Duplicate value bug in online status bar chart fixed.

Version 4.2.1

  1. Display report now shows displayed sequence items that were added from the library.
  2. Pagination restricted to 10 items to prevent excessive page links.
  3. Loading animation moved to index page so it displays before GWT starts.
  4. Clear location option added to screen multiple selection dialog.
  5. Data UI component rewritten to resolve delete and premature sorting problems.
  6. ETags now are correctly quoted as defined in RFC7232.
  7. WTM updated to protect against Slow Loris and similar DOS attacks.
  8. Server max concurrency increased.

Version 4.1.0

  1. Screen time zone override added to location.
  2. Time zone updated when new location search result selected or map pin moved.
  3. Time zone automatically set for new screens.
  4. JPEG Exif information read and images with custom orientation are now rotated prior to upload to blobstore.
  5. To ensure the best compatibility and image file size, all uploaded images are re-encoded.

Version 4.0.2

  1. Sequence selection no longer reset when switching between dialog tabs.
  2. 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

  1. Multiple concurrent updates of the same datasource now block and wait if no existing snapshot.
  2. Concurrent blob upload performance and media processing speed improved.

Version 4.0.0

  1. Libraries updated, repackaged and refactored.
  2. Core classes for clients and server separated.
  3. Server now compiled for Java 8 and clients Java 6 to maintain compatibility with early Android.
  4. Server now uses Jackson 2.8.2.
  5. Amazon Web Services SDK updated to 1.11.37.
  6. Maxmind geoip updated to 1.2.1.
  7. Mongo driver updated to 3.3.0, Morphia 1.2.1
  8. Stacks engine and player controller repackaged.

Version 3.2.0

  1. New display summary added to reports.
  2. Display summary displays the number of impressions of each item.
  3. Reporting tab options reordered.
  4. Screen statistics on home screen changed to default to 60 days with options of 8 hours, 48 hours and 5 years.
  5. Animation added to graphs on home screen.

Version 3.1.9

  1. RPC loading requests now cancelled when switching to a different tab.
  2. libraryItemId is not populated in stack items when dragging from library into sequence.

Version 3.1.8

  1. Circles drawn on map to illustrate active area when building location based conditions.
  2. Google maps integration now uses latest release of API by default.

Version 3.1.7

  1. Data source monitoring and refresh now more responsive, can detect data source failure and show red progress bar.
  2. Location conditions can now be set in meters and yards.
  3. Location builder will display a previously set location condition.
  4. Sequence test data dialog updated to include analytics test data and location select button.

Version 3.1.6

  1. New button in data tab of objects to open the REST API endpoint.

Version 3.1.5

  1. The snap to grid option for composite items is stored.
  2. Library dialog always refreshes.
  3. Refresh button icon spins when server search occurs.
  4. RESTful API updated and is no longer read-only.

Version 3.1.4

  1. Fixed problem assigning groups while masquerading if the end user does not have access to the group.

Version 3.1.3

  1. Sort by modified date option added to sequences tab.
  2. Auto setup last mac address fix.

Version 3.1.2

  1. Highlighted rows in table stay highlighted after refresh.
  2. Sequence frame feature now available by default.
  3. Masquerade chaining support.

Version 3.1.1

  1. Last clicked row in table remains highlighted.
  2. Table view added for library.
  3. Slots can now be given a label.
  4. A slot can now be moved and all items in the stack will be moved too.
  5. A new slot can be inserted shifting all slots to the right.
  6. User agent set for remote imports. User-Agent: TargetR-Stacks/version

Version 3.0.1

  1. Support for adding a Frame around sequences.
    1. Display additional items around a sequence without creating composite items.
    2. New tab named Frame in sequence settings.
    3. Frame can be disabled for individual items within the sequence.
    4. Requires android-player-9.0 or above.
  2. Support for uploading and displaying single HTML pages not in a web page zip.

Version 2.21.3

  1. Fix for finding content type of data sources imported from remote FTP servers.

Version 2.21.2

  1. Admin interface more accurately reports active uploads and dynamic datasource updates.

Version 2.21.1

  1. Exceptions now sent to StackDriver error reporting via fluentd for analysis.

Version 2.20.5

  1. Option to show branding image top left of admin interface.
  2. Screen status icon now clickable to sho screen status history.

Version 2.20.4

  1. Selection removed after bulk operation.
  2. Max results label moved to a notify message.
  3. Several minor cosmetic changes to make interface more compact.
  4. Google maps now sends API key to support new domains.

Version 2.20.3

  1. Fixed problem that prevented modal dialogs scrolling if more than one opened.

Version 2.20.2

  1. Screen edit functionality can be disabled for a user.
  2. Disabling sequence create feature also disables edit sequence settings, copy and remove.
  3. Default order for reports is now most recent on top.
  4. Default start date for display reports now set to day before current.
  5. Multiple selection button now shows the number of selected items.
  6. Screen status report now fetches status history in pages size chunks to support more screens.

Version 2.20.1

  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

  1. Added cloud config column to users table.
  2. Fixed issue where additional access controls were lost when new items added.

Version 2.19.2

  1. Fixed issue where an inner sequence containing more than one of the same inner sequence reported an error.

Version 2.19.1

  1. Columns in tables can now be shown and hidden. Selection of columns available by pressing search button.
  2. Changed default max results to 5000. Set maxResults=1000 in user data to revert.
  3. Pagination buttons added above and below lists.
  4. Fixed issue where save button remained disabled after a warning dialog was shown.

Version 2.18.5

  1. Reduced size of data on the data tab to see more.
  2. Changed default page size to 20. Set pagesSize=10 in user data to revert.

Version 2.18.4

  1. Small sequence preview shown for sequences used inside composites.
  2. Duration box split into minutes and seconds.
  3. Items grayed out if no resources are available for display.

Version 2.18.3

  1. Screen storage details updated to display coloured key on mouse over.
  2. Save buttons disabled when network communications are active and re-enabled when complete to prevent duplicate clicks.

Version 2.18.2

  1. Preview images for inner sequences now more accurately represent what will display.
  2. Fixed problem where a sequence of 10 or more inactive slots could cause subsequent condition evaluation to be skipped.

Version 2.18.1

  1. Content builders now use the Roboto font by default.
  2. Content builders now output higher quality JPEG images (0.9).

Version 2.17.5

  1. New option to update a sequence from a Media RSS feed immediately. (Overrides TTL and caches)

Version 2.17.4

  1. Media RSS items can now generate composites for displaying text below the media. Needs player support (beta).
  2. Additional checks to ensure that an inner sequence does not refer to an outer sequence causing an infinite loop.

Version 2.17.3

  1. Option to create sequence from Media RSS now includes option to auto update. (Same as setting sequence type as Media RSS)
  2. Multiple test HTML pages for demonstrating remote control using API triggers.

Version 2.17.2

  1. User auto-setup option allows lower case MAC address and spaces.
  2. Building location condition now adds comment.

Version 2.17.1

  1. Added new condition builder to help with building conditions using analytics data.
  2. Updated the weather content builder to use Open Weather Maps in addition to World Weather Online.
  3. Added language support to weather content builder (beta).
  4. Added ability to set digital signature key index into cloud configuration.

Version 2.16.2

  1. 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.
  2. Standby condition and period can be overridden in screen data.

Version 2.16.1

  1. New report that lists uploads to the blobstore for media distribution. (Logging started 2016-03-24)
  2. Thumbnails added to display reports and collected data reports.
  3. Content builders now apply black polished wood texture rather than default blue. This helps avoid colour clashes.

Version 2.15.4

  1. User action report can be downloaded as CSV for spreadsheets.
  2. User action report can be downloaded as a Gource custom data file for visualisation.
  3. Advanced condition builder improved – time.between(…) added.

Version 2.15.4

  1. 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.
  2. The home tab for a user can now be hidden.
  3. Options to edit user settings and show user history added to user button, top right of interface (so home tab not required).
  4. Screen status report now supports displaying a server managed subset of screens for when 1000 screen limit exceeded.
  5. Drag and drop from file browser into the library or sequence enhanced.
  6. Dropping multiple files into the library now shows upload queue size.

Version 2.15.3

  1. New filter button added to library. Filter by type, resolution, aspect ratio and duration.
  2. New sorting options added to library.

Version 2.15.2

  1. Dragging items from library to a sequence more efficient (no longer rebuilds sequence).
  2. Library now uses 1/3 of width of sequence tab when open.
  3. Removed browser support warning for Safari. Works great in Safari now.
  4. Undo and redo buttons moved to sequence header when there is space.

Version 2.15.1

  1. Library button in sequence view shows library alongside sequences.
  2. Library items can now be dragged into sequences.
  3. Items can now be dragged between sequences.

Version 2.14.2

  1. Library items and stack items display further details when mouse is hovered over icons.
  2. Animation added to popup details.

Version 2.14.1

  1. Initial communications rate with DS Loader increased to help set new dynamic clock in player.
  2. Administration interface AbstractForm extended to remove unnecessary IFrame (faster modal dialogs).
  3. Additional check to ensure ACLs are loaded before saving items.
  4. Full list of users and groups visible when performing bulk operations while masquerading.

Version 2.13.1

  1. Cloud configurations can now include password policies.
  2. Full list of sequences visible and can be set as a bases while masquerading.
  3. New warnings for session expiration and masquerading errors.

Version 2.12.3

  1. Top navigation bar icons added to reporting section.

Version 2.12.2

  1. MongoDB library updated to 3.2.1
  2. Morphia library updated to 1.0.1
  3. Jackson library updated to 2.3.2.

Version 2.12.1

  1. Server now processes e-mail and can add e-mailed media to sequences.
  2. Added new custom type drop down in sequence settings.
  3. New custom sequence type for populating sequences by e-mail.
  4. Media RSS tab moved under custom sequence type.
  5. Fixed error message when uploading custom theme elements to cloud config.

Version 2.11.1

  1. Reporting database moved to Google Cloud SQL.
  2. Links added to report rows in user interface.
  3. Report streaming to support large report downloads.
  4. New screen status report added.
  5. Screen status logged every 10 minutes.
  6. Aggregated statistics for hourly, daily and monthly.
  7. Screen statistics graphs on home tab.

Version 2.10.1

  1. Results of test player displayed in screen status column.

Android ExoPlayer

Version 4.4 – 2018-09-12

  1. The reported values for free storage space are now more accurately updated when custom settings are applied to blobstoreInternalblobstoreExternal and blobstoreDir.

Version 4.3 – 2018-08-23

  1. Google Exoplayer library updated to version 2.8.4
  2. 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

  1. 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.
  2. Added requiredGpsAccuracy to support setting the accuracy required for GPS to be updated. Default is 50 meters.
  3. 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.
  4. Enhanced how dynamic clock is set after restarting the app using server time offsets.

Version 4.0 – 2018-07-26

  1. Changed video playback stall detection to be less strict to reduced unecessary restarts on slow devices.
  2. Fixed restart caused by specifying a BLE config when no supported hardware on device.
  3. 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

  1. Added support for checking if GPS is inside a polygon for advanced conditions – gpsInside(lat1,lng1,lat1,lng2,lat1,lng2)
  2. Key event handling updated. Recommend using android-player-17.1.apk if interactivity is required.

Version 3.0 – 2018-06-28

  1. Google Exoplayer library updated to version 2.8.2
  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.
  3. Monitors custom media sources for completion and can trigger progression.
  4. Built with Gradle 3.1.3 and Android tools 27.0.3

Version 2.2 – 2018-06-28

  1. Updated how display report data and collected data is parsed and sent to the server.
  2. Added more logging for player communications.

Version 2.1 – 2018-06-15

  1. Limited gapless playlist to 100 items before reinitialising ExoPlayer component (previously 1000). Long playlists appears to cause stutter sometimes.
  2. Added more logging for NFC detection.

Version 2.0 – 2018-06-06

  1. 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.
  2. When storage is full, the cleanup routine only deletes items necessary to download active items.
  3. Items scheduled later are deleted to make space for items scheduled sooner.
  4. 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

  1. 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

  1. Collected data report corruption issue fixed.

Version 1.2 – 2018-05-03

  1. Added workaround for proxies and firewalls that remove the Range header from requests. Download resuming not possible in such situations.
  2. Added additional 5 second delay after download failures to prevent network overload.
  3. Added hdmiState to screen data to report HDMI connection status.

Version 1.1 – 2018-03-02

  1. 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.
  2. Added getScreenData(...) to JavaScript interface.
  3. Added support for sending an RS232 command at startup by adding rs232outputAtStart=... to screen data.

Version 1.0 – 2018-03-02

  1. 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.
  2. 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.
  3. Scrollbars on WebViews now hidden unless resource is marked as interactive.
  4. After 4 months of testing, player has been promoted to version 1.0, stable status.

Version 0.12 – 2018-02-21

  1. 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

  1. 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.
  2. 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.
  3. Removed unused field sequenceId from StackItem.

Version 0.10 – 2017-11-23

  1. Added support for report=false to screen data. This option will disable reporting entirely.
  2. Prevented reporting on items referring to inner sequences if there are no items ready to be displayed.
  3. 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.
  4. 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.
  5. Added branch back button
  6. Added default interaction animations

Version 0.9 – 2017-11-15

  1. Fixed restart problem caused by adding inner sequence to a sequence frame.
  2. Added Samsung RS-232 Screen control.

Version 0.8 – 2017-10-21

  1. Fixed problem with playback data collection that could result in missing entries if playback sync enabled.
  2. Only prints insufficient storage warnings in logs if all storage locations are full.

Version 0.7 – 2017-10-20

  1. Added additional check to confirm video is playing before playback reporting.
  2. Reduced default buffers for ExoPlayer. Only small buffers needed since playback is from local files.

Version 0.6 – 2017-10-17

  1. Added playback reporting.
  2. Added additional logging to monitor playback state changes.

Version 0.5 – 2017-10-12

  1. Added support for showing labels.
  2. Fixed playback synchronisation issue when multiple devices on same network played different root sequences.

Version 0.4 – 2017-10-12

  1. Improved interactivity support.

Version 0.3 – 2017-09-22

  1. Fixed problem playing short videos less than 5 seconds.
  2. Fixed problem with sequence frame not filling screen if resolution changes while running.
  3. 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

  1. Fixed problem causing videos with subtitles to stall.
  2. Added support for remote API triggers.

Version 0.2 – 2017-09-20

  1. Linked events mechanism with new views.
  2. Added WebView support and view recycling/caching.

Version 0.1 Pre-release

  1. Replaced Android VideoView with ExoPlayer.
  2. Rewrote all views to support preparing ahead of time for quick view switching.

Android Player

Version 18.4 – 2018-09-12

  1. Fixed problem where the first two storage locations (blobstoreInternal and blobstoreExternal) could still be used even if they are disabled.
  2. The reported values for free storage space are now more accurately updated when custom settings are applied to blobstoreInternalblobstoreExternal and blobstoreDir.

Version 18.3 – 2018-08-23

  1. 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

  1. 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

  1. 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.
  2. Added requiredGpsAccuracy to support setting the accuracy required for GPS to be updated. Default is 50 meters.
  3. 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.
  4. Enhanced how dynamic clock is set after restarting the app using server time offsets.

Version 18.0 – 2018-07-25

  1. Fixed restart caused by specifying a BLE config when no supported hardware on device.
  2. 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

  1. Added support for checking if GPS is inside a polygon for advanced conditions – gpsInside(lat1,lng1,lat1,lng2,lat1,lng2)
  2. Key events are now processed by all sequences currently on the screen.

Version 17.0 – 2018-06-28

  1. Added new screen data option reportOptions=verifyClock to prevent storing reporting records and collecting data if the clock has not be verified as correct.
  2. Built with Gradle 3.1.3 and Android tools 27.0.3

Version 16.2 – 2018-06-28

  1. Updated how display report data and collected data is parsed and sent to the server.
  2. Added more logging for player communications.

Version 16.1 – 2018-06-15

  1. 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

  1. 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.
  2. When storage is full, the cleanup routine only deletes items necessary to download active items.
  3. Items scheduled later are deleted to make space for items scheduled sooner.
  4. 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

  1. 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

  1. Collected data report corruption issue fixed.

Version 15.1 – 2018-05-03

  1. Added workaround for proxies and firewalls that remove the Range header from requests. Download resuming not possible in such situations.
  2. Added additional 5 second delay after download failures to prevent network overload.
  3. Added hdmiState to screen data to report HDMI connection status.

Version 15.0 – 2018-03-02

  1. 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.
  2. Added getScreenData(...) to JavaScript interface.
  3. Added support for sending an RS232 command at startup when rs232outputAtStart=... added to screen data.

Version 14.5 – 2018-03-02

  1. 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.
  2. 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.
  3. Scrollbars on WebViews now hidden unless resource is marked as interactive.

Version 14.4 – 2018-01-24

  1. 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.
  2. Removed unused field sequenceId from StackItem.
  3. 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

  1. 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

  1. Added support for report=false to screen data. This option will disable reporting entirely.
  2. Prevented reporting on items referring to inner sequences if there are no items ready to be displayed.
  3. 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.
  4. 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.
  5. Increased the branch limit from 10 to 100 to support deep interactive menu systems.

Version 14.1 – 2017-11-15

  1. Exit prompt shown when back is pressed 5 times rapidly.
  2. Added Samsung RS-232 Screen control.

Version 14.0 – 2017-10-24

  1. Repackaged as APK to support easier testing in Android Studio without DS Loader.
  2. Avoids accessing blobstore as mode public (which was required in early Android for video playback).
  3. Only prints insufficient storage warning in logs if all storage locations are full.

Version 13.2 – 2017-09-08

  1. Player communications timeout increased to 60 seconds.
  2. Single background thread for player communications.

Version 13.1 – 2017-09-01

  1. Fixed problem applying yOverride.

Version 13.0 – 2017-08-17

  1. 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

  1. 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

  1. Support for RS232 HEX encoded output using rs232outputFormat=hex.
  2. RS232 logging improved.

Version 11.13 – 2017-07-06

  1. Output from RS232 after sending command is sent to logcat.
  2. After failing to send a command to RS232, reconnection is attempted.

Version 11.12 – 2017-06-27

  1. 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

  1. Added new functions for custom timezones in conditions.
  2. 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

  1. Empty barcode events ignored and not collected.

Version 11.9 – 2017-05-25

  1. 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

  1. Storage statistics sent to server when downloads finish even when updateCondition=false.
  2. Transfer rate statistics are now based on most recent 10 downloads/uploads and not removed.

Version 11.7 – 2017-05-17

  1. Conditional logic for internetBlobsCondition and intranetBlobsCondition now correctly evaluated when updateCondition=false
  2. 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.
  3. When active period is too short to download the required data, downloading is controlled by evaluating the conditional logic above.
  4. Frequency of local blob request sending reduced to once every 30 seconds to support slow networks.
  5. Minimum acceptable transfer rate reduced to 4KB/s over a period of 1 minute to support very slow networks without dropping connections.
  6. If a local peer or Internet blob data transfer fails, a retry is not attempted for 5 minutes from same source.
  7. Note: This update will make downloading from secondary Internet blobstores more likely if there are frequent failures.

Version 11.6 – 2017-05-12

  1. 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

  1. 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.
  2. Download sources that generated an error are now blocked for 10 minutes. (previously 1 hour).

Version 11.4

  1. Support for stretching images, bypassing aspect ratio lock. (stretch=true in items)

Version 11.3

  1. Player components are reused if onCreate() called twice during screen rotation. Requires DS Loader 12.7.

Version 11.2

  1. Support for RS-232 output using USB to RS-232 converters.
    1. Most Prolific and FTDI chipsets supported.
    2. 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)
    3. 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

  1. Fixed issue that prevented fresh installations creating directories for blobstore in secondary location.

Version 11.0

  1. 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.
  2. Blobstore reports storage statistics only when downloading.

Version 10.7

  1. Screen data for restartTime, rebootTime and exitTime transferred to ds-loader.

Version 10.6

  1. Added support for event actions to open 3rd party applications.
  2. Fixed problem introduced in 10.5 that prevented updating the dynamic clock.

Version 10.5

  1. 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.
  2. Status icon added. Enable with showStatusIcon=true.

Version 10.3

  1. A timeZoneOverride in screen data is now set as the system default.

Version 10.2

  1. Fixed issue that interrupted reporting if the user navigated to previous item.

Version 10.1

  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

  1. Uses repackaged classes from server version 4.0.

Version 9.8

  1. Active sequence frames now updated (if required) when downloading completes.

Version 9.7

  1. Bar code scanning can now function even if there are no active items on the screen.

Version 9.6

  1. New option to collect GPS location and send to collected data report. Enable collectGps=true in screen data.
  2. Support for new conditional functions distanceMeters(latitude,longitude) and distanceYards(latitude,longitude).

Version 9.5

  1. Fixed problem where videos in a composite failed to start if syncVideoMode=2.

Version 9.4

  1. When playback synchronisation is enabled, video cleanup is delayed by 300ms. Reduces black gaps.

Version 9.3

  1. 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

  1. Fixed recursive framing issue that occured if a frame or composite item contained inner sequence.

Version 9.1

  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

  1. Support for sequence frames added.

Version 8.6

  1. 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

  1. Support for displaying labels of items in a sequence.
  2. 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

  1. A thumbnail image with use ticked prevented items displaying on player 8.3. This is now resolved.

Version 8.3

  1. Fixed issue where an inner sequence containing more than one of the same inner sequence reported an error.

Version 8.2

  1. 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

  1. An item will only be selected for display if all resources associated with the item are available.
  2. Resource selection updated to prefer matching aspect ratio images or videos for display area.

Version 8.0

  1. Core evaluation engine updated to handle inner sequences and branching more efficiently.
  2. Fixed problem where a sequence of 10 or more inactive slots could cause subsequent condition evaluation to be skipped.
  3. Data from composite items correctly added to URL when ~dataName is used.

Version 7.6

  1. Fixed issue where two successive triggers in less than the duration of active transition could cause view hierarchy to be cleared.
  2. Added stackNumber to data for use in conditions.

Version 7.5

  1. 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

  1. 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

  1. 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

  1. Core stacks engine updated to resolve issues with some advanced conditions.
  2. 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.
  3. Additional write check to ensure that read only storage is not included in free-space count.

Version 7.1

  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

  1. Devices that fail to serve valid blobs via p2p blob sharing get blacklisted and subsequently ignored.
  2. WebViews are cached and reused for quick web page display. Disable with webViewReuse=0.
  3. Minimum blob transfer rate controlled using blobTransferRateMin. Connections are terminated if transfer rate falls below this value. Alternate sources will be used.
  4. 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.
  5. Transfer rates of blobs added to log output.

Version 6.6

  1. Event actions to show item with a undefined resume delay no longer causes app restart.

Version 6.5

  1. Screen cleared and controller removed when sequence set to none after being active. Resolves issue with blackCondition not functioning.
  2. Device TimeZone can now be overridden by setting timeZoneOverride in screen data.
  3. Overridden values such as xOverride, yOverride, widthOverride, heightOverride must follow convention of Override being a suffix not prefix.

Version 6.4

  1. Multiple video playback synchronisation modes added see manual.

Version 6.3

  1. Event actions to show web page with a undefined resume delay no longer causes app restart.

Version 6.2

  1. Additional playback synchronisation optimisation to improve accuracy.

Version 6.1

  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.
  2. 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

  1. Key sequences (such as from barcode reader) only trigger events in main sequence and not inner sequences within composite views.

Version 5.3

  1. Jackson JSON serialisation library updated to 2.3.2 (last version supporting Android 2.2).

Version 5.2

  1. 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

  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.
  2. Temp directory now emptied at startup.

Android Test

Version 1.7 – 2018-01-12

  1. Fixed problem that caused invalid comma separator to be used in GPS values when European locale used.
  2. Repackaged as APK.

Version 1.6 – 2017-07-28

  1. GPS status enhanced to show GPS location.
  2. Detection of video playback failure less strict. 3 second startup time allowed.

Version 1.5 – 2017-07-23

  1. GPS status checked. Android location manager used to report number of satellites. Not part of final test result.

Version 1.4 – 2017-05-24

  1. Patch to enable use of hidden WiFi networks.

Version 1.3

  1. Added additional logging to help debug unexpected device reboots.
  2. Added testStartCount and testEndCount to help detect unexpected mid testing reboots.
  3. Additional checks to ensure server receives testRunTime after the long test and is reloaded after reboot.

Version 1.2

  1. After completing the long test the device will reboot (if rooted).
  2. Timer added to bottom left displaying the total time test has been running (burn-in).
  3. Timer resumes after a reboot to show total test run time.
  4. A failure will stop test and timer. A clear data command must be sent to test again.
  5. Test results sent to server updated:
    • testStatus
    • testFailReason
    • testRunTime
    • testCpuMegacalcsMin
    • testRamWriteRateMin
    • testRamReadRateMin
    • testRamWriteMax
    • testStorageWriteRateMin
    • testStorageReadRateMin
    • testStorageWriteMax
    • testStorageExtWriteRateMin
    • testStorageExtReadRateMin
    • testStorageExtWriteMax
    • wifiRssi
    • wifiSpeed

Version 1.1

  1. Does not report quick test pass until server has received result.

Version 1.0

  1. Now uses repackaged classes from server version 4.0.

Version 0.16

  1. Patch to fix incorrect network configuration for a large partner.

Version 0.15

  1. More accurate detection of available screen resolution. Also updates if ds-loader removes SystemUI.
  2. Vertical and horizontal line test to help detect if device pixel resolution matches screen pixel resolution.

Version 0.14

  1. Additional test results sent to server:
    • cpuMegacalcs
    • ramWriteRate
    • ramReadRate
    • storageWriteRate
    • storageWriteExtRate
    • storageWriteMax
    • storageWriteExtMax
    • storageReadRate
    • storageReadExtRate
    • testVideoPlayback
    • wifiRssi

Version 0.13

  1. Failure to write to primary storage now considered as fail. (Even if secondary is OK).

Version 0.12

  1. VideoView added and removed from view hierarchy instead of being reused.

Version 0.11

  1. No longer tests storage (ext) if it is unavailable or mounted as read only.
  2. Removed test checking read speed greater than 5MB/s.
  3. Added additional exception handling to WiFi test.

Version 0.10

  1. Method used for allocating random byte arrays for testing changed to reduce garbage collection.
  2. Method used for reading from files to verify written data updated.

Version 0.9

  1. Bug fixed which could result in the test running in 2 concurrent threads after a failure.
  2. Jackson JSON serialisation library updated to 2.3.2 (last version supporting Android 2.2).

Version 0.7

  1. WiFi speed and signal strength updated each second.

Version 0.6

  1. WiFi speed and signal strength displayed.
  2. Barcode of MAC address displayed to aid manufacture.

Version 0.5

  1. A temp directory is now used for testing storage (not blobstore).
  2. Reduced RAM quick test to 64MB.
  3. Reduced storage quick test to 128MB.

Android DS Loader

Version 13.0

  1. 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

  1. 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

  1. Prevention of a second instance of a player starting when onCreate() called twice during rotation on some versions of Android.

Version 12.6

  1. Screenshot option now uses Android system screencap on rooted devices so hardware accelerated video can be captured.

Version 12.5

  1. APK rebuilt and versionName set to 12.5 and versionCode to 1205

Version 12.4

  1. New Android Intent added to support USB to RS-232 devices.

Version 12.3

  1. Scheduled restart, reboot and exit applied from screen data restartTime, rebootTime and exitTime variables. (Requires player 10.7)

Version 12.2

  1. Issues “netcfg eth0 down, netcfg eth0 up” if device rooted, eth0 is active and no comms in last 10 minutes.

Version 12.0

  1. Now uses repackaged classes from server version 4.0.

Version 11.2

  1. Loader information no longer displayed when running as a daydream.
  2. Hardware product label and Android API version displayed top right.
  3. MAC address shown top left in addition to center to help with reading on screens where the full resolution not visible.

Version 11.1

  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

  1. Network interfaces monitored. A retry will occur sooner after a network interface reports being reconnected.
  2. Connection timeout and read timeout for posting logs and screenshots increased from 10 seconds to 30 seconds.
  3. Connections to post logs and screenshots will retry up to 5 times.
  4. DS Loader information now fades out before player starts.

Version 10.1

  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

  1. 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.
  2. Log entries reformatted to highlight starting and finishing the main DS Loader management loop.
  3. New permissions added for supporting future features such as voice commands.
  4. The Android System UI is only killed if the device is known to be rooted.

Version 9.4

  1. Root detection moved off main thread to improve startup time and reduce chances of ANR warning at startup.

Version 9.3

  1. 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

  1. Old v1 players are disabled, then killed then removed. (Device must be rooted)

Version 9.0

  1. Additional layer of security added to verify player update integrity.

Version 8.7

  1. Device TimeZone used by restartTime can now be overridden by timeZoneOverride.

Version 8.6

  1. Server time sent to the player improving dynamic clock accuracy for playback sychronisation.

Version 8.5

  1. MAC address now listed in DS Settings.

Version 8.3

  1. Rooted devices search for and delete v1 players.

Version 8.2

  1. Temp directory (used for testing) now emptied at startup.

Platform Configuration

Four active servers:

  1. useast1 (GCE)
  2. europe1 (GCE)
  3. asia1 (EC2)
  4. uswest1 (Linode)

Internet traffic routed to server with lowest latency that passes a health check (Amazon Route 53).

Local Databases

Each server has its own local instance of MongoDB. Data is replicated asynchronously with eventual consistency. Replication process occurs every 5 seconds.

Media Storage

Videos, images and other media is stored in Google Cloud Storage and Amazon S3.

Reporting Database

Custom Data Warehouse

Reporting database stores display reports, collected data, screen status history, user audit trail and media upload log.

Server instances write to shared custom data warehouse on useast1. All servers can buffer at least 100 million records if useast1 is unavailable.

Backup

  • Media is duplicated and stored in both GCS and S3.
  • MongoDB on useast1 backed up daily 08:00 GMT.
  • Data Warehouse on useast1 backed up daily 04:00 GMT.