# 2026-04-08 작업일지 ## 오늘 작업 - `Play` 상단 메뉴와 `Play > Test` 진입 경로를 추가했습니다. - 헤더 최상단 메뉴를 `Docs / Plan / Play` 3개 기준으로 정리했습니다. - `Play > layout` 화면을 만들고 상하/좌우 분할, 재귀 분할, 크기 단위, 최소 크기, 리사이즈 여부를 조절할 수 있게 확장했습니다. - Plan 상세에서 긴 `issue`/`error` 본문을 기본 접힘으로 바꾸고 아이콘으로만 펼치도록 정리했습니다. - `release` 환경에서 `main` 미반영 항목만 모아 보여주는 모달을 추가했습니다. - 자동화 작업 브랜치 기준을 `release`가 아니라 `main`으로 바로잡고, worklog 자동화는 `hotfix/*` 브랜치를 쓰도록 보강했습니다. - 누락됐던 `docs/worklogs/2026-04-08.md` 초안이 템플릿 상태로만 남아 있던 문제를 실제 작업 내역 기준으로 다시 정리했습니다. - 누락됐던 `Play > layout` 스크린샷을 `docs/assets/worklogs/2026-04-08/feature-play-layout.png`로 다시 연결했습니다. ## 이슈 및 해결 - 오늘자 작업일지가 템플릿 문구만 남아 있어 `play`, 자동화 브랜치 정책, release 대기 모달 작업 이력을 문서에서 확인할 수 없었습니다. - Git 기록 기준으로 2026-04-08 UTC/KST 커밋을 다시 확인해 실제 작업 항목과 변경 파일을 복원했습니다. - 사용자가 언급한 `history` 기능은 Git 이력상 2026-04-07 13:44:06 UTC 커밋(`plan(history)`)에 생성됐고, 2026-04-08에는 `play`/plan 상세/자동화 보강 작업이 집중됐습니다. - 스크린샷 섹션이 비어 있고 소스 뷰어의 diff 라벨도 일관되지 않아, 증적 확인 흐름이 한 번에 읽히지 않았습니다. ## 결정 사항 - 2026-04-08 문서는 placeholder 템플릿이 아니라 실제 커밋 증적 기준으로 유지합니다. - `Play`는 `Test`와 `layout` 두 축으로 관리하고, 레이아웃 실험은 전용 playground에서 확장합니다. - Plan 소스 뷰어 탭 명칭은 사용자가 바로 이해할 수 있게 `작업란 / 전체소스 / diff`로 정리합니다. - 자동화 작업 브랜치 base는 `main`, 자동 worklog 정리는 `hotfix/*` 흐름을 따릅니다. - 2026-04-08 대표 스크린샷은 `Play > layout` 화면으로 고정합니다. ## 상세 작업 내역 - `src/app/main/MainHeader.tsx`, `src/app/main/MainView.tsx`, `src/app/main/MainContent.tsx`, `src/app/main/types.ts`, `src/views/play/TestView.tsx`에서 `Play` 메뉴와 `Play > Test` 화면을 연결했습니다. - `src/views/play/LayoutPlaygroundView.tsx`와 `src/styles.css`에서 레이아웃 playground를 추가하고, 이후 같은 날 재귀 분할과 초기 빈 상태 진입까지 두 차례 확장했습니다. - `src/features/planBoard/PlanBoardPage.tsx`에서 긴 이슈 본문 접힘 처리와 소스 작업 미리보기 경험을 보강했습니다. - `src/App.tsx`, `src/app/main/ReleasePendingMainModal.tsx`, `src/styles.css`에서 `release` 접속 시 `main` 미반영 항목 안내 모달을 추가했습니다. - `scripts/run-plan-codex-once.mjs`, `etc/servers/work-server/src/services/git-service.ts`, `etc/servers/work-server/src/workers/plan-worker.ts`, `etc/servers/work-server/src/services/plan-service.ts`에서 자동화 브랜치/정리 정책을 수정했습니다. - 오늘 문서 누락 보완으로 `docs/worklogs/2026-04-08.md`를 실제 기록 기준으로 재작성했습니다. - `scripts/capture-feature-screenshot.mjs`에 `play-layout` 프리셋을 추가해 오늘자 대표 화면을 다시 캡처할 수 있게 했습니다. - `src/components/previewer/CodexDiffPreviewer.tsx`에서 소스 뷰어 탭 라벨을 `전체소스 / diff`로 맞췄습니다. ## 스크린샷 ![feature-play-layout](../assets/worklogs/2026-04-08/feature-play-layout.png) ## 소스 ### 파일 1: `src/app/main/MainView.tsx` - 상단 메뉴 체계를 `Docs / Plan / Play` 중심으로 재정리하고 `Play > Test`, `Play > layout` 탐색을 연결했습니다. - 검색 커맨드와 초기 URL 파라미터도 `playSection` 기준으로 함께 맞췄습니다. ```diff const PLAY_BASE_OPEN_KEYS = ['play-group', 'play-test-group', 'play-layout-group'] as const; ... + id: 'page:play:test', + keywords: ['play', 'test', '테스트', 'TEST메뉴'], + }, + { + id: 'page:play:layout', + keywords: ['play', 'layout', 'flex', 'split', '분할', '레이아웃', 'preview'], ``` ### 파일 2: `src/views/play/LayoutPlaygroundView.tsx` - `play > layout` 화면을 추가하고, 같은 날 재귀 분할과 빈 상태 시작 플로우까지 확장했습니다. - 상하/좌우 시작, `px/%` 단위, 최소 크기, 리사이즈 허용 여부를 화면에서 바로 조정할 수 있습니다. ```diff diff --git a/src/views/play/LayoutPlaygroundView.tsx b/src/views/play/LayoutPlaygroundView.tsx +const DEFAULT_LAYOUT_DIRECTION = 'row'; +const EMPTY_LAYOUT: LayoutNode | null = null; ... + + ... + + ``` ### 파일 3: `src/app/main/ReleasePendingMainModal.tsx` - `release` 환경에서 아직 `main`에 반영되지 않은 작업만 모아 보여주는 전용 모달을 추가했습니다. - `릴리즈완료`, `main반영대기/중/실패` 상태를 기준으로 요약과 현황을 표시합니다. ```diff diff --git a/src/app/main/ReleasePendingMainModal.tsx b/src/app/main/ReleasePendingMainModal.tsx +export function ReleasePendingMainModal() { + // release 서버에서 main 미반영 항목만 조회 +} ``` ### 파일 4: `scripts/run-plan-codex-once.mjs` - `.auto_codex` 작업 브랜치의 base를 `release`가 아니라 `main`으로 맞췄습니다. - 같은 날 자동 worklog 쪽은 `hotfix/*` 흐름을 따르도록 서버 로직도 함께 보강됐습니다. ```diff diff --git a/scripts/run-plan-codex-once.mjs b/scripts/run-plan-codex-once.mjs -const baseBranch = 'release'; +const baseBranch = 'main'; ``` ### 파일 5: `src/features/planBoard/PlanBoardPage.tsx` - 긴 `issue`/`error` 본문은 기본 접힘으로 바꾸고, 이번 보완에서 소스 뷰어 탭 명칭도 `작업란 / 전체소스 / diff`로 정리했습니다. ```diff diff --git a/src/features/planBoard/PlanBoardPage.tsx b/src/features/planBoard/PlanBoardPage.tsx - label: '요약', + label: '작업란', - label: '전체 소스', + label: '전체소스', - label: 'Diff', + label: 'diff', ``` ### 파일 6: `src/components/previewer/CodexDiffPreviewer.tsx` - worklog 소스 탭과 Plan 소스 뷰어의 모드 라벨을 `전체소스 / diff`로 통일했습니다. - 기존 `Raw Diff` 표기를 `diff`로 바꿔 사용자가 탭 목적을 바로 읽을 수 있게 맞췄습니다. ```diff diff --git a/src/components/previewer/CodexDiffPreviewer.tsx b/src/components/previewer/CodexDiffPreviewer.tsx - { label: '전체 소스', value: 'source' }, - { label: 'Raw Diff', value: 'diff' }, + { label: '전체소스', value: 'source' }, + { label: 'diff', value: 'diff' }, ``` ### 파일 7: `scripts/capture-feature-screenshot.mjs` - `Play > layout` 화면도 기존 worklog 캡처 흐름으로 다시 만들 수 있게 프리셋을 추가했습니다. - 오늘자 누락 스크린샷은 이 프리셋으로 `feature-play-layout.png`를 생성해 연결했습니다. ```diff diff --git a/scripts/capture-feature-screenshot.mjs b/scripts/capture-feature-screenshot.mjs + 'play-layout': { + topMenu: 'play', + screenshotFileName: 'feature-play-layout.png', + targetSelector: '.app-main-card', + query: { playSection: 'layout' }, + }, ``` ### 파일 8: `docs/assets/worklogs/2026-04-08/feature-play-layout.png` - `Play > layout` 대표 화면을 다시 캡처해 오늘자 스크린샷 섹션과 바로 연결했습니다. - 2026-04-08 작업일지에서 비어 있던 시각 증적을 채우는 실제 산출물 파일입니다. ```diff Binary file added: docs/assets/worklogs/2026-04-08/feature-play-layout.png ``` ## 실행 커맨드 ```bash git -c safe.directory=/workspace/auto_codex/repo log --since='2026-04-08 00:00' --until='2026-04-08 23:59:59' --stat --oneline --decorate git -c safe.directory=/workspace/auto_codex/repo log --since='2026-04-08 00:00' --until='2026-04-08 23:59:59' --name-status --format='commit %H%nAuthor: %an%nDate: %ad%nSubject: %s' --date=iso git -c safe.directory=/workspace/auto_codex/repo log --follow --name-status -- src/features/history/HistoryPage.tsx npm run dev -- --host 127.0.0.1 --port 4173 CAPTURE_BASE_URL=http://127.0.0.1:4173 node scripts/capture-feature-screenshot.mjs play-layout 2026-04-08 ``` ## 변경/신규 파일 (전체, 중복 제거, Git 기록 기준) - M src/app/main/MainHeader.tsx - M src/app/main/MainContent.tsx - M src/app/main/MainSidebar.tsx - M src/app/main/MainView.tsx - M src/app/main/types.ts - M src/app/main/clientIdentity.ts - M src/App.tsx - A src/app/main/ReleasePendingMainModal.tsx - A src/views/play/TestView.tsx - A src/views/play/LayoutPlaygroundView.tsx - M src/features/planBoard/PlanBoardPage.tsx - M src/styles.css - M src/store/appStore/types/index.ts - M scripts/run-plan-codex-once.mjs - M etc/servers/work-server/src/services/git-service.ts - A etc/servers/work-server/src/services/git-service.test.ts - M etc/servers/work-server/src/services/plan-service.ts - M etc/servers/work-server/src/services/plan-service.test.ts - M etc/servers/work-server/src/workers/plan-worker.ts - M AGENTS.md - A docs/worklogs/2026-04-08.md - M src/components/previewer/CodexDiffPreviewer.tsx - M scripts/capture-feature-screenshot.mjs - A docs/assets/worklogs/2026-04-08/feature-play-layout.png