You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: session-aware game-skill + OCP playback (stacked on IntentLayers)
Per-session playback state in OVOSCommonPlaybackSkill (state emits via
message.reply so they route to the originating session) and game_skill adopting
the context-gated layers. OCPCommonPlaybackSkill deprecation is handled separately
in #423.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Base classes, decorators, and helpers for building OpenVoiceOS skills and applications. This is the framework every OVOS skill subclasses (`OVOSSkill`, `FallbackSkill`, `OVOSCommonPlaybackSkill`, etc.) plus the skill loader/launcher.
The end2end suite expects the bundled fixture skills under `test/end2end/session/` to be installed first (see `coverage.yml` for the exact list: `skill-ovos-hello-world`, `skill-ovos-fallback-unknown`, `skill-ovos-fallback-unknownv1`, `skill-converse_test`).
20
+
21
+
## Lint/Typecheck
22
+
23
+
Lint runs in CI via the gh-automations `lint.yml@dev` reusable workflow. No local lint/typecheck config is committed.
Console-script entry point (this repo): `ovos-skill-launcher`. Downstream skills register under the `opm.skills` entry-point group and subclass these base classes — this repo defines that contract.
35
+
36
+
## Conventions
37
+
38
+
- Branches: work on `dev`, stable on `master`. Never `main`.
39
+
- Never edit `ovos_workshop/version.py` — gh-automations bumps semver from conventional-commit prefixes (`feat:` / `fix:` / `feat!:`).
- Reference `OpenVoiceOS/gh-automations` reusable workflows at `@dev`.
43
+
- No Neon / `neon-*` references.
44
+
- No meta-commentary in docs/commits/code (no history, no dates).
45
+
- CI is provided by OpenVoiceOS/gh-automations.
46
+
47
+
## Gotchas
48
+
49
+
- Test directory is `test/` (not `tests/`); CI `test_path` is `test/unittests`.
50
+
-`coverage.yml` is hand-rolled (not the gh-automations `coverage.yml@dev` reusable workflow) — it pins Python 3.14 in the runner while `build-tests` and the package target 3.9; touch with care.
51
+
-`backwards_compat.py` carries deprecated shims explicitly marked for removal; do not rely on it for new code.
52
+
- Many `# TODO` markers in `intents.py` and `common_play.py` reflect upstream OCP limitations, not quick fixes.
-[ ]#370 Incomplete OCP keyword deregistration functionality in OVOSCommonPlaybackSkill
7
+
-[ ]#367 Improve CSV parsing in load_ocp_keyword_from_csv method
8
+
-[ ]#331 Converse does not respect mute
9
+
-[ ]#203 feat - verbosity level
10
+
-[ ]#202 feat - "local_only" kwarg in intent decorators
11
+
-[ ]#194 settings changed decorator
12
+
-[ ]#191 missing tests for conversational intents
13
+
-[ ]#175 OVOSSkill full CRUD for events
14
+
-[ ]#56 Proposal: adding metadata to dialog files
15
+
16
+
## Gaps
17
+
18
+
-[ ]`coverage.yml` is a hand-rolled workflow rather than the gh-automations `coverage.yml@dev` reusable workflow; it pins runner Python 3.14 while the package supports 3.9.
19
+
-[ ] Committed scratch artifact `downstream_report.txt` is tracked in the repo root.
20
+
-[ ]`ovos_workshop.egg-info/` present in the working tree (not tracked; confirm `.gitignore` covers it).
21
+
-[ ] Missing tests for conversational intents (tracked as #191).
22
+
23
+
## Code TODOs
24
+
25
+
-[ ]`ovos_workshop/intents.py:98` at least one should support aliases
If a playback handler is registered, it is called with the message if accepted, and the player state is set to PLAYING. Logs an error if no playback handler is implemented.
Handles OCP resume requests by invoking the registered resume handler and updating the player state to PLAYING if successful. Logs an error if no resume handler is implemented.
0 commit comments