I don’t think I will make any changes to current version of Bike, but maybe for Bike 2.
I think Tana has some nicely thought out details. For example if you collapse with text caret in header then it has Bike’s expand/collapse by row behavior. I like that quite a bit, though I’m not sure Bike has a comparable UI element that could work the same, and I don’t want to add title.
One thing that I don’t like about the Tana design is that it’s not really reversible. So for example:
Collapse a bunch moving up hierarchy
Expand a bunch expanding down the hierarchy (case where caret is in ancestor, and deep children are being expanded)
Now how do you “undo” that last expand when you’ve gone too far, I don’t think you can.
With that said I don’t like that Bikes current design has so many options… 4 different key combos for (and four more for collapse):
expand
expand row completely
expand by level
expand all
Yikes!
Here’s a thought. What about limiting that to just expand and expand by level variants? That means removing:
expand row completely – replace that behavior by repeating expand by level command.
expand all – replace that by select all and then repeating expand by level
I also think that I’m generally OK with collapse working on parent if current row is already collapsed. Less sure about expand working on descendants if current row is already expanded… but maybe. In any case the by level variants would be easier to remember/access without all the other options cluttering the design.
I think I’m for this and will try out in Bike 2 codebase. Thoughts welcome.
I’ve been using Tana, Roam, Logseq alongside Bike extensively in the past year and here are the things I’ve noticed:
none of them possess a good keyboard command to expand all rows.
Tana has a node-by-node approach, so to expand all for the entire outline only works if you’re in the header (node title). AFAIK, there’s no easy way to jump there via keyboard.
However, what’s cool about this approach is that if you’re zoomed in and the caret is in the header, the children won’t get collapsed into their parent (header) node; but if the caret is somewhere in the outline, they will.
Roam doesn’t allow a keyboard shortcut for that at all (just through a mouse right-click menu), and
Logseq only has a toggle shortcut, which only works if you’re not in editing mode.
I’ve found myself missing this option many times. Too many keypresses to get to what I want.
I do like Tana’s node-by-node approach where you can only expand one node completely, so I’d miss that option in Bike, just like I miss it in Logseq, and just like I detest the use of a mouse for this operation in Roam.
Overall, the most redundant shortcut in Bike for me was expand by level, but I can see how it can be useful for outlines that follow a pattern (mine rarely do). However, I also notice this: If in Bike, you select multiple rows along with their children and invoke collapse row, they will all collapse into their parent. You need to use collapse by level to have them fold level-by-level, and even then you’re collapsing the entire outline, not just the selection. Conversely, if you just use expand row on a single row, you can only ever expand once, then the command becomes redundant.
So I think this can be combined.
What about adopting Tana’s combined approach, depending on where the caret/selection is?
if you’re in a row, you can expand once, expand by level (iterative if caret stays on parent) or expand completely
if you have a selection (or select all), you can expand by level (using expand row command) or completely