It seems that the new outdenting behavior in the Canary release is painful for some users.
The flow of outdenting is a little odd if you outdent an item that has a child beneath it, it moves it to the bottom - I have included a brief video of what I mean. Is this expected behavior? It is different from the current behavior which just outdents the text. - by @Ed_Nico
The “direct” outdent behavior in version 0.0.20
The “logical” outdent behavior in the Canary release
A suggestion is to add an option to toggle between the old behavior and the new behavior. After some thought, we think it’s a bad idea because it increases the complexity a lot and it makes it harder for real-time collaboration, what if two users outdent the same block at the same time but with different behavior preferences?
So, we’d like to only support one behavior in Logseq, which kind is your preferred outdent behavior, and why?
What’s your preferred outdent behavior?
direct outdent (old behavior)
logical outdent (new behavior in the Canary release)
Old behaviour any day. It’s more natural and intuitive but without it’s bugs
In your example if b have any child they are moved too and become c’s siblings and if b is indented again they return to the original position. In 0.0.20, indenting an outdented node corrupts the tree a bit
The new behaviour seems much more logical to me (also the same as stuff like Workflowy, Dynalist and Remnote). I find it much easier to reorganise notes with the canary behaviour.
It’s a bit unclear what exactly is going on from only that gif. I would argue that the new behavior makes more sense from a plain-text point of view (maybe even without sorting would be preferable?) Let me summarize my thought:
Indenting/dedenting a line should only impact that line, when in edit mode. In normal mode or if the whole subtree is selected, the. The whole subtree should move with it. I imagine indenting like adding stars in org-mode.
@thor_son, in both cases, the subtree is affected.
The question is, where does the outdented bullet end up vertically: in direct (old), it doesn’t change places. In logical (new), it goes all the way down, below all siblings.
@tienson, perhaps an example with the outdented line being highlighted would make this clear.
In dynalist, this is a user setting called undindent items in-place
the default behavior of dynalist is similar to the new logseq canary
the unindent items in-place feature is the old logseq 0.0.20 behavior
here’s a gif to show the difference : (old logseq on the left, new canary on the right)
left (old logseq, unindent in place): it keeps the vertical position but can lead to mixed up categories (c becomes a sub-bullet of b)
right (canary, unindent puts items at the bottom) : bullet vertical order is lost but categories are preserved, maybe better in terms of logic, but with longer lists, that also involves a lot of scrolling
Personnally I prefer the OLD logseq (unindent items in-place), even though it’s less ‘logical’, it’s much faster to use, especially when dealing with long lists of bullets (I always toggled the option in dynalist). I also realize my gif is making it look like the canary version is better, but in a daily workflow I find that keeping the vertical position is much more useful and faster (esp. with long lists) than preserving branch differences.
imo, it should be user-configurable
about the multiplayer issue : maybe the first person is the master and subsequent editors are invited, the settings is set by the master ?
or maybe multiplayer should lock a block when a user is editing : you can edit multiple blocks as a group, but multiple users can’t edit the same block simultaneously ?
These examples show small outlines that fit in a single visible portion of the screen. I can imagine that if you were working with a very large outline, maybe requiring scrolling of the page, that the logical outdent behaviour could be very confusing. Namely, you outdent something and it might suddenly jump way to the bottom of the page or if the page moved with it, then you’d lose your place.
Although the logical method makes a certain sense, I’d prefer the direct (former) behaviour, which in my opinion does what might be expected visually without risking spatial disorientation or loss of attention.
That’s my use case. Structuring really big outlines is a pain. Imagine having 5 levels of nested nodes with hundred of siblings in each and wanting to promote an inner node. In canary is useless the current behaviour, very annoying to work with.
@noted you are right, and @cannibalox s gif was exactly what we needed.
@santi I see what you’re saying. Though I will say I prefer edit mode to have distinct behavior from “normal” mode (vim terms, I realize).
Imagine someone coming from e.g. wysiwyg editors like word. Indenting/dedenting a bullet only affects that bullet. Myself, I’ve been tripped up a lot trying to move a given bullet around because it fit better higher/lower, and messed up the entire subtree.
In the selection/normal mode, I think the original logseq way makes a ton of sense.
While I prefer the direct outdent, I understand some people prefer the logical outdent.
I understand that keeping both behaviors would break the real time collaboration if users have different preferences.
A possible solution would be to make the outdent behavior a configuration of the graph (e.g. data folder) instead of a user configuration. This way, all users of the same data will have a consistent behavior.
An observation: currently, a third of users voted for logical outdenting, while two-thirds voted for direct (OLD) outdenting. Interestingly, a 100% of the comments in the thread support direct-outdenting. I wonder if the logical-outdenters don’t feel as strongly.
PS: “in-place outdenting” describes it much better. Thanks for the dynalist reference, @cannibalox
Quite interesting, the logical variant makes much more sense, but from pretty much every other editor I’ve ever used I’ve come to expect the direct variant.
I voted for direct, but I think logical should have a place. Maybe something like Alt/Opt+Shift+Tab?
After some experiments, we decided to support both the old(direct) outdenting behavior and another logical outdenting behavior. The latest version Canary 0.04 support both behaviors, you can toggle it on the settings page. This is just amazing thread, thank you everyone for the insights!