Actions
기능 #10
open
CG
파일 멘션(@) 검색 및 첨부 기능 추가
기능 #10:
파일 멘션(@) 검색 및 첨부 기능 추가
Status:
신규
Priority:
보통
Assignee:
-
Category:
-
Start date:
Due date:
% Done:
0%
Estimated time:
Description
배경
- composer 입력창에서 @ 기호로 프로젝트 파일을 멘션하고, 선택한 파일을 대화에 첨부할 수 있는 기능이 필요하다.
- 사용자는 파일 경로를 직접 정확히 입력하지 않아도, @ 뒤에 일부 문자를 입력해 파일 검색 팝업에서 원하는 파일을 선택할 수 있어야 한다.
핵심 요구사항
- 입력창에서 @ 기호를 입력한 뒤 두 글자 이상을 입력하면 파일 리스트 팝업을 표시한다.
- 예: @ut, @app, @read 처럼 @ 뒤 검색어가 2글자 이상이 되었을 때 후보 목록을 연다.
- 검색어가 2글자 미만이면 파일 리스트 팝업을 표시하지 않는다.
- 팝업에서 파일을 선택하면 해당 파일이 현재 메시지에 첨부되거나 파일 멘션 토큰으로 삽입되어야 한다.
- 선택 이후 입력창에는 사용자가 어떤 파일을 첨부했는지 명확히 보이는 UI가 필요하다.
파일 검색 로직
- 파일 검색 로직은 github/openai/codex 프로젝트의 파일 멘션/파일 검색 구현을 참고해야 한다.
- 이 저장소의 codex-source/는 reference source로만 사용하고, 제품 코드에 그대로 복사하거나 vendor 처리하지 않는다.
- 검색 결과의 정렬, fuzzy matching, 경로 매칭, 제외 규칙은 가능한 한 github/openai/codex의 동작과 동일하게 맞춘다.
- 특히 사용자가 파일명 일부, 경로 일부, 확장자 일부를 입력했을 때 Codex App과 유사한 후보가 나오도록 해야 한다.
- node_modules, 빌드 산출물, 숨김/무시 파일 등 제외 대상도 Codex 소스의 로직을 확인해 동일한 기준을 따르는 것을 우선한다.
- 검색 로직은 renderer 안에 임의로 흩뿌리지 말고, 재사용 가능한 파일 검색/멘션 모듈 또는 app-server/shared 경계에 맞게 배치한다.
팝업 UI 요구사항
- 파일 리스트 팝업은 composer 근처에 표시한다.
- 각 항목은 파일명과 경로를 식별 가능하게 보여준다.
- 후보가 많을 경우 스크롤 가능한 목록으로 표시하되, composer 레이아웃을 과하게 밀어내지 않는다.
- 현재 선택된 항목은 hover/keyboard focus 상태가 분명히 보이도록 표시한다.
- Codex App 스타일에 맞게 어두운 톤, 절제된 hover/focus, 과하지 않은 radius와 간격을 유지한다.
키보드 조작
- 파일 리스트 팝업이 열린 상태에서 위/아래 방향키로 선택 항목을 이동할 수 있어야 한다.
- 최상단 항목에서 위 방향키를 누르면 최하단 항목으로 선택이 이동한다.
- 최하단 항목에서 아래 방향키를 누르면 최상단 항목으로 선택이 이동한다.
- 즉 후보 목록은 방향키 이동 시 순환한다.
- Enter 키로 현재 선택된 파일을 확정/첨부한다.
- ESC 키를 누르면 파일 리스트 팝업이 닫힌다.
- 팝업이 닫힌 뒤에는 composer 입력 흐름이 자연스럽게 이어져야 한다.
마우스 조작
- 파일 후보를 클릭하면 해당 파일이 첨부된다.
- 마우스 hover와 키보드 선택 상태가 충돌하지 않도록 처리한다.
- 팝업 밖 클릭이나 멘션 입력 취소 시 팝업을 닫을지 정책을 정하고 일관되게 구현한다.
상태 및 예외 처리
- 검색 결과가 없을 때 빈 상태 문구를 표시한다.
- 검색 중 지연이 있으면 짧은 로딩 상태를 표시한다.
- 파일 시스템 접근 오류나 프로젝트 루트 미확정 상태에서는 사용자에게 조용하고 명확한 오류/빈 상태를 보여준다.
- 이미 첨부된 파일을 다시 선택했을 때 중복 첨부를 허용할지, 기존 첨부를 유지할지 정책을 정한다.
완료 기준
- @ 뒤 두 글자 이상 입력 시 파일 리스트 팝업이 열린다.
- github/openai/codex의 파일 검색 로직을 확인하고, 검색/정렬/제외 규칙을 가능한 한 동일하게 반영했다.
- 파일 후보를 클릭하거나 Enter로 선택하면 파일이 첨부된다.
- 위/아래 방향키로 선택 항목을 이동할 수 있고, 첫 항목/마지막 항목에서 반대쪽으로 순환한다.
- ESC 키로 팝업을 닫을 수 있다.
- 팝업 UI가 Codex App 스타일과 composer 레이아웃을 해치지 않는다.
- 파일 검색 및 멘션 상태 로직이 과도하게 renderer 컴포넌트에 뒤섞이지 않고 유지보수 가능한 위치에 정리되어 있다.
CG Updated by Carl Friedrich Gauss about 6 hours ago
- Start date deleted (
05/01/2026)
CG Updated by Carl Friedrich Gauss about 6 hours ago
- Tracker changed from 검토 to 기능
Actions