브랜드 헤더 모바일 메뉴가 창 크기 변경 전까지 완전히 확장되지 않음

브랜드 헤더 메뉴가 모바일에서 탭했을 때 왼쪽 위 메뉴가 일부만 펼쳐지는 문제가 있습니다. 모바일에서는 바를 표시하지 않도록 설정되어 있습니다. 햄버거 메뉴만 탭하면 다음과 같은 모습이 됩니다.

그런데 창 크기를 어떤 방향으로든 조정하면 완전히 펼쳐져 모든 하위 링크가 표시됩니다.

창 크기 조정을 하지 않고도 탭했을 때 완전히 펼쳐지게 하려면 어떻게 해야 하나요?

저희 포럼에서 햄버거 메뉴를 클릭할 때만 “menu-panel” div에 “slide-in” 클래스가 추가되지 않는다는 것을 발견했습니다.

하지만 창 크기를 조정하면 즉시 클래스가 추가되고 메뉴가 정상적으로 작동합니다.

제 판단으로는 menu-panel과 slide-in은 저희 테마에서 비롯된 것이 아닙니다. 하지만 slide-in이 정상 작동에 중요한 것 같습니다. 왜 메뉴를 열 때 slide-in이 추가되지 않는 것일까요? 왜 브라우저 창 크기를 조정하면 갑자기 추가되는 것일까요?

다른 테마가 설치되어 있지 않은 상태에서 모바일로 이 컴포넌트를 확인한 결과는 다음과 같습니다:

이렇게 보이도록 크기를 조정하지 않아도 되며, 크기를 조정해도 slide-in 클래스가 전혀 적용되지 않습니다…

현재 버전인 3.3이 아니라 Discourse 3.2를 사용 중인 것으로 보입니다. 이 컴포넌트의 일부 업데이트는 3.3 버전에 의존하므로, 현재는 해당 업데이트가 적용되지 않고 있습니다.

Discourse와 컴포넌트를 업데이트하면 모든 문제가 해결될 수 있지만, 그렇지 않다면 다른 커스터마이징과의 충돌이 원인일 수 있습니다.

맞아요, 저희는 Discourse 3.2.3을 사용하고 있습니다. 이 게시물에서 이 문제가 3.3 버전에서도 존재한다고 이해했었는데, 말씀하신 것처럼 정상적으로 작동하는 것 같습니다. 3.3으로 업그레이드할 수 있는지, 아니면 brand-header 컴포넌트의 이전 버전을 설치할 수 있는지 확인해 보겠습니다.

해당 컴포넌트가 3.3 버전을 요구한다는 내용이 어디에 명시되어 있나요? 제가 확인해 보았지만 그런 내용은 찾을 수 없었습니다.

혹시 3.3에 의존하는 업데이트가 언제 이루어졌는지, 혹은 3.2와 호환되는 마지막 버전이 무엇일지 알고 계신가요?

명시적으로 요구하지는 않지만, 업데이트를 진행할 때 새로운 Discourse 기능에 의존하게 되는 경우가 있습니다. 이때 해당 테마 컴포넌트를 이전 Discourse 버전으로 고정(pinning)하여 호환되지 않는 업데이트를 받지 않도록 할 수 있습니다.

이렇게 처리된 경우 세부 정보는 .discourse-compatibility 파일에 포함되어 있습니다:

이 경우 해시 12e6f76e0508b262517efd5db2d7feca261dff86를 가진 커밋에 고정되며, 해당 커밋은 DEV: move widgets to dedicated files, cleanup (#28) · discourse/discourse-brand-header@12e6f76 · GitHub 입니다.

해당 변경 이후, Discourse에서 헤더가 작동하는 방식이 변경됨에 따라 컴포넌트 코드가 완전히 재구성되었습니다.

이것이 우리 팀이 고려해야 할 좋은 이슈임을 시사합니다. 이 정보는 상당히 깊이 숨겨져 있고 기술적인 내용이기 때문입니다. 아마도 관리자 패널에 "최신 버전의 Discourse 기능이 필요하여 업데이트가 중단된 컴포넌트가 있다"는 메시지를 추가할 수 있을 것입니다.

컴포넌트를 포크한 뒤 커밋 12e6f76으로 롤백하여 포럼에 설치했지만 문제가 여전히 발생합니다. 그러면 수정되지 않을까요?

아니요, 그 커밋은 이미 고정해 놓은 것이에요. 그 이후에 온 모든 것이 빠져 있습니다.

무언가를 잘못 이해하고 있는 것 같습니다. 예전에는 이런 문제가 없었는데, 어느 시점에 해당 구성 요소가 Discourse 3.3이 필요한 변경 사항을 포함하도록 수정되었고, 구성 요소는 업데이트했지만 여전히 Discourse 3.2를 사용 중이라는 것이 맞나요? 그렇다면 가장 간단한 해결책은 Discourse 3.2와 호환되는 마지막 버전의 구성 요소로 롤백하는 것 wouldn’t it be?

해당 컴포넌트는 3.3용 변경 사항을 받지 못했을 것입니다. 특정 Discourse 버전에 고정된(pinned) 컴포넌트는 Discourse가 업데이트될 때까지 현재 상태로 고정되어 있습니다.

따라서 이렇게 할 필요가 없을 것입니다… 고정(pinning)하면 자동으로 최신 호환 버전으로 유지되어야 하지만, 현재 사용 중인 컴포넌트 버전에는 이미 이 버그가 존재했을 수 있습니다.

이제 이해가 됩니다… 영리하네요. 유지보수자가 3.2 버전에서 해당 컴포넌트가 제대로 작동하도록 개선하려는 노력을 하지 않을 것이라고 가정해도 될까요?

포럼의 사본을 만들어 3.3으로 업그레이드해 보았는데, 실제로 문제가 해결되었습니다. 운영 중인 포럼에서도 3.3으로 업그레이드할 수 있는지 관리자에게 확인해 보고 있습니다.

감사합니다!

아쉽게도 저희는 최신 버전의 Discourse에서만 테마 컴포넌트를 유지보수할 수 있는 역량이 있습니다. 따라서 구버전에서는 가끔 이런 문제가 발생할 수 있습니다.

드디어 라이브 포럼을 3.3으로 업데이트할 수 있었고, 갑자기 정상 작동하기 시작했습니다. 다시 한번 감사합니다!