Skip to content

Compatibility passes for iTerm2, Kitty, and WezTerm #13

Description

@raiseCatError

Status (updated at the v0.16 feature freeze)

Implemented on the v0.16 branch (PR #303): passive iTerm2, Kitty and WezTerm capability profiles on the shared TerminalHost probe, reattach fixtures across hosts, and native cursor backends for Kitty (and Ghostty).

Remaining scope: physical compatibility passes in real iTerm2, Kitty and WezTerm windows (keys, selection, hyperlinks, images, cursor effects). Automated coverage cannot certify those hosts.

Goal

Validate and fix NMSh compatibility with iTerm2, Kitty, and WezTerm using capability-driven behavior, without leaking host-specific assumptions into NMSh core.

Why

These three terminal hosts collectively cover a large portion of the macOS developer audience. Post-abstraction (#10), verifying each host's capability level and behavior ensures NMSh remains genuinely host-agnostic.

Scope

For each host (iTerm2, Kitty, WezTerm):

  • Define the capability set (enhancedKeyboard, graphicsProtocol, etc.)
  • Run full NMSh compatibility pass
  • Identify and fix any rendering or behavioral regressions
  • Document any host-specific capability benefits

Use capability-driven behavior throughout — do not add host-name conditionals to NMSh core.

Non-goals

  • Making every host feature-equivalent to Ghostty
  • Supporting hosts with fundamentally incompatible terminal behavior

Acceptance criteria

  • Core NMSh features work on iTerm2, Kitty, and WezTerm
  • No crash or rendering corruption on any of the three hosts
  • Capability sets for each host documented

Human verification

  • Open NMSh in each host (iTerm2, Kitty, WezTerm)
  • Run commands across all four presentation modes
  • Verify editor, history, passthrough, and /copy function correctly

Dependencies

Requires #10 (TerminalHost capability abstraction) and #11 (Terminal.app baseline).

Rough effort

1–2 days per host, can parallelize

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions