* 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>
* 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>
* 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>
* 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
* 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
* 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>
* 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
* 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
* 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>
* chore(go): bump golang version to 1.24
* chore(tests): bump golang versions for running tests under ci
* chore(ci): bump golangci-lint version
* chore(go): add golangci-lint to tools list
* chore(go): add gofumpt to tools list
* fix(ci): fix golang-ci version definition