Adds a TypeScript connector for System Bridge, built on Effect, and moves the web client onto it. The Python connector gains the Discord, disk mount, directory and settings interfaces it was missing. No changes to the application.
Moved
- The Python connector's
Settingsnow matches the backend's settings:systemTray,hotkeys,logLevelanddisksreplaceapi,keyboard_hotkeysandlog_level. - The Python connector's
get_filenow returnsFileInfoinstead ofMediaFile, and only sends the file'spath.
Connector
- Add
@timmo001/effect-system-bridge, a TypeScript connector built on Effect v4, inconnector/typescript. It covers the same HTTP and WebSocket API as the Python connector, with Effect schemas generated from the backend's types. - Each stable release now publishes it to npm and JSR with the same version.
- Add
get_disk_mounts,discord_controland thediscordmodule to the Python connector. - Add
get_directory,validate_directory,get_settings,update_settingsandunregister_data_listenerto the Python connector's WebSocket client, andget_healthandget_module_datato its HTTP client. - Add
modifiersanddelaytoKeyboardKey, anddelaytoKeyboardText. - Parse a media file's
modTimeinto a Unix timestamp. - Raise when two listeners share a WebSocket connection, instead of spinning forever.
Web client
- Move the web client onto the TypeScript connector, with its state held in Effect atoms. It no longer uses Zod.
Maintenance
- Move the connector, web client and docs into a Bun workspace.
- Generate Effect schemas from the backend's types instead of Zod.
- Update timmo001/workflows to 20261009.0.
- Update uv to 0.12.24 (#4398).
Full Changelog: 5.11.1...5.12.0