2026.04.25 작업일지 v1.0.0
핸드오프 인프라가 텔레그램 한 줄 트리거에서 SSH+tmux 양방향 자동 직접 인젝션으로 진화한 날. Playwright WSL 막힘 해결, 인스타 Mac 미러링, hanjul Android ship-ready 까지 동시에 굴러간 큰 하루.
오늘의 궤적
새벽 0시에 4/24 마무리(worklog v1.0.1, done, Substack Ep.1 편집본, 인스타 카드)부터 마치고 잠들었음. 아침 7시 반 기상 → hanjul Android 런처/스크린샷/ship-ready/keystore SoT 등록 → 점심 무렵 Playwright WSL 막힘 4단계 핸드오프 turn 으로 Option E (env-var 단독) 발견 → 검증 PASS → 오후 인스타 Mac 미러링 + venv 셋업 + 정책 A 확정 → 늦은 오후 claude-automations PR #1 (CDP 모듈화) 머지 → 저녁 핸드오프 본격 인프라 구축 (SSH+tmux METHOD A 발견) → 21~23시 양방향 end-to-end 무손 검증 PASS + 이모지 prefix 추가 → 자정 직전 다른 기기 오케스트레이터 구상.
4/24 마무리 (00:00 ~ 00:30 KST)
자정 직전~직후 작업:
- Substack Ep.1 발행용 편집본 추가 (daejong-page eb14db7) —
newsletter/ep1-substack.md완성. 어제 막혔던 Substack 설정 재개 항목은 🤝→🍎 이관 (af3ced0). - 작업일지 2026-04-24 v1.0.1 (daejong-page 690612e) — 원본+뉴스레터 공개본.
- done 2026-04-24 evening (daejong-page bb5dec2) — 심사 제출 2건 (약먹자/더치페이) + 한줄일기 APK + goodnight insta 편입.
- goodnight step 4.5 = insta-post 자동 호출 (skills c116f6f) — non-fatal 폴백 포함.
- 이슈 페어 기록 — 2026-04-24 (skills aea2bff) — iPad 13” 스크린샷 필수 + Playwright ref 오클릭.
- todos: 내일 MEMORY.md 인덱스 다이어트 (daejong-page 48b258b) — 🗑️ 8개 retire + 🟡 3개 검토.
hanjul Android ship-ready (07:55 ~ 09:46 KST)
한줄일기 안드 출시 직전 작업 4 커밋:
| 시각 | repo | SHA | 메시지 |
|---|---|---|---|
| 07:55 | hanjul | f18092f | feat(hanjul/android): generate launcher icons from diary-notebook master |
| 08:32 | hanjul | 944f001 | feat(hanjul): JSON export + Play Store ship-ready assets |
| 08:42 | hanjul | c2774b6 | chore(hanjul): finalize Android Play Console screenshots |
| 09:46 | hanjul | 704bfde | chore(android): wire release signingConfig + bump to 1.1.0+3 |
- 7시 40분 강대종님 “한줄일기 아이콘이 왜 없지? 맥에서 만들어서 아이폰에서는 나오는데 어제 apk 에는 없던데” → diary-notebook 마스터에서 런처 아이콘 자동 생성으로 해결.
- 09:39
/submit-app hanjul --platform=android첫 호출 시 release keystore 없이 debug 서명 상태 발견 → 09:46signingConfigs.release와이어링 +1.1.0+3으로 버전 올림. - skills 0caf714 —
submit-app문서에 hanjul keystore SoT 를 Mac 으로 등록 (다음 사이클부터 SoT 명확).
Playwright WSL 막힘 → Option E (10:07 ~ 13:42 KST)
오늘 가장 길었던 멀티 turn:
10:07, 강대종님이 “왜 mac에서는 플레이라이트 잘되는데 wsl에서는 자꾸 하네스(?)한테 막히는건지 이거 해결방법좀 mac 너가 찾아줘”. 13:25, Mac 이 Option E (env-var 단독) 보낸 후 새 WSL 세션에서 검증. 13:42, WSL Playwright MCP smoke PASS — example.com heading + HN DOM 둘 다 인식.
핵심 발견(Mac 13:10 보고): @playwright/mcp@0.0.70 의 default browser channel 이 "chrome" 으로 고정돼 있음. WSL 환경엔 Google Chrome stable 이 깔려 있지 않아 launch 실패 → 하네스가 “ugly error” 로 막아온 것처럼 보였음.
해결: ~/.bashrc 에 export PLAYWRIGHT_MCP_BROWSER=chromium 추가. .mcp.json 수정 불필요. 가장 싼 옵션이었음 (A2/B/D 후보보다 패치 면적 작음).
skills 5ebacbb / 413329d 로 이슈 트레이스 + resolve 기록. issues/2026-04-25-wsl-playwright-mcp-install-blocked.md 가 그 사이클의 포스트모템.
인스타 Mac 미러링 + 정책 A 확정 (13:43 ~ 14:35 KST)
WSL Playwright 풀린 직후 다음 task:
- 시크릿 미러링 (b260ead) —
~/.claude/secrets/instagram.json274B 0600 +~/insta-autopost/폴더(render.py, publish.py, posted.json, GET_TOKEN.md) WSL→Mac. - Mac venv setup A 경로 PASS (efc60e4) — render.py + publish.py 둘 다 venv 안에서 dry-run 통과.
- insta-post SKILL.md venv 가드 + 텔레그램 알림 (07a10a2 / 8bbb134) — venv 없으면 “venv 없음” 텔레그램 보내고 중단.
- 정책 A 명문화 (6926151) — WSL primary 업로드, Mac standby. posted.json 동기화 안 함 (SoT 충돌 막기).
- goodnight step 4.5 hostname 라우팅 (4809068) — Mac 이면 텔레그램 핸드오프, WSL 이면 직접
/insta-post호출. - insta-post 핸드오프 트리거 키워드 (70001a0) — ”📸 /insta-post 핸드오프” 메시지가 WSL @Myclaude2 에 들어오면 자동으로
/insta-post <date>발화.
오후 14:28 카드 1장 어제분 백필로 자동 업로드 (card-20260425-142848.png, daejong-page 2fc20ef).
claude-automations PR #1 — CDP 모듈화 (14:44 ~ 15:10 KST)
14:44, Mac → WSL: C 경로 = “WSL→Windows Chrome CDP attach 헬퍼 스크립트 모듈화” 15:01, Mac 이 코드 검토 + PR #1 (
wsl-chrome-cdp/guards-and-portability) 올림. 15:10, 강대종님 “PR 머지 완료. 최신 main HEAD 는 f506c6c.”
reference_wsl_chrome_cdp.md 메모리에 적혀있던 레시피를 실제 스크립트 모듈로 빼냄. WSL 에서 attach-chrome.sh 한 줄로 portproxy + 방화벽 + Chrome CDP 다 띄움.
Mac↔WSL Handoff Controller 구상 → 핸드오프 인프라 본격 (15:25 ~ 16:35 KST)
15:25, 강대종님 “Mac ↔ WSL Claude Code Handoff Controller를 만들어줘” 16:02, “그냥 핸드오프 기능을 하고 싶을 때 복붙을 자동화하고 싶었어” 16:35, “끝남”
/handoff스킬 정직 재작성 (b1e5608) — 자동전달 약속 빼고 “챗 전환 1회 제거” UX 개선만 명시.- peer-bot direct POST (6e588c0) — 강대종님 user_id 매개로 봇 → 봇 메시지 직접 송신 시도. 텔레그램 정책상 봇끼리 가시성 차단됨이 발견됨 (
reference_telegram_bot_to_bot_blocked.md).
핸드오프 SSH+tmux METHOD A — 21~23시 KST
오늘 핵심:
20:46,
feat(handoffs): introduce SSH+send-keys handoff channel + first trial(fa68357) 21:14, S-Enter (Shift+Enter) 시도 — 실패 (387d781) 21:37, METHOD A 발견 (a75cef1) — text → sleep 0.5 → Enter 분리. 21:42, 양방향 verify directive (655b60b) 21:46, Mac PATH 함정 —/opt/homebrew/bin/tmux절대경로 (e4e71a2 / 6961a4f) 21:49, WSL → Mac zero-touch demo 첫 PASS (2ee45f5) 21:54, Mac claude-main 가드로 양방향 대칭 셋업 완성 (f4f9cf7) 22:50 KST, WSL → Mac PING 도착 + PONG 회신 확인. 23:21, 이모지 prefix (🪟/🍎) 핑 정체성 표시. 22:57, 양방향 e2e 검증 후 SSH peer-user placeholder 화 (cc6dc89).
배운 것 — tmux send-keys 로 Claude Code 프롬프트 자동 submit 시키려면 텍스트와 Enter 를 한 burst 가 아닌 별도 호출로 보내야 함. 빠른 burst 가 통째로 bracketed paste 마커 안에 감싸지면 안의 Enter 가 newline 으로 흡수됨. sleep 0.5 끼우면 paste 모드 종료 후 Enter 가 진짜 keystroke 으로 도착.
Other commits
- review_radar v0.2 홈 필터칩 (cd7f831) — “방금 변경” 하이라이트.
- automations report 잡 — Mac 5건 + WSL 2건 (자동, 토큰 0).
학습·상담
- 07:25 강대종님 “명령어 치는거는 채팅 따로달라는데 어제 각인 시켰는데 제대로 안된듯” →
feedback_paste_blocks_as_separate_message.md재확인. - 08:06 “내 클로드 memory 같은거 이런 파일도 git 에 공개되어있나?” →
claude-memoryprivate repo 라 공개 X (memory 인덱스 다이어트 todos 동기 부여). - 18:34 “로미오와 줄리엣같구만 서로 말걸게하기가 이렇게 어려울 줄이야 ㅋㅋ” — 봇 간 직접 통신 막힌 것에 대한 코멘트.
- 18:36 “안되는데 방법을 찾아서 어떻게된 성공시키는 이 과정 이걸 즐기는게 재밌어” — 핸드오프 인프라 4시간 디버깅 기점.
- 23:31 “데스크탑 1대 + 윈도우 노트북 1대 더 있어서 오케스트레이터 구성을 해보고싶어” → plan 모드, 23:35 “단순 wsl 일듯, 아직 구체적 계획 없음”.
- 23:36 “llm 없이 일시키는 방법” — claude-cowork 후보 검토.
인프라·스킬·자동화
/handoff스킬 — 자동 전달 약속 → 챗 전환 1회 제거 UX 로 정직 재작성, SSH+send-keys Primary 채널 추가./insta-post— venv 가드, 정책 A 명문화, 핸드오프 트리거 키워드 등록./goodnight— step 4.5 hostname 라우팅 (Mac 이면 텔레그램 핸드오프, WSL 이면 직접 호출)./submit-app— hanjul keystore SoT 를 Mac 으로 등록.- 메모리:
feedback_auto_mode_no_allow_prompt.md,reference_tmux_bracketed_paste_submit.md,feedback_plain_korean.md박힘 (이전 세션에서).
남은 작업
- MEMORY.md 인덱스 다이어트 (🗑️ 8개 retire + 🟡 3개 검토) — todos 에 등록됨.
- Auto Mode → Bypass 전환 검토 (강대종님 23:28 이후 제안, 위험 트레이드오프 있음).
- 다른 기기 오케스트레이터 구상 (구체 계획 미정).
- 인스타 Mac 미러링 검증 (정책 A 라 실제 업로드는 WSL 만, Mac 은 standby).
- 약먹자/더치페이 iOS 심사 결과 대기 (1.0.1 / 1.0.2, 48h 내 이메일).
관련 커밋
| repo | SHA | 메시지 |
|---|---|---|
| skills | c116f6f | feat(goodnight): add insta-post as step 4.5 after done |
| skills | aea2bff | docs(issues): log 2026-04-24 pair |
| skills | 0caf714 | docs(submit-app): register hanjul keystore SoT as Mac |
| skills | 5ebacbb | docs(issues): WSL Playwright MCP 설치 후속 |
| skills | 413329d | fix(issue): wsl playwright mcp resolved via PLAYWRIGHT_MCP_BROWSER env var |
| skills | b260ead | issue(insta-autopost): mirror secrets+folder WSL→Mac |
| skills | 4b13988 | issue(insta-autopost): mac venv setup partial |
| skills | efc60e4 | issue(insta-autopost): mac venv setup A path complete, dry-run PASS |
| skills | 07a10a2 | feat(insta-post): add venv guard, plain dependency spec, telegram alert |
| skills | 8bbb134 | issue(insta-autopost): SKILL.md updated with venv guard |
| skills | 6926151 | feat(insta-post): codify A policy - WSL primary, Mac standby |
| skills | 4809068 | feat(goodnight): step 4.5 hostname routing |
| skills | 70001a0 | feat(insta-post): handoff trigger keyword + policy A correction |
| skills | 6e588c0 | feat(handoff): peer-bot direct POST |
| skills | b1e5608 | fix(handoff): rewrite skill honestly |
| skills | fa68357 | feat(handoffs): introduce SSH+send-keys handoff channel |
| skills | db8f997 | handoff(wsl→mac): trial followup |
| skills | 6daa14f | feat(handoff): promote SSH+send-keys to Primary |
| skills | 387d781 | fix(handoff): submit chord Enter Enter → S-Enter |
| skills | a75cef1 | fix(handoff): submit chord 진짜 정답 — sleep 분리 + Enter (METHOD A PASS) |
| skills | 655b60b | feat(handoffs): bidirectional end-to-end verify directive |
| skills | e4e71a2 | fix(handoffs): bidir verify retry with /opt/homebrew/bin/tmux absolute path |
| skills | 6961a4f | docs(handoff): note Mac PATH quirk |
| skills | 2ee45f5 | handoff(wsl→mac): zero-touch demo — first WSL-initiated autonomous handoff |
| skills | f4f9cf7 | handoff: Mac claude-main 가드 |
| skills | cc6dc89 | handoff: SSH peer-user 를 placeholder 화 |
| daejong-page | eb14db7 | docs(newsletter): Ep.1 Substack 발행용 편집본 |
| daejong-page | 690612e | docs: 작업일지 2026-04-24 v1.0.1 |
| daejong-page | bb5dec2 | done: 2026-04-24 (evening session) |
| daejong-page | 48b258b | todos: 내일 MEMORY.md 인덱스 다이어트 |
| daejong-page | af3ced0 | todos(2026-04-24): Substack 설정 재개 🤝→🍎 이관 |
| daejong-page | bc183f4 | todos: 2026-04-25 — Playwright WSL 차단 풀기 추가 |
| daejong-page | 58f4bdc | todos(2026-04-25): cancel Playwright WSL 풀기 (전제 오인) |
| daejong-page | ca8d9a2 | todos: bump 2026-04-25 index timestamp |
| daejong-page | 2fc20ef | insta-host: add card-20260425-142848.png |
| hanjul | f18092f | feat(hanjul/android): generate launcher icons |
| hanjul | 944f001 | feat(hanjul): JSON export + Play Store ship-ready assets |
| hanjul | c2774b6 | chore(hanjul): finalize Android Play Console screenshots |
| hanjul | 704bfde | chore(android): wire release signingConfig + bump to 1.1.0+3 |
| review_radar | cd7f831 | feat(review_radar/v0.2): home filter chips + 방금 변경 highlight |