이 글은 Daily Log 시리즈의 131번째 기록입니다. (총 155개)

오늘 한 일

  • LOGSTONE Shop
    • KeyBloom 페이지에 업데이트 내역(Changelog) 섹션을 추가 — 빌드 때 GitHub 릴리스 목록을 읽어 정적 렌더, 릴리스 노트를 구분선으로 갈라 언어별 표시
    • 법적 문서를 조항 데이터로 분리 — 통합본을 유지하면서 제품별 /{제품}/privacy/·/terms/ 페이지가 같은 조항에서 조립되게 함(하루 만에 제품 7종 등록)
    • 제품 간 정책·URL 조율 창구(INBOX.md)를 신설 — 프로젝트마다 오가는 요청·회신을 한곳에 모으는 우편함. 첫날 요청 4건과 공지 2건을 처리하고, 7개 프로젝트가 모두 이 창구를 쓰며 ‘먼저 확인 후 반영’ 규칙을 세움
    • 정책 URL 표준 규칙 확정 — 앱 정책 URL은 자기 제품 정책 필수, 블로그 URL은 앱에 쓰지 않음
    • 블로그(kimlog)를 정책 시스템에 편입(사이트+웹 도구 범위), Pawbit 제품 정책 신규 등록
    • 블로그 로스터에서 샵 등록 후보 검토 — Duplicate Finder는 손질 후 등록으로 백로그, 팬메이드 2종(타인 IP)은 비추 판정
  • 소리꽃 KeyBloom
    • 라이브 모드에서 스페이스로 큐를 순서대로 넘기고, 왼쪽 Shift를 서스테인 페달로 넣음(컴퓨터 키보드 연주)
    • 네이티브 앱에서 브라우저 단축키(새로고침·개발자도구·찾기·인쇄·줌 등)를 막아 우리가 만든 단축키만 쓰게 함
    • 기존 릴리스(0.1.0·0.1.2·0.1.3)에 국·영 업데이트 내역(changelog)을 채우고, 릴리스마다 국·영으로 노트를 적는 규칙을 정함
    • 웹 자동배포를 릴리스 브랜치로 분리 — main은 개발용(웹 배포 안 함), release에 올릴 때만 웹이 갱신되게 함
    • 자동 업데이트에 다운로드·설치 진행 오버레이를 넣음 — 그동안 설치를 눌러도 표시가 없어 멈춘 듯 보였음
    • 데모곡(녹턴)을 밸런스 잡은 버전으로 교체
    • 위 라이브 키·오버레이·데모 밸런스를 묶어 0.1.4를 릴리스하고, main→release 병합으로 웹도 0.1.4로 올림
    • 블로그·제품 개인정보처리방침을 LOGSTONE 통합 방침으로 통일하고, 샵과의 요청 창구(INBOX)로 KeyBloom 정책 범위를 맞춤
  • 여둘까 Office Layout
    • 베껴 두던 개인정보처리방침 사본을 걷어내고 여둘까 전용 방침으로 보내게 함(요약 두 문장과 문의처만 남김)
    • 파일 메뉴에 이용약관 링크 추가 — 여둘까엔 약관이 없었다
    • 제품 방침에 빠져 있던 광고(카카오 애드핏) 고지를 찾아 채움
  • 메트로놈 Simple Metronome
    • 개인정보처리방침을 통합 정책 사이트로 옮김 — 구 freeprivacypolicy.com 대신 logstone.net/metronome/privacy/ 로 바꾸고 Play Console 정책 URL도 교체
    • ±5 버튼 키운 v1.15를 Google Play에 출시
  • 모래게임 Sandrop
    • 봇을 실수율 0·10·20퍼센트 세 단계로 돌려 레벨마다 난이도 프로필을 남기고, 상위 난이도에 실수 없는 봇 기준 상한을 걸어 재생성
    • 난이도를 축소판이 아니라 실제 판에서 재도록 통일하고 측정 반복을 8회에서 24회로 올림
    • 얼음이 녹는 조건을 이웃 수로 고치고, 얼음끼리 붙지 않게 막음
    • 안전망 경로가 기믹을 빠뜨리던 것을 고침
    • 광고 SDK를 올리고 전면·보상형 닫기 버튼을 살림, 전면 광고를 매 판으로
    • 설정의 개인정보처리방침·이용약관을 로그스톤 샵의 이 앱 전용 페이지로 연결
    • 레벨 선택에서 노드 한 줄 전체를 눌러 들어가게 함
    • 동생이 그려 준 케이크 도안 4종을 받아 확인

어려웠던 점

  • LOGSTONE Shop
    • 블로그 정책 편입을 두고 하루 안에 분리 확정 → 무단 편입 반려 → 승인 번복까지 오갔다 — “사이트+웹 도구만 편입, 앱 고지는 각 제품 정책”이라는 경계로 정리했다
    • 여러 작업이 같은 저장소를 동시에 건드리니 회신이 다른 커밋에 묻히는 일이 생겼다 — 고치기 전 pull·고친 뒤 즉시 push를 규칙으로 박았다
  • 소리꽃 KeyBloom
    • 출시한 뒤에도 main에 push할 때마다 웹이 바로 배포돼 미완성 기능이 웹에 올라갔다 — 프로덕션 브랜치를 release로 분리해 릴리스 시점에만 웹이 바뀌게 정리했다
    • 샵에 버전별 업데이트 내역을 어떻게 보여줄지 — 업데이터가 쓰는 파일엔 최신 한 버전만 있어서, 전체 이력은 GitHub 릴리스 목록을 가져오는 쪽으로 방향을 잡았다
  • 여둘까 Office Layout
    • 방침 페이지에 광고 항목이 아예 없는 걸 보고, 빠뜨린 건지 원래 없는 건지부터 가려야 했다. 실제로 광고를 싣고 있으니 빠진 게 맞았다
    • 방침을 여러 제품이 나눠 쓰는 구조라, 내 제품에 무엇이 붙는지 페이지만 봐서는 알기 어려웠다
  • 메트로놈 Simple Metronome
    • 방침이 제품별로 조립되는 구조라 메트로놈 조항만 정확히 잡아야 했고, 다른 제품(애드핏·결제) 조항이 메트로놈 페이지에 새지 않는지부터 확인해야 했다
  • 모래게임 Sandrop
    • 500탄이 최고 난이도인데 한 번에 깨졌다. 난이도를 재는 방식 자체가 계획의 어려움과 실수에 대한 가혹함을 한 숫자로 뭉쳐 놓고 있었다
    • 얼음 규칙을 고쳤더니 얼음끼리 붙은 판이 영영 안 풀리게 됐다. 한쪽을 고치면 다른 쪽이 깨지는 규칙이었다
    • 광고에 닫기 버튼이 안 떠서 광고를 못 닫았다. 우리 화면이 시스템 바를 숨기고 있는 것과 부딪히는 문제라 원인을 찾는 데 오래 걸렸다
    • 동생이 5색으로 그려 준 케이크가 게임에 넣으니 딸기가 갈색이 됐다. 그림 문제인지 변환 문제인지 가리는 데 시간이 걸렸고, 결국 내보내기 설정 문제였다

배운 점

  • 로그스톤 샵 LogStone Shop TIL 3으로 정리
    • 조항 데이터 + 태그 조립으로 여러 제품의 법적 문서를 한 소스에서 관리하는 법(동적 라우트, 고유명사 금지 원칙, 자동 누수 검증)
    • GitHub 릴리스 기반 Changelog(빌드 타임 페칭, 한 노트에 두 언어 구분선 규약)
    • 저장소를 프로젝트 간 요청 우편함으로 쓰는 협업 방식과 동시 편집 충돌 규칙
    • 스토어 정책 URL을 제품별로 두면 심사 대조가 1:1이 된다
  • 소리꽃 KeyBloom TIL 25로 정리
    • 기존 이벤트 경로 재사용(서스테인·큐 키)
    • 네이티브 단축키 denylist 잠금
    • 배포 브랜치 분리로 “출시본만 웹에”
    • GitHub Releases API로 changelog
    • 업데이터 진행 표시(공용 오버레이 재사용)
  • 모래게임 Sandrop TIL 24로 정리 예정
  • 메트로놈 Simple Metronome (TIL 없음 — 코드 기법 아님)
    • 여러 제품이 공유하는 방침에선 공통 조항에 특정 업체·제품명을 넣지 말아야 무관한 이름이 남의 제품 페이지에 안 샌다

해야 할 일

  • LOGSTONE Shop
    • Sandrop 출시(8/15) 지원 — 정책 URL 계약 이행 확인
    • Duplicate Finder 손질 후 샵 등록
    • Pawbit Firebase 확정 시 분석 조항 추가
    • 로고 교체, 푸터 사업자 표기 여부 결정
  • 소리꽃 KeyBloom
    • 크로마키 출력·4K 구매 유도·9:16·1:1 비율 영상 추출 (유료 다음 업데이트)
    • 라이브 모드 영상 촬영 기획 (홍보)
    • 코드 서명 인증서(SmartScreen 경고 해소)는 매출 신호 후
  • 메트로놈 Simple Metronome
    • (deferrable) 잠금화면 미디어 컨트롤(MediaSession) — 남은 유일한 백로그
  • 모래게임 Sandrop
    • 케이크 도안 다시 받아 등록하고 500레벨 재생성
    • 올린 난이도를 직접 확인
    • 스토어 등록물과 Play Console 설문
    • 배포 전 디버그 모드 제거
    • 레벨 동결 — 제출 전에

Series: Daily Log

1 오늘 해낸 것 2 오늘 해낸 것 3 오늘 해낸 것 4 오늘 해낸 것 5 오늘 해낸 것 6 오늘 해낸 것 7 오늘 해낸 것 8 오늘 해낸 것 9 오늘 해낸 것 10 오늘 해낸 것 11 오늘 해낸 것 12 오늘 해낸 것 13 오늘 해낸 것 14 오늘 해낸 것 15 오늘 해낸 것 16 오늘 해낸 것 17 오늘 해낸 것 18 오늘 해낸 것 19 오늘 해낸 것 20 오늘 해낸 것 21 오늘 해낸 것 22 오늘 해낸 것 23 오늘 해낸 것 24 오늘 해낸 것 25 오늘 해낸 것 26 오늘 해낸 것 27 오늘 해낸 것 28 오늘 해낸 것 29 오늘 해낸 것 30 오늘 해낸 것 31 오늘 해낸 것 32 오늘 해낸 것 33 오늘 해낸 것 34 오늘 해낸 것 35 오늘 해낸 것 36 오늘 해낸 것 37 오늘 해낸 것 38 오늘 해낸 것 39 오늘 해낸 것 40 오늘 해낸 것 41 오늘 해낸 것 42 오늘 해낸 것 43 오늘 해낸 것 44 오늘 해낸 것 45 오늘 해낸 것 46 오늘 해낸 것 47 오늘 해낸 것 48 오늘 해낸 것 49 오늘 해낸 것 50 오늘 해낸 것 51 오늘 해낸 것 52 오늘 해낸 것 53 오늘 해낸 것 54 오늘 해낸 것 55 오늘 해낸 것 56 오늘 해낸 것 57 오늘 해낸 것 58 오늘 해낸 것 59 오늘 해낸 것 60 오늘 해낸 것 61 오늘 해낸 것 62 오늘 해낸 것 63 오늘 해낸 것 64 오늘 해낸 것 65 오늘 해낸 것 66 오늘 해낸 것 67 오늘 해낸 것 68 오늘 해낸 것 69 오늘 해낸 것 70 오늘 해낸 것 71 오늘 해낸 것 72 오늘 해낸 것 73 오늘 해낸 것 74 오늘 해낸 것 75 오늘 해낸 것 76 오늘 해낸 것 77 오늘 해낸 것 78 오늘 해낸 것 79 오늘 해낸 것 80 오늘 해낸 것 81 오늘 해낸 것 82 오늘 해낸 것 83 오늘 해낸 것 84 오늘 해낸 것 85 오늘 해낸 것 86 오늘 해낸 것 87 오늘 해낸 것 88 오늘 해낸 것 89 오늘 해낸 것 90 오늘 해낸 것 91 오늘 해낸 것 92 오늘 해낸 것 93 오늘 해낸 것 94 오늘 해낸 것 95 오늘 해낸 것 96 오늘 해낸 것 97 오늘 해낸 것 98 오늘 해낸 것 99 오늘 해낸 것 100 오늘 해낸 것 101 오늘 해낸 것 102 오늘 해낸 것 103 오늘 해낸 것 104 오늘 해낸 것 105 오늘 해낸 것 106 오늘 해낸 것 107 오늘 해낸 것 108 오늘 해낸 것 109 오늘 해낸 것 110 오늘 해낸 것 111 오늘 해낸 것 112 오늘 해낸 것 113 오늘 해낸 것 114 오늘 해낸 것 115 오늘 해낸 것 116 오늘 해낸 것 117 오늘 해낸 것 118 오늘 해낸 것 119 오늘 해낸 것 120 오늘 해낸 것 121 오늘 해낸 것 122 오늘 해낸 것 123 오늘 해낸 것 124 오늘 해낸 것 125 오늘 해낸 것 126 오늘 해낸 것 127 오늘 해낸 것 128 오늘 해낸 것 129 오늘 해낸 것 130 오늘 해낸 것 131 오늘 해낸 것 읽는 중 132 오늘 해낸 것 133 오늘 해낸 것 134 오늘 해낸 것 135 오늘 해낸 것 136 오늘 해낸 것 137 오늘 해낸 것 138 오늘 해낸 것 139 오늘 해낸 것 140 오늘 해낸 것 141 오늘 해낸 것 142 오늘 해낸 것 143 오늘 해낸 것 144 오늘 해낸 것 145 오늘 해낸 것 146 오늘 해낸 것 147 오늘 해낸 것 148 오늘 해낸 것 149 오늘 해낸 것 150 오늘 해낸 것 151 오늘 해낸 것 152 오늘 해낸 것 153 오늘 해낸 것 154 오늘 해낸 것 155 오늘 해낸 것