The application has three global accelerators (palette, capture, new note), a canvas table of nine keys, and two more groups in the editor and the quick palette. What it has nowhere is a way to reach an action by name.
Changing the theme is Fichier → Préférences → le select → l'option → Fermer: five clicks for a setting a developer flips twice a day. Opening the trash, the tag manager, an export, a space, a folder — each is a button that has to be on screen, and the topbar is out of room precisely because each one is.
The quick palette already proves the pattern works here, and it is the best screen in the application: a field, a list, and a footer that says what each key does. It is bound to snippets only.
Shape
A second palette, on Ctrl+Maj+P, over actions rather than notes:
- the views: aller à un espace, ouvrir un dossier, Date / Tableau, la corbeille, les tags ;
- the settings that are worth a keystroke: thème, densité, le rail (already
Ctrl+B) ;
- the library: importer, exporter, partager la sélection ;
- the note actions that apply to what is focused: épingler, copier, ranger dans, déplacer vers, supprimer.
⚠️ Not a third registry. The File menu's entries, the preference pages and the shortcut groups were three contribution registries and were deliberately removed — with one feature they hid what a button did behind a registration. The command list should be one array in one component, the way FileMenuComponent declares its entries and CANVAS_KEYS declares its keys, and it should derive from the tables that already exist wherever one does.
⚠️ It is an in-app shortcut, not a global one: Ctrl+Maj+P must not be taken from the machine. That is CanvasKeyboardDirective's table, not desktop.rs.
⚠️ DialogStack decides who gets Escape, and the fields form already sits in front of the quick palette. A new layer goes in the LAYERS rung table in dialog.model.ts and nowhere else.
The fuzzy match, the highlight and the keyboard handling can be lifted from quick-palette/ rather than written again; if the two end up sharing a shell, so much the better.
Done when
Any action the interface offers can be reached by typing its name, the list is declared once in one place, and the footer says what each key does the way the quick palette's does.
The application has three global accelerators (palette, capture, new note), a canvas table of nine keys, and two more groups in the editor and the quick palette. What it has nowhere is a way to reach an action by name.
Changing the theme is Fichier → Préférences → le select → l'option → Fermer: five clicks for a setting a developer flips twice a day. Opening the trash, the tag manager, an export, a space, a folder — each is a button that has to be on screen, and the topbar is out of room precisely because each one is.
The quick palette already proves the pattern works here, and it is the best screen in the application: a field, a list, and a footer that says what each key does. It is bound to snippets only.
Shape
A second palette, on
Ctrl+Maj+P, over actions rather than notes:Ctrl+B) ;FileMenuComponentdeclares its entries andCANVAS_KEYSdeclares its keys, and it should derive from the tables that already exist wherever one does.Ctrl+Maj+Pmust not be taken from the machine. That isCanvasKeyboardDirective's table, notdesktop.rs.DialogStackdecides who gets Escape, and the fields form already sits in front of the quick palette. A new layer goes in theLAYERSrung table indialog.model.tsand nowhere else.The fuzzy match, the highlight and the keyboard handling can be lifted from
quick-palette/rather than written again; if the two end up sharing a shell, so much the better.Done when
Any action the interface offers can be reached by typing its name, the list is declared once in one place, and the footer says what each key does the way the quick palette's does.