Commit Graph
10888 Commits
Author SHA1 Message Date
renovate[bot]andGitHub befd0f53ef chore(deps): update alpine docker tag to v3.23.3 2026-01-28 06:35:54 +00:00
Owncast 79879f5cd0 Bundle embedded web app 2026-01-25 06:02:30 +00:00
renovate[bot]andGitHub 27eea0f780 chore(deps): update dependency sass to v1.97.3 2026-01-25 02:21:28 +00:00
Owncast 551648d5d7 Bundle embedded web app 2026-01-25 02:19:51 +00:00
renovate[bot]andGitHub b82e7a52eb chore(deps): lock file maintenance (#4753) 2026-01-24 18:14:45 -08:00
Owncast 0798fddfd2 Bundle embedded web app 2026-01-25 00:56:29 +00:00
renovate[bot]andGitHub 9ccbb291a3 chore(deps): update dependency prettier to v3.8.1 2026-01-24 20:54:42 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2c2db1097d chore(deps): bump lodash in /test/automated/browser (#4759)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.21 to 4.17.23.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-23 23:13:15 -08:00
Owncast 645501a1e1 Bundle embedded web app 2026-01-23 06:08:19 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
51fcd9674c chore(deps): update dependency prettier to v3.8.0 (#4752)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-23 06:02:21 +00: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
Owncast 7a735e6902 Bundle embedded web app 2026-01-22 20:26:41 +00:00
renovate[bot]andGitHub a2e2df044b chore(deps): update typescript-eslint monorepo to v8.53.1 2026-01-22 17:09:12 +00:00
Owncast ad82448b6e Bundle embedded web app 2026-01-22 17:06:27 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Gabe Kangas
ce4df88ef3 chore(deps): update dependency cypress to v15 (#4685)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2026-01-22 09:00:38 -08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6113a014d0 fix(deps): update dependency react-hotkeys-hook to v5.2.3 (#4748)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-22 09:00:05 -08:00
Owncast d65ffae27e Bundle embedded web app 2026-01-22 16:47:18 +00:00
renovate[bot]andGitHub 5534ccd227 chore(deps): update dependency @testing-library/react to v16.3.2 2026-01-22 12:55:38 +00:00
Owncast 7b8aa2fe48 Bundle embedded web app 2026-01-22 12:54:35 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
04a7a78af8 chore(deps): update dependency html-webpack-plugin to v5.6.6 (#4756)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-22 12:49:04 +00:00
Owncast 4f8488cbc7 Bundle embedded web app 2026-01-22 09:19:08 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
efd17bc560 fix(deps): update dependency lodash to v4.17.23 [security] (#4760)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-22 09:12:53 +00: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
renovate[bot]andGitHub 9441e6d120 chore(deps): update peter-evans/create-or-update-comment digest to 2ae2171 2026-01-22 00:22:28 +00:00
Gabe Kangas 9f30aa37ce chore(ap): point to updated activity library fork 2026-01-20 21:27:40 -08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
d16183f86b chore(deps): bump tar and bcrypt in /test/automated/api (#4751)
Removes [tar](https://github.com/isaacs/node-tar). It's no longer used after updating ancestor dependency [bcrypt](https://github.com/kelektiv/node.bcrypt.js). These dependencies need to be updated together.


Removes `tar`

Updates `bcrypt` from 5.1.1 to 6.0.0
- [Release notes](https://github.com/kelektiv/node.bcrypt.js/releases)
- [Changelog](https://github.com/kelektiv/node.bcrypt.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kelektiv/node.bcrypt.js/compare/v5.1.1...v6.0.0)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 
  dependency-type: indirect
- dependency-name: bcrypt
  dependency-version: 6.0.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-19 09:05:47 -08:00
John CostaandGitHub 1cdbde58f5 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
2026-01-17 14:44:33 -08:00
John CostaandGitHub 9f169ce96e fix: preserve chat input text across window resize (#4717)
Adds a Recoil atom (chatInputDraftAtom) to store the chat input draft,
which persists the text when the chat component unmounts/remounts during
mobile/desktop mode transitions.

Changes:
- Add chatInputDraftAtom to ClientConfigStore
- Update ChatTextField to save draft on input change
- Restore draft when component mounts
- Clear draft when message is sent

Closes #3615
2026-01-17 14:33:02 -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
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
267eac87fa chore(deps): update actions/setup-node action to v6 (#4643)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-16 14:06:11 -08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4c8fbe43a3 Bump js-yaml from 3.14.1 to 3.14.2 in /test/load (#4695)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.14.1 to 3.14.2.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.14.1...3.14.2)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 3.14.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-16 14:05:40 -08:00
9d260f4012 chore(i18n): update translations from Crowdin (#4743)
Co-authored-by: Owncast <owncast@owncast.online>
2026-01-16 14:05:09 -08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
91456547bf chore(deps): bump undici from 7.16.0 to 7.18.2 in /test/load (#4744)
Bumps [undici](https://github.com/nodejs/undici) from 7.16.0 to 7.18.2.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v7.16.0...v7.18.2)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 7.18.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-16 14:04:35 -08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
b88dd8a070 fix(deps): update module github.com/evilmartians/lefthook to v2 (#4740)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-16 14:04:11 -08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Owncast default web localizations
74d778160c fix(deps): update module golang.org/x/crypto to v0.47.0 (#4727)
* fix(deps): update module golang.org/x/crypto to v0.47.0

* chore: update extracted translations

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Owncast default web localizations <owncast@owncast.online>
2026-01-16 14:02:50 -08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>Owncast default web localizations
1dbd455cb0 chore(deps): lock file maintenance (#4688)
* chore(deps): lock file maintenance

* chore: update extracted translations

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Owncast default web localizations <owncast@owncast.online>
2026-01-16 14:00:03 -08:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
accc1de18f fix(deps): update module github.com/sirupsen/logrus to v1.9.4 (#4745)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-16 13:11:55 +00:00
renovate[bot]andGitHub eac6b32261 chore(deps): update dependency go to v1.25.6 2026-01-16 04:34:39 +00:00
Owncast 39daaeec9f Bundle embedded web app 2026-01-16 00:55:51 +00:00
renovate[bot]GitHubrenovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
84375f9847 chore(deps): update babel monorepo to v7.28.6 (#4746)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-16 00:50:01 +00:00
Owncast 9fffe00c32 Bundle embedded web app 2026-01-15 22:09:21 +00:00
renovate[bot]andGitHub 9914f8a65e chore(deps): update typescript-eslint monorepo to v8.53.0 2026-01-15 17:53:49 +00:00
Owncast default web localizations 1efafed9f2 chore: update extracted translations 2026-01-14 21:05:37 +00:00
John CostaandGitHub 9c747e865a fix: consolidate browser notification learn more text into single localized string (#4716)
- Combines 'Learn more' link and surrounding text into one Translation
- Fixes double space issue (was &nbsp; + regular space)
- Enables full sentence to be localized: '<a>Learn more</a> about Owncast browser notifications.'

Closes #4655
2026-01-14 12:57:14 -08:00
da847bac78 Fix banUser API call missing enabled parameter (#4742)
The banUser function in ChatModerationService was sending an incomplete
request body to the /api/chat/users/setenabled endpoint. The API requires
both userId and enabled fields, but only userId was being sent.

This caused the endpoint to return a 400 Bad Request with the error:
"must provide userId and enabled state"

Added the missing enabled: false parameter to properly disable the user
when banning.

Co-authored-by: Matt Pruitt <41898282+guitsaru@users.noreply.github.com>
2026-01-14 12:53:07 -08:00