64 lines
2.0 KiB
Markdown
64 lines
2.0 KiB
Markdown
# Session Mover TUI
|
|
|
|
A Python Textual TUI for easily moving OpenCode sessions between projects and workspaces without writing SQL.
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
# Install dependencies
|
|
pip install -r requirements.txt
|
|
|
|
# Run (looks for opencode.db in current directory)
|
|
python session-mover.py
|
|
|
|
# Or specify a database path
|
|
python session-mover.py /path/to/opencode.db
|
|
```
|
|
|
|
## How to Use
|
|
|
|
1. **Browse** - See all sessions organized by project/workspace on the left
|
|
2. **Select** - Click or use arrow keys + Enter to select sessions (multiple with Shift+Click)
|
|
3. **Filter** - Type in the filter box to search session titles
|
|
4. **Move** - Press `m` to move selected sessions to another project
|
|
5. **Copy** - Press `c` to duplicate sessions to another project
|
|
6. **Backup** - Press `b` to manually create a database backup
|
|
|
|
### Hotkeys (always visible at bottom)
|
|
|
|
- `b` - Backup database
|
|
- `m` - Move selected sessions
|
|
- `c` - Copy selected sessions
|
|
- `a` - Toggle archived sessions visibility
|
|
- `r` - Refresh all data
|
|
- `q` - Quit
|
|
- `Escape` - Deselect / close dialogs
|
|
|
|
### Move/Copy Dialog
|
|
|
|
1. Select destination project (dropdown)
|
|
2. Optionally select a workspace within that project
|
|
3. Review the SQL preview to see what will execute
|
|
4. Press `Enter` or click Confirm to execute
|
|
5. A backup is automatically created before the first write operation
|
|
|
|
### Safety
|
|
|
|
- Before any move/copy, a timestamped backup is created: `opencode-YYYYMMDD-HHMMSS.db`
|
|
- Confirmation dialog shows exactly what will happen
|
|
- Changes appear immediately in the UI after success
|
|
|
|
## Database Schema Support
|
|
|
|
Works with OpenCode's `opencode.db` with tables:
|
|
- `session` (with project_id, workspace_id, parent_id)
|
|
- `project`, `workspace`
|
|
- `message` → `part`, `todo`, `session_share` (all cascade automatically)
|
|
|
|
## Tips
|
|
|
|
- Filter by typing in the search box (searches title and slug)
|
|
- Toggle archived sessions with `a` (hidden by default)
|
|
- The left panel shows Projects → Workspaces hierarchy
|
|
- Selected sessions remain selected when filtering, so you can search, select, then clear filter
|