Releases: devcsb/3lines
Releases · devcsb/3lines
Release list
v1.2.3
What's Changed
Full Changelog: v1.2.2...v1.2.3
v1.2.2
콜드스타트 라우팅 개선 패치.
개선
- 앱을 켤 때 복귀 사용자에게 온보딩 화면이, 잠금 미사용자에게 잠금/생체인증 화면이 순간 스쳐 지나가던 flash 를 제거했습니다. 시작 시점에 온보딩·잠금 여부를 미리 읽어 첫 프레임부터 올바른 화면으로 라우팅합니다.
- 부수적으로, 설정에서 앱 잠금을 끌 때 잠깐 잠금 화면으로 튕기던 현상도 해소했습니다.
잠금 게이팅·온보딩 게이팅은 독립 보안 리뷰로 회귀 없음을 확인했고, 콜드스타트 두 시나리오에 결정론적 회귀 테스트를 추가했습니다(총 324개 테스트 통과, 정적 분석 0 이슈, iOS 시뮬레이터 e2e 검증).
v1.2.1
성능·접근성·안정성 패치 릴리즈.
성능
- 홈 화면 무한 글로우를 RepaintBoundary로 격리하고, 감정 추이 차트를 FadeTransition으로 전환, 히트맵 셀 그리드를 애니메이션 프레임 재구성에서 제외해 렌더링 비용 절감
- notification 초기화를 첫 프레임 이후로 미뤄 콜드 스타트 개선(iOS 첫 실행 시 즉시 뜨던 권한 팝업도 해소)
- 스트릭·히트맵 DB 쿼리를 필요한 컬럼만 읽도록 축소, 인사이트 차트 재구성 낭비 제거
번들
- UI 폰트를 번들 Noto Sans로 전환해 런타임 폰트 다운로드 의존과 첫 실행 깜빡임 제거(오프라인 안정)
- printing 패키지 제거(share_plus로 PDF 공유 대체), PDF 전용 폰트 용량 절감
접근성
- 동작 줄이기(reduce-motion) 전역 대응
- 주요 탭 컨트롤·스파크라인·온보딩 버튼 스크린리더 semantics 보강
버그 수정
- 타임라인 상세시트에서 스와이프로 다른 날로 이동한 뒤 삭제하면 엉뚱한 기록이 삭제되던 문제
- 탭 전환마다 발생하던 Duplicate GlobalKey 예외
- iOS 시뮬레이터 빌드·설치가 막혀 있던 위젯 확장 빌드 순환 및 버전 설정 문제
- 리마인더 시간 재예약 실패 시 저장값·화면·알림 불일치, 감정 선택 애니메이션 조기 종료, 빈 질문 저장, 검색 결과 무제한 로드 등
전체 변경: 322개 테스트 통과, 정적 분석 0 이슈, iOS 시뮬레이터 e2e 검증 완료.
v1.2.0 - 라이브러리 메이저 업그레이드 및 아키텍처 핵심 약점 보강
요약
2026-05 시점에서 의존성 최신성과 아키텍처 견고성을 점검하고, 보수적 메이저 업그레이드와 핵심 약점 보강을 함께 진행했어요. 동작 변화는 없고, 내부 정합성과 유지보수성이 좋아졌습니다.
라이브러리 업그레이드
보수적 메이저 (Kotlin/AGP/Gradle 환경 호환 가능한 최고 버전 기준)
share_plus9 → 11 (SharePlus.instance.share(ShareParams)새 API)package_info_plus8 → 9local_auth2 → 3 (AuthenticationOptions→persistAcrossBackgrounding새 API)intl0.19 → 0.20file_picker8 → 9
Minor / Patch
flutter_riverpod2.5.1 → 2.6.1go_router14.2.0 → 14.8.1drift/drift_dev2.18 → 2.19google_fonts8.0 → 8.1,image_picker1.1.2 → 1.2.2,printing5.13 → 5.14path_provider2.1.3 → 2.1.5,flutter_local_notifications17.2.1 → 17.2.4build_runner2.4.9 → 2.4.13,sqlite3_flutter_libs0.5.0 → 0.5.42
의존성 정리
riverpod_annotation,riverpod_generator제거 (사용처 0인 dead dependency)
아키텍처 보강
- 라우팅:
app.dart의 3개ref.listen체인을 단일 derived_routerStateProvider로 통합. 라우터 상태 흐름이 일직선화됨 - TodayScreen lifecycle 분리: 자정 갱신 timer 와 앱 재개 갱신 로직을 view 에서 controller (
onAppResumed) 로 이동. widget 은 단순 위임만 담당 - 사진 lifecycle:
PhotoService.cleanupOrphanedPhotos신설. 앱 시작 시 백그라운드로 DB 의 photoPath 와 디스크 photos/ 폴더를 비교해 orphan 파일을 회수 (이전 실행에서 프로세스가 강제 종료되어 파일/DB 가 어긋난 경우 자동 복구) - biometric / share API 마이그레이션: 새 라이브러리 API 에 맞춰 코드 정리
품질
analysis_options.yaml에 보수적 lint 9개 (always_declare_return_types, avoid_dynamic_calls, prefer_final_locals, prefer_const_constructors, unawaited_futures, use_super_parameters 등) enabledart fix --apply로 4개 파일 22건 자동 수정flutter analyze: error 0flutter test: 259/259 통과flutter build apk --debug: 성공
Follow-up (별도 PR 권장)
trade-off 가 큰 항목은 본 릴리즈에서 제외했어요.
flutter_riverpod3.x (사용처 25개, 큰 마이그레이션)go_router17.x (typed routes 도입)flutter_local_notifications21.x (Android 13/14 권한 모델)fl_chart1.x (UI 회귀 검증 필요)share_plus13.x (Kotlin 2.2 + AGP 8.12.1 + Gradle 8.13 동반 필요)sqlite3_flutter_libs0.6+eol (deprecated 임박)drift2.33 (sqlite3 3.x dev dependency 동반 필요)- iOS 빌드 환경 구성 (Podfile 미생성 상태)
v1.1.0 - 버그 수정
버그 수정
생체인증 잠금
- 홈 화면 순간 노출(flash) 방지: 앱 시작 시
biometricLockEnabledProvider로딩 완료 전에 홈 화면이 잠깐 보이던 문제 수정 (#1, #4) - 인증 취소 후 자동 재시도 방지: 생체인증 취소 시 앱 복귀 이벤트로 인증 다이얼로그가 중복 표시되던 문제 수정
- 설정 변경 즉시 반영: 설정에서 생체인증 잠금 켜기/끄기 시 앱 재시작 없이 즉시 라우터에 반영
사진 파일 저장소 누수
- 기록 삭제 시 사진 파일도 삭제: 타임라인에서 기록 삭제 또는 전체 데이터 삭제 시 첨부 사진 파일이 디스크에 남던 문제 수정 (#3)
- 사진 교체 시 이전 파일 삭제: 사진을 교체하고 저장하면 이전 사진 파일이 디스크에 쌓이던 저장소 누수 수정 (#9)
- 미저장 상태에서 사진 제거 시 안전 처리: 저장하지 않고 화면을 벗어났을 때 DB에 남아있는 사진이 삭제되어 참조가 깨지던 문제 수정 (#13)
데이터 가져오기/내보내기
- 타임라인 삭제 후 화면 미갱신 수정: 타임라인에서 기록 삭제 시 오늘/인사이트 화면이 즉시 업데이트되지 않던 문제 수정 (#5)
- 잘못된 항목으로 인한 전체 가져오기 실패 방지: 손상된 항목이 포함된 파일 가져오기 시 유효한 항목은 정상 처리하고 잘못된 항목만 건너뜀 (#10)
- updated_at 타임스탬프 보존: 내보내기/가져오기 라운드트립 시 기록의 수정 시각이 유실되던 문제 수정 (#14)
해결된 이슈
v1.0.0 — 첫 번째 릴리즈
3Lines v1.0.0
하루 3줄로 마음의 회복탄력성을 키우는 마이크로 저널 앱 첫 릴리즈입니다.
설치 방법
- 아래 Assets에서 APK 다운로드
app-arm64-v8a-release.apk— 최신 Android 폰 (2015년 이후 대부분) ✅ 추천app-armeabi-v7a-release.apk— 구형 32비트 폰
- 폰에서 설정 → 보안 → 알 수 없는 소스 허용
- APK 탭하여 설치
주요 기능
- 📝 감사 · 수용 · 의도 3줄 기록 (30초 완료)
- 🌿 GitHub 잔디 스타일 히트맵
- 💡 감정 추이 차트 + 키워드 분석
- 🔒 완전 오프라인 · 서버 없음 · 생체인증 잠금
- 📸 사진 첨부 · PDF 리포트 · 주간 회고
- 🎨 라이트 / 다크 모드
최소 요구 사항
- Android 8.0 (API 26) 이상