You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Kitty availability now distinguishes a missing binary from disabled remote control. The backend exposes createKittyBackend({ runtime, env }), checks kitty --version before kitty @ ls, returns describe() status, and can dry-run command plans without executing.
Constraint: Preserve current Kitty command builders from main and leave tmux behavior unchanged
Rejected: Rework terminal backend resolver here | recent main commits already own resolver and layout changes
Confidence: high
Scope-risk: narrow
Directive: Keep the remote-control failure message stable for operator guidance
Tested: node --test test/cockpit-terminal-backend.test.js test/cockpit-command.test.js test/tmux-command.test.js
Tested: openspec validate agent-codex-kitty-availability-wrapper-final-2026-04-30-14-23 --strict
Not-tested: real Kitty desktop remote-control integration
Kitty cockpit selection needs to distinguish a missing Kitty binary from a Kitty install whose remote control is disabled. Without both checks, `auto` backend selection can treat a partially configured Kitty install as usable and operator errors are harder to act on.
6
+
7
+
## What Changes
8
+
9
+
- Add `createKittyBackend({ runtime, env })` while preserving `createBackend`.
10
+
- Probe `kitty --version` before `kitty @ ls`.
11
+
- Add `describe()` status output and dry-run command plans.
The Kitty backend SHALL report available only after both the Kitty binary probe and Kitty remote-control probe succeed.
6
+
7
+
#### Scenario: Kitty binary missing
8
+
9
+
-**WHEN** the backend checks availability
10
+
-**AND**`kitty --version` fails
11
+
-**THEN** the backend SHALL report unavailable.
12
+
13
+
#### Scenario: Kitty remote control unavailable
14
+
15
+
-**WHEN**`kitty --version` succeeds
16
+
-**AND**`kitty @ ls` fails
17
+
-**THEN** the backend SHALL report unavailable with `Kitty is installed, but remote control is not available. Enable allow_remote_control in kitty.conf or run gx cockpit --backend tmux.`
18
+
19
+
#### Scenario: Kitty available
20
+
21
+
-**WHEN**`kitty --version` succeeds
22
+
-**AND**`kitty @ ls` succeeds
23
+
-**THEN** the backend SHALL report available.
24
+
25
+
### Requirement: Kitty backend status and dry-run
26
+
27
+
The Kitty backend SHALL expose `createKittyBackend({ runtime, env })`, `describe()`, and dry-run command plans without executing commands.
28
+
29
+
#### Scenario: Status description
30
+
31
+
-**WHEN** availability is described
32
+
-**THEN** the backend SHALL return readable installed, remote-control, availability, message, and check details.
33
+
34
+
#### Scenario: Dry-run plans
35
+
36
+
-**WHEN** the backend is created with `dryRun: true`
37
+
-**THEN** availability and action methods SHALL return planned Kitty commands without calling the runtime.
constKITTY_MISSING_MESSAGE='Kitty is not installed or not on PATH. Install Kitty or run gx cockpit --backend tmux.';
10
+
constKITTY_REMOTE_CONTROL_MESSAGE='Kitty is installed, but remote control is not available. Enable allow_remote_control in kitty.conf or run gx cockpit --backend tmux.';
0 commit comments