fix(threads): thread panel no longer squeezes the composers (#218)
CI / Build & Quality Checks (push) Canceled after 0s
CI / Trigger Desktop Build (push) Canceled after 0s
CI / Secret scan (gitleaks) (push) Canceled after 0s
CI / Docker image build & smoke test (push) Canceled after 0s
CI / Playwright smoke (e2e) (push) Canceled after 0s
CI / Build & Quality Checks (push) Canceled after 0s
CI / Trigger Desktop Build (push) Canceled after 0s
CI / Secret scan (gitleaks) (push) Canceled after 0s
CI / Docker image build & smoke test (push) Canceled after 0s
CI / Playwright smoke (e2e) (push) Canceled after 0s
Two causes. (1) Three right-hand columns don't fit under ~1500 px: the member
drawer now yields to an open content panel (thread / gallery / widgets /
threads list) on desktops ≤ 1500 px and returns when it closes, like Element.
(2) The thread composer rendered the full ten-button toolbar inside a 360 px
panel, leaving 24 px for the input ('S…') at every width — RoomInput gains a
compactLayout prop (the phone one-row '+ | input | emoji | send' layout) and
ThreadPanel uses it.
Measured headless: 1400 px thread open → drawer hidden, composers 328/168 px
(was 422 → 'Send a mes…' + 24 px); 1600 px → drawer stays, thread composer 168 px.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
This commit is contained in:
@@ -11,6 +11,7 @@ import { WidgetsPanel } from './widgets/WidgetsPanel';
|
||||
import { widgetsPanelAtom } from '../../state/widgetsPanel';
|
||||
import { mobileMembersPanelAtom } from '../../state/mobileMembersPanel';
|
||||
import { ScreenSize, useScreenSizeContext } from '../../hooks/useScreenSize';
|
||||
import { useMediaQuery } from '../../hooks/useMediaQuery';
|
||||
import { useSetting } from '../../state/hooks/settings';
|
||||
import { settingsAtom } from '../../state/settings';
|
||||
import { PowerLevelsContextProvider, usePowerLevels } from '../../hooks/usePowerLevels';
|
||||
@@ -150,10 +151,16 @@ export function Room() {
|
||||
(isDesktop || (!galleryOpen && !widgetsOpen));
|
||||
// Desktop: the persisted drawer preference. Mobile: a transient panel the
|
||||
// user opened from the header menu (never the desktop default).
|
||||
// [Gitea #218] Three right-hand columns (timeline + thread/gallery/widgets
|
||||
// panel + member drawer) don't fit under ~1500 px — both composers shrank to
|
||||
// a few characters. Like Element, the member drawer yields to the content
|
||||
// panel on narrower desktops and comes back when it closes.
|
||||
const narrowDesktop = useMediaQuery('(max-width: 1500px)');
|
||||
const contentPanelOpen = showThreadPanel || showGallery || showWidgets || showThreadsList;
|
||||
const showMembers =
|
||||
!callView &&
|
||||
(isDesktop
|
||||
? isDrawer
|
||||
? isDrawer && !(narrowDesktop && contentPanelOpen)
|
||||
: mobileMembersOpen && !activeThreadId && !galleryOpen && !widgetsOpen && !threadsListOpen);
|
||||
|
||||
// Leaving a room on a phone closes its member panel.
|
||||
|
||||
Reference in New Issue
Block a user