95c16183a1
Fix golangci-lint errors by excluding AWS SDK v1 deprecation warnings ( #4624 )
...
* Initial plan
* Fix golangci-lint errors by excluding AWS SDK v1 deprecation warnings
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 >
2025-10-08 15:03:40 -07:00
ef2124c1ae
Add automated GitHub Actions workflow to remind about Hacktoberfest branding updates ( #4581 )
...
* Initial plan
* Add GitHub Actions workflow for Hacktoberfest reminder
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 >
2025-10-03 13:36:58 -07:00
a0066fcf54
Fix all golangci-lint warnings surfaced by v2.4.0 ( #4567 )
...
* Initial plan
* Fix all golangci-lint warnings (21 issues resolved)
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 >
2025-09-25 20:03: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
bf82e77f79
Remove deprecated @types/chart.js dependency from web project ( #4554 )
...
* Initial plan
* Remove deprecated @types/chart.js dependency
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 >
2025-09-15 00:34:44 -07:00
ac4a75d245
Remove deprecated @types/classnames dependency from web project ( #4548 )
...
* Initial plan
* Remove deprecated @types/classnames dependency
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 >
2025-09-14 16:07:09 -07:00
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
740dd9c6fa
Add server status as a default field in all webhooks using BaseWebhookData struct ( #4410 )
...
* Initial plan
* Add server status as default field in all webhooks
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Fix goimports linter error by removing trailing whitespace
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Move serverURL from status object to separate webhook field per feedback
Per code review feedback, serverURL is a configuration value, not a status property. This change:
- Removes ServerURL from models.Status struct
- Adds ServerURL as separate field in WebhookEvent
- Populates ServerURL directly when sending webhooks using configrepository.GetServerURL()
- Updates all tests to expect new structure
This provides the same functionality (server URL in all webhooks) while correctly treating it as configuration rather than status.
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Add omitempty tag to ServerURL field in WebhookEvent struct
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Fix webhook duplication by moving status to eventData for all events
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Restore type safety to webhook EventData using proper typed structs
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Move ServerURL from top-level WebhookEvent to eventData for all webhook types
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Update core/webhooks/webhooks.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* Create BaseWebhookData struct for common webhook fields using struct embedding
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 >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-07-31 17:12:38 -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
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
149d80a07d
Inline chat moderation request returning 500s ( #4412 )
...
* Initial plan
* Initial analysis of inline chat moderation 500 error issue
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Fix inline chat moderation 500 errors by supporting Authorization header tokens
- Modified RequireUserModerationScopeAccesstoken middleware to check both Authorization header (Bearer tokens) and URL query parameters
- This fixes the issue where inline chat moderation from the web UI was failing with 500 errors
- Maintains backward compatibility with existing code that uses query parameter tokens
- The fix aligns the chat endpoint behavior with the integrations endpoint which already supported Bearer tokens
Addresses the wiring issue between OpenAPI spec and API implementation identified in issue comments.
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Fix inline chat moderation 500 errors by adding nil pointer checks
Co-authored-by: gabek <414923+gabek@users.noreply.github.com >
* Fix nil pointer vulnerabilities across all OpenAPI endpoints
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 >
2025-07-04 23:57:03 -07:00
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
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