Commit graph

893 commits

Author SHA1 Message Date
janWilejan
101174f71e
replace margins with padding in the chat container (#3165)
Virtuoso can't calculate the size of elements that have margins. This causes
strange behaviour with scrolling in chat.

Co-authored-by: janWilejan <>
2023-07-11 13:07:58 -07:00
John Regan
3f65099910
Name change: better unicode handling (#3164)
* Name change: better unicode handling

Client-side:

* Changes the NameChangeModal to show text "Over limit" when a proposed display
name is too long.

* Allows names to go over limit to prevent splitting graphemes on input.

Server-side:

* Changes the MakeSafeStringOfLength to count number of unicode code points
instead of string bytes.

* name modal: check that newName is defined before iterating
2023-07-11 10:44:09 -07:00
John Regan
056bd9f152
contenteditable: remove warning about unknown property onContentChange (#3161) 2023-07-10 23:02:07 -07:00
janWilejan
3f4887020d
Add resize handle to chat (#3157)
* add resize handle to chat

* Add chat resize functionality

* window resize only causes chat resize on desktop

* fix parseFloat invocation

* desktop is optional attribute of ChatContainer

---------

Co-authored-by: janWilejan <>
2023-07-10 23:00:28 -07:00
John Regan
a663f8ec34
replace grapheme-splitter with graphemer (updated fork) (#3160) 2023-07-10 16:13:40 -07:00
Dev Gupta
d107a3386c
Update ActionButtonRow.module.scss (#3156) 2023-07-09 18:08:02 -07:00
janWilejan
2d72935564
change chat from a sidebar to a column (#3113)
* change chat from a sidebar to a column

Using a 2-column layout prevents the chat scrollbar from overlapping the page
scrollbar. Also, it no longer needs to calculate extra padding for elements.

* remove unused Sidebar.tsx

* fix css for chat column

* re-center "Go to last message" button

* main content column always uses maximum height

* lint

* re-hide scrollbars in mainContent on chromium

* fix chat column width when input is over-full

* chat is only fixed-width in desktop

---------

Co-authored-by: janWilejan <>
2023-07-09 14:07:35 -07:00
John Regan
c132d82645
simpler chatbox (#3146) 2023-07-09 13:42:03 -07:00
janWilejan
d09031faeb
Increase width of volume slider to 100px (#3155)
Co-authored-by: janWilejan <>
2023-07-09 12:50:04 -07:00
John Regan
58bc3ac173
emoji: display native emoji simiarly to custom (#3147) 2023-07-06 12:47:38 -07:00
janWilejan
185123dab2
fail silently when no codces are found (#3142)
Co-authored-by: janWilejan <>
2023-07-05 21:41:50 -07:00
John Regan
46ca5223f9
Chat wire protocol (#3125)
* 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>
2023-07-05 17:25:47 -07:00
Gabe Kangas
dc2c46e2a4
fix(ui): fix for exception when chat is disabled. Closes #3138 2023-07-05 14:02:39 -07:00
janWilejan
74ad8d5e18
Fix chat flicker / Usernames collapse in order (#3135)
Co-authored-by: janWilejan <>
2023-07-05 11:51:16 -07:00
John Regan
5c07e3ced6
highlighting: make case-insensitive, support unicode (#3137)
* highlighting: make case-insensitive, support unicode

* highlighting: also highlight simplified/normalized form

* highlighting: use MDN-recommended escape pattern
2023-07-05 11:23:39 -07:00
Gabe Kangas
65d52072d4
fix(chat): reposition chat loading spinner 2023-07-04 16:11:54 -07:00
Gabe Kangas
00a5fb8dc8
fix: pass username and instance url to external actions. Fixes #3130 2023-07-04 12:14:21 -07:00
Gabe Kangas
5876c7cfbb
fix(ui): simplify modal loading ui state 2023-07-04 12:11:27 -07:00
John Regan
bf1ccf21d2
chat: simplify input handling (#3124)
* chat: simplify input handling

Removes the cursor save/restore functionality.

Removes most key handling.

Allows message to go over limit.

Moves the message length check into SendMessage.

Changes the chat input to change to the max style only when over the limit,
rather than at the limit. Makes it apparent that something is wrong.

Fixes #3121

* Prettified Code!

---------

Co-authored-by: jprjr <jprjr@users.noreply.github.com>
2023-06-30 12:22:01 -07:00
Gabe Kangas
bcd08633b4
fix(chat): simplify emoji + char count handling. Closes #3120 2023-06-29 20:35:53 -07:00
Gabe Kangas
f1bde962cc
feat(admin): auto-expand news item if there is only one 2023-06-29 19:37:52 -07:00
Dev Gupta
d973d1ac38
Update Sidebar.tsx (#3119) 2023-06-28 12:16:10 -07:00
Gabe Kangas
b1a8f712c0
fix(embed): leave room for status bar in video embed. Closes #3104 2023-06-28 10:13:24 -07:00
janWilejan
ce724fa073
username of repeat chat messages is display:none (#3101)
users who want to show repeat usernames can inject the following CSS:
[class^="ChatUserMessage_repeatUser"]{display:flex !important;}

Co-authored-by: janWilejan <>
2023-06-28 09:58:07 -07:00
Gabe Kangas
6805a7c1db
feat(ui): more improvements to initial loading state 2023-06-28 07:53:06 -07:00
Gabe Kangas
d60289c8bc
feat(ui): improve loading state 2023-06-27 22:52:23 -07:00
Gabe Kangas
0fd18cf889
fix: split out styles into two style tags. Should help #2989 2023-06-27 17:44:09 -07:00
Gabe Kangas
e7f464a10f
fix(ui): fix not being able to disable browser notifications. Closes #3115 2023-06-27 16:40:35 -07:00
Gabe Kangas
1ea9a548e1
fix(ui): fallback to an empty array. Closes #3116 2023-06-27 16:19:16 -07:00
Gabe Kangas
1f755cb0ba
fix(chat): do not allow chat scrolling to impact page scrolling. Closes #3109 2023-06-27 16:11:07 -07:00
Gabe Kangas
1d6877d3ef
fix(admin): fix error displaying and do not allow deleting of the last stream key. Closes #3114 2023-06-27 16:08:07 -07:00
Gabe Kangas
02811ef37e
feat(chat): preload and cache the custom emoji. Closes #3117 2023-06-27 15:48:16 -07:00
Gabe Kangas
a354787a9e
feat(chat): support line breaks and pasted content. Closes #3108 2023-06-27 14:51:01 -07:00
Gabe Kangas
d33f117a82
fix(chat): fix missing alt tags on custom emoji. Closes #3106 2023-06-26 11:38:10 -07:00
janWilejan
7930747cbb
Fix highlight in video quality selection menu (#3102)
Also removed dead code in video quality selection menu.
Also 'minimize latency (experimental)' button is no longer renamed when pressed
(it is now highlighted when enabled).

Co-authored-by: janWilejan <>
2023-06-26 09:40:28 -07:00
janWilejan
c563742856
Chat popup (#3098)
* add pop out chat button

* add button to close chat popup

* chat is hidden on main interface when a popup chat is open

* NameChangeEvent renames clients with the given id

if you have two or more owncast windows (or pop-out chats) open, changing your
name in 1 client is reflected in all clients.

* replace isChatVisible booleans with chatState enum

* update stories to use ChatState

* fix build tests

---------

Co-authored-by: janWilejan <>
2023-06-26 09:00:27 -07:00
janWilejan
e752934fd5
fix TitleNotifier crash (#3100)
rare chance of crashing when using ReactRefresh with an empty chat

Co-authored-by: janWilejan <>
2023-06-23 19:12:34 -07:00
Gabe Kangas
06adee2bc2
fix(chat): restore placeholder value to what it was before 2023-06-22 09:48:26 -07:00
Gabe Kangas
7924a561b2
fix(chat): update scroll to bottom button text color 2023-06-21 14:26:57 -07:00
Gabe Kangas
ccb9b5d075
chore: run stylelint on our css files 2023-06-20 20:58:00 -07:00
Gabe Kangas
0e13bd143e
fix(chat): set cursor for chat input field 2023-06-20 20:51:36 -07:00
Gabe Kangas
fb5cb10aa2
fix(ui): set description value to action button title 2023-06-20 20:25:17 -07:00
Gabe Kangas
ad814a8802
fix(chat): refactor chat input to not use slatejs. Closes #3094 2023-06-20 17:06:24 -07:00
Gabe Kangas
8862d5d6ef
Remove unused default exports 2023-06-19 18:32:56 -07:00
Gabe Kangas
a86049729e
fix(chat): enable tld validation in autolinking and add online to accepted tlds 2023-06-15 05:41:19 -07:00
Gabe Kangas
8a3bae4c30
fix(mobile): bottom section not filling width. Closes #3073 2023-06-14 13:31:18 -07:00
Yusuke
7fc5857d4c
Fix path for image open meta tag #3075. (#3087)
* Commit updated API documentation

* Fix content path used for meta tags.

TT:#3075

* Fix lint for go code.

TT:#3075

* Revert docs/api/index.html

TT:#3075

---------

Co-authored-by: Owncast <owncast@owncast.online>
2023-06-13 19:28:35 -07:00
Mohib Khan
6fa576a04a
feat: close modal after name change (#3084)
* feat: close modal after name change

* refactor: shortened modal name

* fix: added a no-op for NameChangeModal storybook
2023-06-12 22:54:12 -07:00
Gabe Kangas
58f2d09815
fix(chat): try to improve auto scroll to bottom. Closes #3029 2023-06-12 15:47:41 -07:00
Gabe Kangas
447ab10738
feat: add ios specific push notification instructions
Closes #2992
2023-06-05 21:01:51 -07:00
Yusuke
c4cd2d8472
Fix NotifyReminderPopup warning #3034. (#3068)
* Fix NotifyReminderPopup warning.

TT:#3034

* Revert web/components/action-buttons/NotifyButton.tsx

* Add div tag to make the children recognized as plain html element.

TT: #3034
2023-06-05 17:39:27 -07:00
Gabe Kangas
07db73b084
fix(ui): set offline banner color to be static palette white 2023-06-05 08:55:21 -07:00
Gabe Kangas
2046e4999f
feat(chat): decrease msg collapse timeout + add spacing. Closes #3062 2023-06-02 19:48:07 -07:00
renovate[bot]
a4f984e7d1
fix(deps): update dependency slate-react to v0.95.0 (#3065)
* fix(deps): update dependency slate-react to v0.95.0

* fix: slate requires prop name change

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2023-06-02 11:44:44 -07:00
Tung Bui (Leo)
6976b0ddb8
fix(admin): Broken link to the stream health page (#3064) 2023-06-02 11:15:01 -07:00
Gabe Kangas
6d30de19f6
fix(chat): cleanup of moderator flag check 2023-05-31 16:54:30 -07:00
Gabe Kangas
924223328c
fix(chat): tweak layouts of chat user badges. Closes #3009 2023-05-31 14:53:13 -07:00
Gabe Kangas
71703f2245
fix(chat): fix bot status not showing. Closes #3046 2023-05-31 13:54:03 -07:00
Gabe Kangas
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
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
15e06b9b2b
fix(mobile): remove extra 20px of padding 2023-05-25 08:20:03 -07:00
Gabe Kangas
432a348deb
fix(ui): move id to menu button instead of wrapper div 2023-05-23 16:51:48 -07:00
gingervitis
29041e6d76
Address chat modal button issues (#3042)
* don't display chat button or modal if isModal is true. dont display the show/hide chat option in the userdropedown for tablet sizes either. tweak chat button styles and make chat button bg the same as the chat component bg color.

* only show chat button if online

* fix(chat): chat should be available through 5min buffer period. Fixes #3044

* fix(test): update mobile test

---------

Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2023-05-23 16:32:35 -07:00
Gabe Kangas
69f217f758
Refactor mobile chat into modal (#3038)
* feat(mobile): refactor mobile chat into modal

- Make page always scrollable
- Move mobile chat into a standalone modal

* fix(test): split out mobile browser test specs

* fix(mobile): force chat button to render on top of footer

* fix: some small updates from review

* fix: hide/show hide chat menu option based on width

* fix: chat button icon getting cut off

* chore(tests): add browser tests for mobile chat modal

* chore(tests): add story for ChatModal component

* fix(test): quiet shellcheck

* fix: remove unused import

* fix(tests): silence storybook linting warning

* fix(ui): reposition chat modal button icon with transform
2023-05-22 18:56:44 -07:00
gingervitis
4703a64878
address doublescroll #3028 (#3035)
* quick fix for mobile menu button overlap

* - use new dynamic vh css prop to handle ios safari double scrolling
- only force tabs height when online

* cleanup

* add comment
2023-05-21 14:11:53 -07:00
Gabe Kangas
e50b23d081
Cleanup unused Javascript (#3027)
* chore(js): be stricter about dead code warnings

* chore(js): remove dead code and unused exports

* rebase

* chore: remove unused files

* chore(deps): remove unused prop-types dep

* chore(js): remove unused function

* chore(deps): remove + check unused deps

* chore(js): remove unused exports. Closes #3036
2023-05-20 21:15:25 -07:00
Gabe Kangas
acab4e5c85
fix(ui): hard code the colors of the chat moderation menu button 2023-05-20 14:59:02 -07:00
Gabe Kangas
4e1da3fa23
fix(ui): do not add extra spacing to every ant row. Closes #3031 (#3033) 2023-05-19 17:34:23 -07:00
Gabe Kangas
77eb491943
fix(header): change border to outline to resolve logo rendering. Closes #3000 2023-05-18 18:13:23 -07:00
Gabe Kangas
b8ca46a5a3
fix(ui): notify reminder popover positioning. Closes #3025 2023-05-18 15:24:09 -07:00
Gabe Kangas
1f1f48acb0
fix(chat): fix chat input placeholder positioning. Closes #2991 2023-05-18 14:07:11 -07:00
gingervitis
c2a0295a0c
Address some layout issues with odd content spacing on mobile, and footer position (#3022)
* - set vars for player container height and status bar height
- use them to calculate mobile top spacing to adjust for tab content positioning

* give main content section a min height, place footer absolutely at bottom; rm all the fixed footer styling

* cleanup; restructure tabbed display logic and css a bit

* Prettified Code!

* cleanup

* fix(story): footer story needs to be wrapped in RecoilRoot if it is to use Recoil

* revert adding footer to mobile about section

* prevent double scrolling

---------

Co-authored-by: gingervitis <gingervitis@users.noreply.github.com>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2023-05-18 12:13:26 -07:00
Gabe Kangas
9cb566681e
fix(ui): tweak footer padding and animation speed 2023-05-12 15:41:18 -07:00
Nathan
3bd45d09f3
feat: floating fading footer (#3008)
Co-authored-by: thisProjects <wibbet@wobbet.com>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2023-05-12 14:52:54 -07:00
Gabe Kangas
e694d76ad2
fix(mobile): toggle tablet content layout based on online state. Closes #3003 (#3007) 2023-05-12 07:00:04 -07:00
Gabe Kangas
d900da8cab
fix(metrics): increase max valid latency reporting time. Troubleshooting 2023-05-11 22:17:33 -07:00
Gabe Kangas
cfdfdf5f49
fix(chat): add slight spacing via margin below bottom chat message 2023-05-08 19:29:00 -07:00
Gabe Kangas
fadb9def83
fix(chat): allow system chat messages to fill width. Closes #2998 2023-05-08 18:49:34 -07:00
Gabe Kangas
722d11307a
feat(ui): add id to scroll to bottom button 2023-05-08 09:44:39 -07:00
Gabe Kangas
085c9dceff
feat(ui): add id to social links container 2023-05-08 08:56:14 -07:00
Gabe Kangas
a9a2ad5487
fix(chat): tweak auto scrolling on message logic to reduce scroll to bottom button showing 2023-05-07 20:29:29 -07:00
Gabe Kangas
321217651d
fix(footer): override link colors in footer 2023-05-07 10:35:01 -07:00
Gabe Kangas
84fdbecec3
fix(player): fix incorrect icon being rendered from vjs font after update 2023-05-07 09:42:58 -07:00
Gabe Kangas
23d29ac2ae
fix(ui): use showChat selector for dynamicPadding logic 2023-05-06 20:36:17 -07:00
Gabe Kangas
4fa960be8b
fix(ui): fix dynamic padding not taking disabled chat state into account 2023-05-06 20:06:39 -07:00
Gabe Kangas
933656c3a7
fix(player): fix vjs throwing warning about accessing tech 2023-05-06 20:06:13 -07:00
Gabe Kangas
be60d94045
chore(deps): update video.js to the 8.x release 2023-05-06 18:37:12 -07:00
Gabe Kangas
630a5bf782
fix(mobile): support a dynamic mobile browser theme color 2023-05-06 17:06:14 -07:00
Gabe Kangas
a1a2bf1a47
fix(mobile): fix offline banner overflow due to hard-coded height
Closes #2990
2023-05-06 16:30:52 -07:00
Gabe Kangas
3616717ceb
fix(chat): strip p tags from outgoing chat messages to fix markdown rendering 2023-05-06 16:00:48 -07:00
Gabe Kangas
f5657d9fdc
fix: provide fallback empty object for appearance variables 2023-05-06 14:11:21 -07:00
Gabe Kangas
afa6c8fd23
fix(chat): increase font weight of chat name change messages 2023-05-06 11:01:14 -07:00
Gabe Kangas
6d55c42282
fix(chat): increase font weight of chat join messages 2023-05-06 10:49:00 -07:00
Gabe Kangas
646c5616da
fix(footer): add dynamic right padding to fix footer overflowing. Closes #2988 2023-05-05 14:37:01 -07:00
Gabe Kangas
b41bb31473
fix(footer): allow overriding text color in the footer 2023-05-05 14:36:27 -07:00
Gabe Kangas
14d95a69f3
fix(ui): do not use hard-coded colors for text 2023-05-05 12:20:50 -07:00
Nathan
04848c1d8c
fix:#2954-player-gets-cut-off-vertically (#2987)
* fix:#2954-player-gets-cut-off-vertically

* Use header-height variable everywhere

---------

Co-authored-by: thisProjects <wibbet@wobbet.com>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2023-05-05 11:10:28 -07:00
Gabe Kangas
9e19af636e
fix(mobile): adjust padding for bottom mobile content. Closes #2986 2023-05-04 21:48:09 -07:00
Gabe Kangas
6982ce54b7
fix: increase line height of headers in page content 2023-05-04 21:40:53 -07:00
Gabe Kangas
c79834a752
fix(mobile): do not show action menu if there are no actions. Closes #2985 2023-05-04 21:37:52 -07:00