meta.discourse.org에서 기존 토픽을 보고 있는 상태에서 네이티브 c 키보드 단축키를 사용하여 두 개의 새 토픽 초안을 만들 때 초안 충돌을 재현할 수 있습니다.
재현 방법
- 기존 공개 토픽을 엽니다.
c키를 눌러 새 토픽을 생성합니다.- 제목과 본문을 입력합니다.
- 초안이 저장될 때까지 기다린 후, 작성기의 저장 및 닫기 버튼(X)을 클릭합니다.
- 여전히 기존 토픽을 보고 있는 상태에서
c키를 다시 눌러 또 다른 새 토픽을 생성합니다. - 다른 제목을 입력합니다.
- 제목 필드에서 메시지 본문으로 이동하려면 Tab 키를 누르고 자동 저장이 될 때까지 기다립니다.
Meta에서 확인한 재현을 위해, 두 개의 새 토픽 작성기 모두 기존 토픽을 보고 있는 상태에서 열려야 합니다.
실제 결과
초안이 다른 창에서 편집되고 있으며 페이지를 새로고침하라는 경고가 표시됩니다.
다른 창에서 초안을 편집하지 않은 상태에서도 이 문제가 발생합니다.
제 사이트에서 /drafts.json으로 전송된 실패한 자동 저장 요청은 HTTP 409를 반환합니다.
기대 결과
두 번째 새 토픽은 자체 초안을 가져야 하며, 충돌 없이 첫 번째로 저장된 초안이 유지되어야 합니다.
재현 위치
- 위 단계를 따르며 meta.discourse.org에서 재현했습니다.
- 테마와 모든 클라이언트 측 플러그인 커스터마이징이 비활성화된 **안전 모드(Safe Mode)**에서 제 사이트에서 재현했습니다.
- 제 사이트는 Discourse
2026.10.0-latest, 커밋b28f2a44c를 실행 중입니다.
가능한 원인
코드 검토 결과, KeyboardShortcuts#createTopic의 폴백이 여전히 고정된 Composer.NEW_TOPIC_KEY(new_topic)를 사용하고 있으며 draftSequence를 제공하지 않는 것으로 보입니다:
비교하자면, composer.openNewTopic()은 고유한 초안 키를 생성합니다.
제 사이트에서 캡처된 재현 과정에서, 첫 번째 초안은 new_topic 아래에 저장되어 시퀀스 1에 도달했습니다. 두 번째 작성기는 시퀀스 없이 동일한 키 아래에 저장을 시도하여 HTTP 409와 경고가 발생했습니다.
이 폴백이 composer.openNewTopic()을 사용하여 각 새 토픽이 별도의 초안을 갖도록 할 수 있을까요?
감사합니다,
Prof. Caju