Commit Graph
26 Commits
Author SHA1 Message Date
LogalDeveloper 078e02d1c0 Refactored Owncast clients to share a private HTTP transport helper instead of inheritance.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 6s
CI / Tests (Python 3.12) (push) Successful in 14s
CI / Tests (Python 3.13) (push) Successful in 14s
CI / Tests (Python 3.14) (push) Successful in 13s
CI / Type Checking (push) Successful in 11s
CI / Spelling (push) Successful in 9s
2026-04-22 11:17:23 -04:00
LogalDeveloper 9c86b8bd75 Fixed ModuleStorage commit race by serializing concurrent operations with an asyncio lock.
CI / Formatting (push) Failing after 6s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 14s
CI / Tests (Python 3.13) (push) Successful in 14s
CI / Tests (Python 3.14) (push) Successful in 12s
CI / Type Checking (push) Successful in 9s
CI / Spelling (push) Successful in 5s
2026-04-17 14:04:15 -04:00
LogalDeveloper 0ff3c7a6b4 Enabled all Ruff lint rules and resolved findings with justified inline suppressions.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 14s
CI / Tests (Python 3.13) (push) Successful in 14s
CI / Tests (Python 3.14) (push) Successful in 11s
CI / Type Checking (push) Successful in 10s
CI / Spelling (push) Successful in 5s
2026-04-13 15:31:06 -04:00
LogalDeveloper 0b28ec39d0 Switched HTTP client JSON serialization to orjson for outgoing requests.
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 9s
CI / Spelling (push) Successful in 5s
2026-04-10 11:00:53 -04:00
LogalDeveloper 0d718b3ba0 Optimized webhook event dispatch with pre-built string lookup table.
CI / Formatting (push) Successful in 5s
CI / Linting (push) Successful in 5s
CI / Tests (Python 3.12) (push) Successful in 14s
CI / Tests (Python 3.13) (push) Successful in 13s
CI / Tests (Python 3.14) (push) Successful in 11s
CI / Type Checking (push) Successful in 10s
CI / Spelling (push) Successful in 5s
2026-04-10 10:55:23 -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 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 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 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 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 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 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 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 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 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 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
LogalDeveloper cb04899d6f Fixed ruff and mypy lint issues.
Format / ruff (push) Successful in 15s
Lint / ruff (push) Successful in 15s
Unit Tests / pytest (push) Successful in 17s
Type Check / mypy (push) Successful in 23s
2026-02-16 09:40:18 -05:00
LogalDeveloper d55bc2a762 Allowed module routes to return static file responses. 2026-02-15 09:15:01 -05:00
LogalDeveloper 067b7c5a0a Initial commit. 2026-02-14 15:20:52 -05:00