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": "Esta combinación ya está usada por otro atajo. ¿Sobrescribir y limpiar esa otra asignación?",
|
||||
"settings.openchamber.keyboardShortcuts.field.pressKeys": "Pulsa las teclas...",
|
||||
"settings.openchamber.keyboardShortcuts.error.captureFirst": "Captura un atajo primero.",
|
||||
"settings.openchamber.keyboardShortcuts.warning.riskyBrowserShortcut": "Este atajo puede entrar en conflicto con los predeterminados del navegador. Todavía se guarda.",
|
||||
"settings.openchamber.keyboardShortcuts.warning.riskyBrowserShortcut": "Este atajo puede entrar en conflicto con los predeterminados del navegador. Aun así, puedes guardarlo.",
|
||||
"settings.openchamber.keyboardShortcuts.action.open_go_to_line.label": "Ir a línea (editor de archivos)",
|
||||
"settings.openchamber.keyboardShortcuts.action.open_command_palette.label": "Abrir paleta de comandos",
|
||||
"settings.openchamber.keyboardShortcuts.action.focus_input.label": "Enfocar entrada",
|
||||
@@ -1116,6 +1116,7 @@ export const settingsDict = {
|
||||
"settings.openchamber.keyboardShortcuts.action.switch_context_surface.label": "Cambiar superficie del panel de contexto",
|
||||
"settings.openchamber.keyboardShortcuts.action.switch_context_surface.suffix": " + 1…0",
|
||||
"settings.openchamber.keyboardShortcuts.action.new_chat.label": "Nueva sesión",
|
||||
"settings.openchamber.keyboardShortcuts.action.close_session_tab.label": "Cerrar pestaña de sesión",
|
||||
"settings.openchamber.keyboardShortcuts.action.new_chat_worktree.label": "Nuevo borrador de worktree",
|
||||
"settings.openchamber.keyboardShortcuts.action.new_mini_chat.label": "Nueva ventana Mini Chat",
|
||||
"settings.openchamber.keyboardShortcuts.action.open_help.label": "Abrir atajos de teclado",
|
||||
@@ -1130,6 +1131,27 @@ export const settingsDict = {
|
||||
"settings.openchamber.keyboardShortcuts.action.expand_input.label": "Expandir entrada",
|
||||
"settings.openchamber.keyboardShortcuts.action.open_timeline_dialog.label": "Abrir línea de tiempo de conversación",
|
||||
"settings.openchamber.keyboardShortcuts.action.toggle_prompt_navigator.label": "Mostrar u ocultar navegador de prompts",
|
||||
"settings.openchamber.keyboardShortcuts.warning.contextualPrefix": "Esta secuencia comparte un prefijo contextual con {action}. Cuando su contexto está activo, esa acción tiene prioridad.",
|
||||
"settings.openchamber.keyboardShortcuts.category.session": "Controles de sesión",
|
||||
"settings.openchamber.keyboardShortcuts.category.models": "Modelos y agentes",
|
||||
"settings.openchamber.keyboardShortcuts.category.panels": "Paneles y herramientas",
|
||||
"settings.openchamber.keyboardShortcuts.category.navigation": "Navegación",
|
||||
"settings.openchamber.keyboardShortcuts.category.application": "Aplicación",
|
||||
"settings.openchamber.keyboardShortcuts.actions.edit": "Editar",
|
||||
"settings.openchamber.keyboardShortcuts.actions.confirm": "Confirmar",
|
||||
"settings.openchamber.keyboardShortcuts.dialog.title": "Editar {action}",
|
||||
"settings.openchamber.keyboardShortcuts.dialog.instructions": "Pulse hasta dos combinaciones de teclas, con un máximo de tres teclas cada una. Tras la primera, espere hasta 3 segundos por una segunda combinación. Use Confirmar para aplicar o Cancelar para descartar. Retroceso elimina la última.",
|
||||
"settings.openchamber.keyboardShortcuts.dialog.firstChord": "Primera combinación",
|
||||
"settings.openchamber.keyboardShortcuts.dialog.secondChord": "Segunda combinación",
|
||||
"settings.openchamber.keyboardShortcuts.dialog.recording": "Pulse las teclas…",
|
||||
"settings.openchamber.keyboardShortcuts.unassigned": "Sin asignar",
|
||||
"settings.openchamber.keyboardShortcuts.error.prefixConflict": "Esto entra en conflicto con la secuencia usada por {action}. Elija otra combinación.",
|
||||
"settings.openchamber.keyboardShortcuts.error.exactConflict": "Esta combinación ya la usa {action}.",
|
||||
"settings.openchamber.keyboardShortcuts.error.internalConflict": "Esta combinación entra en conflicto con un atajo integrado, que no se puede reemplazar.",
|
||||
"settings.openchamber.keyboardShortcuts.action.open_draft_project_picker.label": "Abrir selector de proyecto de borrador",
|
||||
"settings.openchamber.keyboardShortcuts.action.open_draft_worktree_picker.label": "Abrir selector de árbol de trabajo de borrador",
|
||||
"settings.openchamber.keyboardShortcuts.action.open_session_list.label": "Abrir sesiones recientes",
|
||||
"settings.openchamber.keyboardShortcuts.action.toggle_dictation.label": "Entrada de voz",
|
||||
"settings.projects.sidebar.total": "Total {count}",
|
||||
"settings.projects.sidebar.actions.addProject": "Añadir proyecto",
|
||||
"settings.projects.page.empty.noProjects": "No hay proyectos disponibles.",
|
||||
|
||||
Reference in New Issue
Block a user