8 Commits

Author SHA1 Message Date
26bf54fb43 Google Play 단독 출시로 정리 + 스토어 제출 자산 준비
iOS 타깃을 제거했다. Apple Developer Program 연 $99 와 맥이 필요한데
아이폰은 기존 웹 PWA 로 이미 커버되므로 비용 대비 실익이 없다고 판단했다.
commonMain 중심 구조는 그대로라 iosTarget 만 다시 넣으면 복구된다.

멀티·리그전/커스텀 카드에 '준비 중' 배지를 붙였다. 구현되지 않은 모드가
스토어 스크린샷에서 동작하는 것처럼 보이면 Play 의 허위 표시 정책에 걸린다.

store/ 에 Play Console 제출 자산을 모았다: 등록정보 문구, 데이터 보안 설문
답안(릴리스 APK 에 INTERNET 권한이 없음을 aapt2 로 확인), 개인정보처리방침,
피처 그래픽 1024x500, 스토어 아이콘 512x512, 폰 4장 + 태블릿 3장 스크린샷.
2026-09-24 16:28:59 +09:00
cbd0f62319 Kotlin Multiplatform 네이티브 앱으로 전환 (Android + iOS 공용 코드)
TWA 래퍼를 걷어내고 Compose Multiplatform 으로 다시 만들었다. 엔진·UI·모드
전부 commonMain 한 벌이라 Android 와 iOS 가 같은 코드를 쓴다.

- engine/: 웹 JS 엔진을 Kotlin 으로 이식 (SRS+180 킥, 7-bag, T-spin, B2B,
  콤보, All Clear, 점수·레벨). commonTest 28개 통과
- game/: 모드 규칙 + 중력/락딜레이/DAS/ARR 타이밍
- ui/: 네오브루탈 컴포넌트, 메인/솔로시트/인게임/결과/설정
- ui/Responsive.kt: 고정 해상도를 버리고 가용 크기에서 셀 크기·배율 계산.
  폰 세로, 플립 초세로, 플립 커버(소형), 폴드 펼침, 태블릿/아이패드 가로 대응
- androidMain: resizeableActivity + configChanges 로 접기/펴기·회전 시 재시작 없음
- iosMain + iosApp/: MainViewController + SwiftUI 껍데기 + XcodeGen 설정
  (실제 iOS 빌드는 macOS + Xcode 필요)
- scripts/release.sh: 버전 상승 → 테스트 → 서명 빌드 → 태그 → Gitea 릴리스 자동화
2026-09-23 10:37:17 +09:00
0839705b97 Android(TWA) 앱 패키징 + 재실행 불가 버그 수정
Cloudflare Pages 가 /index.html 을 / 로 308 리다이렉트하는데, 서비스워커가
그 리다이렉트 응답을 캐시해 두면 navigation 요청에 응답할 수 없어(스펙상 금지)
두 번째 실행부터 ERR_FAILED 로 앱이 아예 열리지 않았다.

- sw.js: navigation 은 네트워크 우선 + 캐시된 './' 오프라인 폴백,
  프리캐시는 리다이렉트 플래그 없는 새 Response 로 복사해 저장 (tetrig-v2)
- manifest.webmanifest: start_url 을 './' 로 바꿔 리다이렉트 자체를 회피
- android/: Bubblewrap TWA 프로젝트 (kr.tkrmagid.tetrig, launchUrl '/')
- .well-known/assetlinks.json: 서명 키 SHA-256 등록 → 주소창 없는 전체화면 실행
2026-09-23 04:30:10 +09:00
tkrmagid
a8ff780248 Revert to spec's free web plan + PWA install (iPhone/Android, $0)
명세서 준수: 네이티브(Flutter/Kotlin) 경로 폐기 — 유료 iOS 개발자 등록·맥이 필요해 비용 0 원칙과 명세서에 어긋남.
- app/(Flutter) 전부 제거, 원래 웹 클라이언트 복원.
- PWA 추가: manifest.webmanifest + sw.js(오프라인 캐시) + 앱 아이콘(192/512/apple-touch).
  → iPhone Safari·Android Chrome에서 '홈화면에 추가'로 전체화면 앱처럼 실행, 스토어/맥/등록비 불필요.
- Cloudflare Pages 무료 배포 대상. 서버(Workers) 계획 불변.
2026-08-22 15:08:51 +09:00
tkrmagid
cbb8dea2eb Switch to Flutter (Android + iOS) for iPhone support; port engine to Dart
아이폰 지원 요구로 Android 전용 Kotlin 스택을 크로스플랫폼 Flutter로 교체.
- app/: Flutter 프로젝트(android+ios). 코어 로직은 순수 Dart 모듈 app/lib/engine.dart
  로 이식(SRS+180 킥·7-bag·홀드·고스트·락딜레이·T-spin/mini·콤보/B2B). 웹/Kotlin 판과 동일 알고리즘.
- app/test/engine_test.dart: Dart 테스트 24개 전부 통과, flutter analyze 0 issue.
- 이전 android/(Kotlin) 모듈 제거(Flutter로 대체). README에 Flutter 전환 + iOS 빌드 제약(맥 필요) 명시.
- 게임 UI(목업 ② + §11 터치)와 설치용 빌드는 다음 단계.
2026-08-22 14:40:03 +09:00
tkrmagid
9a41c9a340 Pivot client to native Android (Kotlin) — engine module + JUnit
플레이스토어 출시 위해 클라이언트를 네이티브 Android(Kotlin+Compose)로 전환.
- android/engine: 순수 Kotlin 코어 엔진 이식 (보드·SRS+180 킥·7-bag·홀드·고스트·
  락딜레이·T-spin/mini 판정·콤보/B2B). 웹 engine.js 와 동일 알고리즘.
- android/engine/src/test: JUnit 24개 테스트 전부 통과 (Gradle 8.11.1 + JDK21).
- Gradle 래퍼 포함. :app(Compose UI) 모듈은 다음 단계.
- 서버(Cloudflare) 계획 불변. 웹 프로토타입은 동작 레퍼런스로 유지.
2026-08-22 14:31:50 +09:00
tkrmagid
c99a867ba7 Lock TETRIG name for store launch and monetization
이름 재검토 트리거 제거: §2·§10·README 상표 섹션을 '스토어 출시·수익화까지 TETRIG 확정'으로 갱신 (2026-08-21 사용자 결정).
2026-08-21 22:55:25 +09:00
tkrmagid
fa46b39992 Add README.md as app build entry point
TETRIG-최종명세서.md를 정본으로 하는 앱 제작용 README 추가.
개요·아키텍처·에셋·핵심 규칙·디자인 시스템·로드맵·개발환경·IP 가드레일 정리.
2026-08-21 22:26:33 +09:00