1.0 KiB
1.0 KiB
Shell Window Feature
Purpose: Interactive pseudo‑terminal session inside a krate.
Implementation:
- Front‑end component uses xterm.js (or equivalent) for terminal UI.
- Backend opens a WebSocket that proxies to
kubectl exec -it <pod> -n <ns> -- sh(or the container's default shell). - Input handling: when the mouse is over the shell window, all keypresses are forwarded to the terminal; space does not trigger Spotlight.
- Scroll wheel over the terminal scrolls its content;
Ctrl/⌘+scrollstill zooms the canvas. - No PTY needed on the server side beyond the exec stream; the WebSocket carries stdin/stdout/stderr.
Interaction:
- Click a result in Spotlight or Collection and press Alt+S to open a Shell window in a new/existing Krate.
- Resize like any Detail Window; sibling windows resize proportionally.
- Double‑click header or press
zto maximize to the viewport. - The shell window obeys the global pan/zoom shortcuts (Space‑drag pans, Ctrl‑scroll zooms) when the cursor is inside it.
State (Window type shell).