Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
9baa615
Increment Version to 0.8.5
JarbasAl Mar 11, 2026
685ea9e
feat: AsyncFakeBus alongside FakeBus (#371)
JarbasAl May 18, 2026
04f5050
Increment Version to 0.9.0a1
JarbasAl May 18, 2026
90e48d6
Update Changelog
JarbasAl May 18, 2026
5b436b2
feat: migrate ovos-utils onto ovos-spec-tools (#373)
JarbasAl May 22, 2026
decfeb3
Increment Version to 0.10.0a1
JarbasAl May 22, 2026
16169be
Update Changelog
JarbasAl May 22, 2026
20e8445
feat: fakebus Message subclasses ovos_spec_tools.Message — no API bre…
JarbasAl May 25, 2026
a88d996
Increment Version to 0.11.0a1
JarbasAl May 25, 2026
6903f95
Update Changelog
JarbasAl May 25, 2026
5291187
fix: standardize_lang_tag macro=True preserves region (restore langco…
JarbasAl May 25, 2026
c9966ff
Increment Version to 0.11.1a1
JarbasAl May 25, 2026
9df555f
Update Changelog
JarbasAl May 25, 2026
fc9d84f
fix: allow json-database 1.x (#379)
JarbasAl Jun 20, 2026
ad75228
Increment Version to 0.11.2a1
JarbasAl Jun 20, 2026
f13a977
Update Changelog
JarbasAl Jun 20, 2026
cc68e60
feat: FakeBus mirrors the legacy<->ovos.* namespace migration (#381)
JarbasAl Jun 25, 2026
fd6b6e0
Increment Version to 0.12.0a1
JarbasAl Jun 25, 2026
e9f3b17
Update Changelog
JarbasAl Jun 25, 2026
08febad
fix: raise ovos-spec-tools floor to 0.10.0a1 for NamespaceTranslator …
JarbasAl Jun 25, 2026
ae73d69
Increment Version to 0.12.1a1
JarbasAl Jun 25, 2026
5c47256
Update Changelog
JarbasAl Jun 25, 2026
9b02d99
fix: translate mirrored payload onto counterpart topic in FakeBus (#385)
JarbasAl Jun 27, 2026
acb4e1e
Increment Version to 0.12.2a1
JarbasAl Jun 27, 2026
d846054
Update Changelog
JarbasAl Jun 27, 2026
a2404f9
feat: AsyncFakeBus namespace migration + env/config flag parity (#387)
JarbasAl Jun 27, 2026
232aecc
Increment Version to 0.13.0a1
JarbasAl Jun 27, 2026
6ddc21e
Update Changelog
JarbasAl Jun 27, 2026
3b208ff
fix: target a real shape-changing pair in namespace-migration tests (…
JarbasAl Jun 29, 2026
7750b4f
Increment Version to 0.13.1a1
JarbasAl Jun 29, 2026
2866a88
Update Changelog
JarbasAl Jun 29, 2026
283dac7
fix: drop deprecated make_default from FakeBus default-session sync (…
JarbasAl Jun 29, 2026
6d14fb9
Increment Version to 0.13.2a1
JarbasAl Jun 29, 2026
49e9f20
Update Changelog
JarbasAl Jun 29, 2026
9522042
fix: FakeBus folds the default session like any other (drop owner-onl…
JarbasAl Jun 29, 2026
8f38d55
Increment Version to 0.13.3a1
JarbasAl Jun 29, 2026
1c6ad40
Update Changelog
JarbasAl Jun 29, 2026
55d6133
fix: FakeBus folds the message session BEFORE handlers, not after (#396)
JarbasAl Jul 2, 2026
6fb9205
Increment Version to 0.13.4a1
JarbasAl Jul 2, 2026
e197be1
Update Changelog
JarbasAl Jul 2, 2026
4e77ca7
fix: log each unique deprecation warning only once
JarbasAl Jul 16, 2026
9232855
Merge pull request #398 from OpenVoiceOS/fix/dedupe-deprecation-logs
JarbasAl Jul 16, 2026
45ac6dd
Increment Version to 0.13.5a1
JarbasAl Jul 16, 2026
988134c
Update Changelog
JarbasAl Jul 16, 2026
6fe8f6a
fix: ovos-logs CLI creates stray file in cwd on every invocation (#400)
JarbasAl Jul 23, 2026
299e83a
Increment Version to 0.13.6a1
JarbasAl Jul 23, 2026
2bae79c
Update Changelog
JarbasAl Jul 23, 2026
cf103e0
fix: replace removed distutils.spawn with shutil.which (Python 3.12+)…
JarbasAl Jul 23, 2026
61a9e0a
Increment Version to 0.13.7a1
JarbasAl Jul 23, 2026
619e87f
Update Changelog
JarbasAl Jul 23, 2026
4127f15
refactor: deprecate create_self_signed_cert (#404)
JarbasAl Jul 24, 2026
6143f7e
Increment Version to 0.13.7a2
JarbasAl Jul 24, 2026
cb42770
Update Changelog
JarbasAl Jul 24, 2026
93cd46a
fix: FileEventHandler must only fire for the file it watches (#406)
JarbasAl Jul 24, 2026
2b4b7a0
Increment Version to 0.13.8a1
JarbasAl Jul 24, 2026
756a011
Update Changelog
JarbasAl Jul 24, 2026
5455945
fix: watch files that do not exist yet (#408)
JarbasAl Jul 24, 2026
3c86cb7
Increment Version to 0.13.9a1
JarbasAl Jul 24, 2026
b742ad3
Update Changelog
JarbasAl Jul 24, 2026
1a2527d
docs: rewrite README in Simplified Technical English (#413)
JarbasAl Aug 1, 2026
d3ac4eb
Increment Version to 0.13.9a2
JarbasAl Aug 1, 2026
e8f1232
Update Changelog
JarbasAl Aug 1, 2026
8a44735
fix: give FakeBus the intent-topic bridge (RULE 1/RULE 2 parity with …
JarbasAl Aug 13, 2026
f304756
Increment Version to 0.13.10a1
JarbasAl Aug 13, 2026
38eba04
Update Changelog
JarbasAl Aug 13, 2026
b1de334
docs(fakebus): note single-connection model vs real multi-connection …
JarbasAl Aug 14, 2026
98843f0
Increment Version to 0.13.10a2
JarbasAl Aug 14, 2026
9e26a6d
Update Changelog
JarbasAl Aug 14, 2026
a65793f
fix: restore idempotent double-registration for wrapped bus handlers …
JarbasAl Aug 14, 2026
e6bc06e
Increment Version to 0.13.11a1
JarbasAl Aug 14, 2026
e92bcf7
Update Changelog
JarbasAl Aug 14, 2026
8ed8af3
fix: close leaked DNS-probe socket, silence deprecation warning noise…
JarbasAl Aug 14, 2026
ff3ca03
Increment Version to 0.13.12a1
JarbasAl Aug 14, 2026
cc6660b
Update Changelog
JarbasAl Aug 14, 2026
cc6189c
docs: add prerelease-quirks changelog since 0.8.5 (#425)
JarbasAl Aug 14, 2026
66b6cc1
Increment Version to 0.13.12a2
JarbasAl Aug 14, 2026
232877d
Update Changelog
JarbasAl Aug 14, 2026
9385f5f
fix: floor ovos-spec-tools at the release that ships intent_topics (#…
JarbasAl Aug 15, 2026
ead8ea3
Increment Version to 0.13.13a1
JarbasAl Aug 15, 2026
11d5286
Update Changelog
JarbasAl Aug 15, 2026
0dede83
perf: skip disabled log call-site resolution (#415)
goldyfruit Aug 18, 2026
9c6cf5c
fix: harden MediaEntry against invalid numeric fields and dict2entry …
JarbasAl Aug 31, 2026
97cf1f5
Increment Version to 0.13.14a1
JarbasAl Aug 31, 2026
504916c
Update Changelog
JarbasAl Aug 31, 2026
3171c24
docs: add AGENTS.md with the conventions for coding agents (#431)
JarbasAl Aug 31, 2026
7f1d4c7
Increment Version to 0.13.14a2
JarbasAl Aug 31, 2026
1eb7115
Update Changelog
JarbasAl Aug 31, 2026
5edce01
fix: log_deprecation checks its dedup set before walking the stack (#…
JarbasAl Sep 1, 2026
e60cecf
Increment Version to 0.13.15a1
JarbasAl Sep 1, 2026
ead4892
Update Changelog
JarbasAl Sep 1, 2026
ab7c246
fix: isolate errors from the legacy intent-topic bridge in FakeBus.em…
JarbasAl Sep 2, 2026
f6c936c
Increment Version to 0.14.0a1
JarbasAl Sep 2, 2026
7d56c29
Update Changelog
JarbasAl Sep 2, 2026
28b706b
test: drop scheduler tests that pin ovos-bus-client internals (#438)
JarbasAl Sep 3, 2026
d0b3d69
Increment Version to 0.14.0a2
JarbasAl Sep 3, 2026
6b67265
Update Changelog
JarbasAl Sep 3, 2026
3349127
fix: stop FakeBus.on_message folding the default session per message …
JarbasAl Sep 4, 2026
a7c5d76
Increment Version to 0.14.1a1
JarbasAl Sep 4, 2026
dbb71f7
Update Changelog
JarbasAl Sep 4, 2026
00fed5b
fix: FakeBus/AsyncFakeBus must not crash on a malformed session carri…
JarbasAl Sep 5, 2026
b1ac0af
Increment Version to 0.14.2a1
JarbasAl Sep 5, 2026
b9c953f
Update Changelog
JarbasAl Sep 5, 2026
7fcd132
feat: address the pip installer by data.service_name (#444)
JarbasAl Sep 8, 2026
99458b5
Increment Version to 0.15.0a1
JarbasAl Sep 8, 2026
26c0546
Update Changelog
JarbasAl Sep 8, 2026
54c5d2c
fix: guard slice() against non-datetime timestamps and broken symlink…
JarbasAl Sep 13, 2026
18e4d4d
Increment Version to 0.15.1a1
JarbasAl Sep 13, 2026
9fe69a7
Update Changelog
JarbasAl Sep 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ jobs:
with:
python_version: '3.11'
coverage_source: 'ovos_utils'
test_path: 'test/'
install_extras: ''
test_path: 'test/unittests'
install_extras: '.[extras]'
min_coverage: 0
101 changes: 101 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# AGENTS.md

Conventions for AI coding agents (internal and community) working in this
repository.

## What this repo is

`ovos-utils` is the lowest-level shared utility package in the OVOS stack.
It covers logging, process management, threading helpers (including the
killable-daemon primitive used by `ovos-workshop`), XDG path resolution,
and `fakebus`, an in-process, no-websocket stand-in for
`ovos_bus_client.MessageBusClient` used by tests and standalone tooling
throughout the ecosystem.

It has almost no OVOS-specific dependencies of its own (its `extras` group
is what pulls in `ovos-plugin-manager`, `ovos-config`, `ovos-workshop`, and
`ovos_bus_client` for the optional higher-level helpers). Nearly every
other OVOS package depends on the base install of this one, so a behavior
change here is felt ecosystem-wide.

## Ground rules

- Work on a feature branch. Never push to `dev` or `master` directly.
- Open pull requests against `dev` as **drafts** until CI is green and the
change is ready for review.
- One commit per PR. Squash before pushing if history accumulates.

- Use conventional commit prefixes (`fix:`, `feat:`, `refactor:`, `docs:`,
`test:`, `chore:`). Reserve `feat:` for changes a user or downstream
consumer can actually observe.
- Never hand-edit `ovos_utils/version.py`. CI computes and bumps the version
from conventional commit history.

- Every PR description and issue you write or edit carries an AI-authorship
disclosure at the top, naming the exact model used, and states the text is
not human-reviewed.

## Dependencies

- Use `uv`, never `pip`, for installing and resolving dependencies.
- Pin floors only, and always allow prereleases: `>=X.Y.Za1`.

- All dependency and metadata declarations live in `pyproject.toml`. A
`uv.lock` file is present in this repo for local dev reproducibility
only. It is not a substitute for floor pins in `pyproject.toml` and
should not be hand-edited. Regenerate it with `uv lock` if it drifts.

- Never install a dependency from a git URL. Publish an alpha to PyPI and
depend on that.
- Keep the base install (no `extras`) free of hard OVOS-internal
dependencies. That is what lets low-level tooling and other packages'
test suites depend on `ovos-utils` without pulling in the rest of the
stack. New functionality that needs `ovos-config`, `ovos_bus_client`, or
`ovos-plugin-manager` belongs behind the `extras` group.

## Testing

```bash
uv venv .venv
source .venv/bin/activate
uv pip install -e ".[extras]"
uv pip install pytest pytest-cov
pytest test/unittests
```

There is no `test` extra in `pyproject.toml`; test-only dependencies
(`pytest`, `pytest-cov`) are installed directly rather than through an
extras group.

A regression test for a bug must be shown to fail against the code before the
fix and pass after it. A test that passes against unfixed code proves
nothing and does not satisfy this gate.

## Docs discipline

Any change that touches observable behavior updates `README.md` and the
relevant file under `docs/` (`fakebus.md`, `events.md`, `log.md`,
`process-utils.md`, `utilities.md`) in the same PR.

Also add a version-stamped entry at the top of `docs/prerelease-quirks.md`
describing the change (create the file if it does not exist yet), newest
entry first.

## Repo-specific notes

- `ovos_utils.fakebus.FakeBus` must keep behaving like the real
`MessageBusClient` API (same method names, same event semantics) without
opening a websocket. It is what lets skills and plugins across the
ecosystem be unit-tested without a running messagebus. Any divergence
from the real client's observable behavior is a bug even if `fakebus`'s
own tests pass.

- The `ovos-logs` console script (declared in `[project.scripts]`) points
at `ovos_utils.log_parser:ovos_logs`. It lives inside the `ovos_utils`
package itself. An empty `ovos_logs_console_script` file exists at the
repo root but is not referenced by `pyproject.toml`'s
`[tool.setuptools.packages.find]` (`include = ["ovos_utils*"]`). Don't
assume it is where the script's code lives.

- `test/unittests` is the real test path (not bare `test/`). Point test
commands and CI config at that directory.
Loading
Loading