A chapter is a list too, and deleting stops moving things

Deleting a note moved everything else. A row leaving is the same problem as
a row arriving, in reverse: a line's position counts the rows above it, so a
note deleted above a line left the line counting rows that were no longer
there, and everything under it appeared to jump up past it. withoutRow
renumbers the list a row leaves, and every place one leaves says so -- the
bin, a move, a chapter being removed. Arrivals land at the top: an old
position belongs to an arrangement that has moved on.

A line could not be dragged under another line. Two lines in the same gap
carry the same position, and the comparator claimed "a separator comes
first" without asking what the other one was -- both directions at once for
that case. A comparator that contradicts itself has no defined result, so
the sort returned them in whichever order it happened to walk.

A chapter is always in the user's own order and can be arranged like any
other list: its notes wear handles under the same switch as the list beside
them and are dragged among themselves, strips at both ends included. The two
lists keep apart by scope -- a chapter unfolded under its row holds rows
inside a row of the notebook's list, so the nearest row above the pointer
cannot say which list a drag belongs to. The sort menu is gone inside a
chapter: the mode belongs to the notebook, and a menu there would offer a
choice that cannot be honoured.

The chapters suite no longer assumes the first chapter row is the one that
matters. A chapter is a row in the arrangement and can be anywhere in it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
marcandClaude Opus 5 committed 2026-08-17 12:37:02 +02:00
1 parent 312c4e190e
commit f01522aa6f
10 files changed
+528 -85

No files matched your search

+40
View File
@@ -8,6 +8,46 @@ not from the output of `docker push`.
---
## 2026-08-17 — A chapter is a list too, and deleting stops moving things
**Images** — web `sha256:PENDING`, server `sha256:PENDING`
No backend source changed this round.
**Fixed**
- **Deleting a note moved everything else.** A row leaving is the same problem as
a row arriving, in reverse: a line's position counts the rows above it, so a
note deleted above a line left the line counting rows that were no longer
there, and everything under it appeared to jump up past it. Every place a row
leaves a list now closes the gap — the bin, a move to another notebook or
chapter, and a chapter being removed. Coming back from the bin, or arriving by
a move, lands at the top like anything else arriving; an old position belongs
to an arrangement that has moved on.
- **A line could not be dragged under another line.** Two lines in the same gap
carry the same position, and the comparator said "a separator comes first"
without asking what the other one was — claiming both directions at once for
that case. A comparator that contradicts itself has no defined result, so the
sort returned them in whichever order it happened to walk, and the line sprang
back above every time. They keep the order they are written in now.
- **Removing a chapter is two moves, and only one was being made.** Its row
leaves the count, *and* the notes it held arrive in the notebook — at the top,
in the order they had inside it, since their old positions were numbered
against a list that no longer exists.
**Changed**
- **A chapter is always in the user's own order, and can be arranged like any
other list.** Its notes wear handles under the *same* switch as the list beside
them — two switches for two lists looked at together is one too many — and are
dragged among themselves, strips at both ends included. The two lists keep out
of each other's way by scope: a chapter unfolded under its row holds rows
inside a row of the notebook's list, so "the nearest row above the pointer"
cannot say which list a drag belongs to.
- **The sort menu is gone inside a chapter.** The mode belongs to the notebook
and governs the notebook's own list; a chapter is a place someone filled by
hand, and a menu there would offer a choice that cannot be honoured.
---
## 2026-08-17 — One direction to drop in, and a new note that stays on top
**Images** — web `sha256:b8bc284a…`, server `sha256:a66cc8eb…`