Skip to content

Releases: askac/standterm

StandTerm v2.5.0

Choose a tag to compare

@askac askac released this 30 Jun 16:20

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 screen sessions 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

Choose a tag to compare

@askac askac released this 25 Jun 02:37

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_pwd and shcmd_json_pwd.

Improved

  • Updated /agentinfo, README, socket contract docs, and the external-agent skill example to recommend agent_shcmd.py for one-line shell checks.
  • Documented that agents should resolve the live StandTerm instance through tokenless /agentinfo or current_agentinfo.json before 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_policy without disabling the normal short-lived cache.

Notes

  • agent_shcmd.py is 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 use agent_repl.py for 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, and agent_cli.py screen.
  • Verified cloning and building microsoft/edit after updating the Rust toolchain to stable.

StandTerm v2.4.0

Choose a tag to compare

@askac askac released this 11 Jun 09:26

Minor bug in launcher batch fixed

StandTerm v2.3.0

Choose a tag to compare

@askac askac released this 05 Jun 12:15

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-url and /session/renew endpoints 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:
  • u copies the Access URL
  • t copies 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_required error 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

Choose a tag to compare

@askac askac released this 02 Jun 18:43

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

Choose a tag to compare

@askac askac released this 02 Jun 16:49

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

Choose a tag to compare

@askac askac released this 02 Jun 05:40

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_fields support 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_fields metadata.
  • 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 COMx ports via Windows APIs.
    • WSL-local serial devices such as /dev/ttyUSB0 via pyserial.
  • Manual UART input now distinguishes:
    • COMx as 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 PiP is 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

Choose a tag to compare

@askac askac released this 27 May 17:45

v2.1.1

Added

  • Added an external-agent heartbeat operation for display-free keepalive during long passive monitoring sessions.
  • Added agent_cli.py heartbeat.
  • Updated agent_repl.py to send hidden heartbeat keepalives while long-polling terminal output, with fallback for older servers that do not support heartbeat.

Fixed

  • Fixed visible_xterm_png captures 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 /agentinfo as the platform-neutral discovery surface for external-agent setup.
  • Clarified that screen and tail polling observe output but do not renew idle tokens by themselves.
  • Recommended agent_repl.py for long-running remote build/compile monitoring because it combines long-poll tail with heartbeat keepalive.

v2.1.0

Choose a tag to compare

@askac askac released this 27 May 02:56

External Agent Mirror and installer updates

Highlights

  • Added External Agent Mirror protocol improvements for local CLI agents.
  • Added bounded external-agent sequence operations.
  • Added render modes for external agents:
    • auto
    • mirror_screen
    • visible_xterm_png
  • Changed render_mode: auto to prefer lower-cost structured mirror_screen output.
  • 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 .gitattributes to 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-screen returns structured terminal screen data without PNG bytes.
  • render --mode visible-xterm-png remains available for browser-rendered PNG captures.
  • render --save now 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

Choose a tag to compare

@askac askac released this 25 May 11:06
  • StandTerm rename
  • external-agent CLI/REPL improvements
  • headless screen fallback
  • hidden REPL keepalive
  • generic automation aliases
  • shared paced input helpers
  • REPL paced startup typing