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
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.
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.
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.
- 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
- 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
- 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)
- 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
- Add get_screen_snapshot() method that doesn't mutate terminal state
- Use change counter for reliable activity detection instead of dirty flag
- Update screenshot handler to use non-mutating snapshot method
- Refactor tests to use shared fixtures and reduce duplication
- Update copilot-instructions.md with detailed Makefile usage
- Add --docker-watch CLI flag to watch for containers with webterm-command label
- Containers with label 'auto' get bash exec, otherwise use label as command
- Dynamic dashboard updates via SSE when containers start/stop
- Add /tiles endpoint for JSON tile list
- Multi-stage Dockerfile for minimal production image
- Update README with docker-watch documentation
The docker watcher monitors Docker events and automatically:
- Adds terminal tiles when labeled containers start
- Removes tiles when containers stop
- Notifies dashboard via SSE for live updates
- Vendor patched version with native theme/palette support at WASM level
- Remove color remapping patches (no longer needed)
- Pre-load Ghostty WASM before terminal creation
- Bundle size reduced from 1.16 MB to 0.67 MB
- Includes IME input fixes
Bump version to 0.7.0
Replace Map-based color lookup with Uint32Array hash table for O(1)
lookups without string allocation. Patch at WASM getLine level
(once per line) instead of renderCell (once per cell) for better
performance on high-throughput terminal output.
ghostty-web WASM uses Tomorrow Night as its internal default palette,
not VS Code Dark. Updated GHOSTTY_DEFAULT_PALETTE to match the actual
colors so theme remapping works correctly.
Bump version to 0.6.8
- Add color mapping from ghostty-web's default palette to custom themes
- Monkey-patch renderer.renderCell to remap fg/bg colors at runtime
- Fix THEME_BACKGROUNDS keys to match terminal.ts theme names
- Add debug logging for color remapping verification
This works around ghostty-web's hardcoded WASM palette by intercepting
cell colors before rendering and remapping them to the configured theme.