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) 계획 불변.
This commit is contained in:
tkrmagid
2026-08-22 15:08:51 +09:00
parent cbb8dea2eb
commit a8ff780248
76 changed files with 70 additions and 2520 deletions

View File

@@ -4,8 +4,13 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, viewport-fit=cover">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="TETRIG">
<meta name="mobile-web-app-capable" content="yes">
<meta name="theme-color" content="#17161B">
<link rel="manifest" href="manifest.webmanifest">
<link rel="apple-touch-icon" href="apple-touch-icon.png">
<link rel="icon" type="image/png" href="icon-192.png">
<title>TETRIG</title>
<style>
/* 명세서 §13 팔레트 */
@@ -483,6 +488,11 @@ function fit(){
}
addEventListener('resize', fit); fit();
// ── PWA: 서비스 워커 등록 (홈화면 설치 + 오프라인) ──
if ('serviceWorker' in navigator) {
addEventListener('load', () => navigator.serviceWorker.register('sw.js').catch(()=>{}));
}
// ── 렌더 대상 ──
const CELL = 25, VIS = CONFIG.VISIBLE_H, W = CONFIG.BOARD_W;
const board = document.getElementById('board');