Initial commit: COPILOT D6 Flutter keyboard controller

Flutter web app replacing legacy WPF CCTV surveillance keyboard controller.
Includes wall overview, section view with monitor grid, camera input,
PTZ control, alarm/lock/sequence BLoCs, and legacy-matching UI styling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
klas
2026-02-12 14:57:38 +01:00
commit 40143734fc
125 changed files with 65073 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
{
"$schema": "./keyboards.schema.json",
"version": "1.0",
"description": "Keyboard configuration for PRIMARY/STANDBY election",
"keyboards": [
{
"id": "KB-001",
"name": "Control Room 1",
"location": "Main Control Room",
"priority": 100,
"canBePrimary": true,
"canBeStandby": true,
"network": {
"address": "192.168.1.101",
"coordinationPort": 8090
}
},
{
"id": "KB-002",
"name": "Control Room 2",
"location": "Main Control Room",
"priority": 90,
"canBePrimary": true,
"canBeStandby": true,
"network": {
"address": "192.168.1.102",
"coordinationPort": 8090
}
},
{
"id": "KB-003",
"name": "Security Station",
"location": "Security Office",
"priority": 50,
"canBePrimary": false,
"canBeStandby": true,
"network": {
"address": "192.168.1.103",
"coordinationPort": 8090
}
}
],
"election": {
"heartbeatIntervalMs": 2000,
"heartbeatTimeoutMs": 6000,
"electionTimeoutMs": 10000,
"minKeyboardsForQuorum": 1
},
"coordination": {
"primaryWebSocketPort": 8090,
"stateSync": {
"enabled": true,
"intervalMs": 1000
}
},
"degradedMode": {
"description": "Features available when no PRIMARY/STANDBY is online",
"viewerConnectLive": true,
"ptzControl": true,
"ptzLocking": false,
"sequences": false,
"sharedState": false,
"alarmDisplay": "local"
}
}