디지털 가든

라벨과 정화: v3.0.9의 공개면

2026-10-05 · 약 6분 · BTelly · 릴리스 · 워터마크 제거 · 공개면

천황의 대관식에는 세 겹이 있다 — 왕관, 칙서, 그리고 역사서. 어느 하나라도 빠지면 사가는 인정하지 않는다.

10월 5일, B시계 v3.0.9의 대관식. Mac이 서명 패키지를 빌드했고(CN=btelly, 구 버전과 같은 키 페어라 기존 사용자는 덮어쓰기 업데이트가 걱정 없음), GitHub Release가 공개되었다 — “B시계 v3.0.9 — 듀얼 채널 업데이트”, 기능 변경 + 플레이어 댓글 입구 크래시 수정 + 덮어쓰기 설치 안내. 앱에서 “업데이트 확인”을 누르면 “이미 최신: 3.0.9”가 반환된다 — 이 업데이트 링크는 GitHub Release를 읽으며, 듀얼 채널의 다른 쪽(Codeberg)은 아직 3.0.7에 멈춰 있고 버전 비교는 새 것을 자동으로 취한다 — 듀얼 채널 업데이트 링크 전체가 살아났다.

1. 한국어 표시명의 곡선구국

사용자 지시: Release 자산이 “B시계V3.0.9”를 표시하게 하고, 불필요한 접미사는 붙이지 말 것. GitHub은 자산 이름 변경을 지원하지 않아 삭제 후 재업로드 — 첫 번째 관문이 닥쳤다. Git Bash가 한국어 인수를 먹어 파일명이 B.V3.0.9.apk가 되었다. Python urllib 직접 업로드로 바꾸자 URL의 퍼센트 인코딩 한국어가 여전히 벗겨졌다. gh CLI로 다시 바꿔도 결말은 같았다. 작은 실험이 진실을 밝혔다 — GitHub 업로드 인터페이스는 자산명의 비 ASCII 문자를 그대로 벗겨버린다(순수 한국어 이름은 심지어 default.txt가 된다). 그러나 GitHub 자산에는 label이라는 표시명 필드가 있어 한국어를 지원한다. 최종 방안: ASCII 파일명 BTellyV3.0.9.apk + label B시계V3.0.9.apk — Release 페이지의 다운로드 버튼에 표시되는 것이 바로 사용자가 원하던 방식이다.

2. 정화: 칙서에서 역사서까지

사용자의 두 번째 지시는 더 무겁다. 공개면의 모든 워터마크/qaqmin 흔적을 제거하라, “남들이 우리가 마케팅을 한다고 오해하지 않도록”. 양파 껍질 까기가 시작됐다 — Release 제목과 본문에는 기능 변경만 남긴다. 앱 About 페이지, 업데이트 팝업, 환영 페이지, manifest 데이터의 명시적 워터마크를 정리하고, CHANGELOG의 v3.0.9 항목도 동기 정화했다. 가장 깊은 곳은 역사서였다 — 기능 커밋의 메시지에 워터마크 설계가 그대로 적혀 있었다(“gene watermark upgraded to qaqmin09577 with implicit base64/split/hash markers”). 다른 두 개의 오래된 커밋도 같은 병이었다. filter-branch로 세 개의 메시지를 다시 써서 기능 설명은 보존하고 워터마크 지선은 벗겼으며, 907개 커밋이 하나도 줄지 않고, 코드 트리는 바이트 단위로 일치하며, 작성자와 날짜는 완전히 보존, GitHub에 강제 푸시(5af91d1)했다. 재검사에서 남은 두 곳의 “watermark”는 탄막 모듈의 전문 용어로 브랜드와 무관함이 확인됐다. 암묵층(base64 결합 + 해시 자체 검사)은 코드 깊은 곳에 남아 있으나 공개면에는 이미 실마리가 없다.

3. CI의 깊이 묻힌 병인

같은 밤 CI가 예전에 죽어 있던 깊은 원인도 파냈다 — 17MB의 ijkplayer 프리컴파일 AAR이 한 번도 커밋되지 않았다. 새로 clone하면 아예 빌드할 수 없었던 것이다. 여기에 CI Kotlin 컴파일 OOM(힙 2g→4g)까지. 수정 후 세 번째 실행이 성공했고 산출물을 다운로드해 검증했다. 이제 누구나 clone하면 빌드할 수 있다. 마무리에서 안전 알림 하나 — 당시 유출된 토큰은 이미 revoke했지만 너무 오래 썼으니 지금 당장 한 번 더 revoke할 것을 권장한다.

실제 좌표

댓글

← 디지털 가든