diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index b32cb9b..ffc12ca 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -79,15 +79,14 @@ jobs: $out = & .\dist\RenderTest.exe --in .\dist\sample.png --out .\dist\ci --no-translate 2>&1 | Out-String Write-Host $out # Латиница в шаблонах намеренно — см. примечание о кодировке выше. - if ($out -match 'OCR\s+\S*\s*=?\s*$' -or $out -match 'exit code 2') { + if ($LASTEXITCODE -eq 2) { Write-Host '::warning::no OCR language pack on the runner - frame check skipped' exit 0 } - if ($out -notmatch '->\s*(\d+)') { - Write-Host '::warning::no block count in output - frame check skipped' - exit 0 + if ($out -notmatch 'RESULT lines=(\d+) blocks=(\d+)') { + throw "RenderTest produced no RESULT line - the pipeline did not finish" } - $blocks = [int]$Matches[1] + $blocks = [int]$Matches[2] Write-Host "blocks detected: $blocks" # На этом кадре стабильно выходит 27-29 блоков. Резкое расхождение означает, что # правки в Blocks.cs поехали — либо всё слиплось, либо рассыпалось. diff --git a/README.md b/README.md index 5085a54..6aec15c 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,11 @@ ## Установка -Скопировать папку `dist` куда угодно и запустить `ScreenTranslator.exe`. Всё. +Скачать `ScreenTranslator.zip` из [релизов](../../releases), распаковать куда угодно и запустить +`ScreenTranslator.exe`. Всё — установщика нет, программа живёт в трее. + +Релиз `latest` пересобирается автоматически при каждом изменении в `master`, так что по этой +ссылке всегда лежит свежая сборка. Релизы с номером версии остаются неизменными. Если Windows покажет «SmartScreen защитил ваш компьютер» — «Подробнее» → «Выполнить в любом случае» (файл без цифровой подписи). diff --git a/tools/RenderTest.cs b/tools/RenderTest.cs index 8c024a1..001d654 100644 --- a/tools/RenderTest.cs +++ b/tools/RenderTest.cs @@ -227,6 +227,12 @@ namespace ScreenTranslator if (missed.Count > 0) Console.WriteLine("не найдено: " + string.Join(", ", missed)); } + // Итог латиницей и в фиксированном формате — по нему сборщик решает, не поехала ли + // сегментация. Человеческую сводку выше он разбирать не может: кодировка временного + // скрипта у раннера портит кириллицу, и любой шаблон с русским словом промахивается. + Console.WriteLine("RESULT lines={0} blocks={1} translated={2}", + lines.Count, blocks.Count, blocks.Count(b => b.Translated != null)); + Console.WriteLine("\nкартинки: " + outDir); frame.Image.Dispose(); return 0;