From f0fad6c0e49c4ec221195c302727ce3dd992e3db Mon Sep 17 00:00:00 2001 From: RyuJongJin <266630912+RyuJongJin@users.noreply.github.com> Date: Mon, 12 Oct 2026 05:49:18 +0900 Subject: [PATCH] =?UTF-8?q?249=20=EB=B3=B4=EC=B6=A9:=20MKV=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EC=9E=91=EC=97=85=20=EA=B8=B0=EB=A1=9D=20=EC=9C=84?= =?UTF-8?q?=EC=97=90=EB=8F=84=20"DNS=20=EC=84=9C=EB=B2=84=20(=E2=80=A6)=20?= =?UTF-8?q?=EC=97=90=20=EB=8B=BF=EC=A7=80=20=EC=95=8A=EC=9D=8C=20=C2=B7=20?= =?UTF-8?q?[=EC=8B=9C=EC=8A=A4=ED=85=9C=20DNS=20=EB=A1=9C=20=EB=B0=94?= =?UTF-8?q?=EA=BE=B8=EA=B8=B0]"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit a4 의 918 기기 확인 (노트 10+): 작업 현황 (MKV 화면 아래 작업 기록) 에는 줄이 없었다 - WorkPanel 은 브라우저의 오른쪽 작업 현황이고, MKV 화면 아래는 작업 기록 (_LogPanel) 이었다. 작업 기록을 열거나 숨겨도 그 위에 보인다. Co-Authored-By: Claude Opus 5.5 --- lib/ui/home_page.dart | 3 +++ test/components_test.dart | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/lib/ui/home_page.dart b/lib/ui/home_page.dart index 538ffd1..6d29c7a 100644 --- a/lib/ui/home_page.dart +++ b/lib/ui/home_page.dart @@ -21,6 +21,7 @@ import 'package:path/path.dart' as p; import '../app/settings.dart' show MoveTarget; import 'folder_picker.dart'; +import 'network_settings.dart' show DnsFailureLine; import 'player_page.dart'; import 'subtitle_editor_page.dart'; import 'subtitle_search_dialog.dart'; @@ -100,6 +101,8 @@ class HomePage extends StatelessWidget { ), ), const Divider(height: 1), + // 249: DNS 서버에 닿지 않는 동안 작업 기록 위에 (아래 안내를 놓쳐도 MKV 화면에서 보고 바꿀 수 있게) + Padding(padding: const EdgeInsets.symmetric(horizontal: 12), child: DnsFailureLine(c: c)), if (c.settings.showLog) SizedBox( // 화면이 낮은 기기 (휴대폰 가로) 에서 목록 · 자세히 보기를 가리지 않도록 화면 높이에 맞춘다 diff --git a/test/components_test.dart b/test/components_test.dart index bb633a2..473be69 100644 --- a/test/components_test.dart +++ b/test/components_test.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:jj_mkvmaker/app/app_controller.dart'; import 'package:jj_mkvmaker/app/components.dart'; +import 'package:jj_mkvmaker/app/net_guard.dart'; import 'package:jj_mkvmaker/app/settings.dart'; import 'package:jj_mkvmaker/platform/windows/desktop_storage_service.dart'; import 'package:jj_mkvmaker/platform/windows/process_media_tool.dart'; @@ -51,6 +52,29 @@ void main() { expect(AppComponent.reorder(['future_screen', 'mkv'], ['mkv', 'explorer']), ['future_screen', 'mkv', 'explorer']); }); + testWidgets('249: DNS 서버에 닿지 않는 동안 MKV 화면의 작업 기록 위에 상태 줄 (기록을 숨겨도)', (tester) async { + tester.view.physicalSize = const Size(1500, 900); + tester.view.devicePixelRatio = 1; + addTearDown(tester.view.reset); + final g = NetGuard.instance; + addTearDown(() => g.failure.value = null); + final c = _plain(); + await tester.pumpWidget(MaterialApp( + builder: (context, child) => AppScope(controller: c, child: child!), + home: HomePage(c: c), + )); + expect(find.textContaining('에 닿지 않음'), findsNothing); + g.failure.value = DnsFailure('192.0.2.1', 'x', DateTime(2026, 10, 12, 1, 35)); + await tester.pump(); + expect(find.text('DNS 서버 (192.0.2.1) 에 닿지 않음 (01:35부터)'), findsOneWidget); + await c.updateSettings((s) => s.showLog = !s.showLog); + await tester.pump(); + expect(find.text('DNS 서버 (192.0.2.1) 에 닿지 않음 (01:35부터)'), findsOneWidget); + await tester.tap(find.text('시스템 DNS 로 바꾸기')); + await tester.pump(); + expect(c.settings.dnsMode, 'system'); + }); + testWidgets('위쪽 이동 버튼: 설치한 화면만 · 설정을 바꾸면 바로 · 하나뿐이면 그것만', (tester) async { tester.view.physicalSize = const Size(1500, 900); tester.view.devicePixelRatio = 1;