Skip to content

Release 1.3.7a2 - #109

Open
github-actions[bot] wants to merge 26 commits into
masterfrom
release-1.3.7a2
Open

Release 1.3.7a2#109
github-actions[bot] wants to merge 26 commits into
masterfrom
release-1.3.7a2

Conversation

@github-actions

Copy link
Copy Markdown

Human review requested!

renovate Bot and others added 26 commits December 18, 2025 03:54
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…package manager

- Pin actions/checkout to v4, actions/setup-python to v5
- Remove deprecated PYTHON env var (3.9 → 3.11)
- Use 'uv pip' and 'uv run' per AGENTS.md standards
- Consistent with OpenVoiceOS workspace CI practices

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Test coverage improvements:
- Implemented test_validate_page_message with valid/invalid message cases
- Implemented test_get_idle_display_config for idle display handling
- Implemented test_get_active_gui_extension for active GUI extensions
- Implemented 20+ additional test methods for Namespace and NamespaceManager classes
- Added comprehensive test cases for page management, data handling, handlers
- Achieved 30% code coverage on ovos_gui module (17 tests passing)
- Fixed imports to use correct ovos_bus_client API

Test coverage now reaches 30% on ovos_gui/namespace.py (primary module).
Additional test refinement may be needed for full handler integration testing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Created two reference documents to guide implementation:

**PLAN.md** — Executive implementation plan
- Current state analysis (architecture, known issues)
- Task breakdown (A1–B3 with effort estimates)
- Success criteria for each task
- Parallel execution model (A-tasks + B-tasks)
- Critical files to modify
- Execution timeline (~10-11 hours total)

**TODO.md** — Working task tracker
- High/medium/later priority breakdown
- Checkbox list for tracking progress
- Key milestones and dates
- Blocker and refactoring notes
- Test execution commands
- Commits prepared for human push

Together, these documents provide clarity on:
- What work needs to be done (PLAN.md)
- What's currently being done (TODO.md)
- Dependencies between tasks
- Success metrics for completion

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Added two comprehensive research documents from parallel analysis agents:

**RESEARCH_Qt5_Qt6_MIGRATION.md** (Agent B1 — 60+ KB analysis)
- Complete build system diff (CMake, KDE Frameworks, Qt modules)
- Critical API breaking changes (QAudioProbe, QAbstractVideoSurface removed)
- QML import version analysis (versioned Qt5 vs unversioned Qt6)
- Dual-support implementation strategy with code examples
- Rollout options analysis (parallel support, versioning, cutover, feature flags)
- Summary table of all component changes with effort estimates

**RESEARCH_UNIT_TESTS.md** (Agent A1 — 50+ KB analysis)
- Detailed test case breakdown for all 30+ TODO test methods
- Source code citations (file.py:LINE) for each test
- Test patterns and reusable mock examples
- Coverage analysis per class (32% current → 85% target)
- Test utilities inventory (fixtures, mocks, patterns)
- Implementation guidance for each test

Together, these documents provide:
- Strategic context for Qt6 migration decision-making
- Tactical guidance for completing unit test suite
- Evidence-based recommendations with specific file references
- Actionable next steps for both research areas

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Convert module-level patch patterns to instance-level mocking
- Fix send_message_to_gui mocking (it's an instance method, not module-level)
- Remove non-existent create_gui_service mock from NamespaceManager setUp
- Fix test_add_pages to properly test _add_pages method
- Add tests for set_persistence edge cases:
  * test_set_persistence_from_active_page_non_persistent
  * test_set_persistence_from_active_page_persistent
  * test_set_persistence_no_active_page
- Add test_load_pages_empty for empty pages list handling
- Fix test_handle_page_interaction with correct message format
- Fix test_handle_show_page mock assertions with reset_mock() between calls
- Fix test_upload_system_resources to check directory existence
- Update assertions for SYSTEM_ page routing (uses template routing, not _load_pages)

Results: 55 tests passing, 56% coverage on ovos_gui module

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add test_set_persistence_from_active_page_non_persistent
- Add test_set_persistence_from_active_page_persistent
- Add test_set_persistence_no_active_page
- Add test_load_pages_none_show_index
- Add test_focus_page_missing_page
- Add test_activate_namespace_already_active
- Add test_activate_namespace_new
- Add test_dispatch_template_to_adapters
- Add test_gui_routing_key_default
- Add test_remove_namespace_with_timer

Results: 62 tests passing, 78% coverage on namespace.py, 60% overall

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace auto-generated stubs with 6 detailed, actionable suggestions backed by
file:LINE citations from source code analysis and test coverage gaps:

1. Add bounds checking before array access in load_pages()
   - Evidence: namespace.py:265-276
   - Impact: Medium (prevents crashes from malformed GUI requests)

2. Document template dispatch and adapter lifecycle
   - Evidence: namespace.py:643-656, 741-747
   - Impact: Medium (reduces adapter development friction)

3. Add comprehensive integration tests for adapter plugin loading
   - Evidence: service.py:56-66
   - Impact: High (prevents silent plugin loading failures)

4. Implement namespace data filtering for reserved keys
   - Evidence: namespace.py:684
   - Impact: Low-Medium (improves adapter robustness)

5. Add retry logic for namespace removal timers with exponential backoff
   - Evidence: namespace.py:819-836, 838
   - Impact: Low (improves reliability in edge cases)

6. Consolidate focus_page() and _activate_page() logic
   - Evidence: namespace.py:300-322, 327-344
   - Impact: Low (reduces code duplication)

All suggestions include problem statement, evidence, proposed solution, and impact
assessment per AGENTS.md standards.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Task B2: Assess adapter plugin compatibility with Qt6
- Comprehensive compatibility matrix (Tornado, QML, media, routing)
- Assessment of critical breaking changes:
  * Audio: QAudioProbe → QAudioSource
  * Video: QAbstractVideoSurface → QVideoSink
  * QML imports: versioned (Qt5) → unversioned (Qt6)
  * Build: KF5 → KF6 frameworks
- Dual client support assessment: ❌ Not possible without redesign
- Three implementation options analyzed with effort/pros/cons

Task B3: Plan Qt5→Qt6 migration rollout strategy
- Four options evaluated (parallel, versioning, feature flags, cutover)
- Recommended: Option B (Adapter Versioning) for immediate deployment
- Phased approach:
  * Phase 1: Release Qt6 adapter v2.0.0 alongside v1.x (Months 1-3)
  * Phase 2: Maintenance period with dual support (Months 4-12)
  * Phase 3: Deprecation window with migration guidance (Months 13-24)
  * Phase 4: Hard cutover to Qt6-only v3.0.0 (Month 25+)
- Risk assessment and mitigation strategies
- Success metrics and implementation checklist
- Communication plan for existing and new users
- Financial/resource estimates: 3-4 months total effort

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Raise the upper version cap so this repo accepts the new major(s), matching the semver-major caps used across the OVOS ecosystem (bus-client <3.0.0, plugin-manager <3.0.0).

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The release used TigreGotico/gh-automations/publish-alpha.yml@master with inline 'python setup.py sdist bdist_wheel' on Python 3.14, failing with ModuleNotFoundError: setuptools — so every alpha release failed and merged dep fixes (ovos-bus-client<3.0.0) never reached PyPI. Switched to the standard OpenVoiceOS/gh-automations/publish-alpha.yml@dev (reads version from version.py, builds with python -m build), matching ovos-audio.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor: migrate packaging to pyproject.toml

Replace setup.py + requirements.txt + MANIFEST.in with a single pyproject.toml (PEP 621), dynamic version from ovos_gui/version.py. Verified the wheel builds with correct console scripts and bundled resources. (Release workflow already modernized on dev in a prior PR.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* ci: use shared reusable build/publish workflows (pyproject)

Replace bespoke build_tests + install_tests + publish_stable (which ran 'python setup.py ...', now removed) with the shared OpenVoiceOS reusable workflows (build-tests/publish-stable @dev), matching ovos-core. build-tests builds via 'python -m build' and installs the wheel.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant