awaescher / RepoZ

πŸ‘¨β€πŸ’» A zero-conf git repository hub for Windows and macOS with Windows Explorer- & CLI-enhancements
MIT License
1.01k stars 93 forks source link

Suggestion: Existing text in search box should be selected #131

Closed JKrag closed 3 years ago

JKrag commented 3 years ago

I very much like that RepoZ remembers my previous search/filtering and shows this in the text box as I often do want to access the same projects, but I think it would be much nicer if this existing text in the search box was "selected" so that it is easy to overwrite with a different search. As I see it, there are three possible "scenarios" when I activate RepoZ. 1) I am happy with the current search text and just want to interact with one of the items found. 2) I want to append something to the existing text to refine my search 3) I want to find something completely different.

Case 1 is probably the most common case for many, but after that I think case 3 is probably much more frequent than case 2.

The way it is now, I am ready for case 2, but if I want case 3 (overwrite text), I have to use something like <shift><ctrl><left-arrow>. If the text were pre-selected, I would be ready for case 3 (overwrite), and if I wanted case 2 instead (append) then it is just a single <right arrow> to remove the selection and keep typing.

Another argument for this behaviour is that it becomes much more geared towards "reflex interaction" just like e.g. app launchers like Alfred or similar. As a user I just want to be able to press the repoz hot-key and start typing a few letters "without thinking". I don't want to have to actively look at a tiny search box in the corner of my big screen and consciously evaluate if I need to delete existing text first or not before typing. For most developers (and other RepoZ users I guess) occasionally retyping a few letters in a search is probably much much faster than the "stop to look and think" process.

Anyway, these are my thoughts. I would love to hear what you think about it @awaescher (and others of course).

awaescher commented 3 years ago

Love the idea, in fact this bugs me as well sometimes. In most cases, I want to open RepoZ and interact with a repository. Later - like 2 hours later - I want to interact with a completely different repository (case 3.) and the prior filter is a bit annoying. At this time I did not even know that I used the filter 3 hours earlier.

By the way, pressing [Esc] clears the filter, so that's better than [Shift]+[Ctrl]+[Left]. But having no text to clear would definitely be better.

I thought about this issue quite a few times and I would have come with a timeout approach ... I know this might sound a bit hacky but as a human, the thing that divides "multiple interactions with the same repository" and "interacting with multiple repositories" is likely just to be time. So I'd say we could reset the filtered text like ... 1? 2? 5? ... minutes from the time we entered a filter. I think this would work pretty good in most cases. Imagine you work with repository A and after quite some time you want to work with repository B ... opening RepoZ would require no thoughts about clearing text at all. If you work with different repositories in a short amout of time like let's say opening 4 *.sln files, you'd always know that you had defined a filter and that you have to reset it first.

What do you think?

JKrag commented 3 years ago

I am not sure I really like the timeout approach. From a UX perspective it give rise to "unpredicted behaviour". Its fine if 4 hours have passed, but what if a shorter amount has passed since "I last used this a little while ago". Now again, I would have to look to the left and analyse the search box before knowing what behaviour to expect.

Another disadvantage is that it would remove support for a current use-case that I do like a lot. I have many repos on my machine (both work stuff and private/OSS stuff). But currently I am working on a project where (nearly) all the 5-10 relevant repos are named something with e.g. BTT.something (not actually BTT, but some other 3 letter acronym). So in most cases, I just have BTT permanently in the search box, and then just mouse or keyboard select the right repo. But once in a while I need to get hold of repos that are not prefixed BTT (owned by another team) and then I have to go through the process of deleting the text, then typing something else.

P.S. Thanks for the tip. That does help a bit. :-) Unfortunately, I can't just commit this to muscle memory, as it still requires me to know if the search box actually contains something, otherwise it just closes the pop-up and suddenly I am typing letters into some random source file or document ;-)

I believe that for a tool like this, predictability is paramount. It should nearly be at a point where I can use it with closed eyes: Hit the C*-Alt-R shortcut, type some letters, down-arrow N times and press whatever action I need, and it should give me the same result every time (unless I have added another repo obviously).

awaescher commented 3 years ago

Thanks for these insights, this was actually very helpful to me. You got some really good points here. In addition, pre-selecting the text is likely to be the easiest fix to implement as well πŸ˜„

awaescher commented 3 years ago

By the way, this is how it works on macOS already 😁

ezgif-1-3c178895a1eb

JKrag commented 3 years ago

I hadn't even noticed that this was already the behavior on Mac, as I haven't really been using RepoZ on my mac lately (working for a customer on windows at the moment). But that just made it an easier decision to align the two platforms I assume? ;-)

I will be looking forward to seeing this in the next release :-)

awaescher commented 3 years ago

RepoZ 5.5 was just released which fixes this behavior.