Commit Graph

253 Commits

Author SHA1 Message Date
GitHub Copilot 6eaeeb624e Bump version to 1.2.1 2026-01-30 09:37:17 +00:00
GitHub Copilot e6deed7ccc Add PWA support and mobile fixes 2026-01-30 09:36:48 +00:00
GitHub Copilot ef5b8f08ae Bump version to 1.1.32 2026-01-30 08:16:11 +00:00
GitHub Copilot 3c1953654a Ensure dashboard activates terminal tab 2026-01-30 08:15:58 +00:00
GitHub Copilot 0e5a02ed23 Fix mobile modifier key usage 2026-01-30 08:13:20 +00:00
GitHub Copilot ca1aad29b1 Bump version to 1.1.31 2026-01-30 00:57:03 +00:00
GitHub Copilot ad4a05c13a Restore mobile focus on tab return 2026-01-30 00:56:40 +00:00
GitHub Copilot 8425662eca Bump version to 1.1.30 2026-01-30 00:43:49 +00:00
GitHub Copilot 40535f448d Fix mobile key handling and improve coverage 2026-01-30 00:43:35 +00:00
GitHub Copilot 417471d337 Bump version to 1.1.29 2026-01-29 23:51:07 +00:00
GitHub Copilot f18cc4c0ba fix: hide auto-command placeholder in dashboard
When a session uses the auto command sentinel, the dashboard now leaves
the command label blank instead of showing a placeholder string.
2026-01-29 23:19:08 +00:00
GitHub Copilot 3bf68117a8 fix: apply keybar modifiers to physical keyboard input
On iPad with a hardware keyboard, keybar modifiers were cleared without
being applied if the textarea wasn't focused. Now keybar Ctrl/Shift
intercepts document-level keydown events, applies the modifiers to the
pressed key, sends the correct sequence, and then clears the modifiers.
2026-01-29 23:00:55 +00:00
GitHub Copilot 902b545aa5 Bump version to 1.1.28 2026-01-29 22:53:13 +00:00
GitHub Copilot d0fc6c0f72 fix: restore dashboard focus on tab activation
Ensure the dashboard refocuses when the window regains focus or the tab
becomes visible so typeahead works immediately after switching tabs.
2026-01-29 22:51:30 +00:00
GitHub Copilot 322b82dc79 fix: clear sticky mobile modifiers for iPad keyboards
Remove debug logging, ensure modifiers clear after input events, and clear
keybar modifier state when physical keyboard input occurs outside the
mobile textarea. This prevents Ctrl/Shift from remaining stuck on iPad
hardware keyboards.
2026-01-29 22:50:32 +00:00
GitHub Copilot 2269eada42 fix: focus existing session tab on mobile Safari
Use window.open with target, then call focus() when available to switch to
an existing session tab. Fall back to same-tab navigation if the popup is
blocked or focus is unavailable.
2026-01-29 22:45:09 +00:00
GitHub Copilot 54232c04c6 fix: refocus terminal on window focus
Ctrl input can stop working if the browser window loses focus. Add a
window focus listener to re-focus the terminal whenever the window is
activated, restoring keyboard modifiers without requiring a reload.
2026-01-29 22:43:30 +00:00
GitHub Copilot 7b215beb2a feat: render screenshots using session theme palettes
Pass per-theme background, foreground, and 16-color palettes into the SVG
exporter so screenshots match the active session theme (including ANSI colors).

Adds theme palette mappings and updates screenshot tests to validate themed
backgrounds and palette-aware color conversion.
2026-01-29 22:40:27 +00:00
GitHub Copilot 3b3246bbd0 Bump version to 1.1.27 2026-01-29 22:01:11 +00:00
GitHub Copilot 1ec5b7402f fix: focus terminal when tab becomes visible 2026-01-29 21:55:20 +00:00
GitHub Copilot 204c662920 Bump version to 1.1.26 2026-01-29 21:39:43 +00:00
GitHub Copilot 98a34a49ba fix: dismiss typeahead after launching session from floating results
When opening a session via the typeahead floating results panel, clear the
search query and active selection so the panel dismisses immediately.

Adds a test assertion ensuring the dashboard HTML includes the dismissal
logic after opening a tile.
2026-01-29 21:38:30 +00:00
GitHub Copilot e09c6fde78 Bump version to 1.1.25 2026-01-29 21:22:38 +00:00
GitHub Copilot 9734a8b43b fix: prevent websocket backpressure from freezing sessions
Introduce per-route send queues and dedicated sender tasks so terminal output
does not await slow WebSocket clients. Output is buffered up to a bounded
queue; when full, the oldest data is dropped to keep sessions responsive.

Sender tasks enforce a send timeout and close slow/broken sockets, preventing
terminal run loops from stalling indefinitely.

Tests updated/added to verify:
- queued output instead of direct ws.send_bytes
- sender timeout closes sockets
- queue overflow drops oldest
- session close stops sender task
2026-01-29 21:06:26 +00:00
GitHub Copilot 4b4451d3c8 Bump version to 1.1.24 2026-01-29 20:45:56 +00:00
GitHub Copilot 6bdc5b69ca fix: always clear modifiers after ANY key press
Modifiers should be cleared regardless of whether the key came from:
- Physical keyboard (Ctrl+letter combinations)
- Soft keyboard (letters via input event)
- Special keys (Enter/Backspace/Delete via beforeinput)
- Navigation keys (arrows, Tab, Escape via keydown)
- Keybar buttons

Previously, some code paths had conditional clearing (deactivate flag)
or early returns without clearing. Now ALL key presses unconditionally
call deactivateModifiers() to ensure modifiers never stay sticky.
2026-01-29 20:43:47 +00:00
GitHub Copilot d4b292e636 debug: add logging to mobile keyboard modifier handling
Adding console.log statements to trace when input events fire
and when deactivateModifiers is called, to diagnose why modifiers
stay sticky on mobile.
2026-01-29 20:42:51 +00:00
GitHub Copilot f934d65745 Bump version to 1.1.23 2026-01-29 20:33:36 +00:00
GitHub Copilot f61ff2cd00 fix: clear mobile keyboard modifiers after Enter/Backspace/Delete
Modifiers (Ctrl/Shift) were staying active ('sticky') after pressing
Enter, Backspace, or Delete keys on the mobile soft keyboard.

The beforeinput event handler was sending the key sequences but not
calling deactivateModifiers(), unlike the input handler (for regular
text) and keydown handler (for arrow keys).

This caused modifiers to remain highlighted and active until the user
typed a regular letter, making the keyboard feel unresponsive.

Now modifiers are properly cleared after all soft keyboard keys.
2026-01-29 20:32:44 +00:00
GitHub Copilot 003f0c4613 docs: add explanation of tmux DA response filtering fix
Documents the investigation and fix for the '1;10;0c' display issue
that occurred when refreshing browser sessions running tmux.
2026-01-29 20:30:38 +00:00
GitHub Copilot dad457978a fix: filter DA2/DA3 terminal responses to prevent '1;10;0c' display in tmux
When entering or refreshing a webterm session running tmux, the text '1;10;0c'
was appearing on screen. This was caused by tmux sending a DA2 (Secondary Device
Attributes) query (ESC[>c) to detect terminal capabilities.

The filtering code only handled DA1 responses (ESC[?...c) but not DA2 (ESC[>...c)
or DA3 (ESC[=...c) responses. Updated the regex patterns to match all three variants:

- DA1 (Primary): ESC[?...c - already worked
- DA2 (Secondary): ESC[>...c - now fixed (tmux uses this)
- DA3 (Tertiary): ESC[=...c - added for completeness

The fix applies to:
- Live terminal output filtering
- Replay buffer filtering on reconnect
- Partial escape sequence buffering

All 342 tests pass with the updated patterns.
2026-01-29 20:29:14 +00:00
GitHub Copilot af2f7f5084 Bump version to 1.1.22 2026-01-29 20:00:17 +00:00
GitHub Copilot 4efe3060cf Fix: Default to auto command for containers with only webterm-theme label
When containers have webterm-theme but no webterm-command label,
they should default to auto mode (Docker exec) instead of returning None.
2026-01-29 19:55:36 +00:00
GitHub Copilot 44fd7dcc19 Bump version to 1.1.21 2026-01-29 19:46:53 +00:00
GitHub Copilot 6845fe45b7 docker mode: allow username override 2026-01-29 19:46:46 +00:00
GitHub Copilot 64f2a8a3be Bump version to 1.1.20 2026-01-29 19:31:36 +00:00
GitHub Copilot 349574ff6e Document docker label handling and theme fallbacks 2026-01-29 19:31:32 +00:00
GitHub Copilot 348abac485 Bump version to 1.1.19 2026-01-29 19:25:16 +00:00
GitHub Copilot df06898739 Log screen update failures 2026-01-29 19:25:12 +00:00
GitHub Copilot 635a6e018e Bump version to 1.1.18 2026-01-29 19:24:30 +00:00
GitHub Copilot 147dd3fc16 Close Docker sockets on errors 2026-01-29 19:24:26 +00:00
GitHub Copilot e813e703be Bump version to 1.1.17 2026-01-29 19:18:59 +00:00
GitHub Copilot 3ee35b54f5 Support containers with either webterm-command or webterm-theme label
Previously, only containers with the webterm-command label were detected
by the Docker watcher. Now containers with webterm-theme label (but not
webterm-command) are also picked up and use the default auto command.

Changes:
- Add _has_webterm_label() helper to check for any webterm label
- Update event handler to use the new helper
- Update _get_labeled_containers() to query for both labels
- Add tests for theme-only label detection
2026-01-29 19:18:55 +00:00
GitHub Copilot 30e9bbed4d Bump version to 1.1.16 2026-01-29 19:13:44 +00:00
GitHub Copilot d5343117d3 Filter DA1 responses from replay buffer on WebSocket connect
The replay buffer can contain DA1/DA2 terminal attribute responses
(e.g., \x1b[?1;10;0c) that were captured before filtering was added
to the session classes. These responses appear as visible text like
'1;10;0c' when sent to the client on reconnect.

This adds an additional filter pass when sending the replay buffer,
ensuring no DA1 responses reach the client regardless of when they
were captured.
2026-01-29 19:13:40 +00:00
GitHub Copilot 3c4e62b572 Bump version to 1.1.15 2026-01-29 19:09:01 +00:00
GitHub Copilot 2366ca402c fix: add DA1 response filtering to TerminalSession
The docker exec commands were using TerminalSession (via pty.fork), not
DockerExecSession. Added the same DA1/DA2 response filtering to both
session types to prevent escape sequence fragments from being displayed.
2026-01-29 19:08:56 +00:00
GitHub Copilot 83b3426a64 Bump version to 1.1.14 2026-01-29 19:07:02 +00:00
GitHub Copilot 4420e77d6a fix: resolve CSS variables in font-family before passing to Canvas
The data-font-family attribute was set to 'var(--webterm-mono)' but Canvas 2D
context doesn't understand CSS variable syntax. Now we resolve the variable
using getComputedStyle before passing to ghostty-web Terminal.
2026-01-29 19:06:57 +00:00
GitHub Copilot 4620bd8364 Bump version to 1.1.13 2026-01-29 18:54:55 +00:00