Skip to content

TEDI v0.4.2

Choose a tag to compare

@github-actions github-actions released this 01 Aug 03:14

Fixed

  • Resizing a terminal pane no longer shreds what is running in it. Drag a splitter, or make the window bigger, and a running Claude Code or Codex would come back as soup: a box drawn across the wrong rows, input that looked dead because the line you were typing was being redrawn off screen. It read as the CLI breaking, and it was not. TEDI never told its terminal it was talking to Windows ConPTY, so the terminal used the rules for a Unix shell instead. The two disagree on exactly one thing, and it is the thing that was going wrong: when the terminal gets taller, the Unix rule pulls old scrollback back down into view, because a Unix shell does not redraw itself when it is resized. ConPTY does redraw, over the whole visible area. So the old lines that were just dragged in survive wherever the redraw does not cover them, and the cursor ends up on a different row than the shell believes. Anything that draws relative to the cursor, which is what both of those CLIs do in their normal mode, then puts every frame after that in the wrong place. Measured on a five-row terminal grown to eight: before, the cursor moved three rows away from where the shell left it; now it stays. A full-screen program on the alternate screen (vim, htop, lazygit) is provably untouched by this, in every direction, because that screen has no scrollback for the old rule to pull from; column rewrapping is unchanged too. One thing does look different on Windows: making a pane taller now adds blank rows rather than pulling history back into view, which is what ConPTY has always meant by it and what Windows Terminal shows. SSH panes are unaffected, since that shell really is on a Unix machine. See session-helpers.ts, terminal-resize-verify.ts.
  • A CLI that draws its own screen now hears about a resize while you are still dragging. TEDI held the new size back for 90ms after the last movement, which is right for a bare shell prompt that would otherwise flicker, and wrong for anything painting a full frame. It told them apart by asking whether the program had taken over the screen, but Claude Code and Codex draw their frames inline on the ordinary screen instead, so they fell on the quiet side and only found out once you let go. They now get the size as the drag happens, at the same rate a full-screen program already did. See session-lifecycle.ts.
  • A repaint nudge no longer leaves the shell wrapping at a width the pane does not have. To make a program redraw, TEDI briefly changes the terminal height and puts it back a moment later. It was putting back the height it had measured before that pause, so if the pane changed size during it, by switching tabs or changing the font size, the shell was left at the old width with TEDI believing it had been told the new one, and nothing was left to correct it. It now reads the size at the moment it restores. See pty-lifecycle.ts.
  • A terminal popped out into its own window follows the same rules as the pane. The float builds a second terminal over the same output and is resized by the pane it mirrors, so it had the same problem for the same reason. It could not tell a local shell from an SSH one on its own, so the pane now tells it. See FloatTerminal.tsx.

Changed

  • The tool picker and the debug button moved to the top of the AI panel. The row under the message box was carrying four controls; the two that are not about the message you are writing now sit in the panel header. The tool list also opens collapsed, one row per server with its own on/off count, so several MCP servers read as a short list of headings rather than every tool at once, and each tool is now a single line with its description trailing beside the name. See AiMiniWindow.tsx, ToolsPicker.tsx.

macOS users: if Gatekeeper says TEDI "can't be opened because Apple cannot check it for malicious software" or "is damaged and can't be opened", drag the app to /Applications and run this once in Terminal:

xattr -cr /Applications/TEDI.app