# relay-baton v0.2.0 릴리즈 노트 날짜: 2026-05-27 ## 요약 v0.2.0은 여러 repository를 더 편하게 오가며 relay-baton을 사용할 수 있게 만든 버전이다. 1. 여러 repository를 등록하고 전환할 수 있는 Project registry. 2. opencode 느낌에 가까운 project/session 중심 Ink TUI dashboard. 이제 project를 한 번 등록해두면 매번 해당 폴더로 이동하지 않아도 `status`, `handoff`, `budget`, `tui` 같은 명령을 project 기준으로 실행할 수 있다. ## 주요 변경 ### Project Registry 여러 repository를 등록하기 위한 local registry를 추가했다. 기본 위치: ```text ~/.relay-baton/projects.json ``` Node의 `os.homedir()`를 사용하므로 Windows/macOS/Linux에서 home directory 기준으로 동작한다. Project 구조: ```ts interface BatonProject { id: string; name: string; path: string; createdAt: string; updatedAt: string; lastUsedAt?: string; defaultDiet?: "off" | "lite" | "balanced" | "caveman" | "ultra"; primaryAgent?: "codex" | "claude" | "opencode" | "gemini" | "aider"; fallbackAgent?: "codex" | "claude" | "opencode" | "gemini" | "aider"; } ``` 추가된 core 모듈: - `packages/core/src/projects/ProjectRegistry.ts` - `packages/core/src/projects/ProjectManager.ts` - `packages/core/src/projects/ProjectResolver.ts` 역할: - `ProjectRegistry`: `projects.json` 읽기/쓰기, 없으면 생성, invalid JSON/shape 감지, 중복 id/path 방지. - `ProjectManager`: add/remove/list/switch/current/lastUsedAt 갱신. - `ProjectResolver`: CLI 옵션과 active project, cwd를 기준으로 실제 repoRoot 결정. ### Project CLI 추가된 명령어: ```bash relay-baton project add --name --diet --primary --fallback relay-baton project list relay-baton project switch relay-baton project current relay-baton project remove relay-baton project doctor ``` 동작: - `project add`는 path 존재 여부를 확인한다. - `project add`는 git repository 여부를 확인한다. - git repository인 path만 project로 등록한다. - 중복 path는 다시 추가하지 않고 기존 project 정보를 보여준다. - `--name`이 없으면 folder name을 사용한다. - id는 name 기반 slug로 생성한다. - active project를 remove하면 `activeProjectId`를 `null`로 만든다. ### 기존 명령어의 Project 지원 다음 명령어에 `--project` / `--path`를 추가했다. - `init` - `doctor` - `status` - `run` - `handoff` - `compact` - `squeeze` - `budget` - `tui` 공통 옵션: ```bash --project --path ``` repoRoot 결정 우선순위: ```text --path > --project > active project > cwd ``` 호환성: - project가 하나도 없어도 기존 v0.1처럼 cwd 기준으로 동작한다. - `compress `은 v0.2에서 cwd 기준을 유지한다. Diet 결정: - `run`, `compact`, `handoff`는 명시적 `--diet`을 최우선으로 사용한다. - `--diet`이 없고 project가 있으면 project의 `defaultDiet`를 사용한다. - 둘 다 없으면 config/default token diet를 사용한다. ### TUI Dashboard 기존 read-only TUI를 project/session dashboard로 개선했다. 추가된 컴포넌트: - `packages/tui/src/components/Sidebar.tsx` - `packages/tui/src/components/SessionPanel.tsx` - `packages/tui/src/components/ChangedFilesPanel.tsx` - `packages/tui/src/components/BudgetPanel.tsx` - `packages/tui/src/components/LogTailPanel.tsx` - `packages/tui/src/components/StatusBar.tsx` 화면 구성: - 왼쪽 sidebar: active project, registered projects, selected diet, primary/fallback agents, key hints. - session panel: task, status, active agent, fallback reason, repo path. - changed/compact panel: changed files snapshot, compact state preview. - budget panel: selected diet, budget snapshot, truncation 여부. - log panel: `commands.log` tail, recent errors. - status bar: key binding과 메시지. 지원 키: - `q`: quit - `r`: reload - `p`: 다음 registered project로 switch - `d`: diet profile을 memory에서 cycle - `b`: budget/session file reload - `h`: handoff no-run 생성 `h` 키는 선택된 project와 diet profile 기준으로 새 `.ai-session/handoff.md`를 생성한다. ### `.gitattributes` CRLF/LF 경고를 줄이기 위해 루트에 `.gitattributes`를 추가했다. ```text * text=auto *.md text eol=lf *.ts text eol=lf *.tsx text eol=lf *.json text eol=lf *.yml text eol=lf *.yaml text eol=lf *.ps1 text eol=crlf ``` 앞으로의 편집에서 기대하는 줄바꿈 정책을 명시한다. ### 문서 업데이트된 문서: - `README.md` - `AGENTS.md` - `CLAUDE.md` - `.claude/skills/relay-baton-harness/SKILL.md` - `release-notes/` 문서에 추가한 내용: - Project 관리 기능. - Project CLI 명령어. - 기존 명령어의 `--project` / `--path`. - TUI v0.2 dashboard. - 향후 mode 설계 초안. - Codex 기본 실행: `codex exec --sandbox workspace-write ""`. - Claude 기본 실행: `claude --permission-mode acceptEdits -p ""`. - Codex와 Claude 기본 실행 예시. - Claude login 안내. ## 호환성 v0.1 방식은 유지된다. ```bash relay-baton doctor relay-baton status relay-baton run "task" relay-baton handoff --to claude --no-run relay-baton budget ``` active project가 없으면 cwd 기준으로 동작한다. ## 다음 개선 추천 v0.3 후보: - TUI fuzzy project switcher. - project별 session list와 recent handoff history. - project CLI smoke test 자동화. - invalid `projects.json` backup/recovery. - TUI command palette. - 추가 agent adapter scaffold. - review / diagnose mode.