Commit Graph
967 Commits
Author SHA1 Message Date
Gabe Kangas b18e773fa7 chore(web): remove unused scss file 2026-01-21 23:50:37 -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
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   + 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
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
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
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
a1f7f599c8 Allow emoji picker to fit smaller viewports (#4651)
* fixed 4493 issue

* Update web/components/chat/ChatTextField/ChatTextField.module.scss

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

* lint error fix

---------

Co-authored-by: Gabe Kangas <gabek@real-ity.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-10 14:00:11 -08:00
AmishaandGitHub 8c016b85dd fix: X-axis labels and ticks (#4664)
* fix: X-axis labels and ticks

* use TimeWindow enum instead of int

* format with Prettier
2025-11-10 13:48:01 -08:00
서정현andGitHub 24cd89a114 chore(deps): update prettier to version 3.6.2 and adjust peer dependencies in package-lock.json (#4663) 2025-11-03 09:09:01 -08:00
Gabe Kangas 3a756201ea chore(css): run stylelint 2025-10-24 00:15:12 -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
CopilotGitHubgabekCopilotcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>Gabe Kangas
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
CopilotGitHubgabekcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>Gabe KangasOwncast
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
CopilotGitHubgabekCopilotcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>Gabe Kangas
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
CopilotGitHubgabekcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>Gabe Kangas
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
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
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
CopilotGitHubgabekcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>Gabe Kangas
84eaa60ec9 Add static class names to UI elements for easier customization (#4421)
* Initial plan

* Add static class names to UI elements for easier customization

Co-authored-by: gabek <414923+gabek@users.noreply.github.com>

* Add unique DOM element IDs for easier customization targeting

Co-authored-by: gabek <414923+gabek@users.noreply.github.com>

* Remove duplicate class names, keep only IDs for UI element targeting

Co-authored-by: gabek <414923+gabek@users.noreply.github.com>

* Revert chat input field ID to original value

Co-authored-by: gabek <414923+gabek@users.noreply.github.com>

* Remove unnecessary nested spans and revert Button ID to original value

Co-authored-by: gabek <414923+gabek@users.noreply.github.com>

* Standardize ID names to follow owncast-{element-description}-{type} pattern

Co-authored-by: gabek <414923+gabek@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>
2025-08-07 19:12:28 -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
CopilotGitHubgabekCopilotcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>Owncast default web localizationsGabe Kangas
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
7675c53e16 Removed aria (#4430)
* fixed-aria

* removed-aria

* fix(js): linter error

---------

Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2025-07-22 12:32:07 -07:00
CopilotGitHubgabekCopilotcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>OwncastGabe Kangas
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
CopilotGitHubgabekCopilotcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>Owncast default web localizationsGabe Kangas
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
CopilotGitHubgabekcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>OwncastGabe Kangas
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
CopilotGitHubgabekcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>Gabe Kangas
07786682b0 Fix error message styling consistency in browser notification modal (#4418)
* Initial plan

* Update BrowserNotifyModal to use Alert component for error styling consistency

Co-authored-by: gabek <414923+gabek@users.noreply.github.com>

* chore: update copilot instructions

* chore: update copilot 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: Gabe Kangas <gabek@real-ity.com>
2025-07-04 22:42:40 -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
CopilotGitHubgabekcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>Gabe Kangas
5950db7abd Display keyboard shortcut in UserDropdown chat menu items (#4414)
* Initial plan

* Add keyboard shortcut display to UserDropdown chat menu items

Co-authored-by: gabek <414923+gabek@users.noreply.github.com>

* Successfully implement keyboard shortcut display in UserDropdown chat menu

Co-authored-by: gabek <414923+gabek@users.noreply.github.com>

* Additional 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: Gabe Kangas <gabek@real-ity.com>
2025-07-04 14:19:17 -07:00
Gabe Kangas f6c13bdc69 chore(web): remove unpopulated meta tags. Closes #4324 2025-05-20 20:27:45 -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
mahmed2000andGitHub d1879e74b5 fix errorMessage being set as a raw error type instead of a string (#4333) 2025-05-10 13:20:24 -07:00
Gabe Kangas 75a8819188 fix(web): add missing space in footer 2025-05-03 11:16:16 -07:00
MichaelandGitHub 07d4ce0a52 Increase font sizes on offline embed page (#4246) 2025-03-10 20:17:06 -07:00
nya/nekojanaiandGitHub e08b251b7c fix: username wrapping for parting message (#4209) 2025-02-15 17:02:56 -08:00
mahmed2000andGitHub 849c4e85b0 Removes trailing whitespace causing web hydration errors (#4208) 2025-02-14 22:49:08 -08:00
Yash KumarandGitHub 2c42b901f2 set default initialValue to an empty string in TextFieldWithSubmit component (#4207) 2025-02-14 22:32:24 -08:00
Germaine LeeandGitHub f1ca5f9549 Update follower cards to have better responsive design (#4198)
* change a follower's name to be very long

* Add more media query and make the entire row match the tallest card

* fix lint in followerCollection file

* make media queries easier to read
2025-02-12 20:46:54 -08:00
Gabe Kangas ca98a5ad21 fix(video): support native hls playback via opengraph tags. Fixes #4204 2025-02-12 19:19:42 -08:00
9be8fa56c2 Add background color and title attribute to social images (#4192)
* Make social links wrap

* Add background to social links

* add title to social link

* fix lint attempt

* css lint fix attempt

* scss prettier

---------

Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2025-02-07 18:56:24 -08:00
Gabe Kangas dd7a0ec081 fix(storybook): remove the storybook params causing render errors 2025-02-06 18:44:39 -08:00
Gabe Kangas 47857e283e fix(web): improve sizing and spacing of offline embed. Closes #4133 2025-01-17 15:40:06 -08:00
Gabe Kangas bd8dc8326c fix(admin): do not log newfeed 404s 2025-01-15 22:00:32 -08:00
Gabe Kangas d03cac106c fix(admin): do not handle version upgrade logic if current version is not set 2025-01-15 21:59:45 -08:00
2e8e61309a Remove use of default props (#4118)
* refactor: replace defaultProps with function parameters in Modal, Statusbar, ChatContainer, and CrossfadeImage components

* New commit for Default properties of React components after syncing fork and rebasing

* fix: fix linter warning

---------

Co-authored-by: swarup <swarupnarkhede999@gmail.com>
2025-01-15 16:12:54 -08:00
Gabe Kangas d77b80a94a fix(storybook): fix another story not rendering with i18n 2025-01-14 21:27:21 -08:00