* 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 <>
* 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 <>
* 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>
* 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
* 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
* - 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>
* feat: mock window.WebSocket to prevent WS calls from Main layout story
* Prettified Code!
---------
Co-authored-by: Pranav2612000 <Pranav2612000@users.noreply.github.com>
* Inject services with useContext
* Extract service for video settings
* Create mock factories for services
* Create test data for chat history
* Add story to visualize different layouts
* Fix renaming mistake
* Add landscape and portrait viewports
* Add landscape stories
---------
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
* Make OwncastLogo more versatile
* Add noscript tag
* Commit updated API documentation
* Show all content on vertical overflow
---------
Co-authored-by: Owncast <owncast@owncast.online>
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.
* hide footer on mobile to avoid double scrollbars
* fix double scrollbars on desktop by removing scroll behaviour from main section
* add scrollbar styles to body and html
* add vertical scrolling back to main section
* prevent header from collapsing and messing around with scrolling
* prevent body from scrolling for main layout
* move tablet breakpoint into breakpoint mixin
* preffify code
* remove js height calc for lower section on mobile and use css
* enable scrolling within a tab on mobile
* remove scrollbar from main section on mobile
* adjust header height on mobile
* add react use to web
* lock body scroll for main layout