Skip to content

fix(clipboard): 비동기 복사 실패 시 기존 브라우저 대체 경로 사용 - #13

Closed
0disoft wants to merge 2 commits into
mainfrom
review/clipboard-api-fallback
Closed

0disoft wants to merge 2 commits into
mainfrom
review/clipboard-api-fallback

Conversation

@0disoft

@0disoft 0disoft commented Sep 22, 2026

Copy link
Copy Markdown
Owner

근거

기준 2e3cb0c30fe3ab909256efccc755a3aaedbaee42copyDcHtml/copyPlainText는 Clipboard API가 존재하면 이를 호출한 뒤, 실패 시 바로 reject합니다. 기존 execCommand 대체 경로는 API가 아예 없는 환경에서만 실행됩니다. API 노출 여부와 실제 쓰기 성공 여부를 구분해야 합니다.

변경

  • ClipboardItem 생성 또는 async write/writeText 실패 시 기존 브라우저 fallback을 한 번 시도합니다.
  • modern API 성공 시 중복 복사를 수행하지 않습니다.
  • fallback도 거절되면 기존 오류를 호출자에게 전달하고 임시 DOM을 제거합니다.
  • 기존 테스트를 삭제/완화하지 않고 clipboard-fallback.test.ts 5개 케이스를 추가합니다.

실제 검증

원본 파일을 로컬에 복원한 후 Git blob SHA 70e05eb948d961ed1f4b1ff3e9c8075256768aac와 일치함을 확인했습니다. Node에서 TypeScript를 변환하고 mock DOM/Clipboard API로 다음 시나리오를 실행했습니다.

시나리오 원본 수정
HTML async write 거절 후 fallback 실패 통과
plain text write 거절 후 fallback 실패 통과
ClipboardItem 생성 실패 후 fallback 실패 통과
async 성공 시 중복 복사 없음 통과 통과
fallback도 거절되면 실패 전파·정리 해당 경로 미도달 통과

추가된 Vitest 파일은 저장소 CI에서 다시 실행해야 합니다: bun run test --run tests/unit/clipboard.test.ts tests/unit/clipboard-fallback.test.ts.

한계 / 범위

  • 브라우저 권한 제한을 우회하거나 모든 브라우저에서 복사 성공을 보장하는 변경이 아닙니다. execCommand도 거절될 수 있습니다.
  • 실제 OS 클립보드/DCInside 붙여넣기와 WebKit 사용자 활성화 검증은 미실행입니다.
  • legacy 복사 후 기존 선택 영역/포커스 복원과 plain MIME 일치 문제는 별도 개선 대상으로 유지합니다.
  • main에서 독립 분기했으며 PR ci: PR 검증·잠금 설치·브라우저 회귀 테스트 추가 #3/#8의 변경은 포함하지 않았습니다.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 22, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
🔒 Security Review Completed 2026-09-22T18:58:08.182747Z 9789d25 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

0disoft commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

전체 통합 검증 완료

최신 커밋 3baf11f4d258af62422e92b6a5bc360781b10651의 앱 소스·테스트 Git blob을 PR #3/#8과 함께 검증 전용 브랜치에 구성했습니다.

Review Integration Validation #2 — 커밋 5a39d3726d5774f2b2c1c9b6eb022770e3625400, success.

  • Bun 1.3.14 frozen install, tsgo, Oxfmt, Pages base path 빌드 성공.
  • Oxlint: 오류 0, 경고 0.
  • Svelte check: 오류 0, 기존 Toolbar.svelte CSS 경고 6.
  • Vitest: 27개 파일, 191개 테스트 통과. 이 PR의 신규 5개 및 기존 clipboard 테스트 6개 포함.
  • Chromium E2E: 기존 5개 모두 통과.

이 결과는 mock Clipboard API를 사용하는 단위 테스트와 기존 브라우저 테스트의 통합 실행입니다. 실제 OS 클립보드 권한·Safari 사용자 활성화·DCInside 붙여넣기 성공을 보장하지는 않습니다. 선택/포커스 복원 문제는 #14에서 별도로 추적합니다.

main과 배포는 변경하지 않았습니다. #3을 먼저 병합한 뒤 각 PR의 체크를 다시 실행하는 순서를 권장합니다.

@0disoft

0disoft commented Sep 23, 2026

Copy link
Copy Markdown
Owner Author

PR의 클립보드 fallback 수정을 1851702·f55dd72 커밋으로 main에 반영했습니다. main 30e849a의 CI가 통과했습니다.

@0disoft 0disoft closed this Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant