Commit Graph
100 Commits
Author SHA1 Message Date
Gabe Kangas 519d239a87 chore(ci): post a comment if the PR template is invalid 2026-04-03 09:43:16 -07:00
Gabe KangasandGitHub e738156fd7 Sanitize actor displaynames (#4864)
* Sanitize AP name possible XSS

* Pull out sanitizing method + remove rendering markdown for AP chat messages

* Add tests around AP message rendering and usernames

* Add sanitization tests to AP integration test
2026-03-31 20:33:05 -07:00
Gabe Kangas a2981903c2 Move activitypub automated test to run under a container 2026-03-30 12:32:04 -07:00
Gabe Kangas 5c9b2333f9 fix(i18n): only submit translations from the develop branch, not feature branches 2026-03-27 15:53:36 -07:00
Gabe Kangas 77c7c08587 fix(api): fix for incorrect error handling of favicon uploads 2026-03-27 15:34:09 -07:00
Gabe Kangas 3e6f6de032 chore(deps): also ignore dependabot 2026-03-27 14:24:38 -07:00
Gabe Kangas c85529370b chore(deps): do not run code lint/format on renovate PRs and do not run linter during builds 2026-03-27 13:25:32 -07:00
Gabe Kangas 73206ddf27 fix: fix linter errors 2026-03-24 11:12:53 -07:00
Gabe Kangas 999cc2af7e chore: add a AGENTS.md so people using AI tooling get a more structured experience 2026-02-10 14:52:37 -08:00
Gabe Kangas 213ba5fd7e chore: add a npm run check to make it easier to run all the web lint/fmt/etc locally 2026-02-04 13:42:19 -08:00
Gabe Kangas f03f7a43dc fix: fix workflow 2026-02-04 11:50:30 -08:00
Gabe Kangas 133b661db9 chore(ci): skip the PR requirement for bot accounts 2026-02-02 19:26:43 -08:00
Gabe Kangas 551d2f668a chore(ci): update PR template and add workflow to validate template is filled out 2026-02-02 18:47:10 -08:00
Gabe KangasandGitHub 5a4af3a294 ActivityPub background actor validation, update and cleanup process (#4765)
* feat(ap): add validation+update+cleanup AP actor job

* fix(test): use time.Time instead of sql.NullTime

* feat(test): add integration test for AP follower cleanup/validation job
2026-02-02 17:34:25 -08:00
Gabe Kangas 811a766da7 chore(docs): update FEDERATION.md 2026-02-02 10:58:07 -08:00
Gabe Kangas 768203e032 chore(doc): add FEDERATION.md 2026-02-02 10:50:25 -08:00
Gabe Kangas 8f4ddfb370 fix(i18n): fix missing translation 2026-01-29 11:48:03 -08:00
605c4eed00 Fix for initial client status and config not hydrating (#4772)
* fix(js): fix server hydration not working. will speed up initial load time

* fix: update lockfile

* fix(js): fix for malformed or invalid JSON in hydration

* chore: update extracted translations

---------

Co-authored-by: Owncast default web localizations <owncast@owncast.online>
2026-01-28 18:12:25 -08:00
6abaf20f2b feat: add support for custom favicons (#4770)
* feat: add support for custom favicons

* Commit updated API documentation

* chore(i18n): add localization of text

* fix(js): regenerate package lock file

* chore(test): add favicon test

* fix: max size not respected

* Commit updated API documentation

* fix: move favicon.ico to the static dir

* fix: fix tests

* fix: remove hard-coded content-type of icon

* chore: update extracted translations

* feat(admin): add support for resetting to default icon

* chore: use a higher res default favicon

* Commit updated API documentation

---------

Co-authored-by: Owncast <owncast@owncast.online>
2026-01-28 18:07:19 -08:00
93b482871f Require authentication to participate in chat (#4762)
* feat(chat): require authentication to participate in chat

* fix: it's pretty much impossible to bypass the auth requirement, addressing review feedback anyway

* feat(chat): render chat text input as disabled if chat auth is required

* Commit updated API documentation

---------

Co-authored-by: Owncast <owncast@owncast.online>
2026-01-28 11:49:07 -08:00
Gabe Kangas dfc3478197 fix(ap): lock db and return error in createFollow 2026-01-22 16:24:58 -08:00
Gabe KangasandGitHub de6468ad89 Add shared inbox support for ActivityPub delivery (#4755)
* feat(ap): add support for shared inboxes to reduce outbound load

* feat(db): refactor ap followers db into followers repository

* fix(ap): use the updated activity library to pull out the shared inbox endpoint

* chore(deps): point at updated build of owncast/activity

* fix(ap): typeless endpoints

* feat(test): update ActivityPub test to support shared inboxes

* chore(test): remove unused variable

* fix: feedback from review. Guard against SSRF/non-HTTPS/local and handle transaction errors
2026-01-22 15:33:22 -08:00
Gabe Kangas b18e773fa7 chore(web): remove unused scss file 2026-01-21 23:50:37 -08:00
Gabe KangasandGitHub b0fc8260d9 ActivityPub integration test (#4761)
* feat(test): add an end-to-end ActivityPub integration test

* chore(ci): run AP integration test under CI

* feat(test): use caddy instead of home built reverse proxy

* fix(test): fix linter warnings

* chore(test): don't commit test self-signed certs I suppose

* chore(test): more shellcheck linter warnings

* fix: fix test setup under CI
2026-01-21 22:33:55 -08:00
23ce430e5b A set of additional outbound ActivityPub outbound delivery optimizations (#4750)
* fix: remove optimistic UI updates in external actions to prevent race condition (#4711)

When adding/deleting external actions, the UI would sometimes show
duplicated or cloned rows due to a race condition between:
1. The optimistic setActions() call updating local state
2. The save() callback updating externalActions in context
3. The useEffect syncing actions from externalActions

This fix removes the optimistic updates and lets the server response
be the single source of truth, updating the UI only after the context
is updated via the save() success callback.

Fixes #4347

* fix(ap): additional outbound ActivityPub delivery optimizations

- check circuit breaker before signing any messages or any other work
- create outbound messages in batches and not all at once
- add small delay between outbound messages to spread it out a bit

* fix(ap): increase ap queue buffer size, reduce outbound http client timeout

* fix(ap): handle malformed inbox URIs

* fix(ap): batch outbox based on work performed not index

* feat(ap): add retryable activitypub outbound delivery client

---------

Co-authored-by: John Costa <jcosta@execonline.com>
2026-01-21 21:00:18 -08:00
Gabe Kangas 9f30aa37ce chore(ap): point to updated activity library fork 2026-01-20 21:27:40 -08:00
Gabe KangasandGitHub a82efb0e9a Add a layer of safety around required ActivityPub Actor fields (#4703)
* fix(ap): add safe constructors, getters, and validators to ActivityPub actors to address #4701

* chore: replace nil check with the new Validate() method

* chore(test): added test to verify the values extracted from actors

* fix: return the specific error type + test for it

* fix(ap): add recovery for each AP inbox worker for a worst case scenario

* fix(ap): add additional safe accessor methods to other AP entities other than actors

* chore(tests): add tests for the new safe accessors

* fix(ap): handle empty public keys in AP actors
2026-01-17 14:25:06 -08:00
Gabe KangasandGitHub 0ff73d5e1e Fix pwd no longer being included in ffmpeg binary search (#4749)
* fix(go): fix pwd no longer being included in ffmpeg binary search. Closes #4747

* fix: updates per feedback
2026-01-17 14:23:39 -08:00
Gabe Kangas 93868574a5 chore(ci): go mod tidy 2026-01-17 13:45:45 -08:00
Gabe Kangas 04b9ae755e Update dynamic storybook templates to reflect new story requirements 2026-01-13 16:45:53 -08:00
Gabe KangasandGitHub d80a7246e1 Split out tools from main go.mod into tools/ (#4734)
* Split out tools from main go.mod into tools/ and create Makefile to support running them manually

* chore(ci): linter error

* fix(ci): fix the pre-commit and pre-push hooks
2026-01-13 16:17:35 -08:00
Gabe KangasandGitHub a272d8fbe3 Fix linter errors (#4733) 2026-01-13 15:25:53 -08:00
Gabe Kangas 12dc10c901 chore: run nightly container build with -P flag to allow testing container at build time 2026-01-11 18:59:31 -08:00
Gabe Kangas 5438ab8ea0 chore(js): fix js formatting 2026-01-10 15:37:26 -08:00
Gabe Kangas f93543fac9 chore(build): add sanity checks to the build process to verify binaries run on architecure 2026-01-10 15:36:12 -08:00
Gabe Kangas 53a6166d4b chore(js): fix js formatting 2026-01-10 15:35:30 -08:00
Gabe Kangas ee3a0d486f fix(ci): pull in the upstream base repo branch for PRs 2026-01-02 19:54:17 -08:00
Gabe Kangas 2b343e9f81 chore: go mod tidy + add standalone linter step to lefthook 2025-12-24 14:28:32 -08:00
Gabe Kangas e12ea37f7e fix: fix url in test shell script 2025-12-24 09:29:36 -08:00
Gabe Kangas fe1935ea0f fix: remove unused var in shell script 2025-12-24 09:18:26 -08:00
Gabe Kangas e62b4ea83d chore(deps): bump lefthook version 2025-12-24 09:08:32 -08:00
Gabe Kangas 30a988c6a7 chore: pull ffmpeg from our own build repo 2025-12-24 09:07:52 -08:00
Gabe Kangas db0aaf66a1 chore: bump version number 2025-12-23 15:16:55 -08:00
Gabe Kangas 3b25e295e8 Missing visible param not being passed to api request 2025-12-23 15:12:25 -08:00
Gabe KangasandGitHub 3e15e29c52 Bump OpenAPI spec version 2025-12-10 14:14:10 -08:00
fea4339e94 Notifications repository + service (#4565)
* Notifications repository

* feat: notifications repo + service

* fix: remove use of notifications/notifications.go

* Update persistence/notificationsrepository/notificationsrepository.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix: remove unused method

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-21 15:34:01 -08:00
Gabe Kangas 7e0a42dd5f fix(i18n): update existing pr/branch on workflow run 2025-11-20 19:39:12 -08:00
Gabe Kangas 8b4efc1c23 chore(fix): fix crowdin action error 2025-11-20 19:27:35 -08:00
Gabe Kangas 4a143bf27e chore(ci): split up upload/download translation jobs 2025-11-20 19:19:15 -08:00
Gabe Kangas 5203ffc303 chore(ci): use unique translation PR branch name when creating PRs 2025-11-20 17:51:22 -08:00
Gabe Kangas e4f406acd8 chore(ci): bump create-pull-request action version 2025-11-20 15:58:53 -08:00
Gabe Kangas 77099eb7df chore(ci): stop creating non-translation related i18n PRs 2025-11-20 15:57:05 -08:00
Gabe Kangas 92f435f813 chore(ci): point ci image at our own build 2025-10-30 17:33:52 -07:00
Gabe KangasandGitHub b35d7b06a2 Bump golangci-lint version in workflow 2025-10-24 16:46:50 -07:00
Gabe KangasandGitHub 38932e2a4f Bump Go version 1.24 -> 1.25.3 2025-10-24 16:38:41 -07:00
Gabe Kangas 3a756201ea chore(css): run stylelint 2025-10-24 00:15:12 -07:00
Gabe Kangas 03ad1fad21 chore(go): bump to go version 1.25.3 2025-10-24 00:08:50 -07:00
Gabe Kangas 4b9845c7c8 Format sass files 2025-10-24 00:08:29 -07:00
Gabe Kangas c7d78f4224 Use updated sass import syntax 2025-10-23 23:27:10 -07:00
Gabe KangasandGitHub cc9286416c Update storybook to v9 (#4645)
* chore: Update storybook to v9

* Pin next-export-i18n + remove outdated mock library

* Replace old mocking library with MSW

* Resolve knip unused code warnings
2025-10-20 21:26:32 -07:00
Gabe Kangas 363a60a77d chore(tests): update test/ci tooling to work better with go -tool support 2025-10-10 14:25:51 -07:00
Gabe Kangas a3915bd89d chore(ci): more updating CI to run more efficient 2025-10-07 13:11:52 -07:00
Gabe Kangas 7800afd95a chore(ci): update CI to run more less often and more efficient 2025-10-06 20:18:07 -07:00
Gabe KangasandGitHub 0b781eb716 fix(activitypub): fixes #4372 where excessive AP resource use disrupts video delivery (#4552) 2025-09-24 17:53:05 -07:00
Gabe Kangas 73da623959 fix: fix some incorrect formatting in json 2025-09-16 00:19:47 -07:00
8eb8bdc18b Stop using empty/whitespace as chat display names (#4553)
* fix(chat): fixes #4522 to stop people from setting invalid display names

* fix(chat): also guard against non-ascii whitespace like non breaking space

* Update web/utils/displayNameValidation.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix: handle additional whitespace

* Update web/utils/displayNameValidation.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Javascript formatting autofixes

* fix: deduplicate running of validation

* fix: fix error with useMemo

* Update web/utils/displayNameValidation.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update web/utils/displayNameValidation.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Javascript formatting autofixes

* fix: fix component rendering issue

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Owncast <owncast@owncast.online>
2025-09-15 13:37:39 -07:00
Gabe Kangas ef1e24356c chore(ci): update golangci-lint reference and lefthook config 2025-09-14 17:32:28 -07:00
e66b0444ad Increases the max bandwidth selectable in the admin UI (#4550)
* feat(admin): Closes #1462. Increases the max bandwidth selectable in the UI + localization for the strings

* chore: update extracted translations

* Javascript formatting autofixes

---------

Co-authored-by: Owncast default web localizations <owncast@owncast.online>
2025-09-14 15:41:58 -07:00
Gabe KangasandGitHub 8568f43310 fix(js): fixes #4452 action buttons not showing externally while mobile (#4547) 2025-09-14 14:28:57 -07:00
Gabe Kangas c12ef0ec57 Add aarch64-musl compiler to our infra downloads 2025-09-02 21:56:59 -07:00
Gabe Kangas 481de398fc fix(css): format 2025-08-07 18:55:21 -07:00
Gabe Kangas b1ba1bdf0f fix(css): fix sass import path 2025-08-07 18:49:18 -07:00
074bff32c1 Update directory.owncast.online -> owncast.directory (#4485)
* chore: change directory.owncast.online -> owncast.directory. For #4483

* chore: update extracted translations

---------

Co-authored-by: Owncast default web localizations <owncast@owncast.online>
2025-08-02 16:49:11 -07:00
Gabe KangasandGitHub 104c1ace39 Increase max number of PRs to open 2025-07-30 16:09:59 -07:00
Gabe KangasandGitHub b2324a1f5b Try to fix renovate not auto-merging 2025-07-30 15:54:12 -07:00
Gabe Kangas 828bddb4f4 fix(tests): fix i18n tests 2025-07-13 18:58:55 -07:00
Gabe Kangas 19bb9cdacd chore: renmae file 2025-07-11 08:30:19 -07:00
Gabe KangasandGitHub f18b1d9e05 Update standard-pull-request.md 2025-07-11 08:23:47 -07:00
Gabe KangasandGitHub a406d2c7d4 Update copilot-instructions.md 2025-07-10 14:24:07 -07:00
Gabe KangasandGitHub 0766c6acf4 Updated copilot instructions 2025-07-08 16:24:50 -07:00
Gabe KangasandGitHub 1310dc1b80 Add horizontal line to admin sidebar (#4417)
* feat(admin): add horizontal line to sidebar. Closes #4098

* fix: lint css file

* fix: tweak css

* chore: go mod tidy

* fix: another css fix
2025-07-04 19:34:57 -07:00
Gabe Kangas 7515758b41 chore: update copilot instructions 2025-07-04 17:20:06 -07:00
Gabe Kangas a5d352dfab chore: update copilot instructions 2025-07-03 19:36:27 -07:00
Gabe Kangas 2775956a68 chore: update copilot instructions 2025-07-03 19:01:50 -07:00
Gabe Kangas 8234974ad0 Additional instructions 2025-07-03 17:31:26 -07:00
Gabe Kangas c8aa572ecc Add some configs to improve copilot functionailty 2025-07-03 15:31:05 -07:00
Gabe KangasandGitHub 936a8385ba Update standard-pull-request.md 2025-06-30 10:52:31 -07:00
Gabe KangasandGitHub 508895fd90 Update bug-report-feature-request.yml 2025-06-13 12:49:57 -07:00
Gabe Kangas 594b8efbe7 chore(tests): pass --yes flag to npx 2025-05-20 20:27:45 -07:00
Gabe Kangas f6c13bdc69 chore(web): remove unpopulated meta tags. Closes #4324 2025-05-20 20:27:45 -07:00
Gabe Kangas ffa4d37e6b chore: update lefthook + go mod tidy 2025-05-20 20:00:52 -07:00
77da953781 Disable support for the latency compensator in the player (#4348)
* chore(web): disable support for the latency compensator. Closes #4224

* Javascript formatting autofixes

---------

Co-authored-by: Owncast <owncast@owncast.online>
2025-05-20 20:00:03 -07:00
Gabe Kangas d6dbd5b0df Revert "chore: add detailed PR template"
This reverts commit 04c208a2e9.
2025-05-16 10:31:58 -07:00
Gabe Kangas 04c208a2e9 chore: add detailed PR template 2025-05-16 10:26:58 -07:00
Gabe KangasandGitHub f98f04c1f8 Update bug-report-feature-request.yml 2025-05-16 09:52:17 -07:00
Gabe KangasandGitHub a13bca35d8 Update standard-pull-request.md 2025-05-16 09:49:19 -07:00
Gabe KangasandGitHub 6d97def04a fix(api): fix fediauth code verification. fixes #4316 (#4317) 2025-05-07 14:50:21 -07:00
Gabe Kangas d7ef258657 fix: fix linter error 2025-05-07 14:41:04 -07:00
Gabe Kangas 3661cd3e63 chore: bump version number 2025-05-03 16:08:51 -07:00
Gabe Kangas 75a8819188 fix(web): add missing space in footer 2025-05-03 11:16:16 -07:00