Skip to content

Release Core 2.14.0 and Desktop 0.5.3 - #28

Merged
askac merged 43 commits into
mainfrom
feat/terminal-capability-discovery
Sep 24, 2026
Merged

askac merged 43 commits into
mainfrom
feat/terminal-capability-discovery

Conversation

@askac

@askac askac commented Sep 24, 2026

Copy link
Copy Markdown
Owner

Core 2.14.0 and Desktop 0.5.3 bring the accumulated SSH, Agent, interface and Desktop improvements to the public release. Windows x64 and macOS arm64 installers share release source 0c8e7f44409bf0d6a32d8c24efce5cba407742df; the final commit only updates public download links and the known-issue notice.

What changed

  • Add English and Traditional Chinese browser/Desktop interfaces, editable translation tables, simpler Agent connection controls and clearer authorization/transfer feedback.
  • Improve SSH profile and route editing, add user-managed SSH TCP tunnels and optional Windows networking for WSL SSH, and advertise terminal RGB capabilities while retaining TERM=xterm-256color.
  • Keep Desktop login valid for its backend lifetime, synchronize its language with Core Settings, show startup feedback, retain recording windows on save failure and restore window state.
  • Advance Core to 2.14.0 and Desktop to 0.5.3; link both platform installers and disclose the unresolved window-restoration drift.

Testing

  • Core headless suites and targeted browser acceptance passed; the Mac exact-source build passed the complete headless runner.
  • All 177 Desktop unit tests passed on Windows and Mac; actual packaged Windows/WSL launch and Mac launch/capture checks passed.
  • Installer inspection verified the staged source and bundled Core identity. Mac bilingual UI, storage persistence and synthetic capture failure/retry checks passed.
  • Native Mac repeated maximize/restore/reopen tests found cumulative geometry drift. This remains an explicit Desktop evaluation limitation; equivalent Windows sequences and fractional-DPI coverage need follow-up. The failing acceptance test has not been weakened.

Desktop packages remain evaluation pre-releases. Windows is unsigned; macOS uses ad-hoc signing without notarization. No private repository history, internal handovers or local runtime files are included.

## Why
Desktop sleep can outlast the browser login deadline and leave the
renderer locked without a usable recovery token.

## What changed
- Create a process-lifetime login through the private Desktop launcher.
- Preserve its session-only cookie across reload, renewal and recovery.
- Keep ordinary browser expiry, Agent authorization and older Core fallback.

## Testing
Pass 164 Core backend cases, 95 Windows Desktop unit tests and isolated
backend smoke on Windows and WSL. Cover simulated long idle, browser
expiry, Agent gates, cookie policy and rejection after backend restart.
## What changed
- Check destination conflicts before waiting for a busy SSH source, and revalidate the source after the user chooses an action.
- Keep copy progress, conflict choices and cancellation visible in short Files windows.
- Show the actual download path with a native folder reveal action.

## Testing
Cover conflict ordering, progress during a 4 MiB transfer, source changes, cancellation and short-window layout. Windows Electron downloads through WSL Core pass the focused Files smoke. The full Desktop smoke stops at the existing window-focus assertion.
## Why
Connected SSH tabs expose only the managed Agent Tunnel preset, leaving users
without general local and remote TCP forwarding controls.

## What changed
- Add temporary browser-owned local and remote forwards with status and Stop.
- Share bounded duplex relays and reverse-port dispatch with Agent Tunnel.
- Preserve Agent API permissions and reject non-loopback remote clients.

## Testing
Exercise both directions through real OpenSSH and three jump hosts, large
half-close and duplex transfers, independent Agent Tunnel cancellation,
viewer ownership, late setup and Core API permission checks. Verify browser
controls and the existing Core headless smoke collection.
## Why
Settings retains a previously selected SSH profile across connections and only
exposes the final route target. Browsers without Document PiP cannot open a
floating terminal or Files window.

## What changed
- Bind new-session drafts to structured metadata from the current tab.
- Separate name and order management from atomic full-route editing.
- Reject changed connection preparation before saving or connecting.
- Reuse an ordinary popup when Document PiP is unavailable, restoring the
  terminal on close and handling browser navigation cleanup restrictions.

## Testing
Headless checks, SSH profile/key and route regressions, native PiP regressions,
and real Chromium/WebKit popup input, Files and restore checks pass. Linux
WebKit may require native close after reloading an opaque-origin blank popup;
macOS Safari still needs manual qualification.
## Why
A single-node SSH entry requires an extra editor layer even though its fields
fit within Settings. Direct and jump nodes need consistent key and host identity
controls without duplicating their persistence behavior.

## What changed
- Show Direct node fields inline and save name, endpoint and key together.
- Share node controls and revision-checked graph/key persistence with routes.
- Carry incomplete drafts and temporary keys into Add jump node while keeping
  the inline draft on cancellation and preserving other node references.
- Keep multi-node details in the second layer and retain inline edits on reorder.

## Testing
SSH context, shared-node preservation, key persistence, incomplete route
promotion, cancel and cross-window save conflicts pass in isolated Chromium.
Existing route, profile/key transfer and PiP regressions pass. Narrow-window
controls, JavaScript syntax, Python compilation and static-site checks pass.
## Why
tmux cannot infer StandTerm RGB support from COLORTERM alone and quantizes
truecolor output when its client capabilities omit RGB.

## What changed
- Answer bounded XTVERSION and XTGETTCAP queries with truthful capabilities.
- Isolate automatic replies from human input and deduplicate live viewers.
- Add a private POSIX terminfo overlay while preserving explicit overrides.
- Document the explicit RGB fallback required by remote tmux 3.4.

## Testing
Cover protocol bounds, authorization, replay, multiple viewers and overrides.
Verify actual RGB cells through Chromium with local and SSH tmux 3.4 clients,
including existing sessions, plus the complete 168-test backend smoke suite.
## Why
Treating main as an omitted terminal can route explicitly targeted input to
another handoff terminal. Continuous output can extend capture settling
indefinitely after the initial output wait.

## What changed
- Preserve explicit terminal and token selections while retaining latest-handoff defaults.
- Bound capture by wait_ms and retain completed writes and captured output on timeout.
- Document the contracts and add a staged UI copy review and translation table draft.

## Testing
Backend smoke checks pass across 169 cases, including multi-terminal isolation,
CLI mismatch rejection without writes, continuous and late output, and capture
timeouts. All 56 CLI/helper smoke cases pass, including explicit overrides and
omitted-target defaults. The 19-row copy table passes key and placeholder checks.
## What changed
- Clarify Agent authorization, permission and token wording while preserving protocol values and access behavior.
- Generate reviewed English and Traditional Chinese messages from a translation exchange table with English fallback.
- Apply the saved local language on the next page opening and include required resources in Core bundles.

## Testing
Agent browser coverage includes both languages, token lifecycle, unchanged active sessions after saving language, connection info and approval flows. Translation validation, safe interpolation, bilingual dialog layouts and Core bundle selection pass.
## What changed
- Clarify browser authorization and session recovery with bilingual static, pending and error text while retaining the English login fallback.
- Distinguish input approval, file-copy approval, rejection, pause and transfer cancellation without changing their protocol bindings.
- Keep uncertain copy results visible in both details and the transfer queue, preserving diagnostic codes and exact paths.

## Testing
The full browser and backend suites cover access-token rejection, device recovery, stale proposals, exact file-copy plans and cancellation barriers. Focused bilingual checks after the final layout correction verify visible warnings, safe dismissal and narrow windows. Catalog validation and English fallback checks pass.
## Why
Desktop menus and toolbar text remain English even when Core uses another
language. Setup and Core source selection also require the shell to own its
language independently of the selected Core.

## What changed
- Save the Desktop language per profile and apply it on the next launch.
- Localize custom menus, toolbar labels and Agent help through 50 reviewed
  bilingual messages, preserving command IDs and per-tab authorization guidance.
- Ship the shell catalog independently and check both catalog outputs for staleness.
- Keep remaining workflow text in English and disclose partial coverage.

## Testing
All 110 Desktop unit tests and seven catalog regression tests pass. Both locales
pass the real toolbar DOM checks with mocked native IPC, including narrow
layout, ARIA labels, SVG preservation and failure feedback without replay.
Staged language assets match source and builder inclusion rules. Native OS
menus, dialogs and installers still require platform acceptance.
## Why
Browser access confirmations and diagnostic windows stay English after changing
the Desktop language. The log status label also implies a live writability check
although it reflects recorded write outcomes.

## What changed
- Add 76 reviewed bilingual messages for browser access, diagnostics, About
  and external-browser confirmations.
- Keep authorization actions, consent indices, sensitive clipboard payloads
  and sanitized error feedback unchanged.
- Escape translated diagnostic text while retaining scriptless rendering and
  literal event JSON, identifiers, paths and version metadata.
- Describe log write outcomes without promising current filesystem writability.

## Testing
All 115 Desktop unit tests and seven catalog regression tests pass; both catalogs
are current. Headless Chromium checks pass in both languages for diagnostic
headings, literal paths/events, escaped markup, empty state and narrow layout.
Native OS dialogs, menus and installer acceptance remain separate.
## Why
Recording finalization can fail while close or quit is pending. Losing the
file outcome across startup or notification awaits permits premature exit
and hides the retained file locations.

## What changed
- Cancel the current close or quit on failed or unconfirmed recording saves
  and show the original error with available partial and destination paths.
- Preserve structured job results across concurrent operations and keep
  notification failure from changing publication or exit decisions.
- Localize Capture settings, status and dialogs in the Desktop table while
  retaining typed actions, raw diagnostics and later explicit exit.
- Keep paused recording controls visible in the compact toolbar.

## Testing
All 133 Desktop unit tests and seven catalog tests pass. Both generated
catalogs are current. English and Traditional Chinese toolbar DOM checks
pass at 640px with mocked native IPC. Native OS dialogs, encoder smoke and
installer acceptance remain separate.
## Why
Environment preparation and Core recovery can run before the Core UI is
available. Their English-only dialogs do not follow the Desktop language
selected for the current launch.

## What changed
- Localize setup consent, progress, cancellation, typed error explanations,
  per-mode cleanup, and Core source management through the review table.
- Keep normal dialogs on the launch language and read the relevant mode
  profile for installer preparation and cleanup.
- Preserve numeric actions, process ownership, raw diagnostics, retained
  files and restart consequences; remove an inaccurate shared Git promise.
- Leave installer-wide summaries and remaining shell notices explicitly
  scheduled for a separate batch.

## Testing
All 145 Desktop unit tests and seven catalog regression tests pass.
Both catalogs are current. Six real setup DOM cases cover both languages
and all platform display branches, with native processes mocked. Focused
checks also cover conflicting installer profile preferences and the final
copy changes. Native GUI and packaged acceptance remain separate.
## Why
Remaining native notices ignore the Desktop language, and several messages
infer more than their structured operation results establish.

## What changed
- Localize port decisions, download results, installer summaries and native
  paste confirmation through the reviewed Desktop table.
- Select the common effective installer profile language or fall back to
  English without writing a shared preference.
- Describe retained result counts, partial maintenance changes and uncertain
  download or paste completion without suggesting automatic replay.
- Preserve numeric decisions, typed states, clipboard guards, verification
  timing and installer ownership.

## Testing
All 165 Desktop unit tests and seven catalog regression tests pass. Both
catalogs are current. Bilingual fixtures cover partial uninstall, owner
loss, mixed locale preferences, port persistence timing, pathless downloads
and lost paste acknowledgments. Native GUI and packaged acceptance remain
separate.
## Why
Browser and mocked dialog tests cannot establish Windows font/layout or
prove that a built installer contains every bootstrap helper.

## What changed
- Add an isolated Windows Electron rendering probe for both Desktop locales,
  native menu labels, compact toolbar states and setup progress.
- Let the setup fixture target an arbitrary build stage using an exact URL.
- Compare all six packaged Python helpers against the matching stage.
- Record the candidate installer and source hashes, automated acceptance and
  remaining native dialog, installer lifecycle and macOS limits.

## Testing
Windows Node passes all 165 Desktop tests. Native localization captures pass
for both locales. The fresh extracted installer payload passes inspection,
and its Windows and WSL backends pass packaged smoke with isolated profiles.
The installed StandTerm instance is not replaced; installation, upgrade and
uninstall are not exercised.
@askac
askac merged commit 9eb163e into main Sep 24, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant