← 작업일지

2026-04-21 · v1.0.1

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 로 업로드:
    xcrun altool --upload-app -f memoyo-1.0.4-21.ipa -t ios -u ssamssae@me.com -p <app-specific-password>
    4.7초 업로드, Delivery UUID 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.29강대종님이 수동 출시 버튼 클릭 — 스토어 반영 대기
1.0.421심사 제출 완료 — 심사 대기 중

신규 앱 스크린샷 자동화 시도 (실패 → 교훈)

약먹자(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가지 전부 실패:
    1. AppleScript: click button "허용" → 에러 -1728. 시뮬레이터가 AppleScript 접근성 트리에 노출하는 버튼은 하드웨어 버튼(Action/Volume/Sleep/5/6/7) . iOS 앱 내부 UI 는 접근성 API 로 못 잡음.
    2. simctl privacy deny: Unknown action 'deny'. simctl privacygrant/revoke/reset 만 지원. 게다가 privacy 서비스 목록(calendar/contacts/location/photos/microphone/motion/reminders/siri) 에 notifications 자체가 없음.
    3. cliclick c:915,313: 실행됐으나 스크린샷엔 여전히 다이얼로그. macOS 화면 좌표계 vs 시뮬레이터 창 오프셋+스케일 변환 안 함.
  • 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 = textbodyEl.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 스타일 전환기)

관련 커밋

repoSHA메시지
claude-skills(pending)worklog: 뉴스레터 스타일 포맷으로 전환
daejong-page(pending)worklog: marked.js 렌더러 도입 + 뉴스레터 스타일 샘플 v1.0.1
simple_memo_app94171fachore: bump version 1.0.3+20 → 1.0.4+21
apps/mini_expense63c522cchore(android): release signing config + store metadata
apps/pomodoro239a4b7chore(android): release signing config + store metadata
apps/hankeup269d697chore(android): com.example.hankeup → com.ssamssae.hankeup + release signing + store metadata