Added
- Split-pane layouts keep their proportions across a restart. Reopening a workspace already restored your panes, but every split snapped back to an equal size. The divider positions you set now persist and are restored exactly as you left them. See panes.ts, PaneTreeView.tsx, serialize.ts.
- A "done" state for the terminal AI-agent badge. The per-terminal status (idle / working / waiting for approval) gained a fourth state: a finished turn now shows a distinct "done" glance, held until you focus or type in that terminal, so among many terminals you can tell at a glance which agent just completed. See aiCliStatus.ts, aiCliDetector.ts.
Changed
- A running agent is recognized again after a restart. When a reopened workspace reattaches to a still-running agent, the badge resumes its working / waiting-for-approval state immediately instead of going blank until you type a command. Launching an agent indirectly -
npx claude,bunx opencode, or an absolute path - is now detected too. See aiCliDetector.ts, session-lifecycle.ts.
Fixed
- Panes no longer disappear after a terminal error or an update. A transient empty snapshot could overwrite a saved layout, and a locked or partial read during an update handoff could blank the saved workspaces. An empty snapshot never overwrites saved panes now, a failed read retries before falling back, and the layout is flushed to disk before the window closes - so a pane you closed also stays closed instead of reappearing. See store.ts, App.tsx.
- The agent badge no longer sticks on "waiting for approval" (red) while it is actually working. A stray phrase in the agent's own output could latch a false approval state over an actively-generating turn and hold it for a full minute; an "esc to interrupt" hint now overrides it and the hold is much shorter. See aiCliDetector.ts.
- "Finished" no longer fires mid-turn, especially for Claude. A quiet stretch inside one turn (a silent sub-agent) could trip a premature completion; the agent's own busy signal is now trusted until it clears or the shell prompt returns. See aiCliDetector.ts.
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