* feat: introduce actions + bindings
This removes the leader + custom commands in favour of actions +
bindings system.
All hardcoded keybindings are removed from models and tea.KeyMsg
handling code is removed. Instead, all tea.KeyMsg's are handled by the
dispatcher.
All the builtin-actions are generated from jjui:bind annotations via a
generator. Dispatcher maps the tea.KeyMsg against a binding and updates
the target model with the action's Intent struct.
* refactor: move dispatch logic out of ui and to its own package
* refactor: file_search bindings
* build: remove treefmt check
we already run `go fmt` before building the appp
* refactor: move and decouple intents
* decouple confirmation model's next/prev actions from using revisions navigate intent
* move ui level `Cancel` and `Apply` intents out of revset
* fix: add missing preview toggle bindings to oplog
* docs: update
* refactor: drop `ui` prefix from most of the panels
`ui` is only used refering to shell actions (e.g. `quit`, `suspend`)
* feat: add custom command migration cli arg
jjui --config --migrate
* copies `config.toml` as `config.old.toml` (if doesn't exist)
* read `config.old.toml`
* converts `custom_command` section to new action + binding system
* saves the rest of the config + new action + binding - custom_commands
* feat: add config.lua
* feat: inline action definitions in config.lua
* feat: load external lua files from `$CONFIG/plugins/*.lua`
* fix: remove dedup of bindings in status list
* refactor: reorder revisions bindings
* refactor: move `desc` from action to binding
It's where it makes more sense because actions can have args which change the meaning of the binding.
* refactor: rename `target` to `target_picker`
* refactor: migrate and remove tests
This is throw away code.
Previous version skipped over keys, didn't convert lua based custom commands and used regex to clean up TOML (which didn't always match)
* fix: cancelling `input` should finish the lua script
* refactor: simplify close/cancel logic
* fix(bookmarks): fix excessive single shortcut assignments
* chore: update README.md, configuration and migration messages
Setting the description from stdin avoids command line parsing issues
when the message cannot be properly quoted. E.g. "jj describe -m -foo"
gives the error "error: unexpected argument '-f' found".