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
John Costa and GitHub
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 + 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
383b80851b
Add localization support to admin status and error messages ( #4631 )
...
* Initial plan
* Add localization support to admin form status and error messages
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Format updated files with prettier
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Replace t() with Translation component in admin page JSX
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* update package-lock.json
* Update web/i18n/en/translation.json
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
Co-authored-by: Gabe Kangas <gabek@real-ity.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-10-13 16:29:40 -07:00
275339bdf0
Add localization support for chat message components with enhanced Translation component ( #4560 )
...
* Initial plan
* Add localization support for chat message components
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Update chat message localization to use string interpolation
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Restore original styling while preserving string interpolation
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Separate styling from variables in translation templates
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Revert to concatenation approach for chat message localization
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Add id property to Translation component and restore missing CSS classes and IDs
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Javascript formatting autofixes
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
Co-authored-by: Gabe Kangas <gabek@real-ity.com >
Co-authored-by: Owncast <owncast@owncast.online >
2025-09-16 00:13:13 -07:00
51ae467a5a
Add localization support for FollowModal component ( #4558 )
...
* Initial plan
* Add localization support for FollowModal component
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Update web/components/modals/FollowModal/FollowModal.tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update web/components/modals/FollowModal/FollowForm.tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
Co-authored-by: Gabe Kangas <gabek@real-ity.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-09-15 21:50:36 -07:00
1cf923a5af
Update localization files + references ( #4556 )
...
* Initial plan
* Add localization support to NameChangeModal component
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Add NameChangeModal translations to English language file
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* fix(i18n): fix localization keys
* chore(test): add i18n test
* chore(i18n): update translation script
* chore(i18n): reorgnize translation keys and update components
* chore: fix linting warnings
* chore(i18n): update all the language files
* feat(i18n): add last live ago i18n key
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
Co-authored-by: Gabe Kangas <gabek@real-ity.com >
2025-09-15 19:27:56 -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
57cd0f974f
Update BrowserNotifyModal.tsx to use Localization component ( #4444 )
...
* Initial plan
* Update BrowserNotifyModal.tsx to use Localization component
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Organize BrowserNotifyModal localization keys into namespaces
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* chore: update extracted translations
* Update web/components/modals/BrowserNotifyModal/BrowserNotifyModal.tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update web/i18n/en/translation_old.json
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
Co-authored-by: Owncast default web localizations <owncast@owncast.online >
Co-authored-by: Gabe Kangas <gabek@real-ity.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-07-30 13:02:03 -07:00
Gabe Kangas
828bddb4f4
fix(tests): fix i18n tests
2025-07-13 18:58:55 -07:00
59b905649e
Add pluralization support to Translation component ( #4441 )
...
* Initial plan
* Add pluralization support to Translation component with comprehensive tests
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Javascript formatting autofixes
* Update web/tests/translation.test.tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Update web/components/ui/Translation/Translation.tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* fix: linter warning
* Simplify pluralization logic: use original key for plural, only _one for singular
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* feat(i18n): fix support for nested namespace string and key extraction
* chore: update extracted translations
* fix(i18n): fix linter warnings in extraction script
* Update web/scripts/i18n-extract.js
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* feat(i18n): sort translation keys
* fix(i18n): fix linter warnings
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
Co-authored-by: Owncast <owncast@owncast.online >
Co-authored-by: Gabe Kangas <gabek@real-ity.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-07-13 17:34:06 -07:00
eafcf9148c
Update EditInstanceDetails admin component to support localization ( #4439 )
...
* Initial plan
* Update EditInstanceDetails component to support localization
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* chore: update extracted translations
* Update web/types/localization.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Add EditInstanceDetails namespace to localization keys
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* chore: update extracted translations
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
Co-authored-by: Owncast default web localizations <owncast@owncast.online >
Co-authored-by: Gabe Kangas <gabek@real-ity.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-07-13 13:34:30 -07:00
29b5100114
Create custom Translation component for better i18n handling ( #4431 )
...
* Initial plan
* Implement Translation component with Storybook stories
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Add Jest test for Translation component and demonstrate ?lang=de functionality
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Javascript formatting autofixes
* Create centralized type-safe localization system
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Add @testing-library/react to Translation component tests
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Fix code formatting errors with prettier and eslint
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Revert "Fix code formatting errors with prettier and eslint"
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* fix(js): eslinter errors
* fix(js): unused code warnings
* fix(js): fix additional warnings
* Update Emoji admin page to use new Translation component
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Organize localization keys by logical sections (Frontend, Admin, Common, Testing)
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Organize localization keys by TypeScript namespaces
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Javascript formatting autofixes
* feat(js): add support for default translated text
* chore: add default lang translations on commit
* fix(js): unused code warnings
* Update OfflineBanner component to use new Translation component
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* fix(js): fix localization extraction job
* chore(js): remove ts-node cli
* fix(css): fix css warning
* feat(js): add some additional translation strings via component
* chore: update extracted translations
* test: add tests for Translation component defaultText and fallback behavior
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* chore: update extracted translations
* Javascript formatting autofixes
* chore: call out new Translation component
* fix: linter warning
* chore: updated instructions
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
Co-authored-by: Owncast <owncast@owncast.online >
Co-authored-by: Gabe Kangas <gabek@real-ity.com >
2025-07-13 02:21:46 -07:00
Gabe Kangas and GitHub
a450e62397
Optionally disable chat rate limiter and add optional chat slur/language filter ( #3681 )
...
* feat(chat): basic profanity filter. For #3139
* feat(chat): add setting for disabling chat spam protection. Closes #3523
* feat(chat): wire up the new chat slur filter to admin and chat. Closes #3139
2024-04-09 22:25:41 -07:00
Gabe Kangas
1a7b6b99d5
feat(storage): support a object storage custom path prefix
2023-08-11 22:18:45 -07:00
Gabe Kangas and GitHub
cd458630ec
Support using the custom video serving endpoint even if you don't use object storage ( #2924 )
...
* feat(video): refactor video serving endpoint
It can now be used without an object storage provider. Closes #2785
* fix: remove debug log
2023-05-30 14:05:24 -07:00
Gabe Kangas and GitHub
15dc718e61
feat: add support for robots.txt disabling search indexing ( #2929 )
...
* feat: add support for robots.txt
Can toggle disabling search engine indexing. Closes #2684
* fix: unexport ts const
2023-05-30 11:09:51 -07:00
Gabe Kangas
23a721857f
Do not support stream key UI or any persisted stream keys when overridden via cli flag. Closes #2749
2023-02-27 17:08:52 -08:00
Gabe Kangas
19c228eaf6
Allow adding custom javascript to the page. Closes #2604
2023-01-18 22:38:24 -08:00
Michael David Kuckuk and GitHub
59e5cfefd4
Remove twitter notification configuration ( #2598 )
2023-01-17 13:20:29 -08:00
Gabe Kangas
d503c8a2e0
Updates to the admin to reflect new stream keys and admin password split
2022-11-29 16:05:44 -08:00
813f8692f0
Support color customization from the admin ( #2338 )
...
* Add user-customizable theming. Closes #1915
* Prettified Code!
* Add user-customizable theming. Closes #1915
* Add explicit color for page content background
* Prettified Code!
Co-authored-by: gabek <gabek@users.noreply.github.com >
2022-11-12 20:26:55 -08:00
Gabe Kangas
a521ba21d8
Add admin field for setting offline message. Closes #1901
2022-08-16 21:48:06 -07:00
Gabe Kangas
b08393295f
Add option to hide viewer count. Closes #1939
2022-06-26 00:46:55 -07:00
Gabe Kangas
aae63e4e2c
Display global error if server is unreachable
2022-05-27 22:53:55 -07:00
Gabe Kangas
299b7ff6de
Display the representation % of players in metrics
2022-03-27 16:28:14 -07:00
Gabe Kangas
65efdb91b9
Add stream health overview component
2022-03-24 23:21:57 -07:00
Gabe Kangas and GitHub
8ad2240247
Mange outbound notification settings ( #458 )
...
* ActivityPub admin pages for configuration
* Fix dev build
* Add support for requiring follow approval. Closes https://github.com/owncast/owncast/issues/1208
* Point at admin version of followers endpoint
* Add setting for toggling displaying fediverse engagement in admin. https://github.com/owncast/owncast/issues/1404
* Add instance URL textfield to federation config and disable federation if it is empty
* If instance URL is not https disable federation
* Tweak federation toggle text. Make go live message optional
* Add federation info modal. Closes https://github.com/owncast/owncast/issues/1544
* Add support for blocked federated domains. For https://github.com/owncast/owncast/issues/1209
* Simplify fediverse post input
* Add placeholder Fediverse icon
* Tweak federation logo in admin menu. Closes https://github.com/owncast/owncast/issues/1603
* Add global button for composing a fediverse post.
Closes https://github.com/owncast/owncast/issues/1610
* Federation -> Social
* Add page for listing federated actions. Closes https://github.com/owncast/owncast/issues/1573
* Auto-close social post modal after success
* Make user modal action buttons look nicer
* Center and reduce width and center count column. Closes https://github.com/owncast/owncast/issues/1580
* Update the followers table to be clearer
* Fix exception thrown when passing undefined
* Disable federation settings if feature is disabled
* Update enable social modal. For https://github.com/owncast/owncast/issues/1594
* Fix type props
* Quiet, linter
* Move compose button to the left
* Add tooltip for compose button
* Add NSFW toggle to federation config. Closes https://github.com/owncast/owncast/issues/1628
* Add support for blocking/removing followers. For https://github.com/owncast/owncast/issues/1630
* Allow editing the server url field even when federation is disabled
* Continue to update the copy around the social features
* Use relative path to action images. Fixes https://github.com/owncast/owncast/issues/1646
* Link IRIs and make action verbse present tense
* Update caniuse
* Notifications configuration UI
* Remove twilio add email notifications
* WIP email support
* Add support for managing twitter notifications
* Mark fields as passwords
* Continued WIP
* Post merge cleanup
* Cleanup
* Remove email config. Handle disabled notifications state
* Remove email related components
* Remove email related settings properties
2022-03-23 08:57:09 -07:00
Gabe Kangas and GitHub
181a7c3431
Add admin support for established user mode. https://github.com/owncast/owncast/issues/1587 ( #430 )
2022-03-07 00:06:07 -08:00
Gabe Kangas and GitHub
6f1ece7894
Add support for setting a socket override. https://github.com/owncast/owncast/issues/1378 ( #431 )
2022-03-06 17:12:37 -08:00
Gabe Kangas and GitHub
ff3cda97f3
Add support to disable chat join messages. Closes https://github.com/owncast/owncast/issues/1582 ( #452 )
2022-03-05 22:36:38 -08:00
Gabe Kangas and GitHub
084a01fb02
Admin social features ( #408 )
...
* ActivityPub admin pages for configuration
* Fix dev build
* Add support for requiring follow approval. Closes https://github.com/owncast/owncast/issues/1208
* Point at admin version of followers endpoint
* Add setting for toggling displaying fediverse engagement in admin. https://github.com/owncast/owncast/issues/1404
* Add instance URL textfield to federation config and disable federation if it is empty
* If instance URL is not https disable federation
* Tweak federation toggle text. Make go live message optional
* Add federation info modal. Closes https://github.com/owncast/owncast/issues/1544
* Add support for blocked federated domains. For https://github.com/owncast/owncast/issues/1209
* Simplify fediverse post input
* Add placeholder Fediverse icon
* Tweak federation logo in admin menu. Closes https://github.com/owncast/owncast/issues/1603
* Add global button for composing a fediverse post.
Closes https://github.com/owncast/owncast/issues/1610
* Federation -> Social
* Add page for listing federated actions. Closes https://github.com/owncast/owncast/issues/1573
* Auto-close social post modal after success
* Make user modal action buttons look nicer
* Center and reduce width and center count column. Closes https://github.com/owncast/owncast/issues/1580
* Update the followers table to be clearer
* Fix exception thrown when passing undefined
* Disable federation settings if feature is disabled
* Update enable social modal. For https://github.com/owncast/owncast/issues/1594
* Fix type props
* Quiet, linter
* Move compose button to the left
* Add tooltip for compose button
* Add NSFW toggle to federation config. Closes https://github.com/owncast/owncast/issues/1628
* Add support for blocking/removing followers. For https://github.com/owncast/owncast/issues/1630
* Allow editing the server url field even when federation is disabled
* Continue to update the copy around the social features
* Use relative path to action images. Fixes https://github.com/owncast/owncast/issues/1646
* Link IRIs and make action verbse present tense
* Update caniuse
2022-01-12 13:52:37 -08:00
030b936f05
feat: add option to save custom username suggestions ( #415 )
...
* 💄 add option to save custom username suggestions that shall be used instead of the docker style usernames.
* 🚸 add minimum of 10 usernames / update wording
* Prettified Code!
* 🚸 add message for the default name generator / indicate that no further action is required
Co-authored-by: jeyemwey <jeyemwey@users.noreply.github.com >
2022-01-12 10:17:14 -08:00
Gabe Kangas and GitHub
24cb1ed0f1
Add ability to set a user as a moderator via the admin ( #355 )
...
* Add moderators
* Remove passing unused prop
* Fix linter not running
2021-11-02 17:06:46 -07:00
Artur Angiel and GitHub
9b7835e71e
#1495 Path-style S3 compatibile URLs implemented ( #346 )
...
* #1495 Path-style S3 compatibile URLs implemented
https://github.com/owncast/owncast/issues/1495
It gives ability to use S3 compatibile providers that doesn't
support virtual-host-style URLs (i.e. Oracle Cloud Object Storage)
* https://github.com/owncast/owncast/issues/1495 Renaming rest of 'pathBased' to 'forcePathStyle'
2021-10-28 17:33:32 -07:00
b10ba1dcc2
Admin support for managing users ( #245 )
...
* First pass at displaying user data in admin
* Hide chat blurb on home page if chat is disabled
* Hide sidebar chat section if chat is disabled
* Block/unblock user interface for https://github.com/owncast/owncast/issues/1096
* Simplify past display name handling
* Updates to reflect the api access token change
* Update paths
* Clean up the new access token page
* Fix linter
* Update linter workflow action
* Cleanup
* Fix exception rendering table row
* Commit next-env file that seems to be required with next 11
* chat refactor - admin adjustments (#250 )
* add useragent parser; clean up some html;
* some ui changes
- use modal instead of popover to confirm block/unblock user
- update styles, table styles for consistency
- rename some user/chat labels in nav and content
* format user info modal a bit
* add some sort of mild treatment and delay while processing ban of users
* rename button to 'ban'
* add some notes
* Prettified Code!
* fix disableChat toggle for nav bar
* Support sorting the disabled user list
* Fix linter error around table sorting
* No longer restoring messages on unban so change message prompt
* Standardize on forbiddenUsername terminology
* The linter broke the webhooks page. Fixed it. Linter is probably pissed.
* Move chat welcome message to chat config
* Other submenus don't have icons so remove these ones
Co-authored-by: gingervitis <omqmail@gmail.com >
Co-authored-by: gabek <gabek@users.noreply.github.com >
2021-07-19 22:02:02 -07:00
be5243f5f8
Update Next to 11.0.1 (including lint & import fixes) ( #248 )
...
* Bump next from 10.2.3 to 11.0.1
Bumps [next](https://github.com/vercel/next.js ) from 10.2.3 to 11.0.1.
- [Release notes](https://github.com/vercel/next.js/releases )
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js )
- [Commits](https://github.com/vercel/next.js/compare/v10.2.3...v11.0.1 )
---
updated-dependencies:
- dependency-name: next
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
* 🚨 apply automatic linting
* 🎨 remove unused imports
* 🔇 allow console.* to give more debugging options
* 🎨 move stuff around to reduce linter messages
* 🚨 use destructuring so lint won't complain
* 📌 link Chartkick and Chart.js
Commit uses the linking code which was previously imported with
`import "chartkick/chart.js" [1]. Next did not like the import path,
but this does works now. ¯\_(ツ)_/¯
[1]: https://github.com/ankane/chartkick.js/blob/master/chart.js/chart.esm.js
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-07-09 11:42:01 -07:00
Gabe Kangas
caa170e4ef
Start new chat config sections
2021-06-21 20:19:20 -07:00
Gabe Kangas
f04f385f2b
Start codec selection in admin
2021-04-13 13:54:57 -07:00
0efc09bb72
add textarea field for custom css ( #113 )
...
* add textarea field for custom css
* Prettified Code!
Co-authored-by: gingervitis <gingervitis@users.noreply.github.com >
2021-04-12 00:07:08 -07:00
Gabe Kangas and GitHub
195ac23bb2
Admin support for creating 3rd party external link actions ( #72 )
...
* WIP external actions
* Add comment
* Add support for external actions icons and colors
2021-03-15 15:27:19 -07:00
nebunez and GitHub
b1256bcd08
implement custom welcome message ( #65 )
2021-03-14 21:55:01 -07:00
8bac350f61
Add server setting to disable chat ( #61 )
...
* Add server setting to disable chat
* Prettified Code!
Co-authored-by: gabek <gabek@users.noreply.github.com >
2021-03-14 11:39:07 -07:00
6669d9e425
Support setting a custom name for a stream output variant ( #64 )
...
* Display+set video stream output variant names
* Merge in admin updates
* Prettified Code!
* Fix build
* Prettified Code!
Co-authored-by: gabek <gabek@users.noreply.github.com >
2021-03-11 13:39:36 -08:00
Gabe Kangas
8ea0daab69
Add width+height resizing to variant settings. Closes https://github.com/owncast/owncast/issues/700
2021-02-07 17:03:02 -08:00
gingervitis
7501cfc548
revise Storage forms, and add basic validation to it; misc field cleanup
2021-01-31 23:40:39 -08:00
gingervitis
add2f1329b
cleanup
2021-01-31 01:55:19 -08:00
Gabe Kangas
0c111c2c0b
Replace presets with cpu usage levels
2021-01-30 22:53:28 -08:00
gingervitis
b37b57feda
fix streamtitle change field on index
2021-01-30 01:39:58 -08:00
gingervitis
2c4bfab9db
cleanup
2021-01-29 10:38:09 -08:00