Overview
Extend t3code with a persistent Client entity that groups Projects into organizational units, introduce a file tree panel, and add drag-and-drop operations for reassigning workspace artifacts across those units.
Goal: Users can organize work across multiple clients with zero cross-contamination of context, using direct manipulation (drag-and-drop) to manage the hierarchy.
Implementation Phases
Phase 1 — Foundation (P1) ✅
| # |
Feature |
Issue |
Status |
| F1 |
Client CRUD |
#4 |
✅ Done |
| F2 |
Client-Project Binding |
#5 |
✅ Done |
| F3 |
Sidebar Hierarchy |
#6 |
✅ Done |
| F4 |
Drag-Reorder Clients |
#7 |
✅ Done |
| F5 |
Drag Project Between Clients |
#8 |
✅ Done |
| F6 |
Project Group Migration |
#9 |
✅ Done |
Phase 2 — File Awareness (P2) ✅
| # |
Feature |
Issue |
Status |
| F7 |
File Tree Panel |
#10 |
✅ Done |
| F8 |
Drag File References |
#11 |
✅ Done (copy @mention) |
Phase 3 — Advanced (P3)
| # |
Feature |
Issue |
Status |
| F9 |
Terminal Reassignment |
#12 |
⬜ Deferred (requires terminal Manager refactor) |
| F10 |
Agent Session Draggable |
#13 |
✅ Done |
Architecture Notes
- All state mutations flow through the existing event-sourced command pipeline (decider → events → projector)
- Client is a new aggregate type (
aggregateKind: "client") alongside existing "project" and "thread"
- Backward compatibility: new fields use
Schema.optional / Schema.withDecodingDefault so existing snapshots decode cleanly
- Replaces the fragile localStorage-only project-group system with server-persisted hierarchy
- F6 auto-migrates existing localStorage groups to Clients on first boot
Commits
4d83190e — F1+F2+F3: Client entity, project binding, sidebar hierarchy
f34589ee — F4: Client reorder/rename/delete + New Client button
f112c13e — F5: Project-client assignment via context menu
5a44b392 — F6: Auto-migrate localStorage groups to Clients
0ccb9827 — F7: File tree panel with directory listing RPC
ce5675ce — F8: Copy @mention from file tree
17109db6 — F10: Thread-project reassignment within same client
Overview
Extend t3code with a persistent Client entity that groups Projects into organizational units, introduce a file tree panel, and add drag-and-drop operations for reassigning workspace artifacts across those units.
Goal: Users can organize work across multiple clients with zero cross-contamination of context, using direct manipulation (drag-and-drop) to manage the hierarchy.
Implementation Phases
Phase 1 — Foundation (P1) ✅
Phase 2 — File Awareness (P2) ✅
Phase 3 — Advanced (P3)
Architecture Notes
aggregateKind: "client") alongside existing"project"and"thread"Schema.optional/Schema.withDecodingDefaultso existing snapshots decode cleanlyCommits
4d83190e— F1+F2+F3: Client entity, project binding, sidebar hierarchyf34589ee— F4: Client reorder/rename/delete + New Client buttonf112c13e— F5: Project-client assignment via context menu5a44b392— F6: Auto-migrate localStorage groups to Clients0ccb9827— F7: File tree panel with directory listing RPCce5675ce— F8: Copy @mention from file tree17109db6— F10: Thread-project reassignment within same client