Skip to content

feat!: bind OVOSSkill.gui to ovos-gui-api-client - #420

Draft
JarbasAl wants to merge 3 commits into
devfrom
feat/gui-api-client-rebind
Draft

JarbasAl wants to merge 3 commits into
devfrom
feat/gui-api-client-rebind

Conversation

@JarbasAl

@JarbasAl JarbasAl commented Jun 20, 2026

Copy link
Copy Markdown
Member

Bind OVOSSkill.gui to the standalone ovos-gui-api-client

Part of the GUI rework. The skill-side GUIInterface has been
extracted from ovos-bus-client into the standalone ovos-gui-api-client
package. This PR points workshop at it.

Changes

  • skills/ovos.py + app.py: import GUIInterface from ovos_gui_api_client
    (was ovos_bus_client.apis.gui).
  • SkillGUI.__init__: drop the obsolete ui_directories argument — skills no
    longer ship QML, so there are no UI directories to locate. Removes the
    get_ui_directories import.
  • _init_skill_gui: drop the explicit setup_default_handlers() call; the new
    GUIInterface wires its default handlers in __init__.
  • pyproject.toml: ovos-gui-api-client>=0.1.0,<1.0.0.

Tests

test/unittests/test_gui_rebind.py — 5 tests: workshop imports the api-client
interface, SkillGUI subclasses it, constructs without ui_directories,
show_text() emits gui.page.show(SYSTEM_text), and the no-bus contract.

CI / dependency note

ovos-gui-api-client is now published on PyPI (0.1.0) — the git-ref
pre_install_pip / explicit git-install CI step has been dropped in favor of
the normal versioned dependency.

2026-07-24 rebase onto dev

Rebased onto current dev (post #431 INTENT-4 producer, #483/#485/#486
resource-shim + gate rewrite, #480 EnclosureAPI→ovos-gui-api-client import).
One real conflict, in pyproject.toml: dev's #480 had already added
ovos-gui-api-client>=0.1.0,<1.0.0 for EnclosureAPI; kept dev's (published)
version bound and updated the comment to cover both EnclosureAPI and
GUIInterface. skills/ovos.py auto-merged cleanly (dev's EnclosureAPI
import + this PR's GUIInterface import coexist). Dropped the now-unneeded
git-ref CI install (package is on PyPI as of 0.1.0) in a follow-up commit.

Full local test suite: 558 passed, 2 known-failing (pre-existing on bare
dev, unrelated to this PR: test_inline_vocab_refs::test_padacioso_raw_reference_is_rejected
and test_decorators::TestKillableIntents::test_get_response, the latter only
fails when unittests+end2end run together — test-order pollution, reproduced
on bare dev too).

Depends on: ovos-gui-api-client#2 (merged, released as 0.1.0). Draft until reviewed.

@coderabbitai

coderabbitai Bot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 5ce971b5-4b22-4cda-9bde-24009fa98cb9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/gui-api-client-rebind

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Pardon the interruption, but your automated checks are ready! 🛎️

I've aggregated the results of the automated checks for this PR below.

📋 Repo Health

Health report: The repository is thriving! 🌟

✅ All required files present.

Latest Version: 9.3.0a1

ovos_workshop/version.py — Version file
README.md — README
LICENSE — License file
pyproject.toml — pyproject.toml
⚠️ setup.py — setup.py
CHANGELOG.md — Changelog
ovos_workshop/version.py has valid version block markers

🔍 Lint

Generic report status: Complete and verified. ✅

ruff: issues found — see job log

🔨 Build Tests

Build test complete! Let's see if everything fits together. 🧩

✅ All versions pass

Python Build Install Tests
3.10
3.11
3.12
3.13
3.14

⚖️ License Check

Checking for any potential license conflicts. ⚔️

✅ No license violations found.

Policy: Apache 2.0 (universal donor). StrongCopyleft / NetworkCopyleft / WeakCopyleft / Other / Error categories fail. MPL allowed.

🔒 Security (pip-audit)

I've checked the firewalls of your PR. 🔥

✅ No known vulnerabilities found (74 packages scanned).


An automated high-five for your latest changes! 🖐️

@github-actions github-actions Bot added feature and removed feature labels Jun 20, 2026
@JarbasAl JarbasAl changed the title feat: bind OVOSSkill.gui to ovos-gui-api-client feat!: bind OVOSSkill.gui to ovos-gui-api-client Jun 20, 2026
@JarbasAl
JarbasAl force-pushed the feat/gui-api-client-rebind branch from 2dc78a2 to 476343b Compare July 3, 2026 23:44
JarbasAl added 3 commits July 24, 2026 13:45
- import GUIInterface from ovos_gui_api_client (extracted, standalone) in
  skills/ovos.py and app.py instead of ovos_bus_client.apis.gui
- SkillGUI no longer passes the obsolete ui_directories arg (skills no longer
  ship QML); drop get_ui_directories import
- drop explicit setup_default_handlers() call (the new GUIInterface wires its
  default handlers in __init__)
- add ovos-gui-api-client dependency; install it from git in CI until released
- unit tests for the rebind (subclassing, construction, template emit, bus contract)
ovos-gui-api-client 0.1.0 is now on PyPI and pulled in via the normal
pyproject dependency; the git-ref pre-install step is no longer needed
and git refs break PyPI publish.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant