Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.1.64] - 2026-08-04
Added
tvlabs execute --containerizedruns your entrypoint in a container on your own machine instead of directly on the host. The image owns the toolchain, so a run no longer depends on what happens to be installed here, and the container sees only--context(mounted at/workspace) and theTVLABS_*contract — none of your environment. Experimental,rokuonly, and macOS with Docker Desktop only for now. Build the image withmise run build-runner-image; it is not published yet. See Containerized runs.tvlabs execute --imagenames the container image for--containerized, defaulting totvlabsai/execute-runner:<cli version>. Customers who need more than the base image provides canFROMit and pass their own.
Changed
- A containerized run's device forwards bind ephemeral local ports instead of the platform's documented ones. The
TVLABS_*contract already promised that "a port is one the local end really binds", and it now reports what was actually bound rather than what the port map expected. So--containerizedno longer collides with anadbserver you already have running, a dev server on8080, or a secondtvlabsrun — and two runs can share one machine, which [0.1.62]'s preflight could only report as a failure. Read every port from itsTVLABS_*variable and this is invisible to your harness; a harness that hardcodes8060or5037will only work on the host path. Host runs are unchanged and still bind the documented ports. TVLABS_DEVICE_HOSTishost.docker.internalunder--containerized— the container's route back to your machine — while--bind-addresscontinues to control what the tunnel binds.TVLABS_OUTPUT_DIRis a/workspace/...path in that mode; its contents still land under--contexton the host, through the mount.
[0.1.63] - 2026-07-31
Fixed
- The
--targetexample intvlabs execute --helptargetedplatform_key:fire_tv, which matches no platform and now fails withunknown platform_key "fire_tv". Fire TV and Google TV are OS variants ofandroid_tv: target them withplatform_key:android_tv AND platform_os_variant:fire_tv. - A
--targetnamingplatform_key:fire_tvorplatform_key:google_tvno longer reports a missing localadbin place of the real problem. The preflight treated both as platforms needing the Android toolchain; since neither is a platform key, the run now goes straight to the server and reportsunknown platform_keyinstead.
[0.1.62] - 2026-07-31
Added
tvlabs executechecks the local platform toolchain before it requests a device. When--targetnames aplatform_key, a missingadb/sdb/ares-setup-device, or any port the platform's tunnel binds already taken — the adb server's5037, the sdb server's26099, webOS's3000, Roku's8080, whichever applies — exits1in under a second instead of after a device has been matched and warmed. Targets whose platform the CLI cannot determine up front are checked as soon as the server reports the device, and also exit1. See Local requirements.tvlabs executebuilds itsTVLABS_*environment per platform, and ships the variables a harness needed and had to work out for itself:TVLABS_DEVICE_IP,TVLABS_DEVICE_NAME,TVLABS_OUTPUT_DIR,TVLABS_ADB_ADDRandTVLABS_ADB_SERIAL(Android),TVLABS_SDB_ADDR(Tizen),TVLABS_ARES_DEVICEandTVLABS_SSH_ADDR(webOS),TVLABS_ECP_PORTandTVLABS_ROKU_DEV_PORT(Roku). A variable that does not apply to the matched platform is now absent rather than empty. See Environment contract.tvlabs execute --webos-tools-dir, matchingtvlabs connect, for a runner that keeps thearesCLI offPATH. The preflight above honours it: thearesCLI may live there rather than onPATH.
Changed
tvlabs executeno longer passesTVLABS_API_KEY(or any otherTVLABS_*key, token, secret, password or passphrase) to the entrypoint. A harness that shells out totvlabsitself — or to the TV Labs API — must now be given the key explicitly:--env "TVLABS_API_KEY=$TVLABS_API_KEY". Your own secrets are untouched.TVLABS_INSPECTOR_PORTis set only on the platforms where something is actually listening on it, and the docs now say what answers there per platform. It was previously set on every platform, including ones where nothing was bound.- The port-collision error now names the fix instead of
lsof: a busy5037or26099recommendsadb kill-server/sdb kill-server.
Fixed
tvlabs executechecks that--contextcan be written to while validating flags, instead of failing after a device had been matched and warmed.tvlabs executesets the Viera log file path and the webOS tools directory it had been omitting, which made the Viera log server fail every write.- A platform missing from the port map (a typo, or a platform with no documented port list) no longer silently reports a successful connection with zero device port forwards.
tvlabs connect/tvlabs executenow print a warning and forward only the app port.
Removed
google_tvandfire_tvas platform keys. Both are OS variants ofandroid_tv, not platforms of their own — a Fire TV or Google TV device reports platformandroid_tvto the CLI and resolves through theandroid_tvport map and ADB handler. The dedicated entries were unreachable on every real code path.
[0.1.61] - 2026-07-27
Added
tvlabs execute(aliastvlabs exec), an experimental command that requests a device, tunnels to it, and runs a script of yours against it — built for CI. See tvlabs execute for the environment contract and exit codes. Experimental means its flags,TVLABS_*variables and exit codes may change without a major version bump; pin your CLI version if you depend on it.
[0.1.60] - 2026-07-22
Fixed
- Fixed an issue that could cause some requests to TV Labs services to be rejected.
[0.1.59] - 2026-07-13
Changed
- Roku ports
8080(debugger) and8085(BrightScript console) now forward to the sidecar, which multiplexes the telnet console across clients on the backend.
Removed
- CLI-side console multiplexer for Roku port
8085, along with the--logsand--modeflags ontvlabs connect. Connect to:8085on the sidecar instead — multiple concurrent clients are now supported.
[0.1.58] - 2026-07-13
Added
- Web inspector for Android, Fire TV, and TiVo WebViews. Press
dduringtvlabs connectto open Chrome DevTools on the foreground app, or add the inspector port (default9222, set with--inspector-port) as achrome://inspectnetwork target.
Fixed
adb kill-serverinterception scans only the bytes actually received, avoiding false matches.
[0.1.56] - 2026-04-22
Added
- Local
/_dev/certificateendpoint to serve Tizen dev certificate bundle certificate_urlfield in session device payload for platform-specific signing
[0.1.55] - 2026-04-14
Added
--webos-tools-dirflag fortvlabs connectto specify a custom directory for ares-* CLI tools--mock-tunneland--local-devicedev-only flags for local testing--base-urldev-only flag to override the API/WebSocket host- Local HTTP status API for external tools to query tunnel state
Fixed
- WebOS platform handler uses absolute paths from
--webos-tools-dirinstead of relying on PATH - Synchronized concurrent writes to mux upstream
- Cross-platform PID liveness check for session files
- Sanitized session ID in file paths
- Thread-safe access to active mux server via atomic pointer
[0.1.54] - 2026-04-13
Added
--headlessflag fortvlabs connectto run without TUI (for VS Code extension integration)--sessionflag auto-connects to a specific session directly, skipping session selectionTVLABS_API_KEYenvironment variable support for API key authentication
Fixed
- Check PATH before appending install location in install script
Removed
- Deprecated port mappings for app ports and Viera log server
[0.1.53] - 2026-04-01
Added
- Support for
local.tvlabs.aistable DNS name for device companion host resolution with app ports and Viera log server.
[0.1.52] - 2026-03-06
Added
- Port mapping for browser devices
[0.1.51] - 2026-02-25
Changed
- Tizen debugger functionality uses static port forwarding instead of dynamic forwarding to allow the system to access the debugger for network capture.
[0.1.50] - 2026-02-17
Fixed
- Fix for app port forwarding when device is connected to subnet
10.42.0.0/24
[0.1.49] - 2026-02-02
Added
- Support for user hosted web applications
Fixed
- Output messages about upgrading, invalid API key, internal server errors to stderr instead of stdout
[0.1.48] - 2025-10-08
Added
- Support non-interactive mode with
tvlabs uploadandtvlabs testcommands
[0.1.47] - 2025-09-22
Added
- Chromium debugger support for TiVo platform
[0.1.46] - 2025-09-22
Added
adbserver support for Android Mobile devices
[0.1.45] - 2025-09-17
Added
- Handling for existing builds in
uploadcommand - Compute SHA256 hash of uploaded file, send in metadata
- Send service name and version in channel join
[0.1.44] - 2025-08-11
Added
- Viera debug log server and connect options
[0.1.43] - 2025-07-15
Fixed
- Critical race condition in
runcommand that caused "concurrent map writes" crashes during automation execution - Improved terminal output: base64 images now shown as 🖼️, better error handling, less whitespace, and proper resource cleanup
[0.1.42] - 2025-07-14
Added
runcommand to execute project-based automations from CLI with same capabilities as web interfaceprojectscommand group to organize project-related functionalityprojects listcommand to list all accessible automation projects with comprehensive project informationprojects targetscommand to discover available app/device combinations for automation projects
[0.1.41] - 2025-05-10
Fixed
- Issue where
uploadcommand would hang if API key was not set, or set incorrectly
Added
whoamicommand to display information about the current user
[0.1.40] - 2025-05-09
Added
uploadcommand supports uploading for target application by slug
[0.1.39] - 2025-05-08
Changed
upgradecommand will upgrade the CLI to the latest version instead of printing the instructions to do so
[0.1.38] - 2025-05-08
Fixed
- Bug where
uploadcommand could generate unuseable builds when upload is interrupted - Bug where
uploadcommand error messages were not being displayed
[0.1.37] - 2025-04-30
Changed
uploadcommand processes build after uploaduploadcommand now accepts an-noption, when specified, there's no newline printed after the build ID
[0.1.36] - 2025-04-24
Changed
uploadcommand file metadata collection improvements
[0.1.35] - 2025-04-23
Added
- Support for Vizio debugger
[0.1.34] - 2025-04-10
Added
connectcommand now accepts--bind-addressor-bflag to bind the SSH tunnel to a specific address instead of the default value oflocalhost.
[0.1.33] - 2025-03-19
Added
- Sessions can be ended from
tvlabs connectby pressinge
Changed
- Display instructions to get/generate API keys when no API keys were set or found with invalid API keys.
- Updated
adbinstructions to specify device - Updated
adbinstructions to include opening app
[0.1.32] - 2024-12-30
Changed
sdbserver now runs remotely next to the the device instead of locally. Prior versions of the CLI will not be able to connect to Tizen devices viasdb.
Fixed
- Issue where
-iflag onuploadcommand would add in a unwanted newline
[0.1.31] - 2024-12-12
Added
uploadcommand now supports--id-onlyor-iflag to output only the build ID
[0.1.30] - 2024-11-27
Added
- Support for Tizen and WebOS websocket remotes
[0.1.29] - 2024-11-26
Fixed
- Issue where Roku ECP requests would fail if the Host header was not set to the device IP.
[0.1.28] - 2024-11-22
Fixed
- Fixed some incorrect URLs to some documentation pages
- Improved text readability when the terminal has a white background
[0.1.27] - 2024-10-28
Added
- Install powershell script for Windows
upgradecommand instructions for Windows
Fixed
- Issue where home directory in Windows was not being set correctly
- Issue where
tvlabs checkwould fail in Windows like environments
[0.1.26] - 2024-10-10
Fixed
- Issue where
tvlabs connectwould fail on Windows environments when trying to save pre-paired keys.
[0.1.25] - 2024-09-30
Added
- Display installed apps when connected to a device. Currently only supported on the webOS platform.
[0.1.24] - 2024-08-07
Added
- Display toast in web UI when session is connected to with
tvlabs connect - Retry logic on
adb connect
Changed
- Avoid logging sensitive info
Fixed
- Issue where connection status could show as successful when it failed
[0.1.23] - 2024-08-05
Added
connectcommand warning about unrestored keys on start after improper shutdownconnectcommand restore keys functionality on main menu after improper shutdown
[0.1.22] - 2024-08-02
Changed
- Retry attempts on sdb connect
[0.1.21] - 2024-08-02
Added
connectreturns to session selection menu when current session ends
[0.1.20] - 2024-08-01
Fixed
- Bug where port forward would fail to shutdown on reconnect
- Status indicator state when SSH tunnel fails to connect
[0.1.19] - 2024-08-01
Fixed
- Issue where Tizen inspector would fail if more than one device connected
[0.1.18] - 2024-08-01
Added
connectcommand debugger statusconnectcommand Tizen inspector support. See the documentation to learn about usage.
Fixed
- Issue where connection would not close when session ends
[0.1.17] - 2024-07-31
Fixed
- Race condition on
tvlabs connectexit where keys might not be restored.
[0.1.16] - 2024-07-30
Added
connectcommand accepts--inspector-portor-iargument to control local inspector port
Changed
connectcommand webOS inspector now runs on a default debugger port
[0.1.15] - 2024-07-29
Added
- Support for Chrome development tools inspector on the webOS platform.
[0.1.14] - 2024-07-29
Fixed
connectcommand help text for WebOS
[0.1.13] - 2024-07-24
Added
connectcommand support for Fire TV
[0.1.12] - 2024-07-23
Added
- include version in distributed binary file names
[0.1.11] - 2024-07-19
Added
connectcommand improved initial state text
[0.1.10] - 2024-07-19
Added
upgradenow provides a link to this changelog
Fixed
connectinstructions for Rokuupgradefix help instructionsuploadfix help instructions
[0.1.9] - 2024-07-17
Fixed
connectcommand retry hot-key