Releases: askac/standterm
Release list
StandTerm Desktop 0.4.1 (Windows x64 evaluation)
StandTerm Desktop 0.4.1 — Windows x64 evaluation
This is an unsigned pre-release, not a production-qualified Desktop or stable Core release. The existing stable Core release remains v2.10.0. This candidate is built from commit 4050a29f467fcfa94e389042a9e18a3154be0459; its source is under review in PR #19.
Download and prerequisites
Download StandTerm-Desktop-0.4.1-win32-x64-Setup.exe and its .sha256 checksum file. The installer contains Electron and the public Core snapshot, but does not include Python or a venv. End users do not need Git, Node.js, or npm.
- Windows only: install 64-bit Windows Python 3.10+ with venv/ensurepip first.
- WSL only: have an existing WSL distribution with Python 3.10+ and venv/ensurepip.
- Windows + WSL: meet both prerequisites; setup prepares separate environments and shortcuts.
Dependency installation requires network access and explicit user approval. Python/WSL are not installed automatically. The unsigned installer may trigger Windows publisher/SmartScreen warnings; this release is intended for evaluation.
Save work and quit Desktop, including tray windows, before installing or upgrading. Existing NSIS evaluations can be upgraded in place; a changed Core bundle prepares a new environment. Full automated installer lifecycle acceptance remains outstanding. Older 0.1.x/0.2.x Squirrel evaluations require manually uninstalling the old interface first. User settings and existing runtimes are retained; optional uninstall venv cleanup is recoverable and disabled by default.
Highlights
- Native Windows or Windows + WSL Desktop launchers share the existing Core UI, with user-approved initial setup and remembered ports. Occupied ports prompt for a replacement without stopping the other service.
- Browser settings and stored keys persist per backend mode and origin, consistent with Core browser behavior. Session authentication is refreshed rather than kept as a long-lived Desktop login token.
- Files/PiP floating windows, PNG screenshots and silent WebM recording are available in the Desktop layer. Native Windows Local Shell does not yet expose the local Files backend; WSL Local Shell supports it.
- Diagnostics show the actual backend URL/port and bounded startup events. Copy backend URL or tokenless agent connection information to avoid connecting to another instance. These exports do not grant agent access; normal mint/approval rules still apply.
- About shows Desktop and actual running Core versions, Python/Electron/Chromium/Node.js/platform, and managed Core bundle SHA-256 when available. Source checkouts and older backends do not receive an invented build identity.
- Long agent approval requests keep action buttons reachable in Core and Desktop. External previews offer a user-confirmed default-browser fallback without forwarding StandTerm credentials.
- Core shortcut startup supports remembered ports, and opt-in platform passkeys can recover a session that remains live in the same Core process. This is not persistence across a Core restart.
Build identity
- Desktop:
0.4.1 - Core:
2.11.0-dev - Electron:
44.2.0 - Platform: Windows x64; Windows and WSL backend modes
- Core bundle SHA-256:
1196654bf9dd391750081953542af727f11768532b3774b6cffba60036b06b15 - Installer SHA-256:
32a30ee047b05bb0db01338b853df60866de6fea7b94eb8ed890e738c827cacd
The checksum detects corruption; it does not replace publisher signing. No private handoffs, profiles, credentials, developer venvs, or unintegrated rescue scripts are included.
Validation and remaining limits
The source passes Core headless regression checks and 51 Desktop unit tests. GitHub push and PR headless checks pass. The packaged executable passes native Windows and WSL authentication, shell I/O, reload reattachment, About/diagnostics/copy-info, PiP/child guards, PNG and decodable silent WebM checks using disposable profiles and existing isolated test venvs. WSL additionally passes Files browse/download/destination navigation. All 48 bundled Core files and the packaged shell match the staging snapshot.
These smoke tests bypass interactive first-run setup. The complete clean-install/upgrade/cancel/uninstall matrix in an isolated Windows account or VM, manual default-browser handoff acceptance, and broader platform acceptance remain outstanding. Python requirements are not fully version-locked. There is no Core updater or automatic Desktop updater; updates are installed manually. This release does not claim that live SSH/shell connections survive restarting Core.
StandTerm v2.10.0
StandTerm v2.9.0
Highlights
- Add approved agent file transfers between live SSH and supported Local Shell sessions through
agent_scp.py, the CLI/MCP adapters, and the dedicated file-transfer skill. - Expand the human-facing Files window to SSH and supported POSIX Local Shell tabs, with explicit Download and cross-session Copy to… workflows.
- Stream copies through bounded asynchronous backend workers with structured byte progress, immutable transaction outcomes, conflict handling, logical self-copy rejection, and atomic publish behavior.
- Show file-copy approval globally across tabs while preserving fresh Approve copy authorization even when both agent sessions use Full mode.
- Allow human Files copies to cancel before the atomic publish barrier. Once publishing starts, the UI clearly shows that the transaction can no longer be cancelled.
- Remove the duplicate destination close icon and explain when Files can be closed without confusing window close with copy cancellation.
Terminal and SSH reliability
- Advertise
COLORTERM=truecolorandTERM_PROGRAM=StandTermwhile keeping the compatibleTERM=xterm-256colorvalue. - Keep agent state outside display payload control flow and use monotonic deadlines for browser SSH signing requests.
Compatibility and safety
- Preserve the legacy SFTP routes and socket event names behind the renamed Files UI.
- Reject unsupported Local Shell platforms, symbolic links, non-regular files, stale endpoint bindings, changed source or destination snapshots, and same-file copies.
- Preserve the source file for every copy. Ambiguous SSH publish outcomes still require destination inspection before retrying.
Verification
- Complete headless smoke runner passed locally.
- Complete Chromium browser smoke suite passed locally.
- GitHub Actions passed on PR #17 and the merged
maincommit.
Full Changelog: v2.8.0...v2.9.0
StandTerm v2.8.0
Added
- Add a lightweight SFTP File Manager for direct SSH endpoints with flat directory navigation, drag-and-drop upload, download, rename, and two-stage permanent deletion.
- Add Keep Both and atomic Replace handling for upload conflicts.
- Add SFTP entry points to the main status bar, terminal context menu, and Terminal Picture-in-Picture, including a disabled unavailable state.
Security
- Bind remote file actions to short-lived opaque references and browser-, socket-, terminal-, and live SSH bridge-scoped transfer tickets.
- Restrict file operations to regular files and reject symbolic links, non-regular entries, stale references, and mismatched transfer contexts.
- Keep nested interactive SSH sessions outside the SFTP boundary; the file manager acts only on the direct endpoint represented by the tab.
Fixed
- Defer session-recovery reconnect until the previous Socket.IO transport can close cleanly.
- Skip the disposable Picture-in-Picture capability probe during Windows warm starts.
Documentation
- Document SFTP capabilities, entry points, direct-endpoint limits, and opaque-reference security boundaries in README.md.
Validation
- Passed the complete backend and Chromium smoke suites locally.
- Passed GitHub Actions for the feature branch, pull request, merged main branch, and v2.8.0 tag.
- Verified a real HTTPS Edge download from an SSH tab through ticket acceptance to exact completion at 29,996,934 bytes.
StandTerm v2.7.2
Fixed
- Preserve WebGL block and quadrant glyph coverage at narrow cell widths to avoid gray seams.
- Keep the bar cursor visible at column zero with compact terminal-edge padding and a transparent-track scrollbar.
- Prevent browser smoke servers from overwriting the global current-agentinfo pointer.
Added
- Show sanitized OSC 0/2 application titles in an optional fixed status-bar column while preserving StandTerm tab labels and hiding empty titles.
- Add a cursor-edge mode to scripts/draw_terminal_patterns.sh.
Documentation
- Require exact HTTP(S) scheme and port for External Agent discovery, describe same-user/runtime scope and Windows/WSL localhost behavior, and avoid cwd/port scanning.
- Require read-only terminal state inspection before agent input and add privileged-input HITL skill guidance.
- Document the downstream WebGL narrow-cell correction and upstream evidence.
Validation
- Passed the complete headless smoke suite and both GitHub Actions runs.
- Covered targeted Chromium regressions for WebGL blocks, Unicode/emoji cells, cursor settings and column-zero visibility, padding, and OSC title visibility/truncation/persistence.
- Verified tokenless agentinfo through WSL and Windows localhost paths and exercised the MIBCRK build manually.
StandTerm v2.7.1
Fixed
- Make Retry Now restore the Socket.IO namespace subscription after a full disconnect instead of reopening only the underlying manager transport.
- Keep continuous reconnect backoff and current access-token recovery after an immediate retry fails.
Documentation
- Explain the browser-owned, non-extractable Ed25519 signing boundary, exact SSH profile binding, fail-closed request checks, and non-secret settings portability.
- Document the browser authorization URL as a single-use 120-second bearer credential, persistent browser-key trust, and process-lifetime access-token rotation behavior.
Validation
- Covered 32 browser regression scenarios, including offline recovery, full Socket disconnect recovery, and session-token recovery.
- Covered the complete backend smoke suite, including authorization grant replay rejection, remote access policy, and browser SSH signer boundaries.
- Passed static documentation and diff validation.
StandTerm v2.7.0
v2.7.0 Release Notes
- Added browser-owned Ed25519 SSH keys backed by non-extractable WebCrypto private keys in IndexedDB.
- Added a SID-scoped remote-signing bridge so Python receives only SSH challenge signatures and never receives browser private keys.
- Added explicit key generation, OpenSSH public-key copy, exact-profile key binding, optional Use key selection, and fail-closed loopback or authorized-HTTPS policy checks.
- Added versioned browser settings export and merge import through a Base64 ZIP JSON envelope, including preferences, SSH profiles and order, six-entry history, and persistent UI layout while excluding keys, credentials, browser identity, tokens, and runtime diagnostics.
- Added Retry Now to the existing Socket.IO reconnect flow without resending SSH credentials.
- Reduced warm launcher time by trusting matching dependency stamps before heavyweight imports and folding the WSL screen check into the launch command.
- Expanded backend and Chromium regression coverage for signing integrity, stale-request rejection, key lifecycle, OpenSSH formatting, settings exclusions and merge behavior, and reconnect recovery.
StandTerm v2.6.8
v2.6.8 Release Notes
- Added browser-local SSH session profiles with stable IDs, explicit Create, Save, Delete, and reorder controls.
- Added successful-connection history capped at six entries, a Clear History action, and an independently persistent Save history preference.
- Added profile selection to Quick Connect, optional automatic profile creation after successful login, and profile-aware SSH tab and status labels.
- Kept passwords out of persisted session data and reserved key references without enabling private-key generation or key authentication yet.
- Removed the redundant TERM and color capability fields from the status bar and expanded browser/backend regression coverage.
StandTerm v2.6.7
v2.6.7 Release Notes
- Removed blended seams from composite quadrant Block Elements at odd device-cell widths while preserving normal glyph rendering fallbacks.
- Added the Unicode 11 width provider so common emoji occupy two terminal cells without overlapping adjacent text.
- Extended background terminal mirrors with integer-aligned quadrant geometry while retaining the existing optional CJK ambiguous-width behavior.
- Expanded the terminal rendering test card and browser regressions for quadrant logos, emoji adjacency, and intentionally spaced status squares.
StandTerm v2.6.6
v2.6.6 Release Notes
- Fixed horizontal and vertical seams in background terminal PNGs by rendering Unicode Block Elements as exact canvas rectangles instead of font glyphs.
- Preserved the foreground xterm DOM rendering path and normal font rendering for text, shade glyphs, box drawing, and wide characters.
- Added a reusable ANSI terminal rendering test card covering full blocks, half-block boundaries, progress bars, explicit cell backgrounds, colors, and wide text.
- Added pixel-level browser regression coverage for full-block continuity and half-block seams over non-default cell backgrounds.