2026.04.21 작업일지 v1.0.1
v1.0.0 이후 오전 구간. 메모요 App Store 1.0.2 수동 출시 → 1.0.4 재업로드·심사 제출 → 신규 앱(약먹자/더치페이) 스크린샷 자동화 시도·실패 → /worklog 스킬 뉴스레터 스타일 전환.
오늘의 궤적
v1.0.0 마감(00:44) 직후 /clear 로 세션 리셋. 아침 브리핑이 들어왔고 강대종님이 App Store 수동 단계에 착수했다. 메모요 1.0.2(build 9)는 이미 심사 통과 상태라 “이 버전 배포” 버튼 한 번이면 끝나야 하는 작업이었는데, “배포 준비됨” 상태 해석에서 막혔다. 자동 출시 설정 vs 수동 출시 설정 혼동, 그리고 어제 build 21까지 올려둔 1.0.4 와 현재 1.0.2(build 9) 가 같이 보여 버전 혼선이 있었다. 정리해서 두 버전 모두 처리: 1.0.2 는 수동 출시 버튼, 1.0.4 는 altool 로 ipa 재업로드 후 Playwright 로 심사 제출. altool 업로드는 4.7초 만에 끝났고 UUID 35d78575 로 Apple 수령 확인. 그 다음 Playwright Chrome 세션이 죽어 있어서 pkill 로 재시작 + 강대종님이 애플 로그인 직접 수행 → 심사 제출 버튼까지 클릭 완료.
이어서 약먹자/더치페이 등 신규 앱 스크린샷 자동화를 시도했는데 여기서 30분 헛발질. iPhone 16 Pro Max 시뮬레이터 해상도(1320×2868) 가 Claude 의 이미지당 2000px 한계를 넘어서서 스크린샷을 Read 할 때마다 dimension limit 에러가 났다. 동시에 앱 첫 화면에 뜨는 iOS 알림 허용 다이얼로그를 닫으려고 AppleScript → simctl privacy → cliclick 3가지 경로로 시도했으나 각기 다른 이유로 전부 실패. 강대종님이 “작업중지” 로 세션을 접고 /clear.
새 세션에서 직전 세션 진단 요청 → 이미지 제한 + 3가지 클릭 실패 원인을 전부 로그 역추적으로 확정해서 텔레그램으로 보고. 해결책은 다음 스크린샷 작업 사이클에 ①+④ 조합(스크린샷용 빌드 flavor 에서 권한 요청 skip + 홈 화면만 촬영) 반영 합의.
마지막으로 /worklog 스킬 자체를 뉴스레터 스타일로 전환. ep1-2026-04-20.md 를 레퍼런스 삼아 SKILL.md 6-c·8번 섹션 전면 재작성, worklog.html + worklog/view.html 에 marked.js CDN 붙여서 마크다운 렌더링 활성화. 네이버 카페 붙여넣기 용도는 공식 드롭. 이 파일이 새 포맷 첫 적용본.
메모요 App Store 수동 출시 + 1.0.4 재업로드
- 1.0.2 (build 9): 지난주 심사 통과해서 “Pending Developer Release” 상태로 대기 중이었음. 자동 출시가 아니라 수동 출시 설정이어서 “이 버전 배포” 버튼을 사용자가 직접 눌러야 했음. 페이지 스크롤 하단·사이드바 앱심사 탭 안내하며 경로 정리.
- 1.0.4 (build 21): 어제 밤에 ipa 만들어둔 상태(
~/submit-queue/memoyo-1.0.4-21.ipa, 19.4MB). altool CLI 로 업로드:
4.7초 업로드, Delivery UUIDxcrun altool --upload-app -f memoyo-1.0.4-21.ipa -t ios -u ssamssae@me.com -p <app-specific-password>35d78575-.... Processing 10~30분 대기. - Playwright Chrome 세션이 죽어 있어서(stale context) browser_navigate 호출 실패.
pkill -f "mcp-chrome-1f3f523"권한이 막혀 있어 강대종님이 Ghostty 에서 직접 실행. 세션 복구 후 애플 로그인은 2FA 때문에 직접 수행, 심사 제출 버튼까지 Playwright 로 클릭. - “1개의 항목 제출됨” 팝업 + 사이드바 “1.0.4 심사 대기 중” 전환 확인. 자동 출시 설정이라 승인 시 스토어 바로 반영.
- memoyo 버전 정리:
| 버전 | 빌드 | 상태 (09:30 기준) |
|---|---|---|
| 1.0.2 | 9 | 강대종님이 수동 출시 버튼 클릭 — 스토어 반영 대기 |
| 1.0.4 | 21 | 심사 제출 완료 — 심사 대기 중 |
신규 앱 스크린샷 자동화 시도 (실패 → 교훈)
약먹자(yakmukja) + 더치페이(dutch_pay_calculator) iOS 스크린샷 자동 촬영.
- iPhone 16 Pro Max 시뮬레이터 신규 생성 → Runner.app 빌드 → 설치 → 실행 →
xcrun simctl io booted screenshot. - 스크린샷 저장: 1320×2868 PNG. Read 시점에 Claude 이미지당 2000px 제한 초과 → dimension limit 에러 반복.
- 앱 첫 화면에 iOS 알림 허용 다이얼로그 노출. 닫기 시도 3가지 전부 실패:
- AppleScript:
click button "허용"→ 에러 -1728. 시뮬레이터가 AppleScript 접근성 트리에 노출하는 버튼은 하드웨어 버튼(Action/Volume/Sleep/5/6/7) 뿐. iOS 앱 내부 UI 는 접근성 API 로 못 잡음. - simctl privacy deny:
Unknown action 'deny'.simctl privacy는grant/revoke/reset만 지원. 게다가 privacy 서비스 목록(calendar/contacts/location/photos/microphone/motion/reminders/siri) 에 notifications 자체가 없음. - cliclick c:915,313: 실행됐으나 스크린샷엔 여전히 다이얼로그. macOS 화면 좌표계 vs 시뮬레이터 창 오프셋+스케일 변환 안 함.
- AppleScript:
- 4~5회 dimension limit 에러로 토큰만 소모. 강대종님이 “이미지 수정결 드롭해줘 멀쩡하다” 보냈으나 컨텍스트에 깨진 이미지가 쌓여서 어시스턴트가 계속 같은 에러만 뱉음 → “작업중지해” 로 세션 강제 종료.
다음 시도 때 반영 (합의)
- ①: 앱 코드에
screenshot빌드 flavor 를 추가해 알림 권한 요청 자체를 skip - ④: 심사 스크린샷은 홈 화면만 촬영 (권한 다이얼로그가 뜨지 않는 지점)
- 보조 옵션(미채택이지만 기록): ②
xcrun simctl clone으로 “허용 눌린” 시뮬레이터 스냅샷 재사용, ③ cliclick 쓰려면osascript로 창 position 먼저 받아 좌표 변환 - 스크린샷 자체는
sips -Z 1800으로 리사이즈 후 Read (2000px 미만으로 축소)
/worklog 뉴스레터 스타일 전환
현장 조사
- 레퍼런스:
~/daejong-page/newsletter/ep1-2026-04-20.md(ep2 는 아직 미작성, ep1 단독 참고) worklog.html+worklog/view.html둘 다bodyEl.textContent = text+white-space: pre-wrap→ 마크다운 파싱 없음. 과거 공개본의 “마크다운 기호 금지” 규칙은 이 평문 렌더링 제약에서 온 것.- view.html “본문 복사” 버튼은
navigator.clipboard.writeText(text)— 네이버 카페 붙여넣기용 원본 공급처.
판단: A (공개본도 뉴스레터 마크다운)
- B(이원화 유지, 공개본 산문체): 뉴스레터 임팩트 = 시각 구조화에서 오므로 약함. 블록쿼트 훅·표·코드블록 못 씀.
- C(산문체 + evocative 섹션 제목만): 뉴스레터라고 부를 강도 없음.
- A: marked.js CDN 한 줄 + innerHTML 교체 + CSS 20여줄 추가. 30분 작업. 공개본의 시각 임팩트 확보. 카페 붙여넣기 용도는 드롭.
변경분
~/.claude/skills/worklog/SKILL.md: 2종 파일 설명·6-c·8번 전면 재작성. 뉴스레터 스타일 체크리스트 10개 추가. 카페 붙여넣기 드롭 선언 주석 포함.~/daejong-page/worklog.html:<head>에 marked.js CDN 추가.entry-body에서white-space: pre-wrap제거.entry-body자식 요소(h1~h3, p, blockquote, code, pre, strong, a, ul/ol/li, table, hr) CSS 추가bodyEl.textContent = text→bodyEl.innerHTML = marked.parse(text, { breaks: false, gfm: true })(실패 시 textContent fallback)- “산문체로 보기” 버튼 → “단일 버전 보기”
~/daejong-page/worklog/view.html: 동일 패턴. 페이지 타이틀 “작업일지 산문체” → “작업일지 뉴스레터”.- 이원화 유지(SKILL.md 제약). 원본은 사실 구조·표/불릿 자유, 공개본은 뉴스레터 서사.
과거 파일 호환
- 2026-04-20 이전 산문체 파일: 문단이 빈 줄로 구분돼 있으므로 marked 가
<p>로 잘 쪼갬. 마크다운 기호가 없어 그대로 평문처럼 렌더링됨. 깨지지 않음. - 이 파일(2026-04-21 v1.0.1) 이 새 포맷 첫 적용본.
인프라·스킬·자동화 요약
- 스킬 수정:
/worklog— SKILL.md 뉴스레터 스타일 전환 (claude-skills 커밋 대상) - daejong-page 수정: worklog.html + worklog/view.html 마크다운 렌더러 활성화 (daejong-page 커밋 대상)
- 드롭: 공개본 네이버 카페 붙여넣기 호환성 (결정 사유 SKILL.md 주석)
학습·상담
- “허용 버튼 왜 못 눌렀는지” 질문에 3가지 시도의 각기 다른 실패 원인 을 정리한 것이 가치가 있었음. 같은 증상처럼 보였지만 실제론 세 가지 다른 레이어(GUI 접근성 API / simctl CLI 기능 / 좌표계 변환) 가 각각 깨져 있었음.
- /worklog 의 이원화 규칙이 “왜 존재하는가” 의 맥락(카페 평문 붙여넣기)이 2026-04-21 시점에 더 이상 유효하지 않다는 것을 worklog.html 렌더러 구조를 읽고 나서 판단. 기존 규칙의 원인을 역추적해서 바꿀 수 있는지 결정하는 패턴.
남은 작업
- 약먹자/더치페이/한컵/mini_expense/pomodoro 스크린샷 촬영 (다음 시도 때 빌드 flavor + 홈 화면 한정 + sips 리사이즈 반영)
- daejong-page push 후 뉴스레터 렌더링 실제 확인 (marked.js 로드·마크다운 요소 CSS 적용)
- 메모요 1.0.2 스토어 반영 대기 + 1.0.4 심사 결과 대기
- 뉴스레터 ep2 집필(스크린샷 자동화 시도기 또는 /worklog 스타일 전환기)
관련 커밋
| repo | SHA | 메시지 |
|---|---|---|
| claude-skills | (pending) | worklog: 뉴스레터 스타일 포맷으로 전환 |
| daejong-page | (pending) | worklog: marked.js 렌더러 도입 + 뉴스레터 스타일 샘플 v1.0.1 |
| simple_memo_app | 94171fa | chore: bump version 1.0.3+20 → 1.0.4+21 |
| apps/mini_expense | 63c522c | chore(android): release signing config + store metadata |
| apps/pomodoro | 239a4b7 | chore(android): release signing config + store metadata |
| apps/hankeup | 269d697 | chore(android): com.example.hankeup → com.ssamssae.hankeup + release signing + store metadata |