feat: Phase 2 — google_mobile_ads 7.x, flutter_lints 6, CHANGELOG v1.1.0
- google_mobile_ads 5.3→7.x (iOS Privacy Manifest 대응) - flutter_lints 5→6 (최신 lint 규칙) - CHANGELOG.md 전면 재작성 (v1.0.1, v1.1.0 릴리즈 이력) - 버전 1.0.1+2 → 1.1.0+3 - freezed 3.x 마이그레이션 보류 (호환성 문제, 2.x 유지)
This commit is contained in:
96
CHANGELOG.md
96
CHANGELOG.md
@@ -1,46 +1,70 @@
|
||||
# Changelog
|
||||
|
||||
프로젝트의 주요 변경 사항을 기록합니다.
|
||||
형식: [Keep a Changelog](https://keepachangelog.com/ko/1.1.0/)
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Refactored (리팩토링)
|
||||
|
||||
#### GameSessionController 분할 (SRP 개선)
|
||||
- 920 LOC → 526 LOC (43% 감소)
|
||||
- 5개 매니저로 책임 분리:
|
||||
- `GameStatisticsManager` - 세션/누적 통계 추적
|
||||
- `SpeedBoostManager` - 광고 배속 부스트 기능
|
||||
- `ReturnRewardsManager` - 복귀 보상 기능
|
||||
- `ResurrectionManager` - 사망/부활 처리
|
||||
- `HallOfFameManager` - 명예의 전당 관리
|
||||
|
||||
#### ProgressService 메서드 분할
|
||||
- `tick()`: 350 LOC → 80 LOC (8개 헬퍼 메서드)
|
||||
- `_generateNextTask()`: 200 LOC → 35 LOC (6개 헬퍼 메서드)
|
||||
|
||||
#### GamePlayScreen 메서드 분할
|
||||
- `build()`: 300 LOC → 15 LOC (5개 헬퍼 메서드)
|
||||
|
||||
#### Clean Architecture 개선
|
||||
- `MonsterGrade.displayColor` (Color) → `displayColorCode` (int)
|
||||
- Domain 레이어에서 Flutter 의존성 제거
|
||||
|
||||
### Fixed (버그 수정)
|
||||
|
||||
#### Analyzer 경고 정리
|
||||
- 미사용 import 제거 (`panel_header.dart`)
|
||||
- 미사용 필드 제거 (`new_character_screen.dart`)
|
||||
- JsonKey 경고 억제 (`equipment_item.dart`, `monetization_state.dart`)
|
||||
### Added
|
||||
- AdMob 미디에이션 지원 준비 (AppLovin MAX)
|
||||
|
||||
---
|
||||
|
||||
## 버전 표기 규칙
|
||||
## [1.1.0] - 2026-03-30
|
||||
|
||||
- `Added`: 새로운 기능 추가
|
||||
- `Changed`: 기존 기능 변경
|
||||
- `Deprecated`: 곧 제거될 기능
|
||||
- `Removed`: 제거된 기능
|
||||
- `Fixed`: 버그 수정
|
||||
- `Security`: 보안 관련 수정
|
||||
- `Refactored`: 코드 구조 개선 (기능 변화 없음)
|
||||
### Security
|
||||
- IAP 로컬 영수증 RSA 서명 검증 (Google Play pointycastle)
|
||||
- 구매 상태 SharedPreferences → flutter_secure_storage 전환
|
||||
- 세이브 파일 HMAC-SHA256 무결성 체크섬 추가
|
||||
- 릴리즈 빌드 치트 메뉴 완전 차단 (kDebugMode 가드)
|
||||
|
||||
### Added
|
||||
- CI 파이프라인 (.github/workflows/ci.yml: format+analyze+test)
|
||||
- ATT 추적 동의 문구 다국어화 (한/영/일)
|
||||
- iOS Podfile 최소 버전 명시 (13.0)
|
||||
- 복귀 보상 유료 유저 오프라인 시간 2배 인정
|
||||
- IAP 앱 재설치 시 자동 구매 복원
|
||||
- 테스트 105개 추가 (death_handler, item_service, shop_service, arena_service, potion_service, monetization_state, return_rewards_service)
|
||||
|
||||
### Changed
|
||||
- google_mobile_ads 5.3 → 7.x 업그레이드 (iOS Privacy Manifest 대응)
|
||||
- flutter_lints 5 → 6 업그레이드
|
||||
- IAP 상품 ID: remove_ads → remove_ads_and
|
||||
|
||||
### Fixed
|
||||
- 인터스티셜 광고 실패 시 onComplete 콜백 미호출
|
||||
- 아레나 DOT 스킬 INT/WIS가 ATK/DEF로 잘못 계산되던 문제
|
||||
- ProgressState.copyWith(currentCombat: null) 초기화 안 되던 버그
|
||||
- save_data JSON 캐스팅 시 null 크래시 방지
|
||||
- settings_repository _prefs! 강제 언래핑 제거
|
||||
- MonetizationState IAP 구매 상태 동기화 지연
|
||||
- death_handler print() → debugPrint() 변경
|
||||
- SpeedBoostButton 기본 배율 10→5 수정
|
||||
- 복귀 보상 AdType 잘못된 타입 사용
|
||||
|
||||
### Refactored
|
||||
- 데스크톱 레이아웃 → DesktopGameLayout 위젯 분리
|
||||
- VictoryOverlay 734줄 → 265줄 (크레딧 콘텐츠 분리)
|
||||
- HelpDialog 496줄 → 106줄 (4개 탭 뷰 분리)
|
||||
- 미사용 StoryService 인스턴스 제거
|
||||
- 중복 파일 제거 (arena/ascii_disintegrate_widget.dart)
|
||||
- cupertino_icons 미사용 패키지 제거
|
||||
|
||||
### Docs
|
||||
- CLAUDE.md Claude-Gemini 교차 토론 프로토콜 추가
|
||||
- CLAUDE.md 존재하지 않는 디렉토리 제거
|
||||
- 폰트 라이선스 파일 추가 (JetBrainsMono, PressStart2P)
|
||||
- 스킬 개수 문서 수정 (70→68)
|
||||
- 하드코딩 문자열 l10n 적용 (Undo/Rolls)
|
||||
|
||||
---
|
||||
|
||||
## [1.0.1] - 2026-03-19
|
||||
|
||||
### Added
|
||||
- 초기 릴리즈 (Google Play 내부 테스트)
|
||||
- 6개 화면 (프론트, 캐릭터 생성, 게임, 아레나, 명예의 전당, 설정)
|
||||
- 광고 수익화 (AdMob 리워드/인터스티셜)
|
||||
- IAP 광고 제거 + 프리미엄
|
||||
- 한/영/일 3개 언어 지원
|
||||
- 오프라인 완전 동작
|
||||
|
||||
14
pubspec.lock
14
pubspec.lock
@@ -242,10 +242,10 @@ packages:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: flutter_lints
|
||||
sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1"
|
||||
sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.0"
|
||||
version: "6.0.0"
|
||||
flutter_localizations:
|
||||
dependency: "direct main"
|
||||
description: flutter
|
||||
@@ -345,10 +345,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: google_mobile_ads
|
||||
sha256: "0d4a3744b5e8ed1b8be6a1b452d309f811688855a497c6113fc4400f922db603"
|
||||
sha256: f35e040875bb54e8a3455bcffed3b4ac9e9263fbf7751b9fd1ae7f30793faee8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.3.1"
|
||||
version: "7.0.0"
|
||||
graphs:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -513,10 +513,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: lints
|
||||
sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7
|
||||
sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.1.1"
|
||||
version: "6.1.0"
|
||||
logging:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1004,4 +1004,4 @@ packages:
|
||||
version: "3.1.3"
|
||||
sdks:
|
||||
dart: ">=3.9.2 <4.0.0"
|
||||
flutter: ">=3.35.0"
|
||||
flutter: ">=3.35.1"
|
||||
|
||||
@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||
# In Windows, build-name is used as the major, minor, and patch parts
|
||||
# of the product and file versions while build-number is used as the build suffix.
|
||||
version: 1.0.1+2
|
||||
version: 1.1.0+3
|
||||
|
||||
environment:
|
||||
sdk: ^3.9.2
|
||||
@@ -41,7 +41,7 @@ dependencies:
|
||||
freezed_annotation: ^2.4.1
|
||||
json_annotation: ^4.9.0
|
||||
# AdMob 광고
|
||||
google_mobile_ads: ^5.3.0
|
||||
google_mobile_ads: ^7.0.0
|
||||
# IAP (인앱 결제)
|
||||
in_app_purchase: ^3.2.0
|
||||
# IAP 구매 상태 보안 저장 (secure storage)
|
||||
@@ -67,7 +67,7 @@ dev_dependencies:
|
||||
# activated in the `analysis_options.yaml` file located at the root of your
|
||||
# package. See that file for information about deactivating specific lint
|
||||
# rules and activating additional ones.
|
||||
flutter_lints: ^5.0.0
|
||||
flutter_lints: ^6.0.0
|
||||
flutter_launcher_icons: ^0.14.3
|
||||
|
||||
# 앱 아이콘 설정 (flutter_launcher_icons)
|
||||
|
||||
Reference in New Issue
Block a user