한달..? 좀 더 전에 Gemini-cli 에 PR 을 올려 둔게 있는데,
처음에는 Home/End 가 안먹어서, 이거 관련해서 코드좀 보다가, 모든 단축키들이 코드에 magic number 마냥 하드코딩 되어있는걸 보고 issue 랑, 이런식으로 Centralize 해두면, 추후 Customizing 이 가능할거다~ 라는 PR 을 올렷다
Home/End 이 안되던건, 다른 사람이 올려둔 PR 이 있었고, 이 PR 이 머지되면, 내 PR은 바로 충돌날껄 알고있어서, 그냥 이랬으면 좋겠다~ 라는 차원에서 올려두고 잊고있었는데,

예전 PR 을 살펴보는데 괜찮아보이니까 Re Open 해달라길래 reopen 해주었다..
https://github.com/google-gemini/gemini-cli/pull/5356
Centralize Key Binding Logic and Refactor (Reopen) by Lee-WonJun · Pull Request #5356 · google-gemini/gemini-cli
TLDR This PR reopens the work from the #1969 previously closed PR. For implementation details, please refer to the previous discussion. App.tsx Now Uses the Key Interface Similar to InputPrompt....
github.com
처음에는 lambda map 만써서, 고쳤는데, 이유는 후술하고,

이런 리뷰를 받아서
장문의... 내 생각과 왜 이런 Matcher 가 필요한지를 달고, 리뷰에서 요청한 Data 부분을 반영해서 코드를 고쳐주었다.

처음에 내가 해당 Matcher 만 구현한것은, 내가 원하던 구조에서 키 바인딩 중앙화에 관한것이고, 리뷰처럼 Data Driven 한 DSL 의 필요성을 알고 있으나, 이는 사용자의 Key Binding 커스터마이징을 어떻게, 어디까지 허용할지, 그리고 단축키에 대한 미래 계획 (멀티 Key Binding 등) 을 내가 알수없고,
User UX 관점의 DSL -> 내부 중앙화된 Data DSL -> DSL 에따라 Key Binding 을 처리하는 Runtime Interface 가 필요하고 나는, 기획적인 부분의 앞단을 모르므로, stage 1 으로써, Runtime Interface 를 만들고 여기에 몰아 박았다는내용이다.
아무튼 Data Driven 한 DSL 을 만들어달라고 했으므로, 기존 하위호환성을 유지하는 Key Type 을 디자인해서
Data Driven 한 DSL 과 Interpreter (Runtime Interface ) 를 나눠서 다시 PR 해주었다.
근데, 대충 코드에 이런 Shortcut 을 쓰는 부분이 크게 InputPrompt.ts , App.tsx 가 있었고 (정확히는 text-buffer.ts 까지 3개지만 여기는 low 한 side 라 의도적으로 배재하였다) App.tsx 랑 InputPrompt.ts 랑 쓰는 스타일(Hook) 이 달라서 이번 PR 에서 통일 시켰는데
App.tsx 에서 쓰던 Hook 을 바꿧더니, main 에서 업데이트될때 마다 App.tsx 가 충돌난다..
그래서 내가 볼때마다 매번 rebase 하면서 충돌을 해결해서 업데이트 쳐두긴했는데
이게.. gemini-cli 가 상당히... 참여가 활발한 레포지토리라, 메인테이너가 내 PR 만 보는게 아니고 여러개를 많이 보니까, 매번 메인테이너가 내 PR을 보기전에 무엇인가 머지되고.. 그러니까 볼때마다 충돌이 나있고.. 나랑 일하는 시간대가 다르다 보니까.. 내가 충돌을 해결하고 태그를 해줘도, 메인테이너가 볼때면 또 깨져있는 죽음의 컨플릭트 스파이럴 발생..


그래서 좀 징징 대니까, 마이너 코멘트와 함께 큐에 넣어서 머지해줬다 크흠..

참고로 마이너 코멘트는 따로 PR 날려서 해결했다
[#5356] Minor fix: Remove duplicate binding and add complete navigation command by Lee-WonJun · Pull Request #5884 · google-ge
TLDR Apply minor comment (@jacob314) for #5356: Remove duplicate binding caused by key.name being always lowercase. Add navigation command related to complete. Dive Deeper Lowercase key.name be...
github.com

'프로그래밍 기록 > OSS | 컨트리뷰션' 카테고리의 다른 글
| [Microsoft/PowerToys CmdPal] 야호 나도 MS 파워토이 CmdPal WindowWalker 컨트리뷰터! (0) | 2025.10.21 |
|---|---|
| [AWS/aws-toolkit-jetbrains] 야호 나도 amazon Q 컨트리뷰터 (2) | 2025.08.18 |
| [Gemini-CLI] 야호 나도 구글 Gemini 컨트리뷰터 (0) | 2025.07.17 |
| [Spring AI] 야호 나도 Spring AI 컨트리뷰터 (0) | 2024.12.22 |
| [Azure/Functions OpenAPI Extensions] 야호 나도 애저 Function 컨트리뷰터 (0) | 2021.11.03 |