πŸ“„ κ²Œμ‹œκΈ€ 볡사 μ»΄ν¬λ„ŒνŠΈ

@Moin, κ·Έ 문제λ₯Ό μ°Ύμ•„μ€˜μ„œ κ³ λ§ˆμ›Œ. μˆ˜μ • 사항을 λ°˜μ˜ν–ˆμ–΄:

6개의 μ’‹μ•„μš”

볡사 λ²„νŠΌμ„ 클릭할 λ•Œλ§ˆλ‹€ 이 였λ₯˜ λ©”μ‹œμ§€κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€:

1개의 μ’‹μ•„μš”

λΈŒλΌμš°μ € μ½˜μ†”μ— 였λ₯˜κ°€ ν‘œμ‹œλ©λ‹ˆκΉŒ?

이 문제λ₯Ό λ‹€λ₯Έ ν† ν”½μ—μ„œ μ–ΈκΈ‰ν–ˆμŠ΅λ‹ˆλ‹€.

1개의 μ’‹μ•„μš”

읡λͺ… μ‚¬μš©μžλ‘œ ν•΄λ‹Ή μ»΄ν¬λ„ŒνŠΈλ₯Ό μ‚¬μš©ν•˜λŠ” μ‚¬μ΄νŠΈμ—μ„œ 였λ₯˜λ₯Ό λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€:

이λ₯Ό μˆ˜μ •ν•˜κΈ° μœ„ν•΄ PR을 λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€:

4개의 μ’‹μ•„μš”

PR이 이제 λ³‘ν•©λ˜μ—ˆμŠ΅λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€, Keegan!

3개의 μ’‹μ•„μš”

이 μ»΄ν¬λ„ŒνŠΈ μ‚¬μš©μžλ“€μ΄ 졜근 이 였λ₯˜λ₯Ό 더 자주 κ²ͺκ³  μžˆλ‚˜μš”?

방금 μ„€μΉ˜ν–ˆλŠ”λ°, 아이디어 ν•˜λ‚˜ μžˆμ–΄μš”:

μ—¬λŸ¬ κ²Œμ‹œκΈ€μ˜ 볡사 λ²„νŠΌμ„ ν΄λ¦­ν•΄μ„œ ν΄λ¦½λ³΄λ“œλ₯Ό β€˜μŒ“μ•„ μ˜¬λ¦¬μ„Έμš”β€™. μ΄λ ‡κ²Œ ν•˜λ©΄ μŠ€λ ˆλ“œμ˜ νŠΉμ • μ„Ήμ…˜μ„ λΉ λ₯΄κ²Œ μ„ νƒμ μœΌλ‘œ 볡사할 수 μžˆμŠ΅λ‹ˆλ‹€.

κ²Œμ‹œκΈ€μ΄ 5개 μžˆλ‹€κ³  κ°€μ •ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€:

κ²Œμ‹œκΈ€ A
κ²Œμ‹œκΈ€ B
κ²Œμ‹œκΈ€ C
κ²Œμ‹œκΈ€ D
κ²Œμ‹œκΈ€ E

Dλ₯Ό λ³΅μ‚¬ν•œ λ‹€μŒ Bλ₯Ό, 그리고 Eλ₯Ό λ³΅μ‚¬ν•œλ‹€κ³  ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. ν΄λ¦½λ³΄λ“œμ— μ‹€μ œλ‘œ λ“€μ–΄ μžˆλŠ” λ‚΄μš©μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

B
D
E

즉, ν΄λ¦½λ³΄λ“œλŠ” λ³΅μ‚¬ν•œ μˆœμ„œκ°€ μ•„λ‹ˆλΌ λŒ€ν™”μ—μ„œμ˜ μ‹œκ°„ μˆœμ„œλŒ€λ‘œ μ •λ ¬λ©λ‹ˆλ‹€.

μ—¬κΈ°μ„œ μ—λŸ¬κ°€ λ°œμƒν–ˆλŠ”λ°, ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ JS μ—λŸ¬λΌμ„œ /logsμ—μ„œ 찾을 μˆ˜κ°€ μ—†μ–΄μš”. 제 Discourse 버전은 2026.7.0-latest +188μž…λ‹ˆλ‹€.

μ›λž˜ 문제λ₯Ό 처음 λ°œκ²¬ν–ˆμ„ λ‹Ήμ‹œμ˜ μ •ν™•ν•œ Discourse 리비전과 ν˜„μž¬ main 브랜치λ₯Ό λŒ€μƒμœΌλ‘œ μΆ”κ°€ 쑰사λ₯Ό μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.

μž¬κ΅¬μ„±λœ 7μ›” λ‹Ήμ‹œμ˜ ν™˜κ²½ μ„€μ •μ—μ„œ ν΄λ¦½λ³΄λ“œ κ΄€λ ¨ μ‹€νŒ¨λ₯Ό μž¬ν˜„ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. β€˜κ²Œμ‹œλ¬Ό 볡사(Copy Post)’ κΈ°λŠ₯은 성곡/확인 ν‘œμ‹œκ°€ ν‘œμ‹œλ˜μ—ˆμŒμ—λ„ λΆˆκ΅¬ν•˜κ³  ν΄λ¦½λ³΄λ“œ λ‚΄μš©μ΄ μ‹€μ œλ‘œλŠ” κ΅μ²΄λ˜μ§€ μ•ŠλŠ” ν˜„μƒμ΄ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이것이 μ œκ°€ 7월에 올린 첫 번째 μŠ€ν¬λ¦°μƒ·μ— λ‚˜νƒ€λ‚œ ν…Œλ§ˆ/μ»΄ν¬λ„ŒνŠΈ 였λ₯˜μ™€ λ™μΌν•œ 근본적인 였λ₯˜μ˜€λŠ”μ§€ ν™•μΈν•˜μ§€λŠ” λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ ν˜„μž¬ Copy Post κ΅¬ν˜„μ€ 제 ν”„λ‘œλ•μ…˜ μΈμŠ€ν„΄μŠ€μ—μ„œ, iOS Safari PWAλ₯Ό ν¬ν•¨ν•˜μ—¬ μ •μƒμ μœΌλ‘œ μž‘λ™ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

7μ›” Discourse 리비전과 ν˜„μž¬ main의 κ΄€λ ¨ μ½”λ“œλ₯Ό λΉ„κ΅ν–ˆμŠ΅λ‹ˆλ‹€. Copy Post의 ν΄λ¦½λ³΄λ“œ κ΅¬ν˜„ μžμ²΄λŠ” λ³€κ²½λ˜μ§€ μ•Šμ•˜μœΌλ©°, λ‹€μŒ ν•­λͺ©λ“€μ—μ„œλ„ κ΄€λ ¨ λ³€κ²½ 사항을 μ°Ύμ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€:

  • clipboardCopy / clipboardCopyAsync
  • iOS 경둜λ₯Ό ν¬ν•¨ν•œ DButton μ•‘μ…˜ λ””μŠ€νŒ¨μΉ˜
  • λ ˆκ±°μ‹œ DButton 심(shim)
  • κ²Œμ‹œλ¬Ό 메뉴 트랜슀포머 경둜
  • discourse/lib/ajax의 GET 경둜

λ˜ν•œ, 원본 κ²Œμ‹œλ¬Ό μš”μ²­μ„ μΌμ‹œ μ€‘μ§€ν•˜κ³  μš”μ²­μ΄ μ™„λ£Œλ˜κΈ° 전에 navigator.clipboard.write()κ°€ μ‹œμž‘λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜λŠ” μ‹€ν—˜μ  μ‹œμŠ€ν…œ μŠ€νŽ™μ„ μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€. Copy Postκ°€ clipboardCopyAsyncλ₯Ό μ‚¬μš©ν•˜λ„λ‘ λ³€κ²½λ˜λ©΄ ν•΄λ‹Ή ν…ŒμŠ€νŠΈλŠ” ν†΅κ³Όν•˜κ³ , ν˜„μž¬ κ΅¬ν˜„μ— λŒ€ν•΄μ„œλŠ” μ‹€νŒ¨ν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ ν˜„μž¬ Copy PostλŠ” μ œκ°€ ν…ŒμŠ€νŠΈν•œ λΈŒλΌμš°μ €/λ””λ°”μ΄μŠ€, 특히 iOS Safari PWAμ—μ„œ 정상 μž‘λ™ν•˜λ―€λ‘œ, ν•΄λ‹Ή ν…ŒμŠ€νŠΈλŠ” ν˜„μž¬ μ‚¬μš©μž 직면(regression) 문제λ₯Ό μž…μ¦ν•˜λŠ” 것이 μ•„λ‹ˆλΌ 더 κ°•λ ₯ν•œ κ΅¬ν˜„ μ œμ•½ 쑰건을 κ°•μ œν•˜λŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 이유둜 ν˜„μž¬ ν•΄λ‹Ή ν…ŒμŠ€νŠΈλ‚˜ clipboardCopyAsync λ³€κ²½ 사항을 μˆ˜μ •μ•ˆμœΌλ‘œ μ œμ•ˆν•˜μ§€ μ•Šκ³  μžˆμŠ΅λ‹ˆλ‹€. 과거의 μ‹€νŒ¨λŠ” Copy Post μ»΄ν¬λ„ŒνŠΈ 자체의 변경이 μ•„λ‹ˆλΌ λΈŒλΌμš°μ €/WebKit λ™μž‘μ— μ˜μ‘΄ν–ˆμ„ κ°€λŠ₯성이 μžˆμŠ΅λ‹ˆλ‹€.

1개의 μ’‹μ•„μš”

μ΄μ–΄μ„œ, ν΄λ¦½λ³΄λ“œμ— μ„±κ³΅μ μœΌλ‘œ 기둝된 ν›„μ—λ§Œ 성곡/확인 ν‘œμ‹œκ°€ 보이도둝 λ³€κ²½ν•˜λŠ” μž‘μ€ PR을 μ—΄μ—ˆμŠ΅λ‹ˆλ‹€. νšŒκ·€ ν…ŒμŠ€νŠΈμš© μ‹œμŠ€ν…œ μŠ€νŽ™λ„ ν¬ν•¨ν–ˆμŠ΅λ‹ˆλ‹€:

GitHub Actions μ›Œν¬ν”Œλ‘œμš°λŠ” ν˜„μž¬ μœ μ§€κ΄€λ¦¬μžμ˜ μŠΉμΈμ„ 기닀리고 있으며, 승인이 μ™„λ£Œλ˜λ©΄ CI μž‘μ—…μ΄ μ‹€ν–‰λ©λ‹ˆλ‹€.

1개의 μ’‹μ•„μš”