Skip to content

Release history

BotWave releases

FM broadcasting system with server-client architecture for managing multiple Raspberry Pi transmitters remotely.

All releases

23 shown

Config change
v1.1.6-neea Breaking risk
Breaking upgrade

Transaction ID + remote log isolation

No immediate action
v1.1.5-erycibe-rev-1 Maintenance

Routine maintenance and dependency updates.

v1.1.5-erycibe Breaking risk
⚠ Upgrade required
  • Update using `bw-update --to v1.1.5-erycibe`
  • dlogger dependency bumped to version 1.0.5 (no operational impact required)
Breaking changes
  • `BWCUSTOM_PATH` removed – use `BACKEND_PATH` instead.
Notable features
  • New env vars `LOG_TIME`, `LOG_TIME_FORMAT`, and `LOG_FILE` for timestamped log output to a file
  • `broadcast`/`live` command now correctly parses RT and PI arguments with spaces
  • `exit` over WebSocket properly closes the connection
Full changelog

What Changed

  • Log timestamps & file output: New LOG_TIME, LOG_TIME_FORMAT, and LOG_FILE env vars let you add timestamps to logs and save them to a file.
  • BWCUSTOM_PATH removed: The deprecated BWCUSTOM_PATH variable has been fully dropped. Use BACKEND_PATH.
  • broadcast / live command fix: RT and PI arguments are now parsed correctly. Previously, RT values with spaces would break the PI code.
  • exit over WebSocket: Typing exit in a remote session now properly closes the connection instead of being blocked.
  • WebSocket disconnect handling: Unexpected client disconnections no longer throw an error.
  • Miscellaneous: dlogger dependency bump to 1.0.5.

Breaking Changes

[!CAUTION]
BWCUSTOM_PATH has been removed. Please migrate to BACKEND_PATH.

Updating to this version

To update to this version, run the following command:

bw-update --to v1.1.5-erycibe
Commit history
  • =--- v1.1.5-erycibe ---= (c5b3d67)
  • docs: added Awesome Selfhosted to Botwave mentions (c00eeec)
  • Merge pull request #65 from dpipstudio/logger-update (fb4f949)
  • shared,logger.py: added environment variables to customize dlogger settings (05f1e52)
  • assets,installation.json: bumped dlogger version to 1.0.5 (9ae0d4d)
  • shared,ws_cmd.py: cleaner output when client leave the server (642f1a3)
  • shared,ws_cmd.py: handling 'exit' command to close the websocket connection server-side (46a171b)
  • local: fixed odd parsing for the "live" command (0a0b58f)
  • local: fixed odd parsing for the "start" command (2ea5605)
  • .github: updated the version field of the bug report template (cd5c541)
  • shared,syscheck.py: removed the usage of BWCUSTOM_PATH (f19fd30)
  • shared,bw_custom.py: removed the usage of BWCUSTOM_PATH (733ac47)
  • Update installation.json for release v1.1.4-chione (50e6598)
v1.1.4-chione Breaking risk
⚠ Upgrade required
  • `BWCUSTOM_PATH` is deprecated; setting it will emit a warning. Use `BACKEND_PATH` instead.
Breaking changes
  • `BWCUSTOM_PATH` is deprecated and will be removed in a future release; migrate to `BACKEND_PATH`.
Notable features
  • All three components now accept `--config <file>` flag to load configuration at startup.
  • Added `BACKEND_MIN_FREQ` and `BACKEND_MAX_FREQ` env vars to configure backend frequency range.
  • `BACKEND_BYPASS_CACHE` flag added to skip cached backend path and force a fresh search.
Full changelog

What Changed

  • --config flag: All three components now accept --config <path> to load a config file into the environment at startup. See the wiki.
  • BACKEND_PATH: BWCUSTOM_PATH is deprecated in favor of BACKEND_PATH. A warning will be shown if the old variable is still set.
  • Frequency range: BACKEND_MIN_FREQ and BACKEND_MAX_FREQ let you configure your backend's allowed frequency range.
  • BACKEND_BYPASS_CACHE: Skips the cached backend path and forces a fresh search.
  • DOWNLOAD_UA: Overrides the user agent used when downloading files (was already there on bw-client, added it to bw-local).
  • Miscellaneous: Internal env file parser cleanup and a piwave dependency bump.

Breaking Changes

[!WARNING]
BWCUSTOM_PATH is deprecated and will be removed in a future release. Please migrate to BACKEND_PATH.

Updating to this version

To update to this version, run the following command:

bw-update --to v1.1.4-chione
Commit history
  • =--- v1.1.4-chione ---= (6f81bc7)
  • Merge pull request #64 from dpipstudio/piwave-2.1.13 (926a281)
  • docs: updated readme and other specific documentations (3c334bc)
  • client: added --config flag (5e53f02)
  • local: added --config flag (fb0eeed)
  • server: added --config flag (7f07ca0)
  • shared,env.py: fixed some bugs (4562848)
  • client: supporting correctly custom backends (bdda819)
  • local: supporting correctly custom backends (7feb0a8)
  • shared,syscheck.py: deprecated bwcustom_path and using backend_bypass_cache (7465c49)
  • shared,bw_custom.py: removed support for bwcustom_path in self.name (56d15a6)
  • updated piwave to 2.1.13 (0d90708)
  • client: using piwave's 2.1.13 new force_search and unsafe constructor parameters (8c8e0ee)
  • local: using piwave's 2.1.13 new force_search and unsafe constructor parameters (0bb8f68)
  • shared,bw_custom.py: deprecated BWCUSTOM_PATH to introduce a new BACKEND_PATH, additionally dynamically updates the backend name based on the same var. (ba6c7f4)
  • shared,bw_custom.py: added BWCUSTOM_MIN_FREQ and BWCUSTOM_MAX_FREQ env vars usage (4694e33)
  • local: using the "DOWNLOAD_UA" env variable (bc2f28e)
  • Update installation.json for release v1.1.3-aria (4eb3715)
v1.1.3-aria New feature
⚠ Upgrade required
  • Update with `bw-update --to v1.1.3-aria`.
  • ALSA device string can be individually controlled using env vars `ALSA_INTERFACE`, `ALSA_CARD`, and `ALSA_DEVICE`.
Notable features
  • New `status` command shows broadcast state on local client and allows server queries (`status all` or specific target).
  • Protocol version bumped to 2.1.2, adding the STATUS command.
  • Custom command wildcards: `#!/*/ ` in `.cmd` files now target both server and local client.
Full changelog

What Changed

  • status command: Shows broadcast state (file, frequency, uptime) on the local client. On the server, you can query clients with status all or a specific target.
  • Flexible ALSA config: ALSA_INTERFACE, ALSA_CARD, and ALSA_DEVICE env vars now individually control the ALSA device string.
  • Custom command wildcards: Use #!/*/<command> in .cmd files to target both server and local client with one script.
  • Protocol version: Bumped to 2.1.2 by adding the STATUS command.

Updating to this version

To update to this version, run the following command:

bw-update --to v1.1.3-aria
Commit history
  • =--- v1.1.3-aria ---= (0c2f5f9)
  • docs: updated server and local docs (d325cfb)
  • server: added a newline (8d19ba7)
  • server: added the 'status' command (ea7362c)
  • local: updated display (485d193)
  • client: fixed f-string (f8080ee)
  • client: handling the STATUS command (12fb836)
  • shared,protocol.py: Protocol 2.1.2, adds the STATUS command (7ab9d9d)
  • local: fixed f-string error on status command (4dbd01c)
  • local: added status command (d6c7470)
  • updated readme cloud pages (10f3919)
  • Merge pull request #60 from dpipstudio/alsa-customization (d1a89df)
  • server,local: Updated alsa logs (7ade7e0)
  • shared,alsa.py: added ALSA_INTERFACE and ALSA_DEVICE env vars (c64de8a)
  • Merge pull request #59 from dpipstudio/ccmd-fix (236e9bd)
  • shared,custom_cmds.py: Allowing the use of wildcards (*) instead of 'local' or 'server' (cee260e)
  • nobody saw that (tm) (5e59aa3)
v1.1.2-stellata Breaking risk
Notable features
  • Define custom commands from .cmd files in the handlers directory; they appear in `help` and execute like built‑ins.
  • New handler events `l_onwsjoin` and `l_onwsleave` fire on WebSocket client connect/disconnect.
  • Handler scripts receive `BW_ARGV{n}` environment variables for each argument of the last executed command.
Full changelog

What Changed

  • Custom commands: You can now define your own commands directly from the handlers directory. Any .cmd file with the right shebang will show up in help and run like a built-in command. Wiki page
  • WebSocket join/leave handlers: New l_onwsjoin and l_onwsleave handler events fire when a remote client connects or disconnects from the local client's WebSocket.
  • Command arguments in handlers: Handler scripts now receive BW_ARGV{n} environment variables containing each argument of the last executed command.
  • Custom shell interpreter: A new CMD_INTERPRETER environment variable lets you specify which shell to use when running shell and pipe commands (< and |).
  • IP redaction fix: The IP address redaction is softer to catch edge cases (like the clients IDs).

Updating to this version

To update to this version, run the following command:

bw-update --to v1.1.2-stellata
Commit history
  • =--- v1.1.2-stellata ---= (4a50ab9)
  • Merge pull request #58 from dpipstudio/cmd-interpreter (4175cbc)
  • local: supporting the CMD_INTERPRETER env key for '<' and '|' commands (016e1e5)
  • local: fixed pipe command execution (363ea0c)
  • server: small fix (d082ecc)
  • server: better shell output managment (c0a5cc8)
  • server: supporting the CMD_INTERPRETER env key for '<' and '|' commands (b6de4da)
  • readme: added nightrunners in the mentions section (4848196)
  • Merge pull request #57 from dpipstudio/custom-cmd (33ccd80)
  • local: implemented custom commands (30e49b5)
  • shared,custom_cmds.py: stop parsing help after the last # (85a329a)
  • server: implemented custom commands (71c3b0b)
  • shared,custom_cmds.py: supporting help indentation now (56bf13c)
  • shared,custom_cmds.py: basic implementation of custom commands (d58aac3)
  • Merge pull request #56 from dpipstudio/env_hdl_args (ec3accc)
  • docs: updated handlers.md (9530b2b)
  • local: added missing onwsjoin/leave handlers (c0eaee0)
  • server: bw_argv -> BW_ARGV (9d0c9ad)
  • server: added BW_ARGV{n} environment key to handlers execution (0655784)
  • local: added BW_ARGV{n} environment key to handlers execution (31a1ec3)
  • .github,bug-report.yaml: updated the os examples (dd4c62a)
  • .github,other-issue.md: removed the "Other issue" form, just fill a blank issue (eb01d36)
  • .github,feature-request.yml: switched to a yaml form for features requests (a084c62)
  • .github,bug-report.yaml: switched to a yaml form for bug reports (5c46925)
  • hopefully fixed #55 (66a1d65)
  • shared,logger.py: be more flexible on ipv4 redacting (fe7e32a)
  • Update installation.json for release v1.1.1-malosma (fa4523b)
v1.1.1-malosma Breaking risk
Breaking changes
  • Removed `--ws` flag from both server and local client; `--rc` is now the only supported option.
Notable features
  • Added new `update` command to update target clients without manual login.
  • Bumped protocol version to 2.1.1
Full changelog

What Changed

  • New update command: The server-only update command allows you to update the target clients without requiring to manually log into the machine.
  • Remote CLI (--rc): The deprecated --ws flag has been fully removed from both the server and local client. If you were still using it, switch to --rc.
  • Protocol version: Bumped to 2.1.1.
  • Miscellaneous: Minor comment typo fixes.

Breaking Changes

[!CAUTION]
The --ws flag has been removed. --rc is now the only supported option.

Updating to this version

To update to this version, run the following command:

bw-update --to v1.1.1-malosma
Commit history
  • =--- v1.1.1-malosma ---= (c52952c)
  • assets,latest.ver.txt: bumped to 2.1.1 (f391f12)
  • docs: updated server.md (9806deb)
  • server,local: removed --ws flag (was deprecated) (3a8df0d)
  • Merge pull request #54 from dpipstudio/updt-cmd (2132111)
  • shared,protocol.py: updated to 2.1.1 (ceaa086)
  • server: better logging (56d872e)
  • client: better stopping management (cd92c40)
  • server: added the 'update' command (f1b7426)
  • client: supporting the UPDATE command (30777bf)
  • shared,protocol.py: added the UPDATE command (0706029)
  • docs: updated websocket.md (87ea8d2)
  • Merge pull request #53 from dpipstudio/argparse (175ab91)
  • client: giving "bw-client" as a program name to argparse (c33176f)
  • local: giving "bw-local" as a program name to argparse (12d3055)
  • server: giving "bw-server" as a program name to argparse (6eb7da5)
  • docs: updated shown program help (c334d46)
  • docs: tiny fixes (73c88d1)
  • docs: --ws -> --rc (cbf5c11)
  • Update installation.json for release v1.1.0-morelia (898a97e)
v1.1.0-morelia Breaking risk
⚠ Upgrade required
  • The deprecated `--ws` flag will print a warning; migrate to `--rc` before it is removed in a future release
  • Update `.env` files and startup scripts to use the new environment variable names listed above
Breaking changes
  • Renamed environment variable WS_CMD_PORT → REMOTE_CMD_PORT
  • Renamed environment variable WS_BLOCKED_CMD → REMOTE_BLOCKED_CMD
  • Renamed environment variable ALLOW_WS_BLOCKED_COMMANDS_I_KNOW_WHAT_IM_DOING → ALLOW_REMOTE_BLOCKED_COMMANDS_I_KNOW_WHAT_IM_DOING
Notable features
  • ProtoManager now waits for client confirmation before reporting success/failure with clear `Success: N, Failure: N` summaries
  • Protocol upgraded to v2.1.0 which requires clients to echo back a `transaction_id` kwarg when provided
  • Remote CLI flag `--ws` renamed to `--rc`; authentication now prompts for password instead of JSON handshake and adds `REMOTE_CMD_WELCOME` env message
Full changelog

What Changed

  • ProtoManager: Commands sent to clients now wait for a confirmed response before reporting success or failure. You'll see clearer Success: N, Failure: N summaries after start, stop, lf, and stream operations instead of just "token sent".
  • Protocol version: Protocol v2.1.0 comes with this release. It requires the client to send back a transaction_id kwarg if provided.
  • Better auth feedback: If a client connects with a wrong or missing passkey, it now gets a proper error and disconnects cleanly instead of hanging (see #49).
  • Remote CLI (--rc): The --ws flag has been renamed to --rc. It still works but will print a deprecation warning. The authentication flow has also changed: instead of a JSON handshake, you'll now just be prompted for a password, making it usable from any WebSocket-capable tool. The REMOTE_CMD_WELCOME environment message has been added.
  • Bug fixes: Fixed a stream broadcast issue that could cause it to stall or crash due to event loop conflicts. Fixed auth failures not exiting the registration loop cleanly on the client side.
  • Miscellaneous: Additional minor fixes have also been implemented.

Breaking Changes

[!CAUTION]
The following environment variables have been renamed. Your .env files and startup scripts will need to be updated:

| Old | New |
|---|---|
| WS_CMD_PORT | REMOTE_CMD_PORT |
| WS_BLOCKED_CMD | REMOTE_BLOCKED_CMD |
| ALLOW_WS_BLOCKED_COMMANDS_I_KNOW_WHAT_IM_DOING | ALLOW_REMOTE_BLOCKED_COMMANDS_I_KNOW_WHAT_IM_DOING |
The Advanced/Using environment variables wiki page has also been updated.

Additional Notes

[!CAUTION]
The list command has been removed in this release. Use lf instead.

[!NOTE]
The --ws flag is deprecated and will be removed in a future release. Please migrate to --rc.

Related

  • #48
  • #49
  • #50
  • #51
  • #52

Updating to this version

To update to this version, run the following command:

bw-update --to v1.1.0-morelia
Commit history
  • =--- v1.1.0-morelia ---= (51ef0ed)
  • Merge pull request #52 from dpipstudio/remoteshell (ab878e6)
  • shared,ws_cmd.py: updated remote command message (63fbf01)
  • shared,ws_cmd.py: more logs (d23fbb1)
  • local: added --rc, and deprecated --ws (creates confusion) (94cb073)
  • shared,ws_cmd.py: renamed env variables, and added a possible welcome message (REMOTE_CMD_WELCOME) (3642eb8)
  • server: added --rc, and deprecated --ws (creates confusion) (569b672)
  • shared,ws_cmd: changed auth protocol for remote connections (edf2f80)
  • Merge pull request #51 from dpipstudio/patch (8ccbf21)
  • server,client: fixed #49 (17cbfd4)
  • server: updated github link (4014061)
  • server: replaced /tmp with tempfile.gettempdir() (370da83)
  • server: morse and sstv files will be in /tmp (c5473f3)
  • server: some fixes regarding files uploads (3797272)
  • server: fixed sync_files crashing (at least shouldve been fixed) (f4d54c6)
  • shared,http.py: more fixes (728537f)
  • shared,http.py: create_upload_token has a upload_dir param now (684ab33)
  • Merge pull request #50 from dpipstudio/transactions (cdd87ca)
  • server,client: multiple fixes again (d1cd5e0)
  • server,client: multiple fixes (3876325)
  • server: refactored to support protocol 2.1.0 (3f967b7)
  • client: refactored every communication to support protocol 2.1.0 (555dd4c)
  • client: this pmo (2dca0fe)
  • client: giving parsed to stop (f7474c0)
  • client: upgraded _handle_stop_broadcast to support protocol 2.1.0 (18b01fa)
  • client: fixed _handle_start_broadcast (fdf495b)
  • shared,protomanager: better handling of future (4c53c9b)
  • assets,installation.json: added protomanager.py (88c93f3)
  • client: (TEST) using protomanager for some operations (154f84b)
  • shared,protomanager.py: added 'reply' (a206d5b)
  • shared,protocol.py: protocol 2.0.1 (requires a transaction_id echo from the clients response) (a448c4e)
  • shared,protocol.py,protomanager.py: better protocol "api" implementation (cb4038a)
  • client: fixed stream managment (dda96e5)
  • http: fixed aiohttp timing out after 5m of streaming (b8ef199)
  • local: REMOVED 'list' command (9a4cf9d)
  • Merge pull request #48 from dpipstudio/client-stream-fix (50336d9)
  • client: fix multiple live issues (b98dd47)
  • Update installation.json for release v1.0.14-psydrax (13ef6af)
v1.0.14-psydrax Breaking risk
⚠ Upgrade required
  • Update using `bw-update --to v1.0.14-psydrax`.
  • The local `list` command is deprecated; migrate to the `lf` command before upgrading to version 1.1.0.
Breaking changes
  • Removal of the local `list` command; it is replaced by the `lf` command and will be completely removed in version 1.1.0.
Notable features
  • Configuration via environment variables (`.env` files) for ports, paths, RDS defaults, ALSA settings, etc.
  • `get` and `set` commands added to the BotWave shell for inspecting and modifying runtime environment variables without restart.
Full changelog

What Changed

  • Environment variables: BotWave now supports configuration via environment variables and .env files for ports, paths, RDS defaults, ALSA settings, and more. See the wiki for the full list.
  • get and set commands: Inspect and change environment variables at runtime directly from the BotWave shell, no restart needed.
  • Bug fixes: Minor bug fixes across the program.

Additional notes

[!WARNING]
This is the last release supporting the local list command. It is replaced with the lf one, and will be completely removed in 1.1.0.

Updating to this version

To update to this version, run the following command:

bw-update --to v1.0.14-psydrax
Commit history
  • =--- v1.0.14-psydrax ---= (87e3d8d)
  • Merge pull request #47 from dpipstudio/env-tweaks (0b76fa5)
  • shared,version.py: standardized the UA (bf19fcf)
  • server: getint (5270d29)
  • shared,converter.py: using environ (c162c8e)
  • shared,sstv.py: using environ (20cf396)
  • local: :* (0efb492)
  • server: broadcast environ defaults (36d4022)
  • local: broadcast environ defaults (df42536)
  • shared,tls.py: CERT_VALIDITY_DAYS and TLS_KEY_SIZE (54a07fc)
  • multiple: normalized dirs to have a / at the end (7a8b369)
  • shared,http.py: all uppercase, please (ccdd118)
  • shared,logger.py: selfing (bff119e)
  • shared,logger.py: REDACT_IPV4 environment can be set to true to replace ipv4 occurrences with [REDACTED] in logs (bcad1d7)
  • client: is_server = false for tipengine (b517c1f)
  • server: starting websocket server after main server started (af7e550)
  • server,local: updated wscmdh (3f71d51)
  • shared,ws_cmd.py: more environ customization (76b1692)
  • bin,bw-nandl: added get and set commands (e902a8e)
  • local: fixed arg parsing (ecc24df)
  • server: fixed arg parsing (aa70687)
  • server: interpolate uses the EnvManager now (6b59446)
  • local: interpolate uses the EnvManager now (e15a843)
  • shared: miscellaneous changes (fd2aa60)
  • shared,env.py: using a greedy regex for stripping imutables (7933b09)
  • doc,local.md: added env getsetters (10a19c2)
  • local: getsetters for environ (a7cb775)
  • local: basic environ implementation (cf28db6)
  • shared,queue.py: using UPLOAD_DIR environ (39ed5d0)
  • doc,server.md: added getsetters (7aa0289)
  • server: getsetter commands for env vars (3c037b9)
  • shared,env: fixed strip_immutable always returning false (dcb7378)
  • shared,logger.py: added ENV log type (91362ec)
  • shared,env.py: .get() can take get_immutability and return a tuple (082d711)
  • shared,http.py: more environ (2b145d5)
  • shared,ws_cmd.py: removed useless parameters (1767397)
  • server: more environ and fixes (789e8a3)
  • shared,ws_cmd.oy: using environ to get host infos (e2fefae)
  • server: daemon fixes (1973f9e)
  • server: using environ (1a629af)
  • server,shared,socket.py: using environ (b3d8a0a)
  • client,shared,socket.py: using environ (b11297d)
  • server: changed BWHTTPFileServer implementation (4d23c1a)
  • server: changed HandlerExecutor implementation (126af09)
  • server,shared,logger.py: using PROMPT_TEXT environ if available (b2a4e54)
  • shared,tls.py: using CERT_* environ if available (d9039b9)
  • shared,syscheck.py: updated old (like, OLD) code. Also using BWCUSTOM_PATH if available (7f057fb)
  • shared,logger.py: using PROMPT_TEXT from environ if available (afd7388)
  • shared,http.py: BWHTTPFileServer uses environ if available (444fcc5)
  • shared,handlers.py: using HANDLERS_DIR environ (965a3ed)
  • shared,bw_custom.py: using BWCUSTOM_PATH environ if provided (0eb6ce9)
  • shared,alsa.py: using ALSA_* environ vars if provided (a1d2693)
  • client: better env handling with priorities (bab871f)
  • shared,version.py: using VCHECK_UA env var for potential version checks (5c84529)
  • client: simplified a string (f5dd233)
  • shared,env.py: fixed get_bool type hint (a1fb8ad)
  • assets,installation.json: added env.py to always files (07fadbf)
  • server,client.py: Environ implementation (47ed380)
  • shared,env.py: set now always converts to str (2986a8a)
  • shared,env.py: get_bool returns false by default instead of none (871a340)
  • shared,env.py: docstrings & immutability (7b5144e)
  • shared,env.py: Basic environment manager configuration (63922cc)
  • shared,handlers.py: not restoring old environ anymore, so we keep newly created keys (23dd12b)
  • bin,bw-nandl: removed a coma (07d12fb)
  • assets,installation.json: nobody saw that (1af310c)
v1.0.13-ochna Breaking risk
Notable features
  • Server now warns if another instance is already running to prevent broadcast conflicts.
  • Improved server shutdown handling to avoid event loop issues.
Full changelog

What Changed

  • BotWave will now warn you if another instance is already running, preventing potential broadcast conflicts
  • Improved server shutdown handling to prevent event loop issues
  • Fixed client f-string quote escaping
  • Server startup error message now includes a direct link to the GitHub repo and better instructions

Updating to this version

To update to this version, run the following command:

bw-update --to v1.0.13-ochna
Commit history
  • =--- v1.0.13-ochna ---= (e9867f0)
  • Merge pull request #46 from dpipstudio/tips (1b61a04)
  • server: restyled a bit the github url log (b4a190d)
  • server: fixed eof stopping (44c2268)
  • server: tips now are the first thing to execute to help debugging. Also edited the starting failure message to be more explicit (4dacf5c)
  • shared,tips.py: removed filename on top of file to stay coherent (2b771ac)
  • shared,tips.py: removed psutil dep (e866983)
  • server: implemented tipengine (959233e)
  • client: changed tips implementation (5830e69)
  • local: changed tips implementation (3311852)
  • shared,tips.py: added is_server args to constructor (33ed47f)
  • client: implemented tipsengine (c9c0999)
  • local: implemented tipsengine (2749d53)
  • shared,tips.py: added tipsengine (16c709d)
  • readme: switched togp domain (dd86dfa)
  • client: fixed fstring issue on older python versions (239f555)
  • Update installation.json for release v1.0.12-batesia (09c843c)
v1.0.12-batesia Breaking risk
Breaking changes
  • The local client `list` command is deprecated and will be removed in a future release; use `lf` instead.
Full changelog

What Changed

  • Handler context updates:
    • The server handler context now includes BW_SERVER_CONNECTED_CLIENTS, which contains the hostnames of all connected clients, separated by commas
  • Local client commands:
    • The list command has been renamed to lf to avoid conflicts with the server
    • The list command remains deprecated and will be removed in a future release

Updating to this version

To update to this version, run the following command:

bw-update --to v1.0.12-batesia
Commit history
  • =--- v1.0.12-batesia ---= (15a728f)
  • scripts,install.sh: installer now creates /opt/BotWave/scripts/ for eventual shell scripts to be manually added (93a0f08)
  • misc_doc,handlers.md: updated doc to include BW_SERVER_CONNECTED_CLIENTS (a306ca2)
  • server: added BW_SERVER_CONNECTED_CLIENTS to context (93adf41)
  • docs: updated docs (8653e5a)
  • local: deprecated 'list', added 'lf' (bfc387d)
  • readme: small layout change (2c9bfe9)
  • readme: clearer setup notes and instructions (67cc6e7)
  • installation: newer v1.0.11 commit sha (7c54b77)
v1.0.11-redbud Breaking risk
⚠ Upgrade required
  • Install/Update scripts now support `-b,--branch <name>` to pull from a specific branch
  • Server exits cleanly with an error message if startup fails
Notable features
  • Handlers receive environment variables (`BW_CLIENT_HOSTNAME`, `BW_BROADCAST_FILE`, etc.) at execution time with full restoration after each run
  • `{VAR}` syntax added to BotWave commands for direct interpolation against the current handler context
  • New `|` pipe command executes a shell process and feeds each stdout line back as a BotWave command (blocked on remote WebSocket)
Full changelog

This release was supposed to be for valentines day, oops

What changed

  • Handler context injection:
    • Handlers now receive environment variables at execution time (BW_CLIENT_HOSTNAME, BW_BROADCAST_FILE, BW_BROADCAST_FREQ, etc.)
    • Event-specific variables available where relevant (e.g. client info on onconnect/ondisconnect, broadcast info on onstart/onstop)
    • Environment is fully restored after each handler execution
  • {VAR} interpolation in commands:
    • Commands inside handlers now support {VAR} syntax, resolved against the current environment
    • Allows using injected context directly in BotWave commands, not just shell calls
  • New | pipe command:
    • Available on both server and local client
    • Runs a shell command and feeds each line of its stdout back as a BotWave command
    • Blocked from remote WebSocket execution for security
  • Bug fixes:
    • Fixed potential deadlock in server async command execution
    • Server now exits cleanly with an error message if startup fails
  • Misc:
    • Install and update scripts now support the -b,--brach <name> flag to pull from a specific branch
    • Updated docs for handlers.md, local.md, server.md, and README.md

Related

The Main/Automate Your Setup has been updated to document dynamic handlers using env variables.
Related PRs: #42, #43

Updating to this version

To update to this version, run the following command:

bw-update --to v1.0.11-redbud
Commit history
  • releases: fixed typo, v1.0.11 should work now (d01a3ad)
  • the fuck happened here (0e84de0)
  • Update installation.json for release END (28dc176)
  • =-- v1.0.11-redbud --= (a806509)
  • Merge pull request #43 from dpipstudio/enhanced-handlers (843657c)
  • shared,ws_cmd: not allowing command interpolation nor pipes (dba5572)
  • local: added {env_var} replacement in command execution (dd8aba8)
  • server: added {env_var} replacment in commands (f172765)
  • readme: small change in advanced usage (e3b147c)
  • local: passing process env sooner (4896efd)
  • server: passing process env from higher level (3d3e526)
  • server: message if it fails to start (21dec04)
  • nandl: added pipe command (6f7e3d2)
  • fixed syntax (ea79ef4)
  • readme: updated installer options (73ca195)
  • scripts: updated installer help (yet again) (f75ec97)
  • scripts: updated help (90e09c8)
  • 1.3.1 (22c7d76)
  • scripts: logging the used branch (290ec97)
  • scripts: fixed broken install (e34ec8b)
  • scripts: added --branch / -b to pull things from a specific branch (b2e4ca1)
  • Merge pull request #42 from kipricka/enhanced-handlers (4effaa0)
  • doc: handlers more doc (66fffce)
  • docs: updated server and local docs (c45c3ed)
  • server,local: added pipe (|) command (0a9b320)
  • server: preventing crash on windows (0a891ab)
  • local: enhanced currently existing handlers environment (2e21f36)
  • local: giving context to handlers (2a0c1d8)
  • server: passing context to handlers (9f3b85f)
  • shared: handlers are now supporting context that will be injected into environment variables (9b01f05)
  • local: removed _execute_handle that is not used (e591a82)
  • Update installation.json for release v1.0.10-umtiza (a838428)
v1.0.10-umtiza New feature
Notable features
  • Automatic conversion of MP3, AAC, M4A, OGG, FLAC, OPUS, MP4, MKV and many other formats to WAV during upload and download.
Full changelog

What changed:

  • Audio format conversion:
    • Added automatic conversion of common audio/video formats to WAV
    • Supports MP3, AAC, M4A, OGG, FLAC, OPUS, MP4, MKV, and many more formats
    • Conversion happens automatically during upload and download operations
  • Bug fixes:
    • Fixed imports in client.py
    • Improved error handling in file operations
    • Better exception catching in history file loading
  • Misc:
    • Updated --talk flag description for clarity

Updating to this version

To update to this version, run the following command:

bw-update --to v1.0.10-umtiza
Commit history
  • =--- v1.0.10-umtiza ---= (ede437c)
  • fixed releases formatting (f3d323f)
  • local: using BotWaveDownloads/{PROTOCOL_VERSION} (+https://github.com/dpipstudio/botwave/) as downloads UA (9a430c5)
  • server,local: avoiding file permissions errors on history file (98554bf)
  • Merge pull request #41 from kipricka/mp3-convert (2dfb222)
  • Update installation.json for release v1.0.9-axinaea (5722694)
  • server: added conversion support to sync (ec01ec1)
  • server: added conversion support to 'upload' command (4253987)
  • client: better syntax (7646fda)
  • client: DOWNLOAD_URL is now able to download and convert files that arent .wav (4756bc0)
  • installation: add converter.py (b56c541)
  • local: minor log tweak (e7db21d)
  • local: using talk arg everywhere for convert_wav calls (ac89d26)
  • shared: not rejecting wav files in convert_wav, just returning early (b997bae)
  • local: added support for other file types download with 'dl' command (eac6c52)
  • local: updated help about the --talk flag (0fbfc07)
  • local,shred: minor changes and fixes (9ade1fd)
  • local: using converter for the 'upload' command (b2056d4)
  • shared: added converter.py file for file conversions (22d43c9)
v1.0.9-axinaea Breaking risk

Fixed broadcast locking and live stream sync generator wrapper errors.

Full changelog

What changed:

  • Minor bug fixes reguarding client-server live broadcasing.

Updating to this version

To update to this version, run the following command.

bw-update --to v1.0.9-axinaea
Commit history
  • =--- v1.0.9-axinaea ---= (7fa6f83)
  • Merge pull request #40 from dpipstudio/alsa-fix (6100ac1)
  • misc_doc: made some formatting for the cloud installs (126ad02)
  • client: fixed an issue reguarding broadcast locking (a4fa00f)
  • installation: updated to piwave 2.1.12 that fixes a minor bug (39fb86e)
  • server: fixed #38 (028a0be)
  • alsa: on start(), stopping of there is already a capture running (80876ee)
  • client: fixed typo that was throwing an exception on stop_broadcast (b32cb0f)
  • client: fixed sync_generator_wrapper that caused an error on live stream (7137f86)
  • doc: removed credits images at the end of the md file (cb7055d)
  • autorun: removed 'all' support, and adding '--skip-checks' to args (9c638df)
  • server,local: fixed doc for 'live' command (67b2ae7)
  • Update installation.json for release v1.0.8-senna (edc9f73)
v1.0.8-senna Security relevant
Security fixes
  • Fixed important path traversal vulnerabilities in server, client, local, and shared components
Notable features
  • Files downloader now uses `BotWaveDownloads/PROTOCOL_VERSION` user agent
Full changelog

[!CAUTION]
This release fixes several critical vulnerabilities regarding path traversal. It is recommanded upgrading to it.

What changed:

  • Important fixes reguarding path traversal, most of them reguarding client <-> server.
  • Bug fix in stop command (server side).
  • Files downloader now fetch with the BotWaveDownloads/PROTOCOL_VERSION user agent.

Updating to this version

To update to this version, run the following command.

bw-update --to v1.0.8-senna
Commit history
  • =--- v1.0.8-senna ---= (b73a2cd)
  • installation: added security.py (201fea0)
  • server,client,local,shared: fixed important path traversal vulns (6fa2d06)
  • fixed a bug in path check (e54bb45)
  • shared: new security.py to prevent path attacks (4661753)
  • client: using BotWaveDownloads header for downloading files from external ressources (6da39bb)
  • Update installation.json for release v1.0.7-annea (4b1077f)
v1.0.7-annea Breaking risk
⚠ Upgrade required
  • Update using `bw-update --to v1.0.7-annea`.
  • PiWave upgraded to version 2.1.11 for improved debug logs.
Notable features
  • New `Commands.END` protocol message for broadcast end/failure reporting (version 2.0.2)
  • `queue` command to manage playlists with loop support and enhanced show logs
  • --talk flag on local client and client to enable PiWave debug logging
Full changelog

What changed:

  • Protocol:
    • New Commands.END for the client to report a broadcast end or failure
    • Version 2.0.2
  • New features:
    • queue command to manage your playlist. See the wiki
  • Usage changes:
    • Now local client and client can take the --talk flag to show PiWave debug logs. Disabled by default.

Related:

  • #33
  • #37

Updating to this version

To update to this version, run the following command.

bw-update --to v1.0.7-annea
Commit history
  • Merge pull request #37 from dpipstudio/queue (7ec7d76)
  • Merge branch 'main' into queue (a5cf18f)
  • =--- v1.0.7-annea ---= (7b22143)
  • latestver: updated to 2.0.2 (fb119ee)
  • server,local: updated help command to include the queue command (90d74e7)
  • readme: improved features list (5f53b31)
  • server: if a message is provided in the Commands.END, it will be shown instead of the default message (a31a5ef)
  • client: sending file not found as Commands.END (11b9ec6)
  • added queue to supported commands (2e4df90)
  • scripts: Revert "scripts: temporarly changed install script to target queue branch" (a98a398)
  • queue: fixed help formatting (1076dfb)
  • queue: updated queue show logs to show if it is looping (09f0c4f)
  • queue: using shlex to parse the toggle args (a2005c1)
  • queue: added loop to the toggle ocmmand (9cae0bc)
  • Merge pull request #36 from dpipstudio/talk (9ca78b3)
  • Merge branch 'main' into talk (d323f01)
  • local,client: updated docs (7072d50)
  • local: added --talk flag. now by default, piwave (backend manager) will stay silent. if the talk flag is used, it will be logging in debug mode (13f4c0c)
  • client: replaced log.warn with log.warning (cb270a0)
  • client: removed broadcast stop confirmation log (1d3f6b6)
  • client: added --talk flag. now by default, piwave (backend manager) will stay silent. if the talk flag is used, it will be logging in debug mode (0dfc977)
  • installation: upgraded piwave to 2.1.11 (better debug logs) (021d9cf)
  • local,server: more manual toggles (1310ba4)
  • queue,local,server: fixed issue where the queue system self-triggers the manual pause (cc975a1)
  • installation: added queue.py to the always component (8a0d8ff)
  • queue,local,server: pausing queue on manual actions, like start, stop, etc. (f22b6d0)
  • scripts: temporarly changed install script to target queue branch (3485f6c)
  • server,local: update doc to include queue (3498eab)
  • Merge pull request #35 from dpipstudio/producer-channels-fix (d3066fb)
  • local: fixed piwave using 48000 channels on live broadcast (9fc57f2)
  • alsa: fixed error on ALSA Xrun (dfa7ca1)
  • local: implemented the queue system (6cf258e)
  • queue: cleaned up, and made some maintenance (claude) (d5ea249)
  • added wiki link (dbdd717)
  • temp queue implementatio, there are still a lot of things to do (18d6451)
  • shared,client: protocol 2.0.2 (139ec12)
  • added queue log type (7c8ba12)
  • readme: added badge for repository showcase (https://tom-doerr.github.io/repo_posts/) (a495626)
  • added vocal.wtf & support section (7b333d6)
  • Update installation.json for release v1.0.6-citrus (941a1eb)
v1.0.6-citrus Bug fix

Fixed cleaner logging and user experience issues.

Full changelog

What changed:

  • Updated default rt on server to reflect the filename, not the targets
  • Minor log changes
  • Fixed #31 for cleaner logging and user experience

Updating to this version

To update to this version, run the following command.

bw-update --to v1.0.6-citrus
Commit history
  • Merge pull request #32 from kipricka/logpatch (7899513)
  • =--- v1.0.6-citrus ---= (5bd3066)
  • server,local: fiexd #31 (d248a8f)
  • logger: fixed #31 (49ec57c)
  • ignoring py build files (c9c6ec4)
  • server: updated live log to mention stream token instead of download token (564c093)
  • server: fixed default rt (a852479)
  • client: fixed error handling (ef65243)
  • Update installation.json for release v1.0.5-abuta (c66e1e2)
v1.0.5-abuta Mixed
Notable features
  • Added --skip-checks flag to server
Full changelog

What changed:

  • Replaced RDS defaults
  • Added the Get Help section to the README
  • Using custom user agent for version checks
  • Added --skip-checks flag to server
  • Edited help formatting on local client and server

Updating to this version

To update to this version, run the following command.

bw-update --to v1.0.5-abuta
Commit history
  • =--- v1.0.5-abuta ---= (9bad180)
  • server: update doc (debdf64)
  • local: formatted help (45a49d7)
  • server: added skip checks arguments and formated help (4274e30)
  • using custom user agent for version check (a9a312b)
  • added get help section (bbf94e1)
  • replaced 'RADIOOOO' with 'BotWave' for live radio names (f00b966)
  • Update installation.json for release v1.0.4-zanha (788a1c0)
v1.0.4-zanha Breaking risk
Breaking changes
  • Removed RESTART from server documentation and implementation; it was a stop alias.
  • Protocol version increased to 2.0.1, introducing STREAM_TOKEN and dropping RESTART.
Notable features
  • Added live streaming support (experimental) via ALSA sound card.
  • Updated installers/updaters now accept --[no-]alsa parameter.
Full changelog

What changed:

  • Added live streaming (see issue #14)
  • Updated (un)installers / updaters. Now support the --[no-]alsa parameter
  • Added STREAM_TOKEN to protocol, and removed RESTART. Protocol is now 2.0.1
  • Enhanced error handling

The wiki can be found here

Updating to this version

To update to this version, run the following command.

# setup alsa if you want
sudo apt install libasound2-dev
sudo bash -c 'cat > /etc/modules-load.d/aloop.conf << EOF
# BotWave installer
snd-aloop
EOF'
sudo bash -c 'cat > /etc/modprobe.d/aloop.conf << EOF
# BotWave installer
options snd-aloop index=10 id=BotWave pcm_substreams=1,1
EOF'

# do this anyways
bw-update --to v1.0.4-zanha

sudo reboot # only if setuped alsa
Commit history
  • release 1.0.4 (protocol 2.0.1) (c5f9d59)
  • updated README (7017d46)
  • updated features section (937f720)
  • temp lowered lastest.ver (c4691aa)
  • Merge pull request #25 from dpipstudio/livestream-test (bf33044)
  • Merge branch 'main' into livestream-test (b84b51e)
  • updated links, using main branch now (eae1d0a)
  • whatever (9eaf43a)
  • removed v1.0.3-Desmos (uppercase one) (28eec72)
  • Update installation.json for release v1.0.3-desmos (e2d81d5)
  • changed version codename (f275f0b)
  • cloud_install: updated botwave install command to include the --no-alsa parameter (f5a0a06)
  • brought back the start command (04d9ee5)
  • updated nandl commands (78dce1a)
  • fixed stream issues (af7c6f5)
  • local,server: minor fixes (17aca9b)
  • server: removed restart from the doc (2cc89ac)
  • removed restart support since it was just a stop alias (8cc7ce0)
  • server: updated doc & built-in help (35dcb66)
  • local: updated doc and built-in help (efa517c)
  • unknown commands (b0f624d)
  • updated uninstall to remove alsa cfg files (fff65f7)
  • added comments to cfg files (a057b06)
  • updated installation.json (f9a8fe3)
  • 2.0.1 protocol (c3a7813)
  • fixed piwave monitor to support streams (98335e9)
  • client / server: support for live streams (dfad733)
  • added http (pcm) streams (91d90e3)
  • added ALSA_AVAILABLE (a561a41)
  • protocol 2.0.1: added stream_token (ea22f64)
  • updated install script (9d2a844)
  • updated update script (76c6458)
  • updated links temp (2b47a34)
  • updated live command checks (60730b8)
  • removed one warn (879f1be)
  • temporarly changed install url to livestream-test branch (d2dada7)
  • added prompting for alsa (1b7336c)
  • local: added experimental support for live streaming via an alsa sound card (d398fdb)
  • added live command (a1e586a)
v1.0.3-desmos Breaking risk

Fixed prompt overriding bug and changed radio defaults to "BotWave" and dynamic file name.

Full changelog

What changed:

  • Fixed the text overriding the prompt. We now have a clean prompt / logs structure
  • Changed defaults for radio name (ps) and radio description (rt). They now are BotWave and file_name
  • Added peppe8o.com to the README and replaced show

Updating to this version

To update to this version, run the following command.

bw-update --to v1.0.3-desmos
Commit history
  • changed version codename (f275f0b)
  • Update installation.json for release v1.0.3-Desmos (e71320a)
  • v1.0.3 (a1520f1)
  • server,local: updated default program service and radio text from: "RADIOOO" -> "BotWave" "Broadcasting" -> dynamically update with file name (61dd32c)
  • fixed #29 by updating release flow (a3a4e0e)
  • Merge pull request #30 from dpipstudio/prompt-improvement (fbef9ab)
  • fixed prompt bug (f86d467)
  • updated replaced showhn badge with hacker news (2742bb3)
  • added peppe8o.com in the mentions ! (055d6e9)
  • Update installation.json for release v1.0.2-alfaroa (c10ac03)
  • Merge pull request #27 from dpipstudio/local-improvements (6be1548)
  • from bold to h2 (a464001)
  • updated release message (1e36552)
  • local,server: changed some logs from broadcast to file (3417843)
  • =--- v1.0.2-alfaroa ---= (fbc4fde)
  • readme: updated local client examples (88e8737)
  • local: updated doc (24f9148)
  • local: updated upload command to support folder uploads (73c4195)
  • server, _upload_folder_contents: changed Log.broadcast to Log.file (2a9bed1)
  • Merge pull request #26 from dpipstudio/readme-tweaks (7bf2d22)
  • fixed typo (2) (321fb2e)
  • adding separators to mark details start and end (edf56fc)
  • removed typo (a88a78d)
  • changed images placement (3523554)
  • . (literally) (19a0201)
  • fixed the TOC (2cb43df)
  • rewrote the readme (1ee1206)
  • some readme tweaks, again (bdaed14)
  • removed bw_custom -> pifm mention (1b547da)
  • few changes to the readme (88bc252)
  • tiny fixes (af7b072)
  • added commands to review the install code (72b3f28)
  • removed protocol warning (6e9df4e)
  • Update installation.json for release v1.0.1-terminalia (7261517)
  • =--- v1.0.1-terminalia ---= (59b3555)
  • server: fixed command history issue (8eff9f2)
  • local: fixed command history issue (7848bbc)
  • added failurl to prevent togp fails (afe7d2e)
  • made the stats more readable (678a8f8)
  • added placeholders (501aa45)
  • changed the icons layout (0c557f0)
  • updated main logo with togp-generated one (b495a40)
  • moved text and icons a bit (991e279)
  • lowered stars text (28a4ab9)
  • added togp_logo.svg (8035e3f)
  • added show hn (28d6141)
  • made some "graphical" adjustments (70d7857)
  • minor changes to the readme (92f6a0e)
  • added "they talk about us" section (fde2646)
  • updated links (09aaa0f)
v1.0.2-alfaroa Breaking risk
Notable features
  • Command `update` now supports folder uploads
Full changelog

What changed:

  • Improved command update on local client to add folder uploads
  • Fixed a small logging type issue in the server
  • Changed the README structure with clear instructions

Updating to this version

To update to this version, run the following command.

bw-update --to v1.0.2-alfaroa
Commit history
  • Merge pull request #27 from dpipstudio/local-improvements (6be1548)
  • from bold to h2 (a464001)
  • updated release message (1e36552)
  • local,server: changed some logs from broadcast to file (3417843)
  • =--- v1.0.2-alfaroa ---= (fbc4fde)
  • readme: updated local client examples (88e8737)
  • local: updated doc (24f9148)
  • local: updated upload command to support folder uploads (73c4195)
  • server, _upload_folder_contents: changed Log.broadcast to Log.file (2a9bed1)
  • Merge pull request #26 from dpipstudio/readme-tweaks (7bf2d22)
  • fixed typo (2) (321fb2e)
  • adding separators to mark details start and end (edf56fc)
  • removed typo (a88a78d)
  • changed images placement (3523554)
  • . (literally) (19a0201)
  • fixed the TOC (2cb43df)
  • rewrote the readme (1ee1206)
  • some readme tweaks, again (bdaed14)
  • removed bw_custom -> pifm mention (1b547da)
  • few changes to the readme (88bc252)
  • tiny fixes (af7b072)
  • added commands to review the install code (72b3f28)
  • removed protocol warning (6e9df4e)
  • Update installation.json for release v1.0.1-terminalia (7261517)
v1.0.1-terminalia Bug fix

Fixed command history issues in server and local implementations.

Full changelog

What changed:

  • Changed readme to add the ETC section and a dynamic hero image
  • Fixed command history implementation in server and local

Updating to this version

To update to this version, run the following command.

bw-update --to v1.0.1-terminalia
Commit history
  • =--- v1.0.1-terminalia ---= (59b3555)
  • server: fixed command history issue (8eff9f2)
  • local: fixed command history issue (7848bbc)
  • added failurl to prevent togp fails (afe7d2e)
  • made the stats more readable (678a8f8)
  • added placeholders (501aa45)
  • changed the icons layout (0c557f0)
  • updated main logo with togp-generated one (b495a40)
  • moved text and icons a bit (991e279)
  • lowered stars text (28a4ab9)
  • added togp_logo.svg (8035e3f)
  • added show hn (28d6141)
  • made some "graphical" adjustments (70d7857)
  • minor changes to the readme (92f6a0e)
  • added "they talk about us" section (fde2646)
  • updated links (09aaa0f)
  • created readme_assets inside assets/ (46bb1b0)
  • small catty update (ed8cb30)
  • server: changed audio frequency to static 700Hz instead of using the broadcast frequency (a4ebd4e)
  • local: changed audio frequency to static 800Hz instead of using the broadcast frequency (76fd3ab)
  • md support in release notes (7600dab)
  • added some readmes (4dd9b4e)
  • fixed typo (78b5c9d)
  • Update installation.json for release v1.0.0-oak (c185684)
v1.0.0-oak Maintenance

Minor fixes and improvements.

Full changelog

This is the first BotWave release. This release provides a basic client-server implementation for BotWave, alongside a standalone client. The protocol version is 2.0.0. It supports basic FM broadcasing, SSTV & morse encoding, and more !

Updating to this version

To update to this version, run the following command.

curl -sSL https://botwave.dpip.lol/update | sudo bash -s -- --to v1.0.0-oak

Beta — feedback welcome: [email protected]