Brings ctk tui to feature parity with the legacy ctk chat REPL.
The Textual app now does everything you actually used the REPL for,
and ctk chat is on a deprecation path (removal in 2.12.0).
Highlights:
- Tool calling in ctk tui: auto-approved, tool calls render inline as
⚙/✓/✗ panels with name + args + truncated result. Loop capped at
6 turns. New flag: ctk tui --no-tools.
- Sidebar tabs: All / Starred / Pinned / Recent / Archived. Replaces
the legacy VFS virtual directories.
- Message selection cursor: MessageBubble is now focusable. Tab/Shift+Tab
moves between messages; CSS highlights the focused one.
- Fork (Ctrl+F): truncate the tree to the ancestor chain of the focused
message and assign a new conversation id.
- Branch (Ctrl+B): same id rotation but preserves the full tree.
- Sibling navigation: when an assistant message has multiple children,
press [ / ] to switch between them. Inline indicator shows position.
- System prompt editing: Ctrl+G opens a modal. Insert / update / clear
with safe edge-case handling.
- File context attachment: Ctrl+O opens a modal for a path; the file
is read and inserted as a SYSTEM message at the current path tail.
- Status bar: shows "tools" / "tools off" / "browse-only" depending on
state. "thinking..." replaces "streaming..." during tool turns.
- ctk chat now prints a deprecation banner (gated on tty so pipes
aren't broken). Removal in 2.12.0.
Tests: 2302 passed, 0 regressions, 1 pre-existing skip.
Migration: no breaking changes vs 2.10.0. Existing config still works.