This repository has been archived on 2026-10-08. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
maestro/web/src/pane.ts
T
Miguel Palhas 8c151a5fb2
ci / web (push) Failing after 8s
ci / flake (push) Failing after 2m18s
ci / rust (push) Successful in 8m53s
Merge remote-tracking branch 'origin/main' into blitz/codex-structured-sessions
# Conflicts:
#	crates/maestro-daemon/tests/worktree.rs
#	crates/maestro-e2e/tests/e2e.rs
#	web/src/attach.ts
#	web/src/connections.test.ts
#	web/src/connections.ts
2026-09-06 23:16:27 +01:00

30 lines
1.3 KiB
TypeScript

// Shared shape a mounted pane connection satisfies, whatever session view is
// behind it — what ConnectionPool needs to mount/park/dispose a pane without
// caring whether it holds an xterm attach (attach.ts) or a structured
// transcript (structured.ts).
import type { Uuid } from "./types.js";
import type { AttachInfo } from "./paneTitle.js";
export interface PaneConnection {
readonly sessionId: Uuid;
/** The element to mount into a pane. */
readonly el: HTMLElement;
/** Becomes the visible view: fit/focus/sync as the connection needs.
* `focus: false` mounts without taking the keyboard (a sidebar preview). */
onMount(opts?: { focus?: boolean }): void;
/** Parked into the hidden cache: keep streaming, stop driving focus/sizing. */
onUnmount(): void;
/** Put the keyboard into this pane's primary input — the terminal for an
* attach connection, the composer for a structured one. */
focusTerminal(): void;
/** Raw bytes into a PTY, bypassing normal key handling (the leader's
* literal-byte escape hatch, docs/COMMAND-BAR.md). A structured connection
* has no PTY, so this is a no-op there. */
sendInput(data: string): void;
/** Refresh the pane header after the catalog renames a live session. */
updateInfo(info: AttachInfo): void;
/** Fully disconnect and remove the element. */
dispose(): void;
}