LogalDeveloper
48eae62608
Added descriptive name to event dispatch asyncio task.
CI / Formatting (push) Successful in 6s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 13s
CI / Tests (Python 3.13) (push) Successful in 12s
CI / Tests (Python 3.14) (push) Successful in 10s
CI / Type Checking (push) Successful in 9s
CI / Spelling (push) Successful in 5s
2026-04-09 20:45:36 -04:00
LogalDeveloper
4fa7050f0a
Refactored timers module into layered architecture with per-timer async tasks and stream-aware lifecycle.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 13s
CI / Tests (Python 3.13) (push) Successful in 13s
CI / Tests (Python 3.14) (push) Successful in 10s
CI / Type Checking (push) Successful in 10s
CI / Spelling (push) Successful in 5s
2026-04-09 20:39:25 -04:00
LogalDeveloper
c4217b6ed8
Fixed clip editor video forcing full screen playback on iOS.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 12s
CI / Tests (Python 3.13) (push) Successful in 12s
CI / Tests (Python 3.14) (push) Successful in 10s
CI / Type Checking (push) Successful in 10s
CI / Spelling (push) Successful in 5s
2026-04-08 12:06:05 -04:00
LogalDeveloper
ea91c38736
Added polls module.
CI / Formatting (push) Successful in 6s
CI / Linting (push) Successful in 6s
CI / Tests (Python 3.12) (push) Successful in 12s
CI / Tests (Python 3.13) (push) Successful in 12s
CI / Tests (Python 3.14) (push) Successful in 10s
CI / Type Checking (push) Successful in 9s
CI / Spelling (push) Successful in 5s
2026-04-08 12:02:07 -04:00
LogalDeveloper
48e3bf2b07
Applied Ruff formatting fixes to storage module and tests.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 12s
CI / Tests (Python 3.13) (push) Successful in 12s
CI / Tests (Python 3.14) (push) Successful in 9s
CI / Type Checking (push) Successful in 10s
CI / Spelling (push) Successful in 5s
2026-04-06 19:52:16 -04:00
LogalDeveloper
f6c7340fa3
Fixed Server header not being set on streaming responses.
CI / Formatting (push) Failing after 22s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 12s
CI / Tests (Python 3.13) (push) Successful in 12s
CI / Tests (Python 3.14) (push) Successful in 9s
CI / Type Checking (push) Successful in 9s
CI / Spelling (push) Successful in 5s
2026-04-06 16:18:47 -04:00
LogalDeveloper
100cbc3bef
Switched JSON serialization to orjson for faster encoding and decoding.
CI / Formatting (push) Failing after 4s
CI / Linting (push) Successful in 4s
CI / Tests (Python 3.12) (push) Successful in 12s
CI / Tests (Python 3.13) (push) Successful in 12s
CI / Tests (Python 3.14) (push) Successful in 10s
CI / Type Checking (push) Successful in 9s
CI / Spelling (push) Successful in 5s
Audit / Dependencies (push) Successful in 7s
2026-04-05 10:19:07 -04:00
LogalDeveloper
2d2214c671
Switched event loop to uvloop for improved async performance.
Audit / Dependencies (push) Successful in 7s
CI / Formatting (push) Failing after 4s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 12s
CI / Tests (Python 3.13) (push) Successful in 12s
CI / Tests (Python 3.14) (push) Successful in 9s
CI / Type Checking (push) Successful in 10s
CI / Spelling (push) Successful in 4s
2026-04-05 10:04:28 -04:00
LogalDeveloper
7957ceabfa
Added in-memory database support to storage and switched tests to use it.
CI / Formatting (push) Failing after 32s
CI / Linting (push) Successful in 34s
CI / Tests (Python 3.12) (push) Successful in 39s
CI / Tests (Python 3.13) (push) Successful in 26s
CI / Tests (Python 3.14) (push) Successful in 16s
CI / Type Checking (push) Successful in 21s
CI / Spelling (push) Successful in 18s
2026-04-04 18:48:27 -04:00
LogalDeveloper
15e9cd6131
Fixed connection leak in storage when task cancellation interrupts PRAGMA setup.
CI / Formatting (push) Failing after 19s
CI / Linting (push) Successful in 17s
CI / Tests (Python 3.12) (push) Failing after 51s
CI / Tests (Python 3.13) (push) Successful in 34s
CI / Tests (Python 3.14) (push) Failing after 46s
CI / Type Checking (push) Successful in 22s
CI / Spelling (push) Successful in 20s
2026-04-04 18:44:25 -04:00
LogalDeveloper
09af238c8b
Simplified storage layer from connection pool to single lazy connection.
CI / Formatting (push) Failing after 19s
CI / Linting (push) Successful in 18s
CI / Tests (Python 3.13) (push) Has been cancelled
CI / Tests (Python 3.14) (push) Has been cancelled
CI / Type Checking (push) Has been cancelled
CI / Spelling (push) Has been cancelled
CI / Tests (Python 3.12) (push) Has been cancelled
2026-04-04 18:39:25 -04:00
LogalDeveloper
cb1573706e
Attempted fix at storage connection leak on task cancellation.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 50s
CI / Tests (Python 3.13) (push) Successful in 29s
CI / Tests (Python 3.14) (push) Successful in 35s
CI / Type Checking (push) Successful in 21s
CI / Spelling (push) Successful in 17s
2026-04-04 17:56:50 -04:00
LogalDeveloper
7e44496baa
Added route handler draining during shutdown to promptly close streaming connections.
CI / Formatting (push) Successful in 6s
CI / Linting (push) Successful in 4s
CI / Tests (Python 3.12) (push) Successful in 20s
CI / Tests (Python 3.13) (push) Successful in 53s
CI / Type Checking (push) Has been cancelled
CI / Spelling (push) Has been cancelled
CI / Tests (Python 3.14) (push) Has been cancelled
2026-04-04 10:53:36 -04:00
LogalDeveloper
5425241f74
Added emoji wall module to provide OBS overlay for floating chat emojis and emotes.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 9s
CI / Tests (Python 3.12) (push) Successful in 38s
CI / Tests (Python 3.13) (push) Successful in 22s
CI / Tests (Python 3.14) (push) Successful in 18s
CI / Type Checking (push) Successful in 10s
CI / Spelling (push) Successful in 5s
2026-03-31 11:52:25 -04:00
LogalDeveloper
7a253985c4
Updated pygments indirect dependency.
Audit / Dependencies (push) Successful in 12s
CI / Formatting (push) Successful in 6s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 20s
CI / Tests (Python 3.13) (push) Successful in 19s
CI / Tests (Python 3.14) (push) Successful in 39s
CI / Type Checking (push) Successful in 11s
CI / Spelling (push) Successful in 7s
2026-03-30 10:28:27 -04:00
LogalDeveloper
ebbd8ddd10
Updated dependencies.
Audit / Dependencies (push) Failing after 8s
CI / Formatting (push) Successful in 6s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 20s
CI / Tests (Python 3.13) (push) Successful in 21s
CI / Tests (Python 3.14) (push) Successful in 17s
CI / Type Checking (push) Successful in 10s
CI / Spelling (push) Successful in 5s
2026-03-30 10:25:59 -04:00
LogalDeveloper
bb69285511
Switched from PyYAML to ruamel.yaml for comment-preserving config and improved example config layout.
CI / Formatting (push) Successful in 4s
CI / Linting (push) Successful in 8s
CI / Tests (Python 3.12) (push) Failing after 45s
CI / Tests (Python 3.13) (push) Successful in 38s
CI / Tests (Python 3.14) (push) Successful in 17s
CI / Type Checking (push) Successful in 9s
CI / Spelling (push) Successful in 5s
2026-03-30 10:22:13 -04:00
LogalDeveloper
2face83f65
Fixed command parsing to use raw_body and added default HTML escaping to outbound chat messages.
...
CI / Formatting (push) Successful in 4s
CI / Linting (push) Successful in 4s
CI / Tests (Python 3.12) (push) Successful in 21s
CI / Tests (Python 3.13) (push) Successful in 20s
CI / Tests (Python 3.14) (push) Successful in 17s
CI / Type Checking (push) Successful in 8s
CI / Spelling (push) Successful in 4s
Audit / Dependencies (push) Failing after 7s
I got bamboozled. The command system was originally built on the `body` field in Owncast's webhook payloads which contains rendered HTML rather than raw user input like I expected. Switching to `rawBody` makes more sense in my opinion, but doing so introduces a new risk: modules like custom commands can echo user input back to chat via placeholders like `$(1)` and, as it turns out, Owncast does not sanitize messages from integrations the way it does for regular users. This means unsanitized HTML could be injected into chat through the bot if the body was blindly swapped for the raw body.
All OwncastClient send methods now HTML-escape outgoing message bodies by default using markupsafe, with an `unsanitized=True` keyword-only opt-out for modules that intentionally need to send raw HTML.
2026-03-26 19:42:49 -04:00
LogalDeveloper
fa23ae982d
Fixed mypy error in route registry test caused by union return type unpacking.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 20s
CI / Tests (Python 3.13) (push) Successful in 19s
CI / Tests (Python 3.14) (push) Successful in 30s
CI / Type Checking (push) Successful in 11s
CI / Spelling (push) Successful in 7s
2026-03-26 17:27:03 -04:00
LogalDeveloper
4ff35fdf6b
Added unit tests for route API and route handling infrastructure.
CI / Formatting (push) Successful in 4s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 19s
CI / Tests (Python 3.13) (push) Successful in 19s
CI / Tests (Python 3.14) (push) Successful in 26s
CI / Type Checking (push) Failing after 32s
CI / Spelling (push) Successful in 29s
2026-03-26 17:18:00 -04:00
LogalDeveloper
20272fedfd
Added streaming flag to bypass handler timeout for long-lived routes.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 4s
CI / Tests (Python 3.12) (push) Successful in 19s
CI / Tests (Python 3.13) (push) Successful in 19s
CI / Tests (Python 3.14) (push) Successful in 15s
CI / Type Checking (push) Successful in 8s
CI / Spelling (push) Successful in 4s
2026-03-26 16:11:32 -04:00
LogalDeveloper
24269df31c
Updated dependencies.
Audit / Dependencies (push) Failing after 24s
CI / Formatting (push) Successful in 13s
CI / Linting (push) Successful in 9s
CI / Tests (Python 3.12) (push) Successful in 32s
CI / Tests (Python 3.13) (push) Successful in 24s
CI / Tests (Python 3.14) (push) Successful in 33s
CI / Type Checking (push) Successful in 11s
CI / Spelling (push) Successful in 8s
2026-03-26 13:35:56 -04:00
LogalDeveloper
8a45ba1f91
Made dataclasses frozen and slotted for immutability and lower memory usage.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 20s
CI / Tests (Python 3.13) (push) Successful in 22s
CI / Tests (Python 3.14) (push) Successful in 50s
CI / Type Checking (push) Successful in 25s
CI / Spelling (push) Has been cancelled
2026-03-26 13:33:20 -04:00
LogalDeveloper
0ddffe5e09
Applied idiomatic Python improvements and micro-optimizations across registries and API layer.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 20s
CI / Tests (Python 3.13) (push) Successful in 19s
CI / Tests (Python 3.14) (push) Successful in 16s
CI / Type Checking (push) Successful in 9s
CI / Spelling (push) Successful in 5s
2026-03-26 12:46:50 -04:00
LogalDeveloper
3cf93da28d
Refactored HLS cache to use set-based segment tracking and ffmpeg concat protocol.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 20s
CI / Tests (Python 3.13) (push) Successful in 19s
CI / Tests (Python 3.14) (push) Successful in 17s
CI / Type Checking (push) Successful in 9s
CI / Spelling (push) Successful in 7s
2026-03-26 10:57:51 -04:00
LogalDeveloper
47605c0d9b
Changed clip viewing URL prefix from "/clip" to "/view".
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 19s
CI / Tests (Python 3.13) (push) Successful in 19s
CI / Tests (Python 3.14) (push) Successful in 16s
CI / Type Checking (push) Successful in 9s
CI / Spelling (push) Successful in 5s
Audit / Dependencies (push) Successful in 24s
2026-03-09 20:27:31 -04:00
LogalDeveloper
e87bff8d14
Added chat announcement when a new clip is created.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 20s
CI / Tests (Python 3.13) (push) Successful in 19s
CI / Tests (Python 3.14) (push) Successful in 17s
CI / Type Checking (push) Successful in 9s
CI / Spelling (push) Successful in 5s
2026-03-09 20:19:58 -04:00
LogalDeveloper
3186e6e392
Refactored storage layer to use per-operation auto-commit with explicit transaction API.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 20s
CI / Tests (Python 3.13) (push) Successful in 19s
CI / Tests (Python 3.14) (push) Successful in 17s
CI / Type Checking (push) Successful in 9s
CI / Spelling (push) Successful in 6s
2026-03-09 20:03:38 -04:00
LogalDeveloper
87b037065f
Removed .dockerignore to fix Docker image reporting incorrect version.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 19s
CI / Tests (Python 3.13) (push) Successful in 19s
CI / Tests (Python 3.14) (push) Successful in 17s
CI / Type Checking (push) Successful in 9s
CI / Spelling (push) Successful in 5s
CD / Publish Package (push) Successful in 6s
CD / Publish Image (push) Successful in 55s
Audit / Dependencies (push) Successful in 8s
v1.1.1
2026-03-05 09:16:27 -05:00
LogalDeveloper
05daa6c218
Added Docker image support with CD pipeline for PyPI and container registry publishing.
CI / Formatting (push) Successful in 6s
CI / Linting (push) Successful in 4s
CI / Tests (Python 3.12) (push) Successful in 19s
CI / Tests (Python 3.13) (push) Successful in 20s
CI / Tests (Python 3.14) (push) Successful in 17s
CI / Type Checking (push) Successful in 8s
CI / Spelling (push) Successful in 5s
CD / Publish Package (push) Successful in 23s
CD / Publish Image (push) Successful in 55s
v1.1.0
2026-03-04 16:26:02 -05:00
LogalDeveloper
7bb1c67735
Adjusted naming of dependency audit workflow.
CI / Formatting (push) Successful in 14s
CI / Linting (push) Successful in 14s
CI / Tests (Python 3.12) (push) Successful in 29s
CI / Tests (Python 3.13) (push) Successful in 28s
CI / Tests (Python 3.14) (push) Successful in 27s
CI / Type Checking (push) Successful in 24s
CI / Spelling (push) Successful in 15s
2026-03-04 08:54:09 -05:00
LogalDeveloper
84b057a400
Added clips module.
Dependency Audit / Dependency Audit (push) Successful in 18s
CI / Formatting (push) Successful in 14s
CI / Linting (push) Successful in 15s
CI / Tests (Python 3.12) (push) Successful in 29s
CI / Tests (Python 3.13) (push) Successful in 28s
CI / Tests (Python 3.14) (push) Successful in 27s
CI / Type Checking (push) Successful in 25s
CI / Spelling (push) Successful in 15s
2026-03-03 19:29:23 -05:00
LogalDeveloper
4de187ba6c
Fixed test helpers to pass new templates parameter to ModuleContext.
CI / Formatting (push) Successful in 13s
CI / Linting (push) Successful in 14s
CI / Tests (Python 3.12) (push) Successful in 27s
CI / Tests (Python 3.13) (push) Successful in 26s
CI / Tests (Python 3.14) (push) Successful in 27s
CI / Type Checking (push) Successful in 24s
CI / Spelling (push) Successful in 13s
Dependency Audit / Dependency Audit (push) Successful in 18s
2026-02-27 10:15:03 -05:00
LogalDeveloper
410c0cd791
Added centralized templating system with static asset serving.
CI / Formatting (push) Successful in 13s
CI / Linting (push) Successful in 14s
CI / Tests (Python 3.12) (push) Failing after 29s
CI / Tests (Python 3.13) (push) Failing after 29s
CI / Tests (Python 3.14) (push) Failing after 26s
CI / Type Checking (push) Failing after 25s
CI / Spelling (push) Successful in 13s
2026-02-27 10:05:52 -05:00
LogalDeveloper
4e2c8b4d67
Refactored timers module to use ctx.state and fixed new timers never firing.
CI / Formatting (push) Successful in 13s
CI / Linting (push) Successful in 14s
CI / Tests (Python 3.12) (push) Successful in 27s
CI / Tests (Python 3.13) (push) Successful in 26s
CI / Tests (Python 3.14) (push) Successful in 25s
CI / Type Checking (push) Successful in 24s
CI / Spelling (push) Successful in 14s
2026-02-26 13:18:47 -05:00
LogalDeveloper
78722e73a5
Added multi-handler support to RouteRegistry for same-path method-based dispatch.
CI / Formatting (push) Successful in 1m17s
CI / Linting (push) Successful in 11s
CI / Tests (Python 3.12) (push) Successful in 24s
CI / Tests (Python 3.13) (push) Successful in 23s
CI / Tests (Python 3.14) (push) Successful in 22s
CI / Type Checking (push) Successful in 20s
CI / Spelling (push) Successful in 11s
2026-02-23 18:58:43 -05:00
LogalDeveloper
3c62b8a1e1
Added per-instance state dict to ModuleContext for multi-instance isolation.
CI / Formatting (push) Successful in 12s
CI / Linting (push) Successful in 11s
CI / Tests (Python 3.12) (push) Successful in 25s
CI / Tests (Python 3.13) (push) Successful in 25s
CI / Tests (Python 3.14) (push) Successful in 23s
CI / Type Checking (push) Successful in 22s
CI / Spelling (push) Successful in 11s
Dependency Audit / Dependency Audit (push) Successful in 17s
2026-02-22 15:03:47 -05:00
LogalDeveloper
525ead5ba8
Added codespell CI job and fixed existing spelling issues.
Dependency Audit / Dependency Audit (push) Successful in 15s
CI / Formatting (push) Successful in 12s
CI / Linting (push) Successful in 12s
CI / Tests (Python 3.12) (push) Successful in 25s
CI / Tests (Python 3.13) (push) Successful in 24s
CI / Tests (Python 3.14) (push) Successful in 22s
CI / Type Checking (push) Successful in 24s
CI / Spelling (push) Successful in 13s
2026-02-19 14:50:24 -05:00
LogalDeveloper
12c0394cf9
Added additional Ruff rule sets and fixed all violations.
CI / Formatting (push) Successful in 11s
CI / Linting (push) Successful in 13s
CI / Tests (Python 3.12) (push) Successful in 25s
CI / Tests (Python 3.13) (push) Successful in 25s
CI / Tests (Python 3.14) (push) Successful in 24s
CI / Type Checking (push) Successful in 25s
2026-02-19 14:15:08 -05:00
LogalDeveloper
ca4adbcebf
Added pydocstyle (D) rules to Ruff and fixed all violations.
CI / Formatting (push) Successful in 12s
CI / Linting (push) Successful in 13s
CI / Tests (Python 3.12) (push) Successful in 26s
CI / Tests (Python 3.13) (push) Successful in 25s
CI / Tests (Python 3.14) (push) Successful in 25s
CI / Type Checking (push) Successful in 26s
2026-02-19 11:47:47 -05:00
LogalDeveloper
33dd49e20a
Lowered minimum Python version to 3.12 and added CI matrix for testing 3.12/3.13/3.14.
Dependency Audit / Dependency Audit (push) Successful in 17s
CI / Formatting (push) Successful in 14s
CI / Linting (push) Successful in 13s
CI / Tests (Python 3.12) (push) Successful in 28s
CI / Tests (Python 3.13) (push) Successful in 26s
CI / Tests (Python 3.14) (push) Successful in 24s
CI / Type Checking (push) Successful in 27s
2026-02-19 11:31:11 -05:00
LogalDeveloper
a276e35fbe
Added missing pip-audit dev dependency and audit workflow documentation.
Dependency Audit / Dependency Audit (push) Successful in 17s
CI / Formatting (push) Successful in 14s
CI / Linting (push) Successful in 13s
CI / Tests (push) Successful in 23s
CI / Type Checking (push) Successful in 25s
2026-02-19 10:47:08 -05:00
LogalDeveloper
0f70a0c602
Added pip-audit CI workflow for dependency vulnerability scanning.
CI / Formatting (push) Successful in 12s
CI / Linting (push) Successful in 14s
CI / Tests (push) Successful in 24s
CI / Type Checking (push) Successful in 26s
2026-02-19 10:29:05 -05:00
LogalDeveloper
bc811cbc66
Added unit tests for command API and command handling infrastructure.
CI / Formatting (push) Successful in 15s
CI / Linting (push) Successful in 16s
CI / Tests (push) Successful in 27s
CI / Type Checking (push) Successful in 30s
2026-02-18 19:57:04 -05:00
LogalDeveloper
297e2a8072
Added AGENTS.md project instruction file.
CI / Formatting (push) Successful in 16s
CI / Linting (push) Successful in 14s
CI / Tests (push) Successful in 26s
CI / Type Checking (push) Successful in 30s
2026-02-18 19:55:54 -05:00
LogalDeveloper
334730f3aa
Added unit tests for event registration, dispatching, and context infrastructure.
...
CI / Formatting (push) Successful in 12s
CI / Linting (push) Successful in 13s
CI / Tests (push) Successful in 22s
CI / Type Checking (push) Successful in 25s
- EventRegistry.get_all() now deep-copies handler lists so callers cannot mutate internal state.
2026-02-18 19:16:26 -05:00
LogalDeveloper
a7a7a24773
Added unit tests for event types, timestamp parsing, and event logging.
CI / Formatting (push) Successful in 14s
CI / Linting (push) Successful in 16s
CI / Tests (push) Successful in 23s
CI / Type Checking (push) Successful in 27s
2026-02-18 18:36:02 -05:00
LogalDeveloper
a415d5b7e3
Added editcounter management command for setting and adjusting named counters.
CI / Formatting (push) Successful in 11s
CI / Linting (push) Successful in 11s
CI / Tests (push) Successful in 20s
CI / Type Checking (push) Successful in 21s
2026-02-18 11:26:01 -05:00
LogalDeveloper
986100f544
Consolidated four CI workflow files into a single multi-job workflow
CI / Formatting (push) Successful in 11s
CI / Linting (push) Successful in 11s
CI / Tests (push) Successful in 21s
CI / Type Checking (push) Successful in 21s
2026-02-17 14:21:17 -05:00
LogalDeveloper
8eaa1959df
Replaced MockStorage with real ModuleStorage and added storage test suite.
Format / ruff (push) Successful in 11s
Lint / ruff (push) Successful in 11s
Unit Tests / pytest (push) Successful in 19s
Type Check / mypy (push) Successful in 20s
2026-02-17 13:59:21 -05:00