DIVA v4.0.0

Today we release DIVA version 4, with a whole new client, including macOS 10.14 Mojave support. You can read more about the new client here.

The new client is the same on both macOS and Windows now. On Mac there is a minimum system requirement of macOS 10.13.6. If you need to run macOS 10.14 then you must also be running DIVAFS.

There is also a new licensing system, fixes for project backups, and a whole slew of other changes which make adding new features much easier going forward.

Features

  • Angular:
    • raygun reporting
    • loading spinner
    • add warning function to logger
    • add DriveHelperService
    • RaygunErrorHandler enable flag
    • add additional Toastr styles
    • drive type enum pipe
    • add space used to drive api model
    • drive usage component
    • drive status component
    • drive icon directive
    • add utils service
    • add file size pipe
    • add drive model
    • add drive type enum
    • add drive status enum
    • logging options for Raygun and console
    • logging service
    • relative time component
    • add Toastr service
    • swing animation
    • include DIVA icons
    • add PixelAdmin scripts
    • add FontAwesome
  • Client:
    • option to permanently disable divafs
    • install updates on start if pending
    • edit menu
    • set log level in preferences
    • add quit to menu
    • move preferences under user menu
    • hide and show app from main menu (Mac)
    • favourites search
    • show mounted letter in drive list (Win)
    • what’s new first screen
    • set preferred first screen
    • user preferences
    • put users email address in support form if known
    • directly send log files without modal
    • whats new - feedback and support
    • feedback and support modals
    • add MailService
    • allow update install from sign in screen
    • add feedback button to footer
    • footer with connection status
    • add status property to SignalRService
    • use refresh tokens
    • add icons to user menu
    • display whats new to users
    • disable DIVAFS with –divafsDisable
    • drives loading spinner
    • set application menus
    • hide drive list when drive selected in small windows
    • clear all drive filters
    • set default API timeout to 10 seconds
    • unmount all drives button
    • report suite details on sign in and refresh
    • node exec and execSync helpers
    • hide drive details if no drive selected
    • build in elevate command (Win)
    • make app root path available on app service
    • add a service for running node commands
    • include hostname with Raygun errors
    • add dashboard link to navbar
    • remember window position and size
    • set site name on Raygun
    • ApiService.sayHello
    • add –debug flag
    • disable network ds_store files (Mac)
    • track favourite mount
    • update favourite list when changed on server
    • mount favourite drives
    • add preferred letter to favourite model
    • list favourites
    • favourite api retrieve drives
    • update drive list when permission is updated
    • update drives when usage changes
    • handle drive disabled and enabled
    • update drives when node online or offline
    • add home link to SignalR dev output
    • install divafs if required after changing server
    • only prompt to close if drives are mounted
    • locally store the mounted drive information incase of client crash
    • track if the user cleanly signed out or not
    • track drive mount, unmount, and browse events
    • unmount all drives when signing out
    • report drive unmounted
    • browse mounted drives
    • DrivePlatformService for Mac and Windows
    • DivafsService mount and unmount methods
    • store encrypted password after signin
    • add IsWindowsServer check to AppService
    • inject CryptService into ApiService
    • add CryptService
    • add mounted to DriveApiService
    • track available drive letters (Win)
    • enable RaygunErrorHandler only if ProdMode
    • package app with DIVAFS files
    • redirect to DIVAFS install as required
    • retrieve DIVAFS enabled status on sign in
    • Windows DivafsService
    • Mac DivafsService
    • test DivafsService
    • DivafsService provider
    • base DivafsService
    • store DIVAFS enabled status in config
    • detect platform
    • toast when drive deleted
    • add Toastr instance to appService
    • remove drive from list when deleted when notified by SignalR
    • update drive information when notified by SignalR
    • force view refresh when drive collection updates
    • sort drives by name
    • focus search textbox on drive interface load
    • register username to SignalR connection
    • filter drives by type
    • filter drives by status
    • search drive list
    • scroll drive list
    • display details of selected drive
    • highlight selected drive
    • use drive service to manage if drive mount is enabled
    • drive list
    • drives service
    • add Electron check to app service
    • conditionally enable logging based on environment
    • only check for updates in production mode
    • check for updates every 5 minutes
    • NSIS installer and updates
    • check in every 30 seconds
    • add SignalR client
    • event tracking
    • navigation tracking
    • handle computer shutdown (Win)
    • prompt before closing if signed in
    • refresh authorisation token
    • set X-JsonResponseCase header
    • send hostname on signin
    • settings screen
    • protected routes
    • create shortcuts on install (Win)
    • automatic updates
    • add AppService
    • spin DIVA logo while signing in
    • use DIVA icon on sign in
    • thinking animation when signing in
    • configure automatic update URL (Win)
    • application icon
    • installing GIF (Win)
    • sign in, out, and main navigation
    • AuthService
    • ApiService
    • ConfigService
    • add PixelAdmin
    • loading screen
  • Core:
    • SHA256 encoding
    • RSA encryptor
  • DIVA:
    • add JWT configuration properties
    • add license code to configuration
  • Data:
    • define file version relationships
    • allow database name to be specified
    • add Member.RefreshToken
    • increase user timeout to 1 minute
    • setup ApplicationDbContext
  • Database: file versions no cascade
  • Fusion:
    • allow user to sign back into same hostname
    • show username on drive permissions
    • user preferences first screen
    • add email to JWT token
    • return no_token if token not present during refresh
    • enable, disable, or health check all drives on a single node
    • hide disabled drives from clients
    • set and use license codes
    • issue and use refresh tokens
    • add computer checkin API endpoint
    • retrieve and store user properties via API
    • authorize SignalR server broadcasts
    • set retention period for offline edit suites
    • show when an edit suite was last online
    • notify SignalR after database commit when changing user drive permissions
    • register client suite details on sign in
    • set mime type for blockmap extensions
    • return site name with hello response
    • provide preferred drive letter with favourite via api
    • api get favourites endpoint
    • add volumeId to drive api model
    • add isEnabled to drive api model
    • send node id with drive api model
    • drive unmounted api endpoint
    • add drive remote properties to DriveApiModel
    • drive mounted api endpoint
    • return not found if user doesn’t have access to requested drive
    • get single drive via api
    • send notifications to clients via SignalR
    • add space used to drive api model
    • api v4 drives controller
    • get current user via base api controller
    • api v4 drive model
    • serve yaml update files for client updates
    • API user checkin
    • SignalR debug output
    • add SignalR client hub
    • record hostname on reauthorize
    • issue longer JWT for remembered connections
    • set JSON response case based on X-JsonResponseCase header
    • enable CORS
    • client updates controller
    • API auth signout
    • JWT refresh
    • API auth signin
    • Hello API
    • JWT role authentication
    • serve client update files
    • api sign in and out
    • HelloController
  • Icons: svg icons
  • Infrastructure: backup logger
  • Logic:
    • support license versions
    • license codes
    • get user property by T
    • add async save to DriveLogic
    • find DriveRole by driveId and userId
    • add auth methods to UserLogic
    • add AuthLogic
    • auth SignIn and SignOut
    • user Find, IsOnlineNow, and JustSeen
  • Models:
    • add license model
    • User and Member models
  • Node:
    • use BackupLogger in B2Target
    • do not copy users individual avp, avs, or xml files when converting project drive
    • report drive as renamed when completed
    • increase frequency of drive usage reporting
  • Server:
    • add Ninject binding for IBackupLogger
    • validate license codes
    • automatically delete computers not seen after X days
    • verify B2 records are pruned
    • improve backup cleanup logging
    • report signalr offline as incident
    • report drive as renamed as required
    • inform client when drive usage changed
    • report nodes online and offline over SignalR
    • send notifications to clients via SignalR

Bug Fixes

  • Angular:
    • export path for DriveHelperService
    • correctly calculate drive usage graphs
    • refresh displayed relative time when input value changes
  • Backup:
    • handle uri format exception (B2)
    • retry listing B2 incomplete large files
  • Client:
    • check hub wrapper exists during disconnect invoke
    • handle local device name in use mounting drive (Win)
    • prevent SignalR duplicate reconnection
    • handle html error checking in
    • refresh auth token on a timer
    • file logging level change
    • handle error 3221225794 getting used letters (Win)
    • handle remote function error checking Avid version (Mac)
    • auth token is expired if undefined
    • handle refresh token error has occurred message
    • first screen when user not remembered
    • refresh drive letters after drive unmounted
    • sign out when the server is offline
    • computer data not being updated
    • handle refresh no_refresh_token
    • footer incorrectly offline after signout/in
    • handle bad_token
    • handle update 503 error
    • sidenav active state when modal is open
    • favourite mount button (Mac)
    • use fsutil to enumerate drive letters
    • improve favourite loading notifications
    • sidenav active item
    • update selected drive after refresh
    • incorrect redirect to signin on load
    • handle not_signed_in during checkin
    • handle bad_refresh_token when refreshing
    • scroll to top of drive list when contents change
    • render drives in list as scrolled
    • do not check for updates if serving or debugging
    • settings button spacing
    • handle 5018 error mounting drive (Mac)
    • handle system error 64 mounting drive (Win)
    • footer position
    • handle empty update error
    • mount network drive with username and password (Mac)
    • unmount drive when divafs disabled via flag (Win)
    • handle 500 Internal Server Error during update check
    • handle ERR_NETWORK_CHANGED during update check
    • handle refresh token error during routine refresh
    • handle refresh token error after check in auth failed
    • handle refresh error on update change in auth service
    • display error if drives don’t unmount when closing app
    • ensure navigation is in current zone
    • reject unmount all drives if any drive does not unmount
    • prevent divafs mount/unmount when disabled
    • unmount all drives on sign out
    • handle null user preferences
    • correct UNC for DIVAFS (Win)
    • sending message arguments to Electron main process
    • navbar user preferences visibility
    • main component sidebar visibility
    • handle DIVAFS no-downgrade (Mac)
    • prevent double SignalR connect
    • refresh auth token when update is available
    • use ngZone when navigating from Electron main process
    • allow partial command line argument matching
    • handle first argument being skipped
    • handle user cancelling drive mount
    • browse button size
    • display warning when Finder not authorised (Mac)
    • improve divafs check when changing server
    • mount favourite drives with preferred letters first
    • DrivesPlatformServiceProvider NodeService
    • refresh auth token if check in not authorised
    • check drive path exists before unmount (Mac)
    • don’t send divafs unmount command on Windows Server
    • check Avid exists before checking version (Mac)
    • force drive lookup when loading favourite if not cached
    • escape divafs paths (Mac)
    • fix entitlements for divafs (Mac)
    • start divafs using built in elevate (Win)
    • wait for divafs to start after install (Win)
    • app path for divafs install when running in production
    • handle -5014 error mounting a drive (Mac)
    • handle update address not reachable
    • handle refresh auth token not authorised
    • force drive unmount (Win)
    • initialise refresh timers in auth service
    • warn user when running from read-only location
    • handle update timeout
    • handle update connection timed out
    • handle internal server error when checking updates
    • null check selected drive before comparing id in drive list
    • update selected drive when drives are updated
    • handle isPrefsCreateCacheFromEnabledAndDefaultInputSources when browsing drive
    • handle default stdout when mounting drive (Mac)
    • handle isPrefsCreateCacheFromEnabledAndDefaultInputSources mounting drive (Mac)
    • route to favourites after manual signin
    • attempt reconnect when SignalR disconnects
    • drive name in details pane wrap to multiple lines
    • inform electron after loading drive mount data
    • handle updater cannot find channel “latest-mac.yml”
    • prevent logging ERR_UPDATER_CHANNEL_FILE_NOT_FOUND
    • truncate drive name if too long in list view
    • embed font
    • set divafs status after settings hello
    • improve update error handling
    • ensure signed out and drives unmounted before installing updates
    • prevent update check until update server is set
    • fix flash during signout navigation
    • redirect to platform setup after initial setup
    • redirect to divafs install after manual sign in if not ready
    • redirect to main after manual sign in
    • config template
    • do not proceed if divafs volume manager is not ready (Mac)
    • check stdout exists before logging during divafs install (Mac)
    • handle divafs install status error
    • handle DivafsService.isReady rejection
    • DivafsServiceProvider provide PlatformService (Mac)
    • check stderr exists when unmounting drive (Mac)
    • check SignalR hub exists when disconnecting
    • handle unmount error when drive is not mounted (Mac)
    • sidenav selected item highlighting
    • get mounted path in drive details component
    • correctly track mounted drive path on windows
    • prevent drive mount if drive not enabled
    • unsubscribe from drive service when drive view destroyed
    • registry key exists check
    • register RegistryService
    • routing module imports
    • DrivesPlatformServiceProvider Windows constructor parameters
    • DivafsServiceProvider Windows constructor parameters
    • null check api token in AuthService
    • reconnect SignalR after changing server address
    • correctly set state when automatically signing in
    • ignore windows unmount error if drive no longer mounted
    • consolidate drive type filter
    • AuthService Electron reference
    • fluid container for setup and settings views
    • update last checked time when updater status changes
    • sign in grid layout
    • ensure app closes when signed in and server cannot be reached
    • allow app to close if not signed in
    • close application when all windows closed (Mac)
    • make signalr component messages public
    • sign in form validation
    • redirect to sign in after setup complete
    • do not cache server hostname
    • image links
    • set all links to cursor pointer
    • sign in error message
    • jQuery in Electron
    • signin thinking
  • DIVAFS: escape source path url (Mac)
  • Data: default database connection string
  • FileSystem:
    • handle invalid parameter deleting share
    • double check file exists before enumerating length
    • handle path not found when enumerating file info
  • Fusion:
    • notify client when drive being converted
    • prevent password change of signed in user
    • handle IDX12741 during JWT authentication
    • only set JWT email if not null or empty
    • job parameter display template
    • job parameter view
    • remove settings from initial setup
    • remove drive role from user interface
    • don’t show projects on deleted drives
    • notify drive roles changed after database is committed
    • notify SignalR when non-diva drives modified
    • download paths for new client
    • list all client installers on dashboard
    • owin automatic startup
    • check null user before sending via SignalR when permissions change
    • map drive space free when not a diva type drive
    • null check identity on signout
  • Infrastructure: Set NLogBackup min level
  • Logic:
    • only health check DIVA drives when checking all drives
    • null check os version before parsing
    • null check user member when checking if online
  • Node:
    • attempt more SignalR broadcast retries
    • ignore .ds_store files converting project drive
    • fail convert project drive job if pre-staging fails
    • exclude settings files when converting project drive
    • fail media drive convert if problems after pre staging
    • allow .ds_store in user directory when converting media drive
    • allow for .ds_store when converting media drives
    • handle update 500 error
    • check mxf directory still exists before marking as shared
    • null check file before reporting exception
    • handle file in use when archiving to zip
    • ensure “Other Users” directory exists before creating links
    • ignore 404 when checking for updates
  • Server:
    • handle update cold launch error
    • use version.File_Id when logging file delete
    • handle SignalR connection not established
    • commit version consolidation during loop
    • null check unfinished uploads
    • duplicate license usage reported
    • handle SignalR disconnected before invocation result was received
    • handle SignalR client inactive exception
    • use async retry policies
    • handle reconnecting error while sending SignalR broadcast
    • handle SignalR 500 error sending broadcast
    • handle SignalR connect transport timeout
    • ensure SignalR reconnects
    • handle internal server error for SignalR
    • catch SignalR async connect exceptions
    • ensure SignalR reconnects
    • ignore 404 when checking for updates
    • capture exceptions of invoked SignalR proxy calls
Need help? Email us at support@group6.co.nz