Release v2.2.0

This commit is contained in:
2026-08-01 21:41:44 +01:00
parent c643d2fb07
commit d6417b667c
673 changed files with 146752 additions and 7389 deletions
+19 -6
View File
@@ -47,7 +47,7 @@ Primary keys are `id` unless noted otherwise. Timestamps are stored as `created_
### `a_sessions`
- `session_hash`, `user_id`, `expires_at`, `created_at`, `created_by`, `modified_at`, `modified_by`
- `session_hash`, `user_id`, `expires_at`, `created_at`, `created_by`, `last_used_at`, `modified_by`
- `session_hash` is the primary key.
- Foreign key:
- `user_id` -> `a_users.id`
@@ -94,6 +94,17 @@ Primary keys are `id` unless noted otherwise. Timestamps are stored as `created_
- Foreign keys:
- `playlist_id` -> `c_playlists.id` with `ON DELETE CASCADE`
- `slide_id` -> `c_slides.id` with `ON DELETE CASCADE`
## Devices
- `d_players` - player registry and connection metadata.
- `d_screens` - screen records and playlist/player assignment.
- `d_onboarding_devices` - device-to-screen bindings and onboarded client names.
### `d_players`
- `device_id`, `public_base_url`, `internal_base_url`, `last_seen_at`, `created_at`, `modified_at`
- `device_id` is the primary key.
### `d_screens`
@@ -101,11 +112,9 @@ Primary keys are `id` unless noted otherwise. Timestamps are stored as `created_
- `slug` is unique.
- Foreign keys:
- `playlist_id` -> `c_playlists.id` with `ON DELETE SET NULL`
- `player_id` -> `d_players.id` with `ON DELETE SET NULL`
- `player_id` -> `d_players.id` with `ON DELETE RESTRICT`
## Onboarding
- `d_onboarding_devices` - device-to-screen bindings and onboarded client names.
- `player_id` is required and defaults to `'1'` for the current singleton-player model.
### `d_onboarding_devices`
@@ -114,6 +123,10 @@ Primary keys are `id` unless noted otherwise. Timestamps are stored as `created_
- Foreign key:
- `screen_id` -> `d_screens.id` with `ON DELETE SET NULL`
## Onboarding
- The onboarding flow uses `d_onboarding_devices` to bind a device to a screen and persist the client name.
## Integrations
- `i_rss_feeds` - RSS feed definitions and refresh cadence.
@@ -134,7 +147,7 @@ Primary keys are `id` unless noted otherwise. Timestamps are stored as `created_
### `i_api_sources`
- `id`, `name`, `api_url`, `update_interval_value`, `update_interval_unit`, `last_pulled_at`, `last_pull_error`, `last_response_status`, `last_response_content_type`, `last_response_json`, `created_at`, `created_by`, `modified_at`, `modified_by`
- `id`, `name`, `api_url`, `auth_method`, `auth_username`, `auth_password`, `auth_bearer_token`, `auth_header_name`, `auth_header_value`, `items_path`, `update_interval_value`, `update_interval_unit`, `last_pulled_at`, `last_pull_error`, `last_response_status`, `last_response_content_type`, `last_response_json`, `created_at`, `created_by`, `modified_at`, `modified_by`
## Operations
+27
View File
@@ -24,6 +24,13 @@ This is the server-to-dashboard snapshot stream for live player connection state
Access: internal-only. The web backend subscribes with signed request headers; browsers should not connect directly.
### `GET /ws/screens/{slug}/announcements`
Player announcement channel.
This is the server-to-player push channel used to wake the player when an announcement changes. The browser player reconnects automatically and refreshes its announcement state when it receives an `announcement-refresh` message.
Access: the player page must include a valid `auth` query parameter signed with the shared secret.
## Player Control Channel
### Messages from player to server
@@ -113,6 +120,26 @@ Moves to the next slide.
Updates the client name associated with the player session and onboarding record.
The command payload should include `clientName` and may include `deviceId` when the caller is updating a specific onboarding binding.
## Announcement Channel
### Messages from server to player
The server sends a lightweight refresh notification.
#### `announcement-refresh`
Example payload:
```json
{
"type": "announcement-refresh",
"slug": "demo",
"sentAt": "2026-08-01T12:00:00.000Z"
}
```
When the player receives this message, it refetches the current announcement state over HTTP.
## Snapshot Channel
### Messages from server to client