This extension allows you to edit Lua scripts in VS Code that are designed to run on a Q-SYS Core and automatically deploy them to either a running Q-SYS Core or a running instance of Q-SYS Designer in emulation mode. Big thanks to Patrick Gilligan for the inspiration for this extension.
- Multi-Core Deployment: Deploy scripts to multiple Q-SYS Cores simultaneously with optimized connection pooling
- Quick Deploy: Fast deployment to pre-configured targets with a single keyboard shortcut
- Interactive Selection: Choose specific cores and components when deploying with multi-select support
- Component Validation: Validate component types before deployment to prevent errors
- Authentication Support: Connect to cores with username/password authentication
- Comprehensive Logging: Detailed debug output for troubleshooting deployments
- Ctrl+Alt+D: Deploy Current Script (with interactive selection)
- Ctrl+Alt+Shift+D: Deploy to All (deploy to all configured targets)
- Ctrl+Alt+Q: Quick Deploy (deploy to quick deploy targets only)
All shortcuts work when editing Lua files.
- Connection Pooling: Reuse connections to the same core for multiple deployments
- Optimized Deployment: Group deployments by core to minimize connection overhead
- Timeout Handling: Configurable connection timeouts with graceful error handling
- Batch Operations: Deploy to multiple cores and components in a single operation
- Configure specific targets for rapid deployment with
quickDeploy: true - Ideal for development workflows where you frequently deploy to the same targets
- Separate command and keyboard shortcut for instant deployment
- Multiple Core Names: Use
coreNamesarray instead of singlecoreNamefor multi-core targets - Backward Compatibility: Existing
coreNameconfigurations continue to work - Connection Timeout: Configurable timeout settings for unreliable networks
- Per-Script Auto-Deploy: Override global auto-deploy settings per script
- Enhanced Selection UI: Improved multi-select with "Select All" functionality
- Deployment Results: Comprehensive reporting of successful, failed, and skipped deployments
- Status Bar Integration: Real-time connection status display
- Error Handling: Clear error messages and graceful failure handling
- Visual Studio Code 1.75.0 or higher
- A running Q-SYS Core or Q-SYS Designer in emulation mode
- Text Controller, Control Script, UCI Script, or Scriptable Controls (legacy) components that have script access set to "External" or "All"
This extension contributes the following settings:
qsys-deploy.cores: Array of Q-SYS Core configurationsqsys-deploy.connectionTimeout: Connection timeout in milliseconds (default: 10000)
qsys-deploy.scripts: Array of script deployment configurationsqsys-deploy.autoDeployOnSave: Global auto-deploy on save setting (default: false)
{
"qsys-deploy": {
"cores": [
{
"name": "Main Auditorium",
"ip": "192.168.1.100",
"username": "admin",
"password": "pass"
},
{
"name": "Secondary Room",
"ip": "192.168.1.101"
},
{
"name": "Q-SYS Designer Emulation",
"ip": "127.0.0.1"
}
],
"connectionTimeout": 15000,
}
}{
"qsys-deploy": {
"scripts": [
{
"filePath": "scripts/main-control.lua",
"targets": [
{
"coreNames": ["Main Auditorium", "Secondary Room"],
"components": ["MainController", "SecondaryController"],
"quickDeploy": true
},
{
"coreNames": ["Q-SYS Designer Emulation"],
"components": ["TestController"],
"quickDeploy": false
}
],
},
{
"filePath": "scripts/utility.lua",
"targets": [
{
"coreNames": ["Main Auditorium"],
"components": ["UtilityScript"]
}
]
}
]
}
}{
"qsys-deploy": {
"scripts": [
{
"filePath": "scripts/legacy-script.lua",
"targets": [
{
"coreName": "Main Auditorium",
"components": ["LegacyController"]
}
]
}
]
}
}This extension provides the following commands:
- Q-SYS: Deploy Current Script (
Ctrl+Alt+D): Deploy the current script with interactive core and component selection - Q-SYS: Deploy to All (
Ctrl+Alt+Shift+D): Deploy to all configured targets for the current script - Q-SYS: Quick Deploy (
Ctrl+Alt+Q): Deploy to targets marked withquickDeploy: true - Q-SYS: Test Core Connection: Test connection to a Q-SYS Core
- Q-SYS: Show Debug Output: Show the debug output panel with detailed logs
-
Multiple Cores: Replace
coreNamewithcoreNamesarray for multi-core deployments:// Old (v0.3.x) { "coreName": "Main Core", "components": ["Controller1"] } // New (v0.4.0) { "coreNames": ["Main Core", "Backup Core"], "components": ["Controller1"] }
-
Quick Deploy: Add
quickDeployflag to targets for rapid deployment:{ "coreNames": ["Development Core"], "components": ["TestController"], "quickDeploy": true } -
Connection Timeout: Add timeout configuration for unreliable networks:
{ "qsys-deploy": { "connectionTimeout": 15000 } }
- Use
Ctrl+Alt+Qfor quick deployment to development targets - Use
Ctrl+Alt+Shift+Dto deploy to all configured targets at once
- All existing v0.3.x configurations continue to work without changes
coreNameis automatically migrated tocoreNamesinternally- No breaking changes to existing workflows
- Open a Lua script file in VS Code
- Configure your cores and script mappings in settings.json
- Press
Ctrl+Alt+Dto deploy with interactive selection - Choose cores and components from the multi-select dialogs
- Configure your development targets with
quickDeploy: true - Press
Ctrl+Alt+Qfor instant deployment to development cores - Use
Ctrl+Alt+Shift+Dto deploy to all targets when ready for production
- Default timeout: 10 seconds
- Configurable via
connectionTimeoutsetting (1-60 seconds) - Graceful handling of timeout errors with clear reporting
If you encounter issues with deployment, use the debug output panel:
- Run
Q-SYS: Show Debug Outputto open the debug panel - Try deploying a script or testing a connection
- Review detailed logs including:
- Connection attempts and timeouts
- Authentication processes
- Component validation
- QRC protocol communication
- Deployment results and errors
This extension uses the QRC protocol to communicate with Q-SYS Core. For more information:
This extension is licensed under the MIT License.