Commit Graph
4705 Commits
Author SHA1 Message Date
renovate[bot]andGitHub ec16a0bef6 chore(deps): update typescript-eslint monorepo to v8.54.0 2026-01-29 22:24:46 +00:00
Gabe Kangas 8f4ddfb370 fix(i18n): fix missing translation 2026-01-29 11:48:03 -08:00
a6c0946b66 chore(i18n): update translations from Crowdin (#4768)
Co-authored-by: Owncast <owncast@owncast.online>
2026-01-29 11:37:19 -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
397ec95d9b fix: remove special character requirement from stream keys (#4754)
Some broadcasting software (e.g., Prism Live Studio) strips special
characters from stream keys, making Owncast-generated keys incompatible.

Changes:
- Create separate STREAM_KEY_COMPLEXITY_RULES without special char requirement
- Update generateRndKey() to only use alphanumeric characters
- Keep PASSWORD_COMPLEXITY_RULES unchanged for admin password security
- Update tooltip text to reflect new requirements
- Add comprehensive tests for stream key generation

Fixes #4690

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 11:51:57 -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
83c8b2b3d5 feat: add Pixelfed to social links (#4767)
Add Pixelfed as a supported social platform, including the platform
entry in socialHandle.go and the SVG icon.

Closes #4726

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 09:30:37 -08:00
renovate[bot]andGitHub 27eea0f780 chore(deps): update dependency sass to v1.97.3 2026-01-25 02:21:28 +00:00
renovate[bot]andGitHub b82e7a52eb chore(deps): lock file maintenance (#4753) 2026-01-24 18:14:45 -08:00
renovate[bot]andGitHub 9ccbb291a3 chore(deps): update dependency prettier to v3.8.1 2026-01-24 20:54:42 +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
renovate[bot]andGitHub a2e2df044b chore(deps): update typescript-eslint monorepo to v8.53.1 2026-01-22 17:09:12 +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
renovate[bot]andGitHub 5534ccd227 chore(deps): update dependency @testing-library/react to v16.3.2 2026-01-22 12:55:38 +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
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
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
9d260f4012 chore(i18n): update translations from Crowdin (#4743)
Co-authored-by: Owncast <owncast@owncast.online>
2026-01-16 14:05:09 -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>
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
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
Gabe Kangas 04b9ae755e Update dynamic storybook templates to reflect new story requirements 2026-01-13 16:45:53 -08:00
renovate[bot]andGitHub 9db9e24992 chore(deps): update dependency @types/node to v24.10.7 2026-01-13 23:27:16 +00:00
renovate[bot]andGitHub 5dc2d314d5 chore(deps): update dependency @types/node to v24.10.6 2026-01-13 04:50:20 +00:00
renovate[bot]andGitHub 1b8d9ed9c7 chore(deps): update commitlint monorepo to v20.3.1 2026-01-11 17:14:23 +00:00
Gabe Kangas 5438ab8ea0 chore(js): fix js formatting 2026-01-10 15:37:26 -08:00
Gabe Kangas 53a6166d4b chore(js): fix js formatting 2026-01-10 15:35:30 -08:00
renovate[bot]andGitHub 04d499884f chore(deps): update dependency sass to v1.97.2 2026-01-09 02:11:57 +00:00
renovate[bot]andGitHub da991c0e5b chore(deps): update typescript-eslint monorepo to v8.52.0 2026-01-08 21:48:05 +00:00
renovate[bot]andGitHub ee6e66b5e0 chore(deps): update dependency chromatic to v13.3.5 2026-01-08 19:27:48 +00:00
renovate[bot]andGitHub b8e413c8a8 chore(deps): update commitlint monorepo to v20.3.0 2026-01-04 17:36:43 +00:00
05341aced0 feat: add readonly-chat class to readonly embed (#4714)
Adds a 'readonly' prop to ChatContainer that conditionally applies a
'readonly-chat' CSS class to the chat container element. This allows
streamers using OBS to target the readonly chat embed with custom CSS.

The readonly embed at /embed/chat/readonly now passes readonly={true}
to ChatContainer, which adds the class to the container div.

Fixes #4266

Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2026-01-03 13:04:51 -08:00
renovate[bot]andGitHub 2e0d1a6f54 chore(deps): update typescript-eslint monorepo to v8.51.0 2026-01-01 21:40:17 +00:00
renovate[bot]andGitHub 0ed5b60e17 fix(deps): update dependency react-virtuoso to v4.18.1 2026-01-01 16:54:57 +00:00
renovate[bot]andGitHub 0dd02a7845 chore(deps): update dependency msw to v2.12.7 2025-12-31 00:37:16 +00:00
renovate[bot]andGitHub 093de80714 chore(deps): update dependency msw to v2.12.6 2025-12-29 21:01:30 +00:00
renovate[bot]andGitHub cde17dc84b fix(deps): update dependency react-virtuoso to v4.18.0 2025-12-29 17:03:41 +00:00
ab06b218e3 Fix: Fix to show color when user join the chat (#4706)
* Fix: Fix to show color when user join the chat

* Changes to restore unnecesary changes

* Deleting unnecesary changes

* Identation issues fixed

* fix(js): run prettier against changed code

---------

Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2025-12-26 16:45:30 -08:00
renovate[bot]andGitHub bb2e65f3f6 chore(deps): update typescript-eslint monorepo to v8.50.1 2025-12-25 17:44:54 +00:00
Gabe Kangas 3b25e295e8 Missing visible param not being passed to api request 2025-12-23 15:12:25 -08:00
renovate[bot]andGitHub 5dbff37b0d chore(deps): update dependency sass to v1.97.1 2025-12-22 21:51:51 +00:00
renovate[bot]andGitHub ae8142a45b chore(deps): update storybook monorepo to v9.1.17 2025-12-20 18:36:57 +00:00
renovate[bot]andGitHub 5314dd2a30 chore(deps): update dependency storybook to v9.1.17 [security] 2025-12-19 15:11:41 +00:00