                                                                                                        claude                                                                                                         + new │ Processes
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━───────│ ─────────────────────────
 - abc1234 if no tag exists yet

 4. Wire version into the release workflow

 Update .gitea/workflows/release.yml lines 31-35 to inject the pushed tag:

 go build -trimpath \
   -ldflags="-s -w -X main.version=${{ github.ref_name }}" \
   -o dist/patterm-${{ github.ref_name }}-linux-amd64 \
   ./cmd/patterm

 github.ref_name is the tag name (e.g. v0.0.1) because the workflow only
 triggers on tags: ['v*'].

 5. Update inline doc comment

 cmd/patterm/main.go header comment (lines 5-11) — add the --version form
 to the usage block. SPEC.md/CLAUDE.md already use --, no change needed there.

 Out of scope

 - Surfacing version in MCP whoami (the hardcoded "version": "0.1.0" in
 internal/mcp/protocol.go:27 is the MCP protocol version, not the patterm
 binary version — leave it).
 - Renaming any existing flags.
 - Adding short forms like -p for --project.

 Critical files

 - cmd/patterm/main.go — import swap, --version wiring, version var, header comment
 - cmd/patterm/debug_harness.go — import swap
 - Makefile lines 38-39 — VERSION var + ldflags
 - .gitea/workflows/release.yml lines 31-35 — ldflags
 - go.mod / go.sum — add github.com/spf13/pflag

 Verification

 1. go build -o ./bin/patterm ./cmd/patterm (without Makefile) → still builds, version reports dev.
 2. make patterm → ./bin/patterm --version prints patterm v0.0.1 (commit <sha>, built <date>).
 3. ./bin/patterm -h → help text shows --project string and --version lines.
 4. ./bin/patterm -project /tmp → pflag rejects with usage error (confirms -- is enforced).
 5. ./bin/patterm --project /tmp → starts normally.
 6. ./bin/patterm mcp-stdio --socket /tmp/s --identity x → existing path still works (will fail to connect, but should parse flags fine).
 7. ./bin/patterm debug-harness --scenario internal/harness/scenarios/spawn_process_via_palette.json → harness still runs.
 8. go test ./... and go test ./internal/harness/... — both green.
 9. Push a temporary tag locally and inspect git describe output; confirm release workflow's ${{ github.ref_name }} substitution matches the tag.
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

 Claude has written up a plan and is ready to execute. Would you like to proceed?

 ❯ 1. Yes, and use auto mode
   2. Yes, manually approve edits
   3. No, refine with Ultraplan on Claude Code on the web
   4. Tell Claude what to change
      shift+tab to approve with this feedback

 ctrl-g to edit in VS Code · ~/.claude/plans/flags-in-this-project-vectorized-gosling.md

claude · you have control                                                                                                                                                                   Ctrl-A/D · tabs  ·  Ctrl-W/S · tree  ·  Ctrl-K · palette
