-
여러 워치페이스 비공개테스트 한 번에 준비
Wear OS 기반 워치페이스 여러 개를 동시에 비공개테스트 단계로 옮기는 작업을 했다. RELEASE_PLAN.md 를 정리하고, Apex 및 Azure 워치페이스의 빌드 설정과 에셋을 정리한 뒤, 팀원들에게 6개 면을 핸드오프했다.
읽기 → -
앱 아이콘 불일치 수정하고 빌드 설정 현행화
여러 개의 변형(variant)으로 배포되는 안드로이드 앱을 관리하다 보니, 각 변형마다 일관되지 않은 설정들이 쌓이기 시작했다. SDK 버전 타겟팅, 런처 아이콘, 스토어 메타데이터—이런 것들이 하나하나는 작아 보이지만, 모여서는 사용자에게 혼란을 주고 스토어 심사 시 까다로운 항목들이 된다. 이번엔 그 불일치들을 정리한 작업이다.
읽기 → -
테마별 기능 그래픽 자동 생성으로 이미지 작업 효율화
프리미엄 기능의 마켓플레이스 썸네일을 자동으로 생성하는 스크립트를 개발했다. Gemini API를 활용해 여러 테마별 고품질 기능 이미지(1024×500px)를 한 번에 만들 수 있도록 만든 것인데, 그 배경과 설계 의도를 정리해본다.
읽기 → -
마케팅 에셋 자동 생성 시스템으로 테마 일관성 확보
색상 테마 기능을 여러 개 추가하면서 각 테마마다 독립적으로 마케팅 에셋을 만들어야 하는 상황이 생겼다. 이번에는 이 반복 작업을 없애기 위해 store-asset generator를 만들고, ivory, slate, graphite, crimson 네 가지 색상 테마에 대한 스토어 에셋(feature image, icon, screenshots)을 생성했
읽기 → -
블로그 1967개 글 제목을 본문 기반으로 자동 정책화
기술 블로그가 성장하면서 과거 글들의 제목이 일관성 없이 흩어져 있었다. 새로운 제목 정책(30자 이내, 증상·효과 중심)을 수립했을 때, 1967개 글을 수동으로 수정할 수는 없었다. 그래서 본문을 읽고 자동으로 제목을 재생성하는 파이썬 스크립트를 작성해 한 번에 처리했다.
읽기 → -
AI 기반 워치페이스 자동 생성 시스템 구축
스마트워치 시계 화면(워치페이스)을 하나하나 수동으로 디자인하는 대신, Gemini AI를 활용해서 다이얼 자동 생성 + 라이트/다크 모드 손 색상 자동 매칭으로 11개 페이스를 한 번에 만드는 팩토리 시스템을 구축했다.
읽기 → -
누적된 DB 마이그레이션을 스키마에 통합해 혼동 해소
마이그레이션 파일이 50개, 100개 쌓이면서 schema.sql이 현재 운영 DB와 맞지 않기 시작했다. 이번에 누적된 마이그레이션을 모두 schema.sql에 통합하는 폴드인 작업을 진행했다.
읽기 → -
블로그 초기 데이터 로딩 시 제목 구분자 누락 버그 수정
초기 데이터 로딩 스크립트에서 블로그 제목의 구분자를 제대로 처리하지 못하던 버그를 고쳤다. 가만 보니 이런 작은 데이터 정제 버그가 누적되면 꽤 큰 문제가 될 수 있더라.
읽기 → -
대량 시드 스크립트의 제목 필드 오염 버그 수정
대량 데이터 생성 스크립트에서 제목 필드에 커밋메시지 값이 들어가는 버그를 발견하고 수정했다. 단순해 보이는 필드 매핑 오류였지만, 자동화된 작업이었기에 얼마나 많은 레코드가 오염될 수 있었을까 생각하니 체계적인 검증의 중요성이 느껴졌다.
읽기 → -
하루 세계관 14명 캐릭터 스토리 비츠 시드 완비
전 캐릭터에 대한 story_beats 시드 데이터를 완성했다. sql/seed-story-haru.sql 파일을 업데이트해서 하루(haru) 세계관의 14명 캐릭터 전원이 일관된 내러티브 구조를 갖추도록 정리한 작업이다.
읽기 → -
LAN·외부 기기에서 채팅 연결 안 되던 개발 환경 cross-origin
로컬이나 LAN을 통해 개발 서버에 접속할 때 채팅 기능이 연결되지 않는 문제가 발생했다. Next.js의 HMR 설정에서 cross-origin 차단이 원인이었는데, allowedDevOrigins 설정을 추가해서 해결했다.
읽기 → -
macOS launchd로 hedvion 저장소 자동 동기화 구현
팀의 개발 워크플로우에서 brainstorm 서비스로 푸시가 들어올 때마다 관련 저장소들을 자동으로 동기화해야 했다. 손으로 매번 동기화 명령어를 치는 것이 반복 작업이었고, 특히 로컬 개발 환경에서 이 과정이 자동화되면 팀의 컨텍스트 스위칭을 크게 줄일 수 있겠다고 판단했다. 그래서 macOS의 launchd를 활용해 이 작업을 자동으로 처리하는 에이전트
읽기 → -
병렬 워크트리 생성 시 발생하던 레이스 컨디션 수정
brainstorm 실행 파이프라인을 손보다가 발견한 미묘한 버그를 고쳤다. 여러 프로세스가 동시에 git worktree를 생성/삭제할 때, 이전 작업이 온전히 정리되지 않은 상태로 새 worktree 추가를 시도하면서 간헐적으로 실패하거나 상태가 꼬이는 문제였다.
읽기 → -
운세 생성 타임아웃 연장으로 간헐적 실패 해결
어느 날 운세 생성 스크립트가 자주 실패한다는 보고를 받았다. 같은 프롬프트로 실행해도 어떨 때는 성공하고 어떨 때는 도중에 끝나버리는 식이었다. 원인을 추적하다 보니 **Claude API 호출 타임아웃이 90초로 설정되어 있었는데, 복잡한 생성 작업이 이를 초과하는 경우가 빈번**했던 것. 이를 300초로 늘리는 간단한 수정인데, 생각보다 많은 걸 배우
읽기 → -
스태틱 사이트 배포 파이프라인 자동화로 장애 대응 속도 개선
스태틱 사이트를 배포할 때 발생하는 수동 작업의 반복을 자동화했다. 빌드, 동기화, 헬스체크, 롤백까지 한 번에 처리하는 배포 파이프라인을 scripts/brainstorm_exec.py에 구현했는데, 이 작업을 통해 팀 운영 효율과 배포 안정성이 함께 개선되는 경험을 했다.
읽기 → -
운세 타임아웃·트러스 동기화·깃 설정을 온보딩 문서 한 곳에 정리
CLAUDE.md에 세 가지 중요한 설정 가이드를 정리했다. 서버 트러스 동기화 방향, 깃 설정, fortune 타임아웃 관련 노트를 한데 모아서 팀 온보딩 문서화를 다시 정돈했다.
읽기 → -
brainstorm 실행 스크립트의 심링크가 커밋에 섞이는 문제 수정
brainstorm 모듈의 실행 스크립트에서 node_modules 심링크가 실제 코드 변경과 함께 commit 되는 문제를 발견하고 수정했다. 작아 보이는 이슈지만, 이런 환경 파일들이 코드 변경 커밋에 포함되기 시작하면 리뷰 노이즈도 많아지고 머지 충돌도 잦아진다.
읽기 → -
날짜 기반 메타 회전으로 SEO 다양성 확보
today 페이지의 메타 정보(제목, 설명)를 날짜와 단일 키워드 조합으로 동적으로 생성하는 회전식 시스템을 구현했다. 매일 접속할 때마다 다른 소제목과 메타데이터가 노출되도록 함으로써, SEO 다양성을 확보하면서도 사용자 경험에는 일관성을 유지하는 방식이다.
읽기 → -
스테일 워크트리 정리로 브레인스토밍 재시도 차단 해결
브레인스토밍 자동화 스크립트에서 재시도할 때마다 워크트리/브랜치 생성이 실패하는 문제를 발견했다. 원인은 이전 시도에서 남겨진 스테일한 상태를 정리하지 않았기 때문이었다.
읽기 → -
광고 동기화 스크립트의 자동화 파이프라인 실패 원인 해결
site/package.json에서 sync-ads 스크립트가 --env-file-if-exists 옵션을 받도록 수정하고, CommonJS 대신 .mjs 포맷을 가리키도록 변경했다. 자동화된 게이팅 시스템에서 환경 파일이 항상 존재하는 것을 보장할 수 없던 상황에서 나온 실질적인 수정이다.
읽기 →