Sort a notebook, import Markdown back, and stop the page shrinking in Draw

The paper measurably shrank on switching to Draw — 733px to 460px on the same
screen. The editor was a flex item at its default `flex: 0 1 auto`, so its width
was its widest row's: the toolbar. Swapping a dozen formatting buttons for six
drawing ones collapsed it. It now fills the pane, so the width is a property of
the window.

Each notebook remembers how its notes are ordered, on the server rather than per
device. The manual order has to survive being looked away from, so `reindex`
renumbers every note in the notebook rather than the filtered view, and dragging
is switched off while a search narrows the list. Reordering has its own route:
`PUT /notes/:id` would bump `updated_at` and snapshot a version, so a drag would
move a note to the top of "last changed" and spend a slot of its history.

Markdown and our own ZIP archives come back as notes, with their images
re-uploaded as attachments. A drawing returns as the PNG it was exported as —
vectors are not recoverable from pixels — and the import says so rather than
leaving it to be discovered. Writing the parser turned up a real bug in the
exporter: blocks were emitted with no blank line between them, so a list after a
list became one list and a quote after an item was read as part of it.

Creating or importing from "All Notes" now asks which notebook instead of
silently taking the first one. The web-link prompt is a real dialog: a bare
domain becomes https, javascript: is refused with a reason. The PDF viewer's
hide-drawing control is a labelled button rather than a filled-or-hollow dot,
and the export icon points down into a tray like every other download.

186 unit tests, 179 browser checks across eleven suites, including a new
`offline` suite that loads the app cold with the network off.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
marcandClaude Opus 5 committed 2026-08-09 01:38:03 +02:00
1 parent 3acb8b66a4
commit 0a0864c58b
27 files changed
+2962 -86

No files matched your search

+12
View File
@@ -49,6 +49,8 @@ export interface NoteMeta {
trashed: boolean;
createdAt: string;
updatedAt: string;
/** Position in the notebook's own order, used when sorting is set to manual. */
sortOrder?: number;
/** Set while a note created offline has not reached the server yet. */
_pendingCreate?: boolean;
}
@@ -64,6 +66,14 @@ export interface NoteContent {
updatedAt?: string | null;
}
/**
* How a notebook's notes are ordered.
*
* "manual" is the user's own arrangement, kept in each note's `sortOrder`; the
* rest are derived from the notes themselves and need nothing stored.
*/
export type SortMode = "manual" | "updated" | "oldest" | "created" | "title";
export interface Notebook {
id: string;
name: string;
@@ -71,6 +81,8 @@ export interface Notebook {
sortOrder: number;
/** Versions kept per note here; null means the server's default. */
maxVersions?: number | null;
/** Null means the app default, newest first. */
sortMode?: SortMode | null;
_pendingCreate?: boolean;
}