* core: remove file extension from emoji name
* web: transform emotes to labels when sending
* chat: replace br with line break
* core: implement emoji cache
* chat: send shortcodes for custom emoji
* chat: correct esling errors
* core: move emoji injection into dedicated function
* emoji: integrate emoji into markdown renderer, fix formatting
* chat protocol: correct golangci-lint findings
* chat field: specify that the contentEditable is an HTMLElement
* admin: mention that emoji should have unique names
* Prettified Code!
* regenerate pack-lock
* chat: correct the emphasis tag, provide fallback for other elements
---------
Co-authored-by: jprjr <jprjr@users.noreply.github.com>
* wip: trigger the title updated webhook event whenever a title is changed
* Commit updated API documentation
* fix: add STREAM_TITLE_CHANGED to list of valid events
* feat: Add support for STREAM_TITLE_CHANGED webhook event on admin dashboard
* fix: transmit webhook event after stream has changed to fix race conditions where older title was sent
---------
Co-authored-by: Owncast <owncast@owncast.online>
* Admin UI: implement HTML embeds
* Admin UI External Actions: set correct useHTML on edits
* Admin UI: edit by index, not URL
* External Actions: render HTML on stream frontend
* Don't open embeds externally
* Remove TODO comment
* Add HTML as unique action key
* Admin UI: Actions: use CodeMirror editor, dropdown
Instead of doing manual layout switching use the Nextjs nested layout
support. Also add some additional lazy loading of components. This is to
work on performance score re: #2167.
* Custom emoji editor: implement backend
This reuses the logo upload code
* Implement emoji edit admin interface
Again reuse base64 logic from the logo upload
* Allow toggling between uploaded and default emojis
* Add route that always serves uploaded emojis
This is needed for the admin emoji interface,
as otherwise the emojis will 404 if custom emojis are disabled
* Fix linter warnings
* Remove custom/uploaded emoji logic
* Reset timer after emoji deletion
* Setup: copy built-in emojis to emoji directory