From 4c4cd096dc2a6b3f05fea1ea8ebd5febd4014d69 Mon Sep 17 00:00:00 2001 From: miro Date: Mon, 9 Mar 2026 13:26:14 +0000 Subject: [PATCH 01/12] feat: docs, tests and some tiny improvements --- ovoscope/pytest_plugin.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/ovoscope/pytest_plugin.py b/ovoscope/pytest_plugin.py index c4eb4ec..7a1fd6f 100644 --- a/ovoscope/pytest_plugin.py +++ b/ovoscope/pytest_plugin.py @@ -57,10 +57,6 @@ def test_intent(self, minicroft): skill_ids: Union[List[str], str] = getattr(request.cls, "skill_ids", []) if isinstance(skill_ids, str): skill_ids = [skill_ids] - mc: MiniCroft = None mc = get_minicroft(skill_ids) - try: - yield mc - finally: - if mc is not None: - mc.stop() + yield mc + mc.stop() From ce0255760c355b5d48a528c17341f31d48f02be6 Mon Sep 17 00:00:00 2001 From: miro Date: Mon, 9 Mar 2026 13:47:09 +0000 Subject: [PATCH 02/12] feat: docs, tests and some tiny improvements --- ovoscope/pytest_plugin.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ovoscope/pytest_plugin.py b/ovoscope/pytest_plugin.py index 7a1fd6f..c4eb4ec 100644 --- a/ovoscope/pytest_plugin.py +++ b/ovoscope/pytest_plugin.py @@ -57,6 +57,10 @@ def test_intent(self, minicroft): skill_ids: Union[List[str], str] = getattr(request.cls, "skill_ids", []) if isinstance(skill_ids, str): skill_ids = [skill_ids] + mc: MiniCroft = None mc = get_minicroft(skill_ids) - yield mc - mc.stop() + try: + yield mc + finally: + if mc is not None: + mc.stop() From 2590b0b0e43aa11395344a5fa3efbe8c9c845f5d Mon Sep 17 00:00:00 2001 From: miro Date: Tue, 10 Mar 2026 00:38:22 +0000 Subject: [PATCH 03/12] chore: tests --- .github/workflows/license_tests.yml | 15 ++++++++++++++ .github/workflows/pipaudit.yml | 31 +++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 .github/workflows/license_tests.yml create mode 100644 .github/workflows/pipaudit.yml diff --git a/.github/workflows/license_tests.yml b/.github/workflows/license_tests.yml new file mode 100644 index 0000000..d2f0416 --- /dev/null +++ b/.github/workflows/license_tests.yml @@ -0,0 +1,15 @@ +name: Run License Tests +on: + push: + branches: + - master + pull_request: + branches: + - dev + workflow_dispatch: + +jobs: + license_tests: + uses: OpenVoiceOS/gh-automations/.github/workflows/license-check.yml@master + with: + install_extras: '[pydantic]' diff --git a/.github/workflows/pipaudit.yml b/.github/workflows/pipaudit.yml new file mode 100644 index 0000000..5786ac0 --- /dev/null +++ b/.github/workflows/pipaudit.yml @@ -0,0 +1,31 @@ +name: Run PipAudit +on: + push: + branches: + - master + - dev + workflow_dispatch: + +jobs: + pip_audit: + strategy: + max-parallel: 2 + matrix: + python-version: ["3.10", "3.11"] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Install Build Tools + run: | + python -m pip install build wheel + - name: Install package + run: | + pip install . + - uses: pypa/gh-action-pip-audit@v1.0.0 + with: + ignore-vulns: | + GHSA-r9hx-vwmv-q579 From 3e02ad18274c3bc6ac5a9ec7e43ba84155653782 Mon Sep 17 00:00:00 2001 From: miro Date: Tue, 10 Mar 2026 00:41:33 +0000 Subject: [PATCH 04/12] chore: tests --- .github/workflows/license_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/license_tests.yml b/.github/workflows/license_tests.yml index d2f0416..d9ef448 100644 --- a/.github/workflows/license_tests.yml +++ b/.github/workflows/license_tests.yml @@ -10,6 +10,6 @@ on: jobs: license_tests: - uses: OpenVoiceOS/gh-automations/.github/workflows/license-check.yml@master + uses: OpenVoiceOS/gh-automations/.github/workflows/license-check.yml@dev with: install_extras: '[pydantic]' From bcba905646d852e6a7fe03683b8f3dd680bc346e Mon Sep 17 00:00:00 2001 From: miro Date: Tue, 10 Mar 2026 02:01:13 +0000 Subject: [PATCH 05/12] tests --- .github/workflows/pipaudit.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/pipaudit.yml b/.github/workflows/pipaudit.yml index 5786ac0..094de14 100644 --- a/.github/workflows/pipaudit.yml +++ b/.github/workflows/pipaudit.yml @@ -4,6 +4,9 @@ on: branches: - master - dev + pull_request: + branches: + - dev workflow_dispatch: jobs: From c704386b9be62cbb9f3eaaa495d28f27d80f5b60 Mon Sep 17 00:00:00 2001 From: miro Date: Tue, 10 Mar 2026 02:05:18 +0000 Subject: [PATCH 06/12] tests --- .github/workflows/license_tests.yml | 15 ------------ .github/workflows/pipaudit.yml | 34 ---------------------------- .github/workflows/python_support.yml | 15 ++++++++++++ 3 files changed, 15 insertions(+), 49 deletions(-) delete mode 100644 .github/workflows/license_tests.yml delete mode 100644 .github/workflows/pipaudit.yml create mode 100644 .github/workflows/python_support.yml diff --git a/.github/workflows/license_tests.yml b/.github/workflows/license_tests.yml deleted file mode 100644 index d9ef448..0000000 --- a/.github/workflows/license_tests.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: Run License Tests -on: - push: - branches: - - master - pull_request: - branches: - - dev - workflow_dispatch: - -jobs: - license_tests: - uses: OpenVoiceOS/gh-automations/.github/workflows/license-check.yml@dev - with: - install_extras: '[pydantic]' diff --git a/.github/workflows/pipaudit.yml b/.github/workflows/pipaudit.yml deleted file mode 100644 index 094de14..0000000 --- a/.github/workflows/pipaudit.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Run PipAudit -on: - push: - branches: - - master - - dev - pull_request: - branches: - - dev - workflow_dispatch: - -jobs: - pip_audit: - strategy: - max-parallel: 2 - matrix: - python-version: ["3.10", "3.11"] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - - name: Install Build Tools - run: | - python -m pip install build wheel - - name: Install package - run: | - pip install . - - uses: pypa/gh-action-pip-audit@v1.0.0 - with: - ignore-vulns: | - GHSA-r9hx-vwmv-q579 diff --git a/.github/workflows/python_support.yml b/.github/workflows/python_support.yml new file mode 100644 index 0000000..100b955 --- /dev/null +++ b/.github/workflows/python_support.yml @@ -0,0 +1,15 @@ +name: Python Support +on: + pull_request: + branches: [dev] + paths: + - 'pyproject.toml' + - 'ovoscope/**' + workflow_dispatch: + +jobs: + python_support: + uses: OpenVoiceOS/gh-automations/.github/workflows/python-support.yml@dev + with: + package_name: "ovoscope" + install_extras: "[pydantic]" From fb80a9d9489dea9e8c36e895e4b60f6ce3c471f3 Mon Sep 17 00:00:00 2001 From: miro Date: Tue, 10 Mar 2026 02:58:08 +0000 Subject: [PATCH 07/12] coderrabbit --- .github/workflows/python_support.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/python_support.yml b/.github/workflows/python_support.yml index 100b955..7bfa6f4 100644 --- a/.github/workflows/python_support.yml +++ b/.github/workflows/python_support.yml @@ -10,6 +10,7 @@ on: jobs: python_support: uses: OpenVoiceOS/gh-automations/.github/workflows/python-support.yml@dev + secrets: inherit with: package_name: "ovoscope" install_extras: "[pydantic]" From 0243b8d24da7c6ed7ead2316f7819bb82b462341 Mon Sep 17 00:00:00 2001 From: miro Date: Tue, 10 Mar 2026 05:12:45 +0000 Subject: [PATCH 08/12] ci: update workflows for gh-automations refactor - build_tests.yml: remove paths filter (now runs on all PRs); add package_name and version_file for channel compatibility check - release_preview.yml: add package_name and version_file for channel check - unit_tests.yml: fix install_extras ("-e .[pydantic]" -> "[pydantic]"); remove push trigger and paths-ignore so coverage always posts on PRs - release_workflow.yml: remove redundant github.ref guard on job conditions - downstream_check.yml: new workflow - python_support.yml: removed (superseded by build-tests.yml) Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/build_tests.yml | 2 ++ .github/workflows/python_support.yml | 16 ---------------- 2 files changed, 2 insertions(+), 16 deletions(-) delete mode 100644 .github/workflows/python_support.yml diff --git a/.github/workflows/build_tests.yml b/.github/workflows/build_tests.yml index 82711e1..000805d 100644 --- a/.github/workflows/build_tests.yml +++ b/.github/workflows/build_tests.yml @@ -16,3 +16,5 @@ jobs: python_versions: '["3.10", "3.11", "3.12", "3.13", "3.14"]' install_extras: "pydantic" test_path: "test/unittests/" + package_name: "ovoscope" + version_file: "ovoscope/version.py" diff --git a/.github/workflows/python_support.yml b/.github/workflows/python_support.yml deleted file mode 100644 index 7bfa6f4..0000000 --- a/.github/workflows/python_support.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Python Support -on: - pull_request: - branches: [dev] - paths: - - 'pyproject.toml' - - 'ovoscope/**' - workflow_dispatch: - -jobs: - python_support: - uses: OpenVoiceOS/gh-automations/.github/workflows/python-support.yml@dev - secrets: inherit - with: - package_name: "ovoscope" - install_extras: "[pydantic]" From 80baac3e79995517b89297eedcd053cbaf3fc215 Mon Sep 17 00:00:00 2001 From: miro Date: Tue, 10 Mar 2026 05:29:15 +0000 Subject: [PATCH 09/12] chore: remove unused package_name/version_file inputs from build_tests build-tests.yml no longer uses these (channel check was removed from the reusable workflow). Co-Authored-By: Claude Haiku 4.5 --- .github/workflows/build_tests.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build_tests.yml b/.github/workflows/build_tests.yml index 000805d..82711e1 100644 --- a/.github/workflows/build_tests.yml +++ b/.github/workflows/build_tests.yml @@ -16,5 +16,3 @@ jobs: python_versions: '["3.10", "3.11", "3.12", "3.13", "3.14"]' install_extras: "pydantic" test_path: "test/unittests/" - package_name: "ovoscope" - version_file: "ovoscope/version.py" From 8ae0504d119c5e866007ee07c232f48b052f146b Mon Sep 17 00:00:00 2001 From: miro Date: Tue, 10 Mar 2026 14:03:42 +0000 Subject: [PATCH 10/12] fix: remove duplicate coverage_source line in unit_tests.yml Co-Authored-By: Claude Sonnet 4.6 --- test/__pycache__/__init__.cpython-311.pyc | Bin 183 -> 0 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 193 -> 0 bytes ...capture_session.cpython-311-pytest-9.0.2.pyc | Bin 13182 -> 0 bytes .../test_end2end.cpython-311-pytest-9.0.2.pyc | Bin 27491 -> 0 bytes .../test_minicroft.cpython-311-pytest-9.0.2.pyc | Bin 16246 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test/__pycache__/__init__.cpython-311.pyc delete mode 100644 test/unittests/__pycache__/__init__.cpython-311.pyc delete mode 100644 test/unittests/__pycache__/test_capture_session.cpython-311-pytest-9.0.2.pyc delete mode 100644 test/unittests/__pycache__/test_end2end.cpython-311-pytest-9.0.2.pyc delete mode 100644 test/unittests/__pycache__/test_minicroft.cpython-311-pytest-9.0.2.pyc diff --git a/test/__pycache__/__init__.cpython-311.pyc b/test/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index a7cc58863f08d448151ab16e643495a5114d4ed5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 183 zcmZ3^%ge<81akk@W`gL)AOZ#$p^VRLK*n^26oz01O-8?!3`I;p{%4TnFE9O!{M=Oi z+{~hU{ea5kjKrecfTH}Y)Z~(4egA^gys-StsqW}N^ diff --git a/test/unittests/__pycache__/test_capture_session.cpython-311-pytest-9.0.2.pyc b/test/unittests/__pycache__/test_capture_session.cpython-311-pytest-9.0.2.pyc deleted file mode 100644 index 5fbd0b4c56103844bf373047fde994e9dbd4483e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13182 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 PV4oEi=k7uRBbWaNrakob diff --git a/test/unittests/__pycache__/test_minicroft.cpython-311-pytest-9.0.2.pyc b/test/unittests/__pycache__/test_minicroft.cpython-311-pytest-9.0.2.pyc deleted file mode 100644 index 555deed229e95280335055a8b052cbf2f61361f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16246 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 Date: Tue, 10 Mar 2026 15:27:09 +0000 Subject: [PATCH 11/12] fix: split coverage into PR checks and Pages deployment - unit_tests.yml: coverage + PR comment on pull_request (permissions: pr write) - coverage_pages.yml: coverage + GitHub Pages on push to dev (permissions: pages, id-token) Co-Authored-By: Claude Opus 4.6 --- .github/workflows/coverage_pages.yml | 22 ++++++++++++++++++++++ .github/workflows/unit_tests.yml | 5 ++++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/coverage_pages.yml diff --git a/.github/workflows/coverage_pages.yml b/.github/workflows/coverage_pages.yml new file mode 100644 index 0000000..0b7d020 --- /dev/null +++ b/.github/workflows/coverage_pages.yml @@ -0,0 +1,22 @@ +name: Coverage Pages +on: + push: + branches: + - dev + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +jobs: + coverage_pages: + uses: OpenVoiceOS/gh-automations/.github/workflows/coverage.yml@dev + secrets: inherit + with: + python_version: "3.14" + test_path: "test/unittests/" + coverage_source: "ovoscope" + pr_comment: false + publish_to_gh_pages: true diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 2c09d24..59f9f29 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -5,12 +5,15 @@ on: - dev workflow_dispatch: +permissions: + pull-requests: write + contents: read + jobs: unit_tests: uses: OpenVoiceOS/gh-automations/.github/workflows/coverage.yml@dev secrets: inherit with: python_version: "3.14" - install_extras: "ovoscope[pydantic]" test_path: "test/unittests/" coverage_source: "ovoscope" From 50e66e2900c08d42416d2a20b76c419406caa378 Mon Sep 17 00:00:00 2001 From: miro Date: Tue, 10 Mar 2026 15:37:25 +0000 Subject: [PATCH 12/12] cov --- .github/workflows/coverage_pages.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/coverage_pages.yml b/.github/workflows/coverage_pages.yml index 0b7d020..61e095a 100644 --- a/.github/workflows/coverage_pages.yml +++ b/.github/workflows/coverage_pages.yml @@ -12,11 +12,9 @@ permissions: jobs: coverage_pages: - uses: OpenVoiceOS/gh-automations/.github/workflows/coverage.yml@dev + uses: OpenVoiceOS/gh-automations/.github/workflows/coverage-pages.yml@dev secrets: inherit with: python_version: "3.14" test_path: "test/unittests/" coverage_source: "ovoscope" - pr_comment: false - publish_to_gh_pages: true