Run the palette, the menus and extensions' run(command) from one command table
The command palette, the menu bar and extensions now read from a single table of app commands.
App commands now live in one table in apps/native/src/workspace/commands.rs. The palette, the menu bar and extensions all read from it, and each shortcut label is read from the key bindings, so a label cannot drift from the binding that runs. Menus and palette look the same as before.
Extension authors get Commands.run(command) for commands that only move around the app or open a view, such as showing a panel, toggling the sidebar, switching project, or opening settings or the palette. Commands that change or send something, like archive, send or quit, cannot be run by an extension. Any other name is refused with the list of allowed names, and runs are limited to once per 500 ms while the extension is on screen.
In the app