Releases: askac/standterm
Releases · askac/standterm
Release list
StandTerm v2.5.0
Added
- Added a lightweight launcher access window for local desktop sessions.
- The access window provides browser launch, URL copy, token copy, shutdown, and a compact status monitor.
- Added local launcher control endpoints for status and shutdown, protected by a per-process launcher token and local-client checks.
Changed
- Access URL and token are hidden in the UI; users copy them through explicit buttons.
- The access window now tracks the current StandTerm instance and disables copy/open actions when the UI is stale or offline.
- Closing the access window via the window manager now minimizes it instead of exiting, keeping URL/token recovery available.
- WSL launchers now pass restart path context and clean stale
screensessions more reliably.
Removed
- Removed the launcher UI restart action. Shutdown remains the supported server lifecycle action.
Fixed
- Fixed stale access window behavior so old UI instances cannot copy outdated tokens.
- Fixed status probing for WSL/Windows localhost differences by using launcher control URL fallbacks.
- Fixed status display that could incorrectly show offline when the handoff omitted status URL data.
Verification
tools/.venv_wsl/bin/python scripts/run_smoke_tests.py
StandTerm v2.4.3
StandTerm v2.4.3
Added
- Added
scripts/agent_shcmd.py, a shell-command convenience helper for External Agent Mirror workflows. - The helper sends one command line into the currently attached terminal and returns captured output as stdout or compact JSON via
--json. - Added generated external-agent command hints for
shcmd_pwdandshcmd_json_pwd.
Improved
- Updated
/agentinfo, README, socket contract docs, and the external-agent skill example to recommendagent_shcmd.pyfor one-line shell checks. - Documented that agents should resolve the live StandTerm instance through tokenless
/agentinfoorcurrent_agentinfo.jsonbefore using handoff files. - Clarified that stale handoff files from old launches should not be discovered by filesystem scanning.
- Refresh UART port discovery on demand when opening or returning to the UART connection UI.
- Fix a case where USB-UART adapters plugged in after StandTerm startup were not shown in the UART port selector until the serial-port cache expired or the page reloaded.
- Improve WSL/Windows COM discovery behavior by allowing fresh serial scans through
refresh_terminal_policywithout disabling the normal short-lived cache.
Notes
agent_shcmd.pyis a terminal helper, not a subprocess exec API. It does not provide reliable exit codes or separate stderr.- For long-running commands, use explicit shell completion markers and observe with
agent_cli.py tail --wait-ms, or useagent_repl.pyfor passive monitoring.
Validation
- Passed headless smoke checks with
scripts/run_smoke_tests.py. - Live-tested External Agent Mirror with
agent_shcmd.py,agent_cli.py tail, andagent_cli.py screen. - Verified cloning and building
microsoft/editafter updating the Rust toolchain to stable.
StandTerm v2.4.0
StandTerm v2.3.0
Added
- Added a browser token login page for direct access to
/when no valid?token=...URL is present. - Added session renewal for authenticated browser sessions to reduce idle disconnect recovery issues.
- Added Settings > Server access recovery controls for copying or temporarily revealing the current access URL.
- Added
/access-urland/session/renewendpoints with authenticated, no-store responses. - Startup output now prints both the Access URL and Access Token.
- When a supported clipboard tool is available, startup shows terminal hotkeys for copying:
ucopies the Access URLtcopies the Access Token
Changed
- Initial browser policy no longer embeds the token-bearing localhost access URL in the page state.
- Socket.IO connect failures now return a typed
session_requirederror so the browser can show the recovery flow.
Fixed
- Improved recovery path for browsers that lose their session after long idle periods, without requiring users to find the original token URL.
StandTerm v2.2.2
Fixes
- Fixed PTT/macOS terminal display issues caused by split UTF-8 reads and CJK width handling.
- Prevents valid UTF-8 characters from turning into replacement characters when PTY/SSH output splits a multibyte character across reads.
- Improves macOS xterm rendering for CJK and East Asian Ambiguous glyphs used by PTT board lists.
Improvements
- Added incremental UTF-8 decoding for Local Shell output.
- Added incremental UTF-8 decoding for SSH output.
- Updated macOS terminal font fallback for better CJK rendering.
- Applied the same terminal font/size/theme settings to the hidden External Agent mirror terminal.
Validation
git diff --check- Python compile checks for touched backend/test files
tests/agent_backend_smoke.py- Manual PTT verification on macOS feedback path
- Manual Linux Edge/WSLg PTT regression check
- PTT Test board post flow completed successfully
StandTerm v2.2.1
Fixes
- Fixed Local Shell startup on macOS/Linux when no WSL shell selection is available.
- v2.2.0 could incorrectly apply the WSL-only default shell kind and show
Local Shell selection is only available on WSL. - Local Shell PTY output now tolerates non-UTF-8 bytes, preventing disconnects when connecting to services that emit legacy encodings.
Added
- Added optional MCP stdio adapter for external agents.
- Added WSL launch helper batch files.
- Added terminal full-width box drawing script for terminal size/layout testing.
StandTerm v2.2.0
StandTerm v2.2.0
Release from v2.1.1 to v2.2.0.
Highlights
- Added backend plugin/start form/settings contract documentation.
- Added typed backend
start_fieldssupport for SSH, Local Shell, and UART connection controls. - Added runtime mutable defaults for SSH, Local Shell, and UART settings.
- Improved WSL UART support with explicit Windows COM and WSL
/dev/...source handling. - Improved Terminal to PiP behavior for multi-tab sessions.
Changes
Terminal Backend Contract
- Added
docs/backend_plugin_contract.md. - Documented
TerminalBackendPlugin,BackendStartFieldSchema, runtime settings, compatibility surfaces, and legacy fallback expectations. - Cross-linked backend plugin details from README and Agent socket contract docs.
Connection Controls
- Frontend connection controls now prefer typed
start_fieldsmetadata. - SSH defaults can now be driven by runtime settings.
- Local Shell selector uses WSL-only structured options.
- UART baud options/defaults are driven by typed fields with legacy fallback preserved.
WSL UART
- WSL can now list both:
- Windows
COMxports via Windows APIs. - WSL-local serial devices such as
/dev/ttyUSB0via pyserial.
- Windows
- Manual UART input now distinguishes:
COMxas Windows COM access through the Windows Python helper./dev/...as WSL/Linux serial access.
- UART UI now shows detected ports in a selector with source labels and keeps manual input as a fallback.
PiP / Multi-Tab UX
Terminal to PiPis hidden when only one visible tab exists.- Moving a terminal to PiP now removes that tab from the visible tab list.
- The main window switches to the remaining background tab while the selected terminal stays fixed in PiP.
- PiP no longer follows active tab changes in the main window.
- PiP includes a bottom status bar with terminal name,
cols x rows, and Agent panel toggle. - Agent panel can be opened from PiP and targets the PiP terminal instead of the background tab.
Validation
git diff --check- Python compile checks
- Backend smoke tests
- Browser smoke tests, including WSL UART UI and PiP tab behavior
v2.1.1
v2.1.1
Added
- Added an external-agent
heartbeatoperation for display-free keepalive during long passive monitoring sessions. - Added
agent_cli.py heartbeat. - Updated
agent_repl.pyto send hidden heartbeat keepalives while long-polling terminal output, with fallback for older servers that do not support heartbeat.
Fixed
- Fixed
visible_xterm_pngcaptures using transparent or mismatched backgrounds, which could make screenshots hard to read in external image viewers. - Heartbeat authorization now renews the idle token only after lifecycle checks pass, so revoked, expired, disconnected, disabled, paused, or wrong-terminal tokens are not refreshed
accidentally.
Documentation
- Documented cross-location external-agent usage with explicit
--url,--token, and--terminal. - Promoted
/agentinfoas the platform-neutral discovery surface for external-agent setup. - Clarified that
screenandtailpolling observe output but do not renew idle tokens by themselves. - Recommended
agent_repl.pyfor long-running remote build/compile monitoring because it combines long-polltailwith heartbeat keepalive.
v2.1.0
External Agent Mirror and installer updates
Highlights
- Added External Agent Mirror protocol improvements for local CLI agents.
- Added bounded external-agent
sequenceoperations. - Added render modes for external agents:
automirror_screenvisible_xterm_png
- Changed
render_mode: autoto prefer lower-cost structuredmirror_screenoutput. - Added backend enforcement for viewport snapshot privacy policy.
- Added native Windows PowerShell one-line installer via
install.ps1. - Added launcher setup guidance for repo-local Python virtual environments.
- Added
.gitattributesto keep POSIX launchers on LF line endings when cloned on Windows.
External Agent Updates
op: "sequence"supports bounded multi-step command execution with deterministic stop conditions.render --mode mirror-screenreturns structured terminal screen data without PNG bytes.render --mode visible-xterm-pngremains available for browser-rendered PNG captures.render --savenow requires--mode visible-xterm-png.- Discovery payloads now expose render policy and explicit render-mode operations.
Installer And Launcher Updates
-
Added native Windows install command:
irm https://raw.githubusercontent.com/askac/standterm/main/install.ps1 | iex
-
install.sh and install.ps1 now focus on bootstrap checks, clone/pull, and launcher handoff.
-
run.sh and run.bat manage repo-local venv creation, dependency installation, and import sanity checks.
-
run.bat now uses the venv Python directly for pip/app execution.
-
Added setup guidance for Ubuntu/WSL minimal Python installs:
sudo apt update
sudo apt install -y git python3 python3-venv python3-pip
Notes
- Existing clients that assumed render default output always includes render.image_base64 should explicitly request --mode visible-xterm-png.
- mirror_screen is now the preferred default for lower context cost and structured agent workflows.
Full Changelog: v2.0.0...v2.1.0
StandTerm 2.0.0
- StandTerm rename
- external-agent CLI/REPL improvements
- headless screen fallback
- hidden REPL keepalive
- generic automation aliases
- shared paced input helpers
- REPL paced startup typing