Workshop
- Reworked the workshop boot process in preparation for VM confinement support. The machine ID and SSH host keys now persist across refreshes, and Workshop no longer uses SFTP to change the instance filesystem during launch or refresh, which should resolve a recurring LXD bug with busy ZFS volumes.
- Added
productidandvendoridattributes to thecustom-deviceinterface (community contribution @locnnil). - Improved onboarding for users with no LXD or an older LXD installed. Error messages are now actionable, and
workshopdenters a degraded state that recovers without a daemon restart after LXD is installed, refreshed, or restarted. - Added storage pool monitoring that proactively moves the daemon into a degraded state and returns an actionable error message, preventing “out of space” failures.
- Added and expanded documentation on runtime hooks, plugs, and slots, and updated it to reflect recent changes to the CLI structure, output, and hostnames.
- Gave every running workshop a
*.wphostname in theworkshop infooutput if there is a conflict. When the preferred hostname is unavailable, the explanatory note is now simplified tohostname-fallback(theworkshopdlog has more details).
SDKcraft
- Added
productidandvendoridattributes to thecustom-deviceinterface. sdkcraft whoaminow reports where its token is stored: the keyring, a file, or in memory.
Workshop GitHub Action
- Released v1 of the Launch Workshop action to the GitHub Marketplace
. - Replaced the
tokenandversioninputs withchannelandrevisioninputs for retrieving the Workshop snap:
- uses: canonical/launch-workshop@v1
with:
workshop: ${{ matrix.workshop }}
cache: |
uv:cache
- run: workshop run "$WS" unit-tests
env:
WS: ${{ matrix.workshop }}
Reference SDKs
Repository: GitHub - canonical/reference-sdks: A curated collection of workshop SDKs. · GitHub
- Published the reference SDKs under the official Canonical account.
- Reworked and published the
hermes-agentSDK. - Updated the
flutteranddirenvSDKs to support theubuntu@26.04base and added tests. - Added optional desktop-interface support for opencode users, enabling clipboard support when the terminal emulator does not provide it.