This repository is SESS, a Go CLI for session-based Git workflows tied to GitHub issues. The current implemented command surface is:
sess startsess statussess pausesess resumesess projects
The full sess end workflow is planned but not complete.
cmd/sess/: binary entrypointinternal/sess/: Cobra/Fang command layerinternal/tui/: Bubble Tea workflow and interactive UIinternal/session/: session lifecycle business logicinternal/db/: SQLite persistenceinternal/git/: wrappers aroundgitandghdocs/: architecture, development, roadmap, and implementation planning
Prefer small, surgical changes. Preserve the current layering:
cmd/sessmay depend oninternal/sessinternal/sessmay orchestrateinternal/tui,internal/session, andinternal/dbinternal/tuimay call intointernal/session,internal/db, andinternal/gitinternal/gitandinternal/dbmust stay low-level and not depend on UI packages
Do not introduce reverse dependencies between these layers.
Follow idiomatic Go. In practice:
- Prefer simple, direct control flow over abstraction-heavy patterns
- Wrap errors with context using
fmt.Errorf("...: %w", err) - Do not ignore errors unless the operation is explicitly best-effort
- Keep zero values useful where possible
- Accept interfaces when they help call sites; return concrete types
- Keep package APIs narrow and obvious
User-facing command output should follow docs/cli_design_guide.md:
- no emojis
- compact, git-like output
- use
·separators for dense inline information - prefer direct wording over tutorial-style copy
If changing status/action output, keep it consistent across start, status, pause, resume, and projects.
Common local commands:
go build -o sess ./cmd/sess
./sess --helpIf working in a sandboxed environment where Go cannot write to the default cache, use:
env GOCACHE=/tmp/go-build GOMODCACHE=/tmp/go-mod-cache go test ./...Note: this environment may still block network access for downloading modules.
There are currently no Go test files in the repo. When fixing lifecycle or persistence logic, add focused tests where practical, especially around:
- session state transitions
- elapsed time accounting
- DB reads/writes for active and paused sessions
- branch and repo state validation
Current implementation priorities are tracked in docs/IMPLEMENTATION-PLAN.md. The highest-value fixes are:
- Make
sess resumefail closed if branch checkout fails - Respect the tracked project's base branch instead of hardcoding
dev - Validate git repo state before tracking a project
- Make dirty-repo discard behavior match what the prompt says
- Use GitHub issue numbers instead of opaque IDs
- Project/session state is stored in SQLite at
~/.sess-cli/sess.db base_branchexists in the data model, but parts of the current workflow still hardcodedevghintegration is used for issue selection- The current codebase is functional but still in active refinement; prefer correctness over feature expansion unless the task explicitly asks for new functionality