From 6cb2dde0891f1ee9ac3a7bc057d82ca579d30480 Mon Sep 17 00:00:00 2001 From: RyuJongJin <266630912+RyuJongJin@users.noreply.github.com> Date: Mon, 12 Oct 2026 02:10:19 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B7=B8=20=EC=84=A4=EC=A0=95=EC=9D=B4=20?= =?UTF-8?q?=EC=97=86=EB=8D=98=20=EC=98=88=EC=A0=84=20=ED=8C=90=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=98=AC=EB=9D=BC=EC=98=A4=EB=A9=B4=20=ED=83=90?= =?UTF-8?q?=EC=83=89=EA=B8=B0=20=ED=95=9C=20=EB=B2=88=20=EB=88=84=EB=A5=B4?= =?UTF-8?q?=EA=B8=B0=20=C2=B7=20=ED=99=94=EB=A9=B4=20=EB=B0=A9=ED=96=A5=20?= =?UTF-8?q?=C2=B7=20=EC=A2=8C=EC=9A=B0=20=EB=B0=80=EA=B8=B0=20=C2=B7=20?= =?UTF-8?q?=EB=B0=B1=EA=B7=B8=EB=9D=BC=EC=9A=B4=EB=93=9C=EB=A5=BC=20?= =?UTF-8?q?=ED=95=9C=20=EB=B2=88=20=EC=95=8C=EB=A6=BC=20(193)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 사용자 편의 (기기 확인, P11 10.03 → 10.10): 한 번 눌렀는데 바로 열려 놀람 - 예전 판에는 키가 없어 알림 조건에 걸리지 않았다. 처음 설치는 알리지 않음 Co-Authored-By: Claude Opus 5.5 --- assets/l10n/en.json | 2 ++ assets/l10n/ja.json | 2 ++ assets/l10n/zh-Hans.json | 2 ++ lib/app/settings.dart | 6 ++++++ lib/ui/migration_notice.dart | 4 ++++ test/settings_store_test.dart | 15 +++++++++++++++ 6 files changed, 31 insertions(+) diff --git a/assets/l10n/en.json b/assets/l10n/en.json index bc34fb3..5827bf9 100644 --- a/assets/l10n/en.json +++ b/assets/l10n/en.json @@ -1937,6 +1937,7 @@ "파일 탐색기 두 창 배치: 화면 모양 따라 → 좌우. 되돌리기: 파일 탐색기의 [좌우 ⇆ / 위아래 ⇅] 버튼 또는 창 배치": "File explorer two-pane layout: follow screen shape → side by side. To revert: the [Side by side ⇆ / Top and bottom ⇅] button in the file explorer, or Pane layout", "파일 탐색기 위쪽 ⋮ 메뉴에서도 바꿀 수 있습니다 (좌우 · 위아래 · 버튼 줄 위치 · 버튼 구성)": "You can also change it from the ⋮ menu at the top of the file explorer (side by side · top and bottom · button bar position · buttons)", "파일 탐색기 창: 두 창 → 화면 크기 따라 (폰 세로는 한 창). 되돌리기: 환경 설정 > 파일 탐색기 > 창 배치": "File explorer panes: two panes → by screen size (one pane on a portrait phone). To revert: Settings > File explorer > Pane layout", + "파일 탐색기: 파일을 한 번 누르면 바로 엽니다 (고르기 · 메뉴는 길게 누르기). 바꾸기: 환경 설정 > 파일 탐색기 > 누르기": "File explorer: a single tap now opens a file right away (long-press to select or for the menu). To change: Settings > File explorer > Tap", "파일 폴더": "File folder", "파일 확인 중…": "Checking files…", "파일만 골랐을 때": "When only files are selected", @@ -2066,6 +2067,7 @@ "화면 · 색 보정": "Frame · color", "화면 가득 (시스템 막대 숨기기)": "Full screen (hide system bars)", "화면 가운데를 왼쪽으로 밀면 다음 화면, 오른쪽으로 밀면 이전 화면 (마지막 다음은 처음으로).": "Swipe left in the middle of the screen for the next screen, right for the previous one (after the last comes the first).", + "화면 가운데를 좌우로 밀면 다른 화면 (파일 탐색기 · 다운로드 등) 으로 넘어갑니다. 끄기: 환경 설정 > 컴포넌트 > 좌우로 밀어 화면 이동": "Swiping left or right in the middle of the screen now switches to other screens (file explorer, downloads, etc.). To turn off: Settings > Components > Swipe left/right to switch screens", "화면 글자 전체를 이 기기에서 번역합니다. 몇 분 걸릴 수 있습니다.": "Translates all of the program's text on this device. It may take a few minutes.", "화면 모양 따라": "Follow screen shape", "화면 방향": "Screen orientation", diff --git a/assets/l10n/ja.json b/assets/l10n/ja.json index 51465bf..92e2e67 100644 --- a/assets/l10n/ja.json +++ b/assets/l10n/ja.json @@ -1937,6 +1937,7 @@ "파일 탐색기 두 창 배치: 화면 모양 따라 → 좌우. 되돌리기: 파일 탐색기의 [좌우 ⇆ / 위아래 ⇅] 버튼 또는 창 배치": "ファイルエクスプローラーの 2 画面配置: 画面の形に合わせる → 左右。元に戻す: ファイルエクスプローラーの [左右 ⇆ / 上下 ⇅] ボタンまたは画面配置", "파일 탐색기 위쪽 ⋮ 메뉴에서도 바꿀 수 있습니다 (좌우 · 위아래 · 버튼 줄 위치 · 버튼 구성)": "ファイルエクスプローラー上部の ⋮ メニューからも変えられます (左右 · 上下 · ボタン列の位置 · ボタン構成)", "파일 탐색기 창: 두 창 → 화면 크기 따라 (폰 세로는 한 창). 되돌리기: 환경 설정 > 파일 탐색기 > 창 배치": "ファイルエクスプローラーの画面: 2 画面 → 画面サイズに合わせる (縦向きのスマホは 1 画面)。元に戻す: 環境設定 > ファイルエクスプローラー > 画面配置", + "파일 탐색기: 파일을 한 번 누르면 바로 엽니다 (고르기 · 메뉴는 길게 누르기). 바꾸기: 환경 설정 > 파일 탐색기 > 누르기": "ファイルエクスプローラー: ファイルを 1 回タップするとすぐ開きます (選択 · メニューは長押し)。変更: 環境設定 > ファイルエクスプローラー > タップ", "파일 폴더": "ファイル フォルダー", "파일 확인 중…": "ファイルを確認中…", "파일만 골랐을 때": "ファイルだけを選んだとき", @@ -2066,6 +2067,7 @@ "화면 · 색 보정": "画面・カラー補正", "화면 가득 (시스템 막대 숨기기)": "全画面 (システムバーを隠す)", "화면 가운데를 왼쪽으로 밀면 다음 화면, 오른쪽으로 밀면 이전 화면 (마지막 다음은 처음으로).": "画面中央を左へスワイプで次の画面、右へで前の画面 (最後の次は最初へ)。", + "화면 가운데를 좌우로 밀면 다른 화면 (파일 탐색기 · 다운로드 등) 으로 넘어갑니다. 끄기: 환경 설정 > 컴포넌트 > 좌우로 밀어 화면 이동": "画面の中央を左右にスワイプすると別の画面 (ファイルエクスプローラー · ダウンロードなど) に切り替わります。オフにする: 環境設定 > コンポーネント > 左右スワイプで画面を移動", "화면 글자 전체를 이 기기에서 번역합니다. 몇 분 걸릴 수 있습니다.": "画面の文字をすべてこの端末で翻訳します。数分かかることがあります。", "화면 모양 따라": "画面の形に合わせる", "화면 방향": "画面の向き", diff --git a/assets/l10n/zh-Hans.json b/assets/l10n/zh-Hans.json index 452b72b..6c7cac3 100644 --- a/assets/l10n/zh-Hans.json +++ b/assets/l10n/zh-Hans.json @@ -1937,6 +1937,7 @@ "파일 탐색기 두 창 배치: 화면 모양 따라 → 좌우. 되돌리기: 파일 탐색기의 [좌우 ⇆ / 위아래 ⇅] 버튼 또는 창 배치": "文件浏览器双窗格布局: 跟随屏幕形状 → 左右。恢复: 文件浏览器中的 [左右 ⇆ / 上下 ⇅] 按钮或窗格布局", "파일 탐색기 위쪽 ⋮ 메뉴에서도 바꿀 수 있습니다 (좌우 · 위아래 · 버튼 줄 위치 · 버튼 구성)": "也可以在文件浏览器顶部的 ⋮ 菜单中更改 (左右 · 上下 · 按钮栏位置 · 按钮配置)", "파일 탐색기 창: 두 창 → 화면 크기 따라 (폰 세로는 한 창). 되돌리기: 환경 설정 > 파일 탐색기 > 창 배치": "文件浏览器窗格: 双窗格 → 按屏幕大小 (竖屏手机为单窗格)。恢复: 设置 > 文件浏览器 > 窗格布局", + "파일 탐색기: 파일을 한 번 누르면 바로 엽니다 (고르기 · 메뉴는 길게 누르기). 바꾸기: 환경 설정 > 파일 탐색기 > 누르기": "文件浏览器:单击文件会立即打开(选择 · 菜单请长按)。更改:设置 > 文件浏览器 > 点按", "파일 폴더": "文件夹", "파일 확인 중…": "正在检查文件…", "파일만 골랐을 때": "只选择文件时", @@ -2066,6 +2067,7 @@ "화면 · 색 보정": "画面 · 色彩", "화면 가득 (시스템 막대 숨기기)": "全屏 (隐藏系统栏)", "화면 가운데를 왼쪽으로 밀면 다음 화면, 오른쪽으로 밀면 이전 화면 (마지막 다음은 처음으로).": "在屏幕中间向左滑动进入下一个界面,向右滑动返回上一个界面 (最后一个之后回到第一个)。", + "화면 가운데를 좌우로 밀면 다른 화면 (파일 탐색기 · 다운로드 등) 으로 넘어갑니다. 끄기: 환경 설정 > 컴포넌트 > 좌우로 밀어 화면 이동": "在屏幕中间左右滑动会切换到其他屏幕(文件浏览器 · 下载等)。关闭:设置 > 组件 > 左右滑动切换界面", "화면 글자 전체를 이 기기에서 번역합니다. 몇 분 걸릴 수 있습니다.": "将在此设备上翻译所有界面文字。可能需要几分钟。", "화면 모양 따라": "跟随屏幕形状", "화면 방향": "屏幕方向", diff --git a/lib/app/settings.dart b/lib/app/settings.dart index f6c48a3..ad875a8 100644 --- a/lib/app/settings.dart +++ b/lib/app/settings.dart @@ -1044,6 +1044,12 @@ class AppSettings { if (j['zipComicV2'] != true && j['zipComic'] != false && j.containsKey('imageExts') && !s.zipComic) 'zipComic', if (j['backgroundV2'] != true && j['runInBackground'] == false && s.runInBackground && Platform.isAndroid) 'background', + // 193: 그 설정이 생기기 전 판 (설정 파일은 있는데 그 항목이 없음 - 예: 10.03) 에서 올라온 사람이 바로 겪는 동작 변화. + // 예전 판에는 키가 없어 위의 "예전 값 → 새 값" 조건에 걸리지 않았다 (P11: 탐색기에서 한 번 눌렀는데 바로 열려 놀람) + if (j.isNotEmpty && !j.containsKey('explorerClick') && s.explorerClick == 'open') 'explorerClickNew', + if (j.isNotEmpty && !j.containsKey('screenOrientation') && s.screenOrientation == 'auto' && Platform.isAndroid) 'orientation', + if (j.isNotEmpty && !j.containsKey('swipeNav') && s.swipeNav) 'swipeNav', + if (j.isNotEmpty && !j.containsKey('runInBackground') && s.runInBackground && Platform.isAndroid) 'background', // 193 · 229: 예전 판을 쓰던 사람 (설정 파일이 있는데 이 항목이 없음) 에게 복사 · 이동이 받는 쪽의 더 새 파일을 건너뛰게 바뀐 것을 한 번 if (j.isNotEmpty && !j.containsKey('copySkipNewer')) 'copySkipNewer', // 193: robocopy 를 쓰던 사람 (Windows) 에게 링크 · junction 을 따라가지 않게 (/XJ) 바뀐 것을 한 번 diff --git a/lib/ui/migration_notice.dart b/lib/ui/migration_notice.dart index a5d950f..4e9352e 100644 --- a/lib/ui/migration_notice.dart +++ b/lib/ui/migration_notice.dart @@ -24,6 +24,10 @@ Future showMigrationNotice(BuildContext context, AppController c) async { 'zipComic' => tr('ZIP · CBZ 두 번 누르기: 만화 보기 → 목록. 되돌리기: 환경 설정 > 파일 탐색기 > ZIP · CBZ 를 만화로 보기'), 'background' => tr('백그라운드로 실행: 꺼짐 → 켜짐 (← 나 최근 앱에서 밀어도 작업이 계속됨). 되돌리기: 환경 설정 > Rsync > 백그라운드로 실행'), + 'explorerClickNew' => tr('파일 탐색기: 파일을 한 번 누르면 바로 엽니다 (고르기 · 메뉴는 길게 누르기). ' + '바꾸기: 환경 설정 > 파일 탐색기 > 누르기'), + 'swipeNav' => tr('화면 가운데를 좌우로 밀면 다른 화면 (파일 탐색기 · 다운로드 등) 으로 넘어갑니다. ' + '끄기: 환경 설정 > 컴포넌트 > 좌우로 밀어 화면 이동'), 'copySkipNewer' => tr('복사 · 이동: 받는 쪽 파일이 더 새것이면 건너뜁니다 (예전에는 예전 원본으로 덮어쓰고, 이동이면 원본도 지웠습니다). ' '건너뛴 파일은 원본에 남고 끝 알림에 그 수가 나옵니다. 되돌리기: 환경 설정 > 파일 탐색기 (또는 Rsync) > 받는 쪽이 더 새것이면 건너뛰기'), 'robocopyLinks' => tr('robocopy 복사 · 이동: 원본 안의 링크 · junction 은 따라가지 않고 건너뜁니다 (/XJ - 예전에는 링크가 가리키는 바깥 폴더의 파일까지 ' diff --git a/test/settings_store_test.dart b/test/settings_store_test.dart index 9e95a75..5b57b8b 100644 --- a/test/settings_store_test.dart +++ b/test/settings_store_test.dart @@ -96,4 +96,19 @@ void main() { // robocopy 를 쓰지 않던 사람에게는 링크 알림 없음 expect(AppSettings.fromJson({'explorerV2': true}).migrated, isNot(contains('robocopyLinks'))); }); + + test('193: 그 설정이 없던 예전 판 (10.03 모양 - 키 없음) 에서 올라오면 바로 겪는 동작 변화를 알린다 · 처음 설치는 없음', () { + // 10.03 의 설정 파일: 탐색기 · 화면 이동 · 백그라운드 설정이 아직 없던 때 (있는 것은 그때의 항목들) + final old = AppSettings.fromJson({'theme': 'dark', 'outputFolderName': 'jj_mkv'}); + expect(old.migrated, contains('swipeNav')); + if (Platform.isAndroid) { + expect(old.migrated, containsAll(['explorerClickNew', 'orientation', 'background'])); + } else { + expect(old.migrated, isNot(contains('explorerClickNew')), reason: 'PC 는 처음 값이 한 번 누르면 고르기 (바뀐 것 없음)'); + } + // 저장 뒤 다시 읽으면 알리지 않음 + expect(AppSettings.fromJson(old.toJson()).migrated, isEmpty); + // 처음 설치 (설정 파일 없음) 는 알릴 것 없음 + expect(AppSettings.fromJson({}).migrated, isEmpty); + }); }