145 lines
4.2 KiB
JSON
145 lines
4.2 KiB
JSON
{
|
||||
|
|
"id": "overflow-tap",
|
|||
|
|
"name": "Overflow Tap",
|
|||
|
|
"version": "1.0.0",
|
|||
|
|
"proddash": ">=1.11.0",
|
|||
|
|
"description": "Switches Overflow Tap destinations from keywords in ProPresenter slide notes",
|
|||
|
|
"permissions": [
|
|||
|
|
{
|
|||
|
|
"kind": "local-network",
|
|||
|
|
"reason": "Reaching ProPresenter on this network"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"client": "client.js",
|
|||
|
|
"server": "server.js",
|
|||
|
|
"style": "style.css",
|
|||
|
|
"minSize": {
|
|||
|
|
"w": 2,
|
|||
|
|
"h": 2
|
|||
|
|
},
|
|||
|
|
"defaultSize": {
|
|||
|
|
"w": 4,
|
|||
|
|
"h": 3
|
|||
|
|
},
|
|||
|
|
"configGroups": {
|
|||
|
|
"ProPresenter": {
|
|||
|
|
"help": "The ProPresenter whose slide notes carry the keywords. Enable the network in ProPresenter's Preferences › Network and enter the host and port shown there. Only the live slide's notes are read — nothing on the stage screens changes."
|
|||
|
|
},
|
|||
|
|
"Overflow": {
|
|||
|
|
"collapsed": "whenSet",
|
|||
|
|
"help": "API credentials from the Overflow Dashboard: Developers › API Keys (a READ_WRITE key). Tap groups and destinations are read from the account once these are saved; the groups list below fills in from there."
|
|||
|
|
},
|
|||
|
|
"Keywords": {
|
|||
|
|
"help": "One keyword per line, as `keyword = Destination name` — the destination exactly as it is named in Overflow's Tap module (or its id). Add ` @ Group A, Group B` to a line to switch only those groups instead of the ones chosen above. When a slide's notes carry one of these keywords, every chosen group is pointed at that destination; a slide without a keyword changes nothing. When several match, the first line wins."
|
|||
|
|
},
|
|||
|
|
"Alerts": {
|
|||
|
|
"toggle": "alertEnabled",
|
|||
|
|
"collapsed": true,
|
|||
|
|
"help": "Flash the dashboards listening on this channel when a switch fails — Overflow unreachable or refusing the change — so someone can fix Tap by hand before the moment passes."
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"configSchema": {
|
|||
|
|
"propresenter": {
|
|||
|
|
"type": "endpoint",
|
|||
|
|
"label": "ProPresenter",
|
|||
|
|
"group": "ProPresenter",
|
|||
|
|
"default": {
|
|||
|
|
"host": "",
|
|||
|
|
"port": 1025
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"password": {
|
|||
|
|
"type": "password",
|
|||
|
|
"label": "API password",
|
|||
|
|
"group": "ProPresenter",
|
|||
|
|
"default": "",
|
|||
|
|
"help": "Only if a password is set in ProPresenter's network preferences."
|
|||
|
|
},
|
|||
|
|
"clientId": {
|
|||
|
|
"type": "string",
|
|||
|
|
"label": "Client ID",
|
|||
|
|
"group": "Overflow",
|
|||
|
|
"default": ""
|
|||
|
|
},
|
|||
|
|
"apiKey": {
|
|||
|
|
"type": "password",
|
|||
|
|
"label": "API key",
|
|||
|
|
"group": "Overflow",
|
|||
|
|
"default": ""
|
|||
|
|
},
|
|||
|
|
"groups": {
|
|||
|
|
"type": "multiselect",
|
|||
|
|
"label": "Tap groups",
|
|||
|
|
"group": "Overflow",
|
|||
|
|
"default": [],
|
|||
|
|
"optionsRoute": "/groups",
|
|||
|
|
"help": "The groups a keyword switches. None chosen means every group on the account."
|
|||
|
|
},
|
|||
|
|
"keywords": {
|
|||
|
|
"type": "text",
|
|||
|
|
"label": "Keywords",
|
|||
|
|
"group": "Keywords",
|
|||
|
|
"default": "",
|
|||
|
|
"help": "One per line — give = Give Online"
|
|||
|
|
},
|
|||
|
|
"matching": {
|
|||
|
|
"type": "select",
|
|||
|
|
"label": "Match",
|
|||
|
|
"group": "Keywords",
|
|||
|
|
"default": "word",
|
|||
|
|
"options": [
|
|||
|
|
{
|
|||
|
|
"value": "word",
|
|||
|
|
"label": "Whole word in the notes"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"value": "anywhere",
|
|||
|
|
"label": "Anywhere in the notes"
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"value": "line",
|
|||
|
|
"label": "On its own line"
|
|||
|
|
}
|
|||
|
|
],
|
|||
|
|
"help": "Whole word keeps `give` from firing on `forgiveness`; anywhere is what Overflow's own helper does."
|
|||
|
|
},
|
|||
|
|
"alertEnabled": {
|
|||
|
|
"type": "switch",
|
|||
|
|
"label": "Alert when a switch fails",
|
|||
|
|
"group": "Alerts",
|
|||
|
|
"default": false
|
|||
|
|
},
|
|||
|
|
"alertChannel": {
|
|||
|
|
"type": "number",
|
|||
|
|
"label": "Channel",
|
|||
|
|
"group": "Alerts",
|
|||
|
|
"default": 1,
|
|||
|
|
"min": 1,
|
|||
|
|
"max": 6,
|
|||
|
|
"help": "1–6; each dashboard chooses the channels it listens to in its Layouts menu."
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"instanceSchema": {
|
|||
|
|
"showDestination": {
|
|||
|
|
"type": "switch",
|
|||
|
|
"label": "Destination",
|
|||
|
|
"default": true
|
|||
|
|
},
|
|||
|
|
"showGroups": {
|
|||
|
|
"type": "switch",
|
|||
|
|
"label": "Groups",
|
|||
|
|
"default": true
|
|||
|
|
},
|
|||
|
|
"showSlide": {
|
|||
|
|
"type": "switch",
|
|||
|
|
"label": "Slide match",
|
|||
|
|
"default": true
|
|||
|
|
},
|
|||
|
|
"showHistory": {
|
|||
|
|
"type": "switch",
|
|||
|
|
"label": "History",
|
|||
|
|
"default": true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|