feat(ui): land the centralized shortcuts core from #2532 with review fixes
The schema/config/bindings/registry/dispatcher module, useKeybind hooks, recording dialog, reworked shortcuts settings page, help dialog, and the localized action labels — re-based onto current main rather than merged (the branch predates 440+ commits including the session-tabs shortcuts). Review fixes applied on top of the original: - close_session_tab (alt+w) joins the schema with labels in every locale; it shipped on main after the PR's base and would otherwise silently die. - switch_context_surface's special-case in conflict resolution is now a declared prefixStyle config property instead of a magic id string. - Duplicate handler registration warns in dev builds. - The risky-browser-shortcut warning inspects every chord and covers mod+q/d/h/j/o/u plus mod+shift+w/q. - The dispatcher remembers which target armed a two-chord prefix so the window-level completion handler can distinguish a deliberate sequence from typing in an editable field (guard lands with the dispatch hook). - Schema tests: unique normalized default bindings enforced, and the flat-file-era override format proven to keep resolving.
This commit is contained in:
@@ -1101,7 +1101,7 @@ export const settingsDict = {
|
||||
'settings.openchamber.keyboardShortcuts.overwritePrompt': '이 조합은 이미 다른 단축키에서 사용 중입니다. 덮어쓰고 기존 매핑을 지울까요?',
|
||||
'settings.openchamber.keyboardShortcuts.field.pressKeys': '키를 누르세요...',
|
||||
'settings.openchamber.keyboardShortcuts.error.captureFirst': '먼저 단축키를 입력하세요.',
|
||||
'settings.openchamber.keyboardShortcuts.warning.riskyBrowserShortcut': '이 단축키는 브라우저 기본값과 충돌할 수 있습니다. 그래도 저장됩니다.',
|
||||
'settings.openchamber.keyboardShortcuts.warning.riskyBrowserShortcut': '이 단축키는 브라우저 기본값과 충돌할 수 있지만 그래도 저장할 수 있습니다.',
|
||||
'settings.openchamber.keyboardShortcuts.action.open_go_to_line.label': '줄로 이동(파일 편집기)',
|
||||
'settings.openchamber.keyboardShortcuts.action.open_command_palette.label': '명령 팔레트 열기',
|
||||
'settings.openchamber.keyboardShortcuts.action.focus_input.label': '입력에 포커스',
|
||||
@@ -1116,6 +1116,7 @@ export const settingsDict = {
|
||||
'settings.openchamber.keyboardShortcuts.action.switch_context_surface.label': '컨텍스트 패널 서피스 전환',
|
||||
'settings.openchamber.keyboardShortcuts.action.switch_context_surface.suffix': ' + 1…0',
|
||||
'settings.openchamber.keyboardShortcuts.action.new_chat.label': '새 세션',
|
||||
'settings.openchamber.keyboardShortcuts.action.close_session_tab.label': '세션 탭 닫기',
|
||||
'settings.openchamber.keyboardShortcuts.action.new_chat_worktree.label': '새 worktree 초안',
|
||||
'settings.openchamber.keyboardShortcuts.action.new_mini_chat.label': '새 Mini Chat 창',
|
||||
'settings.openchamber.keyboardShortcuts.action.open_help.label': '키보드 단축키 열기',
|
||||
@@ -1130,6 +1131,27 @@ export const settingsDict = {
|
||||
'settings.openchamber.keyboardShortcuts.action.expand_input.label': '입력 확장',
|
||||
'settings.openchamber.keyboardShortcuts.action.open_timeline_dialog.label': '대화 타임라인 열기',
|
||||
'settings.openchamber.keyboardShortcuts.action.toggle_prompt_navigator.label': '프롬프트 탐색기 표시/숨기기',
|
||||
'settings.openchamber.keyboardShortcuts.warning.contextualPrefix': '이 시퀀스는 {action}과 컨텍스트 접두사를 공유합니다. 해당 컨텍스트가 활성화된 동안에는 그 동작이 우선합니다.',
|
||||
'settings.openchamber.keyboardShortcuts.category.session': '세션 제어',
|
||||
'settings.openchamber.keyboardShortcuts.category.models': '모델 및 에이전트',
|
||||
'settings.openchamber.keyboardShortcuts.category.panels': '패널 및 도구',
|
||||
'settings.openchamber.keyboardShortcuts.category.navigation': '탐색',
|
||||
'settings.openchamber.keyboardShortcuts.category.application': '애플리케이션',
|
||||
'settings.openchamber.keyboardShortcuts.actions.edit': '편집',
|
||||
'settings.openchamber.keyboardShortcuts.actions.confirm': '확인',
|
||||
'settings.openchamber.keyboardShortcuts.dialog.title': '{action} 편집',
|
||||
'settings.openchamber.keyboardShortcuts.dialog.instructions': '키 조합을 최대 두 개까지 누르세요. 각 조합에는 최대 세 개의 키를 사용할 수 있습니다. 첫 번째 조합 뒤에는 두 번째 조합을 위해 최대 3초 동안 기다립니다. 적용하려면 확인을, 취소하려면 취소를 선택하세요. Backspace로 마지막 조합을 삭제합니다.',
|
||||
'settings.openchamber.keyboardShortcuts.dialog.firstChord': '첫 번째 조합',
|
||||
'settings.openchamber.keyboardShortcuts.dialog.secondChord': '두 번째 조합',
|
||||
'settings.openchamber.keyboardShortcuts.dialog.recording': '키를 누르세요…',
|
||||
'settings.openchamber.keyboardShortcuts.unassigned': '할당되지 않음',
|
||||
'settings.openchamber.keyboardShortcuts.error.prefixConflict': '{action}에서 사용하는 시퀀스와 충돌합니다. 다른 조합을 선택하세요.',
|
||||
'settings.openchamber.keyboardShortcuts.error.exactConflict': '이 조합은 이미 {action}에서 사용합니다.',
|
||||
'settings.openchamber.keyboardShortcuts.error.internalConflict': '이 조합은 바꿀 수 없는 기본 제공 단축키와 충돌합니다.',
|
||||
'settings.openchamber.keyboardShortcuts.action.open_draft_project_picker.label': '초안 프로젝트 선택기 열기',
|
||||
'settings.openchamber.keyboardShortcuts.action.open_draft_worktree_picker.label': '초안 워크트리 선택기 열기',
|
||||
'settings.openchamber.keyboardShortcuts.action.open_session_list.label': '최근 세션 열기',
|
||||
'settings.openchamber.keyboardShortcuts.action.toggle_dictation.label': '음성 입력',
|
||||
'settings.projects.sidebar.total': '총 {count}개',
|
||||
'settings.projects.sidebar.actions.addProject': '프로젝트 추가',
|
||||
'settings.projects.page.empty.noProjects': '사용 가능한 프로젝트가 없습니다.',
|
||||
|
||||
Reference in New Issue
Block a user