Updates / Piston Server

Angles Sync, Session Mode and Azure Blob Storage

· Build 916

Angles Sync

  • Analysts' Angles timelines now sync with a session straight from their Mac — no more SMB share, no more browsing to the right imports and exports folders. The Angles Sync app is served by this server; every session page has a new Angles Sync widget with Get Angles Sync, Set Up on This Mac (one click prefills the server and the session), who has synced in, and the session's cloud storage state.
  • Sync over the venue LAN, or through the session's cloud storage for analysts away from the venue. After signing in with their Piston login the app is handed the session's storage access — an Azure container SAS, or temporary S3 credentials limited to that one session for 36 hours — so nobody types bucket keys and nothing travels in a link.
  • Edits to a shared clip now propagate — last edit wins, across analysts and Piston. Trim another analyst's clip, or a marker pressed in Piston, and everyone sees the new length; a stale re-export can no longer roll a newer edit back.
  • One Angles timeline belongs to one session. Pushing it into another session is refused with a clear message instead of duplicating every clip.
  • Timeline names with
  • The importer now takes the newest archive per timeline from both the JSON ARCHIVES folder and the flat imports folder, so several analysts and partner systems can feed one session.

Cloud Sync

  • Azure Blob Storage joins S3 as a cloud sync destination — live HLS sync, player page, timeline sync and cleanup all work against a container SAS URL. The New Session and session pages now say "Cloud Sync" where either provider applies.
  • Adding an Azure config names the usual SAS mistakes up front (wrong scope, missing permissions, expired) and shows Azure's own reply if a write still fails.
  • Upload MP4s on Stop is greyed out for Azure configs with the reason; it stays S3-only for now.
  • The session page no longer errors when a bucket is attached but no camera was synced.

Server tools

  • [object Object]
  • Warnings now reach errors.log in production (they were suppressed).

Server API

  • GET /api/sessions?live=1 lists only sessions recording now.
  • New session-keyed Angles timeline API (import an archive, export with ETag, cloud access hand-off) and a server-hosted Angles Sync exchange under /api/angles_sync.
  • A request with a bad token to /api/sessions/:id now answers 401 instead of failing.

Networking

  • nginx rebuilt with HTTP/2 on the TLS listeners (jump hosts and systems converge on the next update).