# v1.4.0 — 친화적 agent 스트림 & 데스크톱 결과 카드 agent 출력이 드디어 로그 덤프가 아니라 대화처럼 읽힌다 — CLI와 데스크톱 앱 양쪽 모두. ## `--pretty`: 친화적 agent 스트림 (CLI) `run`, `plan`, `execute`, `handoff`에 옵트인 `--pretty` 플래그가 추가됐다. agent CLI의 기계용 이벤트 스트림(`claude -p --output-format stream-json --verbose`, `codex exec --json`)을 요청해서 읽기 좋은 줄로 렌더링한다: ``` ● model claude-sonnet-5 · session abc123 · thinking: need to look at the failing test first → Bash: pnpm test --filter core Fixed the flaky test — two files changed. ✓ agent turn done — in 10,231 tok · out 1,892 tok · $0.0231 · 48.2s ``` - 결정적 JSONL 줄 단위 파싱만 사용 — 모델 호출/요약 없음 (Codex/Claude adapter의 `parseEvent`). - 파싱 안 되는 줄과 구조화 모드가 없는 agent는 raw 그대로 통과; 전체 raw 스트림은 여전히 `.ai-session/commands.log`에 남는다. - fallback 감지는 그대로: JSON 이벤트 안의 에러 문구를 포함해 raw 줄 기준으로 계속 매칭된다. - 구버전 agent CLI가 플래그를 지원하지 않을 수 있어 옵트인이다. ## 데스크톱: Agent Room 구조화 결과 카드 슬래시 커맨드 결과(`/status`, `/budget`, `/git`, `/review`, `/guard`, `/risk`, `/checkpoints`, `/sessions`, `/resume`, `/workspace`, `/profile`, `/inventory`, `/inspect`, `/bundle`)가 raw `JSON.stringify` 덤프 대신 구조화 카드로 렌더링된다 — 상태 chip, budget 게이지 바, git 파일별 행, plan 스텝 체크리스트. 모든 카드는 접힌 **raw json** 섹션에 원본 payload를 그대로 보존한다. 전부 display-only DOM 빌더이며 webview에는 여전히 business logic이 없다. 수정: `/review` 결과가 렌더링 직후 타임라인 재로드에 밀려 지워지던 문제. ## 호환성 - `--pretty`는 옵트인; 기본 출력은 변화 없음. - `AgentEvent`에 새 이벤트 타입(`system`, `assistant_text`, `reasoning`, `tool_use`, `usage`) 추가 — additive라 기존 소비자에 영향 없음. - config/세션 스키마 변경 없음.