55 lines
2.0 KiB
Markdown
55 lines
2.0 KiB
Markdown
## Milestone 3: Workstreams ✓ COMPLETE
|
|
|
|
### Workstream Data Model
|
|
|
|
28. ✓ **Implement workstream storage** (`internal/storage/workstreams.go`)
|
|
- `LoadWorkstreams(path string) (*WorkstreamCollection, error)`
|
|
- `SaveWorkstreams(path string, collection *WorkstreamCollection) error`
|
|
|
|
29. ✓ **Create workstream manager** (`internal/core/workstream_manager.go`)
|
|
- `CreateWorkstream(name string, base string) error`
|
|
- `GetCurrentWorkstream() (*Workstream, error)`
|
|
- `SwitchWorkstream(name string) error`
|
|
- `ListWorkstreams() ([]*Workstream, error)`
|
|
- `AddCommitToWorkstream(sha, message string) error`
|
|
- `GetCurrentWorkstreamName() (string, error)`
|
|
|
|
### Workstream Commands
|
|
|
|
30. ✓ **Implement onx new** (`internal/commands/new.go`)
|
|
- Validates workstream name
|
|
- Creates workstream entry
|
|
- Sets as current workstream
|
|
- Updates workspace to base commit
|
|
- Logs to oplog with transaction wrapper
|
|
- Provides helpful next-step guidance
|
|
|
|
31. ✓ **Implement onx list** (`internal/commands/list.go`)
|
|
- Reads workstreams.json via storage layer
|
|
- Formats output with current indicator (*)
|
|
- Shows commit count per workstream
|
|
- Color-coded output for status (active=green, merged/abandoned/archived=gray)
|
|
- `--all` flag to show non-active workstreams
|
|
- Alias: `ls`
|
|
|
|
32. ✓ **Implement onx switch** (`internal/commands/switch.go`)
|
|
- Validates target workstream exists
|
|
- Checkouts latest commit in target workstream
|
|
- Updates current_workstream pointer
|
|
- Logs to oplog with transaction wrapper
|
|
- Shows helpful info about target workstream
|
|
|
|
33. ✓ **Add workstream validation**
|
|
- Validates workstream names (alphanumeric, hyphens, underscores, slashes only)
|
|
- Prevents duplicate workstream names
|
|
- Prevents reserved names (HEAD, main, master, etc.)
|
|
- Integrated in `ValidateWorkstreamName()` function
|
|
|
|
### Integration & Refactoring
|
|
|
|
- ✓ Refactored `onx save` to use WorkstreamManager
|
|
- ✓ All commands properly wired in `cmd/onx/main.go`
|
|
- ✓ All tests passing
|
|
- ✓ Build successful
|
|
|