Commit Graph

334 Commits

Author SHA1 Message Date
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
GitHub Copilot 19f455d293 fix: font initialization and DA1 response filtering
- Use terminal.loadFonts() API for proper font re-measurement after web fonts load
- Add documentation referencing ghostty-web commit feab41f9a8e4491f
- Handle DA1 responses split across socket reads with escape sequence buffering
- Update Makefile push target to explicitly push current tag
2026-01-29 18:54:50 +00:00
GitHub Copilot 31ff91dcc3 Bump version to 1.1.12 2026-01-29 18:39:14 +00:00
GitHub Copilot 3a6f797e84 fix: font stack, sparklines, and DA1 response issues
- Restore terminal.options.fontFamily assignment for proper font stack handling
- Add dynamic service registration to DockerStatsCollector for docker watch mode
- Remove force_redraw on reconnect that caused DA1 responses to display as text
2026-01-29 18:38:49 +00:00
GitHub Copilot 6ad9bc9ad0 Bump version to 1.1.11 2026-01-29 18:23:48 +00:00
GitHub Copilot 83bbd65c49 fix: terminal rendering and dashboard issues
- Fix escape sequence display: filter DA1 responses that can be split across socket reads
- Fix font rendering: use ghostty-web renderer API (setFontFamily/remeasureFont)
- Fix sparklines: update slug-to-service mapping when containers are added/removed
- Improve typeahead thumbnails: increase to 96x72px (4:3 ratio)
2026-01-29 18:23:44 +00:00
GitHub Copilot 074832cff2 fix: CI/CD + server bugs 2026-01-29 17:51:51 +00:00
GitHub Copilot bde95d3d3e Bump version to 1.1.10 2026-01-29 17:51:16 +00:00
GitHub Copilot 7463fbead5 Bump version to 1.1.9 2026-01-29 17:25:28 +00:00
Rui Carmo 66df66a200 Update README with blog post link
Added a link to a related blog post for more context.
2026-01-29 16:57:39 +00:00
GitHub Copilot f0e11ecc7d Bump version to 1.1.8 2026-01-29 13:18:31 +00:00
GitHub Copilot 8dc16b59e2 Add Docker exec PTY sessions 2026-01-29 13:18:31 +00:00
GitHub Copilot 74a2e31a55 Bump version to 1.1.7 2026-01-28 22:54:31 +00:00
GitHub Copilot 5a59f054a2 Add workflow cleanup pruning 2026-01-28 22:53:17 +00:00
GitHub Copilot 770a08191b Bump version to 1.1.6 2026-01-28 21:12:04 +00:00
GitHub Copilot f0afcd2ed6 Persist dev dependencies in Makefile 2026-01-28 21:11:38 +00:00
GitHub Copilot 2f64968231 Add typeahead search previews 2026-01-28 21:09:36 +00:00
GitHub Copilot 915c9d1cbd Bump version to 1.1.5 2026-01-28 20:35:24 +00:00
GitHub Copilot 6397c43e16 Add tango theme and make it the default
- Add tango theme with GNOME/xterm.js default colors
- Change default theme from xterm (VGA) to tango
- Keep xterm theme available as classic VGA alternative
2026-01-28 20:34:12 +00:00
GitHub Copilot 3cf4b38f29 Bump version to 1.1.4 2026-01-28 20:16:07 +00:00