[FEATURE]: better navigation of output, alternative vim mode and non-blocking agent persmission requests
Feature hasn't been suggested before.
- [x] I have verified this feature I'm about to request hasn't been suggested before.
Describe the enhancement you want to request
So this became three things, because they all tie in together for a more thought-out interaction within the app.
Three issues:
- hard to navigate output
- vim-modes
- agent accepting permission blocks input
Right now it's not that easy to keyboard navigate the output. A jump to bottom and top would be great. And I of course would like to be able to do it with gg and G.
This ties into somewhat with https://github.com/sst/opencode/issues/1764, because I'm not entire sure that the prompt area is the best place for a command mode. You actually already have a very irritating "command mode" where you can't continue typing your prompt if the agent is asking for permission. So you could have a normal mode where you can navigate output and issue single letter commands like open model, allow request etc, and an insert mode where you can do this with ctrl+something. I would very much like if accepting a request could be done without interrupting typing.
These issues can be solved separately, but it would be nice to have a clean, thoughtful interaction model.
Suggestion
Treat the input prompt field as the ex-mode of vim, where navigation is with more emacsy ctrl+something. Allow to bind everything in this :ex mode to ctrl+something type binding, even stuff like "accept" for permission requests (which should be non-blocking, since I assume they must block input now, because one of the input characters is "a"). The "normal" mode should be where you bind single letters to commands and navigate the chat history. Also things like y to copy entire block, and a visual mode for selecting what to copy exactly with the keyboard. And "insert" mode is really the editor mode, where you pull up vim. If you really want to go fancy, you could have a "full screen" version, and one where the editor is embedded into to prompt area only.