토픽 작성기에서 이모지 태그의 동작이 일관되지 않음을 발견했으며, 수정되지 않은 main 브랜치의 802125b979b5bb848a7cfc52409ef3176ffd4d82 커밋에서 이를 재현했습니다.
기존 이모지 태그의 경우, 태그 이름을 입력하면 기존 태그와 사용 횟수 대신 생성 옵션이 표시될 수 있습니다. 해당 옵션을 선택하여 게시해도 결국 기존 태그가 연결됩니다. 완전히 새로운 이모지 태그는 별개의 사례로, 작성기에서는 선택할 수 있지만 게시 후 사라집니다.
기존 태그 문제를 재현하는 방법:
😊와 같이 기존 이모지 태그와 더 자주 사용되는 다른 태그들이 있는 사이트를 사용합니다.- 토픽 작성기를 열고 이모지 태그 이름을 입력합니다.
- 해당 태그가 반환되는 인기 태그 제한 범위를 벗어나면, 드롭다운 메뉴에 생성 옵션과 관련 없는 인기 태그만 표시되고 기존 태그의 사용 횟수는 표시되지 않습니다.
- 생성 옵션을 선택하고 게시한 뒤 새로고침을 합니다. 토픽에는 여전히 원래 태그 레코드가 사용됩니다.
격리된 브라우저 테스트에서 사용 횟수가 17인 기존 이모지 태그, 사용 횟수가 100인 관련 없는 태그, 그리고 검색 제한 값 1을 사용했습니다. 드롭다운에는 Create: '😊'와 popular x100이 표시되었으며, 게시 후 기존 이모지 태그가 올바르게 재사용되었습니다. 기존 😊 레코드가 없는 경우, 동일한 작업은 HTTP 200을 반환했지만 태그는 저장되지 않았습니다.
원인은 DiscourseTagging.clean_tag 함수에 있으며, 이 함수는 검색어 처리와 새 이름 저장 시 모두 사용됩니다. 이 함수는 이모지 문자를 제거합니다. 이로 인해 검색은 인기 결과로 폴백되지만, 새 이름을 정리하기 전에 원래 이름으로 기존 태그를 찾을 수 있으므로 저장은 여전히 가능합니다.
기존 Emoji.unicode_replacements 데이터에 의해 인식되는 완전한 이모지 그라프엠을 보존하는 작은 패치를 보유하고 있습니다. 이 패치는 기존 ASCII 필터링을 유지하고 비-이모지 텍스트에서 무효 문자를 제거합니다. 또한 현재 단어 경계 표현식이 😊-restricted와 같은 이모지로 시작하는 이름을 놓치기 때문에, 비활성화된 태그 제안이 이름의 앞부분과 일치하도록 허용합니다.
해당 패치는 두 개의 구현 파일을 수정하고 세 개의 테스트 파일에 회귀 테스트 커버리지를 추가합니다. 데이터베이스 마이그레이션, 프론트엔드 변경 사항, 새로운 API 또는 별도의 이모지 캐시를 추가하지 않습니다.
로컬 검증: 관련 백엔드 예제 572개와 브라우저 예제 8개가 통과했습니다. 브라우저 테스트는 기존 이모지 태그가 x17으로 표시되며, 게시 및 새로고침 후에도 해당 태그와 완전히 새로운 😊 태그가 모두 남아있는지 확인합니다.
업데이트 — 2026년 10월 23일
해결책은 PR #44994: FIX: Preserve emoji tags during search and saving으로 제출되어 리뷰 준비가 완료되었습니다.
포크 리포지토리의 전체 CI가 통과했습니다: 모든 10개 테스트 매트릭스 작업, 린팅, 그리고 라이선스 체크.
이번 실행을 위해 동일한 해결책을 포함하고 테스트 작업 타임아웃을 20/30분에서 90분으로 늘린 별도 검증 브랜치를 사용했습니다. 이는 이전 실행이 포크 러너에서 타임아웃되었기 때문입니다. 테스트 명령어, 매트릭스 및 단언문(assertions)은 변경되지 않았습니다. 타임아웃 조정은 업스트림 PR의 일부가 아닙니다. PR은 아직 병합되지 않았으며, 업스트림 CI는 유지보관리 승인을 기다리고 있습니다.
패치 브랜치:
관련 보고서 및 토론:
이러한 보고서는 이전의 이모지 태그 제한 사항을 설명합니다. 본 패치는 위에서 재현된 작성기 검색 및 저장 실패 문제를 해결하며, 모든 이모지 태그 문제를 해결한다고 주장하지는 않습니다.