Check manual-full UI text in smoke test

This commit is contained in:
2026-06-23 09:32:39 +03:00
parent 747ed623ab
commit 042c4d6550
19 changed files with 5821 additions and 0 deletions

View File

@@ -0,0 +1,727 @@
{
"scriptCompleted": true,
"filesAnalyzed": 13,
"filesSkipped": [],
"results": [
{
"path": ".agents/skills/lemana-vpn-operations/SKILL.md",
"language": "markdown",
"fileCategory": "docs",
"totalLines": 70,
"nonEmptyLines": 48,
"sections": [
{
"heading": "Lemana VPN Operations",
"level": 1,
"line": 6
},
{
"heading": "Overview",
"level": 2,
"line": 8
},
{
"heading": "System Map",
"level": 2,
"line": 12
},
{
"heading": "Live Connection Rules",
"level": 2,
"line": 20
},
{
"heading": "Update Commands",
"level": 2,
"line": 38
},
{
"heading": "Answer Format",
"level": 2,
"line": 60
},
{
"heading": "Common Mistakes",
"level": 2,
"line": 64
}
],
"metrics": {
"importCount": 0,
"exportCount": 0,
"functionCount": 0,
"classCount": 0,
"sectionCount": 7
}
},
{
"path": ".agents/skills/lemana-vpn-sso-autofill/SKILL.md",
"language": "markdown",
"fileCategory": "docs",
"totalLines": 80,
"nonEmptyLines": 54,
"sections": [
{
"heading": "Lemana VPN SSO And Autofill",
"level": 1,
"line": 6
},
{
"heading": "Overview",
"level": 2,
"line": 8
},
{
"heading": "Credential Flow",
"level": 2,
"line": 12
},
{
"heading": "Runtime Patches",
"level": 2,
"line": 29
},
{
"heading": "Modes",
"level": 2,
"line": 47
},
{
"heading": "Testing",
"level": 2,
"line": 56
},
{
"heading": "Troubleshooting Signals",
"level": 2,
"line": 76
}
],
"metrics": {
"importCount": 0,
"exportCount": 0,
"functionCount": 0,
"classCount": 0,
"sectionCount": 7
}
},
{
"path": ".agents/skills/lemana-vpn-testing/SKILL.md",
"language": "markdown",
"fileCategory": "docs",
"totalLines": 101,
"nonEmptyLines": 68,
"sections": [
{
"heading": "Lemana VPN Testing",
"level": 1,
"line": 6
},
{
"heading": "Overview",
"level": 2,
"line": 8
},
{
"heading": "Non-Live Verification",
"level": 2,
"line": 12
},
{
"heading": "Status Checks",
"level": 2,
"line": 28
},
{
"heading": "Live VPN Checks",
"level": 2,
"line": 46
},
{
"heading": "Installer/Uninstaller Checks",
"level": 2,
"line": 83
},
{
"heading": "Final Report",
"level": 2,
"line": 94
}
],
"metrics": {
"importCount": 0,
"exportCount": 0,
"functionCount": 0,
"classCount": 0,
"sectionCount": 7
}
},
{
"path": "app/Package.swift",
"language": "swift",
"fileCategory": "code",
"totalLines": 14,
"nonEmptyLines": 12,
"metrics": {}
},
{
"path": "app/Sources/LemanaVPN/LemanaVPNApp.swift",
"language": "swift",
"fileCategory": "code",
"totalLines": 190,
"nonEmptyLines": 174,
"metrics": {}
},
{
"path": "app/Sources/LemanaVPN/VPNManager.swift",
"language": "swift",
"fileCategory": "code",
"totalLines": 697,
"nonEmptyLines": 618,
"metrics": {}
},
{
"path": "bin/vpn-lemanapro.sh",
"language": "shell",
"fileCategory": "script",
"totalLines": 1090,
"nonEmptyLines": 954,
"functions": [
{
"name": "_emit",
"startLine": 119,
"endLine": 126,
"params": []
},
{
"name": "_write_status",
"startLine": 128,
"endLine": 131,
"params": []
},
{
"name": "_clear_status",
"startLine": 133,
"endLine": 135,
"params": []
},
{
"name": "_prepare_connection_log",
"startLine": 137,
"endLine": 144,
"params": []
},
{
"name": "_log_connection_line",
"startLine": 146,
"endLine": 148,
"params": []
},
{
"name": "_show_connection_log_tail",
"startLine": 150,
"endLine": 154,
"params": []
},
{
"name": "_start_connect_progress",
"startLine": 158,
"endLine": 166,
"params": []
},
{
"name": "_stop_connect_progress",
"startLine": 168,
"endLine": 174,
"params": []
},
{
"name": "_json_get",
"startLine": 176,
"endLine": 179,
"params": []
},
{
"name": "_find_webengine_process",
"startLine": 181,
"endLine": 187,
"params": []
},
{
"name": "_find_authenticator",
"startLine": 189,
"endLine": 195,
"params": []
},
{
"name": "_module_bool",
"startLine": 197,
"endLine": 203,
"params": []
},
{
"name": "_patches_active",
"startLine": 205,
"endLine": 219,
"params": []
},
{
"name": "_keychain_has",
"startLine": 221,
"endLine": 223,
"params": []
},
{
"name": "_module_status_json",
"startLine": 225,
"endLine": 264,
"params": []
},
{
"name": "_module_human_part",
"startLine": 266,
"endLine": 275,
"params": []
},
{
"name": "_module_status_human",
"startLine": 277,
"endLine": 311,
"params": []
},
{
"name": "_check_status",
"startLine": 313,
"endLine": 375,
"params": []
},
{
"name": "_patch_oc",
"startLine": 377,
"endLine": 604,
"params": []
},
{
"name": "autoFill",
"startLine": 470,
"endLine": 473,
"params": []
},
{
"name": "autoFill",
"startLine": 488,
"endLine": 497,
"params": []
},
{
"name": "_store_keychain",
"startLine": 606,
"endLine": 621,
"params": []
},
{
"name": "_normalize_totp_secret",
"startLine": 623,
"endLine": 649,
"params": []
},
{
"name": "_can_prompt",
"startLine": 651,
"endLine": 653,
"params": []
},
{
"name": "_prompt_read",
"startLine": 655,
"endLine": 673,
"params": []
},
{
"name": "_persist_username",
"startLine": 675,
"endLine": 718,
"params": []
},
{
"name": "_ensure_username",
"startLine": 720,
"endLine": 745,
"params": []
},
{
"name": "_configure_keychain",
"startLine": 747,
"endLine": 785,
"params": []
},
{
"name": "_ensure_keychain_credentials",
"startLine": 787,
"endLine": 814,
"params": []
},
{
"name": "_bw_cache_session",
"startLine": 816,
"endLine": 821,
"params": []
},
{
"name": "_bw_unlock",
"startLine": 823,
"endLine": 889,
"params": []
},
{
"name": "_sync_bitwarden",
"startLine": 891,
"endLine": 925,
"params": []
},
{
"name": "_sync_credentials",
"startLine": 927,
"endLine": 936,
"params": []
},
{
"name": "_dns_cleanup",
"startLine": 938,
"endLine": 954,
"params": []
},
{
"name": "_filter_output",
"startLine": 956,
"endLine": 1006,
"params": []
}
],
"metrics": {
"importCount": 0,
"exportCount": 0,
"functionCount": 35,
"classCount": 0
}
},
{
"path": "docs/goals/manual-first-auth-flow/GOAL.md",
"language": "markdown",
"fileCategory": "docs",
"totalLines": 13,
"nonEmptyLines": 11,
"sections": [
{
"heading": "Goal: Manual-First Auth Flow",
"level": 1,
"line": 1
}
],
"metrics": {
"importCount": 0,
"exportCount": 0,
"functionCount": 0,
"classCount": 0,
"sectionCount": 1
}
},
{
"path": "docs/goals/manual-first-auth-flow/PLAN.md",
"language": "markdown",
"fileCategory": "docs",
"totalLines": 440,
"nonEmptyLines": 318,
"sections": [
{
"heading": "Manual-First Auth Flow Implementation Plan",
"level": 1,
"line": 1
},
{
"heading": "Короткий План",
"level": 2,
"line": 18
},
{
"heading": "Architecture Slice",
"level": 2,
"line": 40
},
{
"heading": "Пользовательский Процесс Установки",
"level": 2,
"line": 120
},
{
"heading": "Первый Экран",
"level": 3,
"line": 124
},
{
"heading": "Шаг 1: Что Будет Установлено",
"level": 3,
"line": 148
},
{
"heading": "Шаг 2: Базовый Режим Входа",
"level": 3,
"line": 162
},
{
"heading": "Шаг 3: Автоматический Вход Только Для Продвинутого Пути",
"level": 3,
"line": 187
},
{
"heading": "Шаг 4: Bitwarden Как Дополнительная Функция",
"level": 3,
"line": 214
},
{
"heading": "Шаг 5: Touch ID Только После Bitwarden",
"level": 3,
"line": 234
},
{
"heading": "Шаг 6: Понятный Прогресс Установки",
"level": 3,
"line": 246
},
{
"heading": "Финальный Экран",
"level": 3,
"line": 265
},
{
"heading": "Ошибки И Подсказки",
"level": 3,
"line": 292
},
{
"heading": "Acceptance Evidence Для Installer UX",
"level": 3,
"line": 301
},
{
"heading": "Дополнительные Функции",
"level": 2,
"line": 308
},
{
"heading": "Tasks",
"level": 2,
"line": 345
},
{
"heading": "Task 1: Rewrite user-facing contract and docs",
"level": 3,
"line": 347
},
{
"heading": "Task 2: Change installer defaults and capability selection",
"level": 3,
"line": 356
},
{
"heading": "Task 3: Refactor CLI auth profiles and partial Keychain support",
"level": 3,
"line": 365
},
{
"heading": "Task 4: Preserve automatic compatibility without keeping it dominant",
"level": 3,
"line": 374
},
{
"heading": "Task 5: Update Swift menu-bar app surface",
"level": 3,
"line": 383
},
{
"heading": "Task 6: Expand smoke coverage",
"level": 3,
"line": 392
},
{
"heading": "Task 7: Final verification and local update notes",
"level": 3,
"line": 401
},
{
"heading": "Non-Goals",
"level": 2,
"line": 417
},
{
"heading": "Risks",
"level": 2,
"line": 425
},
{
"heading": "Execution Order",
"level": 2,
"line": 432
}
],
"metrics": {
"importCount": 0,
"exportCount": 0,
"functionCount": 0,
"classCount": 0,
"sectionCount": 26
}
},
{
"path": "docs/superpowers/plans/2026-05-24-keychain-totp-provider.md",
"language": "markdown",
"fileCategory": "docs",
"totalLines": 935,
"nonEmptyLines": 656,
"sections": [
{
"heading": "Keychain TOTP Provider Implementation Plan",
"level": 1,
"line": 1
},
{
"heading": "File Structure",
"level": 2,
"line": 13
},
{
"heading": "Task 1: Add Smoke Tests For Credential Source Separation",
"level": 3,
"line": 39
},
{
"heading": "Task 2: Add Runtime Credential Source And TOTP Normalization",
"level": 3,
"line": 135
},
{
"heading": "Task 3: Split Bitwarden Sync From Keychain Source Flow",
"level": 3,
"line": 325
},
{
"heading": "Task 4: Update Installer Flags And Config",
"level": 3,
"line": 457
},
{
"heading": "Task 5: Update Swift Menu-Bar Status Decoding",
"level": 3,
"line": 639
},
{
"heading": "Task 6: Update Documentation",
"level": 3,
"line": 736
},
{
"heading": "Task 7: Full Verification",
"level": 3,
"line": 799
},
{
"heading": "Self-Review",
"level": 2,
"line": 931
}
],
"metrics": {
"importCount": 0,
"exportCount": 0,
"functionCount": 0,
"classCount": 0,
"sectionCount": 10
}
},
{
"path": "libexec/lemana-vpn-dns-cleanup",
"language": "unknown",
"fileCategory": "code",
"totalLines": 23,
"nonEmptyLines": 17,
"metrics": {}
},
{
"path": "templates/openconnect-lite-config.toml",
"language": "toml",
"fileCategory": "config",
"totalLines": 32,
"nonEmptyLines": 23,
"sections": [
{
"heading": "default_profile",
"level": 1,
"line": 3
},
{
"heading": "credentials",
"level": 1,
"line": 8
},
{
"heading": "auto_fill_rules",
"level": 1,
"line": 11
},
{
"heading": "[[auto_fill_rules.\"https://employee.auth.lemanapro.ru/*\"]]",
"level": 5,
"line": 13
},
{
"heading": "[[auto_fill_rules.\"https://employee.auth.lemanapro.ru/*\"]]",
"level": 5,
"line": 17
},
{
"heading": "[[auto_fill_rules.\"https://employee.auth.lemanapro.ru/*\"]]",
"level": 5,
"line": 21
},
{
"heading": "[[auto_fill_rules.\"https://employee.auth.lemanapro.ru/*\"]]",
"level": 5,
"line": 25
},
{
"heading": "[[auto_fill_rules.\"https://employee.auth.lemanapro.ru/*\"]]",
"level": 5,
"line": 29
}
],
"metrics": {
"importCount": 0,
"exportCount": 0,
"functionCount": 0,
"classCount": 0,
"sectionCount": 8
}
},
{
"path": "tests/smoke.sh",
"language": "shell",
"fileCategory": "script",
"totalLines": 438,
"nonEmptyLines": 392,
"functions": [
{
"name": "autoFill",
"startLine": 113,
"endLine": 116,
"params": []
}
],
"metrics": {
"importCount": 0,
"exportCount": 0,
"functionCount": 1,
"classCount": 0
}
}
]
}