# Testovací scénáře a stav ## Verze 0.0.3 (build sm-mobile-20261016T185235Z-8e93ecc1b59a), 16. října 2026 Apple Silicon Mac, Flutter 3.47.7 / Dart 3.13.5. Stav: **Ověřeno** / **Neověřeno na zařízení**. | Kontrola | Výsledek | | --- | --- | | `flutter analyze` | Ověřeno, bez nálezů | | `flutter test` | 140 úspěšných, 15 přeskočených (síťové opt-in scénáře) | | `python3 tool/test_openssh.py` | 11 úspěšných: SSH/SFTP, bezpečné ukládání editoru (zachování práv, žádné dočasné soubory, konflikt při stejné velikosti i čase, složka jen pro čtení, chybějící oprávnění, symlinky), 1 KB–10 MB | | `SM_NET_TEST=1 flutter test test/net/icmp_test.dart` (macOS) | 17 úspěšných: ICMP ping a traceroute ICMP/UDP/TCP přes IPv4 i IPv6 na Internet | | Editor (widget testy) | 13 typů souborů otevřeno, upraveno a uloženo; kódování UTF-8/BOM/UTF-16/Windows-1250 zachováno; 1 KB–10 MB (10 MB: otevření 0,8 s, uložení 56 ms na Macu) | | Vault | 3 znaky odmítnuto, 4/12/64 přijato, 65 odmítnuto; změna hesla zachová data, staré heslo neodemkne, chybný zápis nic nepoškodí; migrace obálky v1 (PBKDF2) na Argon2id | | Fyzický iPad Air M3, iPadOS 27.0.1 (`integration_test/icmp_device_test.dart`) | Ověřeno: ICMP ping, UDP a TCP traceroute přes IPv4 i IPv6, TTL, DF, nepřetržitý ping | | `flutter build apk --release` / `flutter build ios --release` | Ověřeno; iOS build nainstalován na iPad a iPhone přes Wi-Fi | | Biometrie na zařízení, Soubory/Document Picker, Android SAF, Quick Look, PDF na Androidu | **Neověřeno na zařízení** (pokryto jen automatickými testy se simulovanou platformou) | | Android zařízení / emulátor | **Neověřeno** | ## Starší ověření (0.0.1) Ověřování probíhalo 14. října 2026 na Apple Silicon Macu, Flutter stable 3.47.7 / Dart 3.13.5, Xcode 27.0, Android SDK 36. Testy nepoužívají skutečné produkční servery ani uživatelovy SSH klíče. ## Automatické kontroly | Kontrola | Stav | | --- | --- | | `flutter pub get` | Prošlo | | `flutter analyze` | Prošlo, bez nálezů | | `flutter test` | 20 úspěšných unit/widget testů; 6 síťových testů se bez opt-in přeskočí | | `python3 tool/test_openssh.py` | 4 úspěšné reálné síťové scénáře | | `python3 tool/test_linux.py --context colima-sm-mobile-test` | 2 úspěšné scénáře proti skutečnému Linux OpenSSH: heslo, metriky a zrušení monitoru | | Nativní integrační test Android Emulator API 36 / ARM64 | Prošlo | | Nativní integrační test iOS 27 Simulator / iPhone 18 Pro | Prošlo | | `flutter build apk --debug` | Prošlo | | `flutter build appbundle --debug` | Prošlo | | `flutter build ios --simulator` | Prošlo | | `flutter build ios --release --no-codesign` | Prošlo, nepodepsaný device build | | Kontrola desktopových zdrojů před/po pomocí SHA-256 | 0 změněných souborů | Unit/widget testy pokrývají hostname a IPv6 identity, neplatné profily, verzi a limity JSON, nepřenášení tajemství, autentizované šifrování, nesprávné heslo a poškozený tag, neúspěšný zápis úložiště, zamčení a zrušení rozpracovaného odemykání, první/známý/změněný/odmítnutý host key, biometrický klíč přes testovací rozhraní, nebezpečné cesty, skutečný lokální DNS/TCP probe, licenční bránu a CS/DE/EN widgety včetně landscape se zvětšeným textem. OpenSSH test vytvoří dočasnou ed25519 identitu s passphrase a ověřuje skutečný PTY s ANSI výstupem, změnu rozměrů, SFTP upload/download a shodu bytů, odmítnutí přepisu, rename/remove/mkdir/rmdir, odmítnutí symlinku, zrušení uploadu/downloadu a cleanup, chybu vstupního streamu, reconnect bez opakovaného trust promptu, změnu host key, neúspěšnou autentizaci, skutečný handshake timeout a ztrátu živého TCP transportu. Na macOS kontroluje odmítnutí Linux monitoru; na Linuxu má scénář pro skutečné metriky. Nativní integrační test používá skutečný Keychain / Keystore v odděleném testovacím namespace. Prochází explicitní souhlas s licencí, vytvoření Vaultu, formulář profilu, připojení ke skutečnému OpenSSH s ověřením očekávaného fingerprintu, terminál, SFTP obrazovku, zamčení s odpojením a opětovné odemknutí hlavním heslem. Testovací klíče jsou jednorázové, pouze ve fixture, a nejsou součástí produkčního buildu. Linux fixture používá skutečný ARM64 Linux v oddělené Colima VM a OpenSSH kontejner připnutý OCI digestem. Ověřeno bylo úspěšné heslo, fingerprint ověřený uvnitř fixture, CPU/RAM/disk/uptime/load/OS/SSH RTT i ukončení rozpracovaného monitoru. Hodnoty nejsou simulované. ## Adaptivní rozložení (16. října 2026) Rozložení se řídí pouze dostupnou velikostí okna v logických pixelech (Compact < 600, Medium 600–839, Expanded 840–1199, Large 1200–1599, Extra Large ≥ 1600), nikoli modelem zařízení. Pod 240 × 320 dp aplikace drží tento minimální logický rozměr a posouvá se. | Kontrola | Stav | | --- | --- | | `flutter analyze` | Prošlo, bez nálezů | | `flutter test` | 38 úspěšných testů (20 původních + 18 adaptivních); 7 síťových bez opt-in přeskočeno | | `test/adaptive_layout_test.dart` | Generovaná matice 33 šířek (240–2560 dp, každý breakpoint −1/−0,5/0/+0,5/+1) × 12 výšek (320–3000 dp) = 396 tvarů na všech 6 obrazovkách, tj. 2 376 živých změn velikosti; DPR 1–3,5, text 1–2×, různé SafeArea. Dále klávesnice, text až 3×, okna pod minimem, iPad/Android split-screen, iPhone Duo (fyzická rozlišení při předpokládaném @2x i @3x), knižní a tabletop přehyb, závěs, plochý přehyb, zachování rozepsaných dat a Material/Apple guidelines dotykových cílů, popisků a kontrastu | | `test/network/adaptive_session_test.dart` (přes `tool/test_openssh.py`) | Prošlo: skutečné OpenSSH, 14 tvarů; stejný SSH klient, terminál a SFTP adresář, server po každé změně hlásí nový rozměr PTY (`stty size`) | | `python3 tool/test_openssh.py` | 5 úspěšných reálných síťových scénářů | | Nativní integrační test iOS 27 Simulator / iPad mini (A17 Pro) | Prošlo | | Nativní integrační test iOS 27 Simulator / iPad Pro 13" (M5) | Prošlo | | `integration_test/adaptive_device_test.dart`, Android Emulator API 36, profil Pixel 9 Pro Fold | Napůl složeno, plocho, rotace 90/180/270/360°, tabletop, `wm size 1200x1800` a `wm density 560`: 13 změn, stejná SSH relace a odpovídající PTY na serveru. Složení: emulátor vypne vnitřní displej beze změny velikosti okna, Android aplikaci pozastaví a SM Mobile se podle nastavení „zamknout při odchodu do pozadí“ zamkne a odpojí (záměrné bezpečnostní chování). Test proto jako celek neprošel | `adaptive_device_test.dart` lze spustit i na fyzickém zařízení (`tool/test_openssh.py --device <id> --integration integration_test/adaptive_device_test.dart`) a během sledovacího okna zařízení ručně otáčet, skládat nebo měnit velikost okna. Neověřeno: iPhone Duo (simulátor je až v Xcode 27.1, k dispozici je Xcode 27.0; Apple neuvádí měřítko displeje, logické rozměry v testech jsou odvozené z fyzických pixelů při předpokladu @2x/@3x), zda iOS 27.x předává „reserved region“ částečného složení Flutteru jako display feature, přesun běžící aplikace na vnější displej skládacích zařízení, Samsung Galaxy Fold/Flip, Android tablet ve skutečném multi-window, iPad Stage Manager / změna velikosti okna v simulátoru, fyzická zařízení. ## UI podle desktopu, terminál, monitoring a diagnostika (16. října 2026) | Kontrola | Stav | | --- | --- | | `flutter test` | 48 úspěšných testů; 7 síťových bez opt-in přeskočeno | | `test/monitor_diagnostics_test.dart` | Formátování metrik (uptime CS/DE/EN s množnými čísly, KiB/MiB/GiB, load bez procent), nerozpoznaný výstup zůstává nezměněn; diagnostika: výběr verze IP bez překryvné nabídky, zachování zadaných hodnot, výsledky DNS/TCP s cílem, verzí IP, dobou a chybou, reálný socket pro fázi TCP | | Přístupnost (dotykové cíle, popisky, kontrast WCAG AA) | Prošlo ve světlém i tmavém motivu | | `python3 tool/test_openssh.py` | 5/5, nově 3 000 řádků výstupu a UTF-8 (česká diakritika), ořez vykreslování terminálu | | `python3 tool/test_linux.py --context colima-sm-mobile-test` | 2/2, skutečné Linux metriky | | `flutter build ios --release` + instalace na fyzický iPhone (iOS 26.6.2) | Sestaveno, nainstalováno a spuštěno bez debuggeru; vzhled a ovládání na zařízení ověřuje vlastník | | `flutter build apk --release` | Sestaveno, podepsáno projektovým klíčem; na zařízení netestováno | ICMP echo a traceroute byly doplněny ve verzi 0.0.2; ověření je v následující sekci. ## Verze 0.0.2: ICMP ping a traceroute (16. října 2026) Ping a traceroute posílají skutečné ICMP / ICMPv6 Echo z mobilního zařízení přes neprivilegované datagramové ICMP sockety (`dart:ffi` ← POSIX). iOS používá Darwin socket API, Android linuxové „ping sockety“; ICMP chyby (Time Exceeded, Unreachable) Darwin doručuje jako zprávy, Linux přes error queue (`IP_RECVERR`). Bez rootu, bez serveru a bez cloudu. | Kontrola | Prostředí | Výsledek | | --- | --- | --- | | `flutter test` | macOS | 63 úspěšných testů; 9 síťových bez opt-in přeskočeno | | Parsování ICMP/ICMPv6, kontrolní součet, přiřazení odpovědí podle id/seq, chybné a cizí pakety, statistiky | unit testy | Prošlo | | Ping 127.0.0.1 a ::1, data 0–1400 B, traceroute, zrušení do 1 s, timeout nedostupného cíle | macOS (Darwin, stejné API jako iOS), skutečné sockety | Prošlo | | Ping a traceroute 1.1.1.1 a 2606:4700:4700::1111 přes internet (`SM_NET_TEST=1`) | macOS, skutečná síť | Prošlo: Time Exceeded od routerů, odpověď cíle, `*` u neodpovídajících uzlů, IPv4 i IPv6 | | `integration_test/icmp_device_test.dart` | iOS 27 Simulator, iPhone 18 Pro | Prošlo včetně skutečného pingu a traceroute přes internet (IPv4, IPv6) | | `integration_test/icmp_device_test.dart` | Android Emulator API 36 | Prošlo na loopbacku (IPv4, IPv6, traceroute, zrušení); ICMP socket je aplikaci povolen. Síť emulátoru ICMP do internetu nepředává (odpovídá sama, TTL 255), proto zde nelze ověřit routery | | Linux error queue přes skutečné routery | Linux 6.8 (VM), síť z namespaces se dvěma routery | Prošlo: Time Exceeded IPv4/IPv6, Unreachable, dosažení cíle; jádro omezuje četnost ICMP chyb | | UI ping/traceroute (zobrazení, statistiky, zastavení, DNS chyba, neplatné nastavení, nepovolený socket) | widget testy se simulovanými událostmi | Prošlo | | SSH/SFTP regrese (`tool/test_openssh.py`) | macOS, skutečné OpenSSH | 5/5 | | Linux monitoring (`tool/test_linux.py`) | Colima VM | 2/2 | | Aktualizace Android 0.0.1 ← 0.0.2 přes `adb install -r` | Android Emulator API 36 | Prošlo, stejný podpisový certifikát, data zachována (firstInstallTime beze změny) | Neověřeno: traceroute přes skutečné routery na fyzickém Android zařízení a ICMP na fyzickém iPhonu (iOS sandbox na zařízení). Link-local IPv6 cíle (`fe80::/10`) nejsou podporované, protože vyžadují zónu rozhraní. ## Implementováno, ale dosud bez ověření na fyzickém zařízení - Face ID / Touch ID / Android biometry a OS device-credential fallback, včetně OS ochrany dešifrovacího klíče. Zdrojová konfigurace je ověřena; test s falešným SecureStore není důkaz fungování hardwarové biometrie. - Výběr souboru, sdílení do Files / Documents providerů, reálné velké přenosy a případné ztráty sítě při přepínání Wi-Fi/VPN. - IPv6 připojení na skutečné mobilní síti, iPad, velmi velké fonty ve všech obrazovkách a kompletní screen-reader audit. - Podpisy pro distribuci a ověření App Store / Play Store. Vývojový APK/AAB a nepodepsaný iOS build nejsou publikovaná vydání. Záznamy finálních běhů, hashe APK/AAB a kontrola nepřítomnosti testovacího vstupního bodu jsou v `docs/verification/`. ## Ruční ověření před vydáním 1. Android 11+ a iPhone/iPad iOS 15+: nový Vault, restart, špatné i správné heslo, neaktivita a odchod do pozadí; ověřte uzavření SSH a absenci snapshotu citlivé obrazovky. 2. Zapněte biometrii; zamkněte; odemkněte biometrikou i kódem zařízení; odmítněte dialog; změňte biometrické nastavení; ověřte fallback hlavním heslem bez nezabezpečeného náhradního klíče. 3. Izolovaný Linux OpenSSH: heslo, nešifrovaný i šifrovaný klíč, špatná passphrase, první fingerprint ověřený mimo aplikaci, reconnect, výměna host key musí připojení blokovat. 4. PTY: UTF-8, ANSI, `top`, `nano`, Ctrl-C, Ctrl-D, TAB, ESC, ALT, šipky, IME, kopírování/vkládání, otočení zařízení a změna velikosti klávesnice. Kontrolujte skutečné provedení příkazu, nikoli pouhé echo vstupu. 5. SFTP: adresář prázdný/neprázdný, read-only účet, odmítnutá oprávnění, soubor 1+ GiB při sledování RAM, zrušení a pád spojení, existující cíl, symlink v libovolné komponentě cesty. Při výpadku ověřte a případně odstraňte vzdálený `.part`. 6. Import desktopového v1 JSON, duplicity v souboru i proti Vaultu, všechny tři politiky, import po zamčení nesmí pokračovat; export otevřete v desktopu a ověřte absenci tajemství. 7. Linux monitor porovnejte s `/proc`, `df` a `uptime`; změňte interval a přepněte obrazovku/uspěte aplikaci — nesmí pokračovat refresh. DNS/TCP zkoušejte odděleně pro IPv4/IPv6 a zkontrolujte přesné popisy RTT/handshake/ICMP omezení. 8. Aktualizace se stejnou verzí, ale novým build ID musí znovu zobrazit doporučení a požadovat licenci. Odmítnutí musí blokovat všechny serverové funkce. Záměrné limity první verze: jediná aktivní SSH relace, POSIX SFTP bez následování symlinků a bez přepisu cíle, nerekurzivní mazání, bez CSV, bez UI pro rotaci důvěryhodného host key a bez trvalého běhu na pozadí. Nejsou přidány funkce vyloučené zadáním, cloud, plugin systém nebo auto-updater. Jde o funkční vývojovou alfu, nikoli o kompletně ověřené produkční vydání.
منبع منتشرشده
دانلود ZIP منبع
CH-J SM Mobile
پوشهها و فایلهای یک نسخهٔ مشخص از برنامه را مرور کنید.
CH-J / SM Mobile
175 فایل
sm-mobile-20261016T185235Z-8e93ecc1b59a
افزودهشده: · ساختهشده:
1
# Testovací scénáře a stav3
## Verze 0.0.3 (build sm-mobile-20261016T185235Z-8e93ecc1b59a), 16. října 20265
Apple Silicon Mac, Flutter 3.47.7 / Dart 3.13.5. Stav: **Ověřeno** / **Neověřeno na zařízení**.7
| Kontrola | Výsledek |8
| --- | --- |9
| `flutter analyze` | Ověřeno, bez nálezů |10
| `flutter test` | 140 úspěšných, 15 přeskočených (síťové opt-in scénáře) |11
| `python3 tool/test_openssh.py` | 11 úspěšných: SSH/SFTP, bezpečné ukládání editoru (zachování práv, žádné dočasné soubory, konflikt při stejné velikosti i čase, složka jen pro čtení, chybějící oprávnění, symlinky), 1 KB–10 MB |12
| `SM_NET_TEST=1 flutter test test/net/icmp_test.dart` (macOS) | 17 úspěšných: ICMP ping a traceroute ICMP/UDP/TCP přes IPv4 i IPv6 na Internet |13
| Editor (widget testy) | 13 typů souborů otevřeno, upraveno a uloženo; kódování UTF-8/BOM/UTF-16/Windows-1250 zachováno; 1 KB–10 MB (10 MB: otevření 0,8 s, uložení 56 ms na Macu) |14
| Vault | 3 znaky odmítnuto, 4/12/64 přijato, 65 odmítnuto; změna hesla zachová data, staré heslo neodemkne, chybný zápis nic nepoškodí; migrace obálky v1 (PBKDF2) na Argon2id |15
| Fyzický iPad Air M3, iPadOS 27.0.1 (`integration_test/icmp_device_test.dart`) | Ověřeno: ICMP ping, UDP a TCP traceroute přes IPv4 i IPv6, TTL, DF, nepřetržitý ping |16
| `flutter build apk --release` / `flutter build ios --release` | Ověřeno; iOS build nainstalován na iPad a iPhone přes Wi-Fi |17
| Biometrie na zařízení, Soubory/Document Picker, Android SAF, Quick Look, PDF na Androidu | **Neověřeno na zařízení** (pokryto jen automatickými testy se simulovanou platformou) |18
| Android zařízení / emulátor | **Neověřeno** |20
## Starší ověření (0.0.1)22
Ověřování probíhalo 14. října 2026 na Apple Silicon Macu, Flutter stable 3.47.7 / Dart 3.13.5, Xcode 27.0, Android SDK 36. Testy nepoužívají skutečné produkční servery ani uživatelovy SSH klíče.24
## Automatické kontroly26
| Kontrola | Stav |27
| --- | --- |28
| `flutter pub get` | Prošlo |29
| `flutter analyze` | Prošlo, bez nálezů |30
| `flutter test` | 20 úspěšných unit/widget testů; 6 síťových testů se bez opt-in přeskočí |31
| `python3 tool/test_openssh.py` | 4 úspěšné reálné síťové scénáře |32
| `python3 tool/test_linux.py --context colima-sm-mobile-test` | 2 úspěšné scénáře proti skutečnému Linux OpenSSH: heslo, metriky a zrušení monitoru |33
| Nativní integrační test Android Emulator API 36 / ARM64 | Prošlo |34
| Nativní integrační test iOS 27 Simulator / iPhone 18 Pro | Prošlo |35
| `flutter build apk --debug` | Prošlo |36
| `flutter build appbundle --debug` | Prošlo |37
| `flutter build ios --simulator` | Prošlo |38
| `flutter build ios --release --no-codesign` | Prošlo, nepodepsaný device build |39
| Kontrola desktopových zdrojů před/po pomocí SHA-256 | 0 změněných souborů |41
Unit/widget testy pokrývají hostname a IPv6 identity, neplatné profily, verzi a limity JSON, nepřenášení tajemství, autentizované šifrování, nesprávné heslo a poškozený tag, neúspěšný zápis úložiště, zamčení a zrušení rozpracovaného odemykání, první/známý/změněný/odmítnutý host key, biometrický klíč přes testovací rozhraní, nebezpečné cesty, skutečný lokální DNS/TCP probe, licenční bránu a CS/DE/EN widgety včetně landscape se zvětšeným textem.43
OpenSSH test vytvoří dočasnou ed25519 identitu s passphrase a ověřuje skutečný PTY s ANSI výstupem, změnu rozměrů, SFTP upload/download a shodu bytů, odmítnutí přepisu, rename/remove/mkdir/rmdir, odmítnutí symlinku, zrušení uploadu/downloadu a cleanup, chybu vstupního streamu, reconnect bez opakovaného trust promptu, změnu host key, neúspěšnou autentizaci, skutečný handshake timeout a ztrátu živého TCP transportu. Na macOS kontroluje odmítnutí Linux monitoru; na Linuxu má scénář pro skutečné metriky.45
Nativní integrační test používá skutečný Keychain / Keystore v odděleném testovacím namespace. Prochází explicitní souhlas s licencí, vytvoření Vaultu, formulář profilu, připojení ke skutečnému OpenSSH s ověřením očekávaného fingerprintu, terminál, SFTP obrazovku, zamčení s odpojením a opětovné odemknutí hlavním heslem. Testovací klíče jsou jednorázové, pouze ve fixture, a nejsou součástí produkčního buildu.47
Linux fixture používá skutečný ARM64 Linux v oddělené Colima VM a OpenSSH kontejner připnutý OCI digestem. Ověřeno bylo úspěšné heslo, fingerprint ověřený uvnitř fixture, CPU/RAM/disk/uptime/load/OS/SSH RTT i ukončení rozpracovaného monitoru. Hodnoty nejsou simulované.49
## Adaptivní rozložení (16. října 2026)51
Rozložení se řídí pouze dostupnou velikostí okna v logických pixelech (Compact < 600, Medium 600–839, Expanded 840–1199, Large 1200–1599, Extra Large ≥ 1600), nikoli modelem zařízení. Pod 240 × 320 dp aplikace drží tento minimální logický rozměr a posouvá se.53
| Kontrola | Stav |54
| --- | --- |55
| `flutter analyze` | Prošlo, bez nálezů |56
| `flutter test` | 38 úspěšných testů (20 původních + 18 adaptivních); 7 síťových bez opt-in přeskočeno |57
| `test/adaptive_layout_test.dart` | Generovaná matice 33 šířek (240–2560 dp, každý breakpoint −1/−0,5/0/+0,5/+1) × 12 výšek (320–3000 dp) = 396 tvarů na všech 6 obrazovkách, tj. 2 376 živých změn velikosti; DPR 1–3,5, text 1–2×, různé SafeArea. Dále klávesnice, text až 3×, okna pod minimem, iPad/Android split-screen, iPhone Duo (fyzická rozlišení při předpokládaném @2x i @3x), knižní a tabletop přehyb, závěs, plochý přehyb, zachování rozepsaných dat a Material/Apple guidelines dotykových cílů, popisků a kontrastu |58
| `test/network/adaptive_session_test.dart` (přes `tool/test_openssh.py`) | Prošlo: skutečné OpenSSH, 14 tvarů; stejný SSH klient, terminál a SFTP adresář, server po každé změně hlásí nový rozměr PTY (`stty size`) |59
| `python3 tool/test_openssh.py` | 5 úspěšných reálných síťových scénářů |60
| Nativní integrační test iOS 27 Simulator / iPad mini (A17 Pro) | Prošlo |61
| Nativní integrační test iOS 27 Simulator / iPad Pro 13" (M5) | Prošlo |62
| `integration_test/adaptive_device_test.dart`, Android Emulator API 36, profil Pixel 9 Pro Fold | Napůl složeno, plocho, rotace 90/180/270/360°, tabletop, `wm size 1200x1800` a `wm density 560`: 13 změn, stejná SSH relace a odpovídající PTY na serveru. Složení: emulátor vypne vnitřní displej beze změny velikosti okna, Android aplikaci pozastaví a SM Mobile se podle nastavení „zamknout při odchodu do pozadí“ zamkne a odpojí (záměrné bezpečnostní chování). Test proto jako celek neprošel |64
`adaptive_device_test.dart` lze spustit i na fyzickém zařízení (`tool/test_openssh.py --device <id> --integration integration_test/adaptive_device_test.dart`) a během sledovacího okna zařízení ručně otáčet, skládat nebo měnit velikost okna.66
Neověřeno: iPhone Duo (simulátor je až v Xcode 27.1, k dispozici je Xcode 27.0; Apple neuvádí měřítko displeje, logické rozměry v testech jsou odvozené z fyzických pixelů při předpokladu @2x/@3x), zda iOS 27.x předává „reserved region“ částečného složení Flutteru jako display feature, přesun běžící aplikace na vnější displej skládacích zařízení, Samsung Galaxy Fold/Flip, Android tablet ve skutečném multi-window, iPad Stage Manager / změna velikosti okna v simulátoru, fyzická zařízení.68
## UI podle desktopu, terminál, monitoring a diagnostika (16. října 2026)70
| Kontrola | Stav |71
| --- | --- |72
| `flutter test` | 48 úspěšných testů; 7 síťových bez opt-in přeskočeno |73
| `test/monitor_diagnostics_test.dart` | Formátování metrik (uptime CS/DE/EN s množnými čísly, KiB/MiB/GiB, load bez procent), nerozpoznaný výstup zůstává nezměněn; diagnostika: výběr verze IP bez překryvné nabídky, zachování zadaných hodnot, výsledky DNS/TCP s cílem, verzí IP, dobou a chybou, reálný socket pro fázi TCP |74
| Přístupnost (dotykové cíle, popisky, kontrast WCAG AA) | Prošlo ve světlém i tmavém motivu |75
| `python3 tool/test_openssh.py` | 5/5, nově 3 000 řádků výstupu a UTF-8 (česká diakritika), ořez vykreslování terminálu |76
| `python3 tool/test_linux.py --context colima-sm-mobile-test` | 2/2, skutečné Linux metriky |77
| `flutter build ios --release` + instalace na fyzický iPhone (iOS 26.6.2) | Sestaveno, nainstalováno a spuštěno bez debuggeru; vzhled a ovládání na zařízení ověřuje vlastník |78
| `flutter build apk --release` | Sestaveno, podepsáno projektovým klíčem; na zařízení netestováno |80
ICMP echo a traceroute byly doplněny ve verzi 0.0.2; ověření je v následující sekci.82
## Verze 0.0.2: ICMP ping a traceroute (16. října 2026)84
Ping a traceroute posílají skutečné ICMP / ICMPv6 Echo z mobilního zařízení přes neprivilegované datagramové ICMP sockety (`dart:ffi` ← POSIX). iOS používá Darwin socket API, Android linuxové „ping sockety“; ICMP chyby (Time Exceeded, Unreachable) Darwin doručuje jako zprávy, Linux přes error queue (`IP_RECVERR`). Bez rootu, bez serveru a bez cloudu.86
| Kontrola | Prostředí | Výsledek |87
| --- | --- | --- |88
| `flutter test` | macOS | 63 úspěšných testů; 9 síťových bez opt-in přeskočeno |89
| Parsování ICMP/ICMPv6, kontrolní součet, přiřazení odpovědí podle id/seq, chybné a cizí pakety, statistiky | unit testy | Prošlo |90
| Ping 127.0.0.1 a ::1, data 0–1400 B, traceroute, zrušení do 1 s, timeout nedostupného cíle | macOS (Darwin, stejné API jako iOS), skutečné sockety | Prošlo |91
| Ping a traceroute 1.1.1.1 a 2606:4700:4700::1111 přes internet (`SM_NET_TEST=1`) | macOS, skutečná síť | Prošlo: Time Exceeded od routerů, odpověď cíle, `*` u neodpovídajících uzlů, IPv4 i IPv6 |92
| `integration_test/icmp_device_test.dart` | iOS 27 Simulator, iPhone 18 Pro | Prošlo včetně skutečného pingu a traceroute přes internet (IPv4, IPv6) |93
| `integration_test/icmp_device_test.dart` | Android Emulator API 36 | Prošlo na loopbacku (IPv4, IPv6, traceroute, zrušení); ICMP socket je aplikaci povolen. Síť emulátoru ICMP do internetu nepředává (odpovídá sama, TTL 255), proto zde nelze ověřit routery |94
| Linux error queue přes skutečné routery | Linux 6.8 (VM), síť z namespaces se dvěma routery | Prošlo: Time Exceeded IPv4/IPv6, Unreachable, dosažení cíle; jádro omezuje četnost ICMP chyb |95
| UI ping/traceroute (zobrazení, statistiky, zastavení, DNS chyba, neplatné nastavení, nepovolený socket) | widget testy se simulovanými událostmi | Prošlo |96
| SSH/SFTP regrese (`tool/test_openssh.py`) | macOS, skutečné OpenSSH | 5/5 |97
| Linux monitoring (`tool/test_linux.py`) | Colima VM | 2/2 |98
| Aktualizace Android 0.0.1 ← 0.0.2 přes `adb install -r` | Android Emulator API 36 | Prošlo, stejný podpisový certifikát, data zachována (firstInstallTime beze změny) |100
Neověřeno: traceroute přes skutečné routery na fyzickém Android zařízení a ICMP na fyzickém iPhonu (iOS sandbox na zařízení). Link-local IPv6 cíle (`fe80::/10`) nejsou podporované, protože vyžadují zónu rozhraní.102
## Implementováno, ale dosud bez ověření na fyzickém zařízení104
- Face ID / Touch ID / Android biometry a OS device-credential fallback, včetně OS ochrany dešifrovacího klíče. Zdrojová konfigurace je ověřena; test s falešným SecureStore není důkaz fungování hardwarové biometrie.105
- Výběr souboru, sdílení do Files / Documents providerů, reálné velké přenosy a případné ztráty sítě při přepínání Wi-Fi/VPN.106
- IPv6 připojení na skutečné mobilní síti, iPad, velmi velké fonty ve všech obrazovkách a kompletní screen-reader audit.107
- Podpisy pro distribuci a ověření App Store / Play Store. Vývojový APK/AAB a nepodepsaný iOS build nejsou publikovaná vydání.109
Záznamy finálních běhů, hashe APK/AAB a kontrola nepřítomnosti testovacího vstupního bodu jsou v `docs/verification/`.111
## Ruční ověření před vydáním113
1. Android 11+ a iPhone/iPad iOS 15+: nový Vault, restart, špatné i správné heslo, neaktivita a odchod do pozadí; ověřte uzavření SSH a absenci snapshotu citlivé obrazovky.114
2. Zapněte biometrii; zamkněte; odemkněte biometrikou i kódem zařízení; odmítněte dialog; změňte biometrické nastavení; ověřte fallback hlavním heslem bez nezabezpečeného náhradního klíče.115
3. Izolovaný Linux OpenSSH: heslo, nešifrovaný i šifrovaný klíč, špatná passphrase, první fingerprint ověřený mimo aplikaci, reconnect, výměna host key musí připojení blokovat.116
4. PTY: UTF-8, ANSI, `top`, `nano`, Ctrl-C, Ctrl-D, TAB, ESC, ALT, šipky, IME, kopírování/vkládání, otočení zařízení a změna velikosti klávesnice. Kontrolujte skutečné provedení příkazu, nikoli pouhé echo vstupu.117
5. SFTP: adresář prázdný/neprázdný, read-only účet, odmítnutá oprávnění, soubor 1+ GiB při sledování RAM, zrušení a pád spojení, existující cíl, symlink v libovolné komponentě cesty. Při výpadku ověřte a případně odstraňte vzdálený `.part`.118
6. Import desktopového v1 JSON, duplicity v souboru i proti Vaultu, všechny tři politiky, import po zamčení nesmí pokračovat; export otevřete v desktopu a ověřte absenci tajemství.119
7. Linux monitor porovnejte s `/proc`, `df` a `uptime`; změňte interval a přepněte obrazovku/uspěte aplikaci — nesmí pokračovat refresh. DNS/TCP zkoušejte odděleně pro IPv4/IPv6 a zkontrolujte přesné popisy RTT/handshake/ICMP omezení.120
8. Aktualizace se stejnou verzí, ale novým build ID musí znovu zobrazit doporučení a požadovat licenci. Odmítnutí musí blokovat všechny serverové funkce.122
Záměrné limity první verze: jediná aktivní SSH relace, POSIX SFTP bez následování symlinků a bez přepisu cíle, nerekurzivní mazání, bez CSV, bez UI pro rotaci důvěryhodného host key a bez trvalého běhu na pozadí. Nejsou přidány funkce vyloučené zadáním, cloud, plugin systém nebo auto-updater. Jde o funkční vývojovou alfu, nikoli o kompletně ověřené produkční vydání.SHA-256
a4c80024e3a63e26021a05c5d4b89f0f6df8474c0cb2ac2de4215c8829f58486CH-J Proprietary Software License 1.14 · کد منبع تحت CH-J Proprietary Software License 1.14 ارائه میشود. در دسترس بودن آن شرایط مجوز را تغییر نمیدهد و حق اضافهای اعطا نمیکند.
SHA-256 بایگانی
46e427a43e87af091004f36145590bda8fe90086dfb0f631afeb5029fb0b5655