A local-first note taking app

Add a hint strip to the bottom of the `[[` completion popup master

The `#` and `|` modifiers were entirely undiscoverable — nothing in the UI said they existed. The popup now carries a horizontal strip showing what each does. @codemirror/autocomplete has no footer API: `Completion.section` renders a header ABOVE a group and an empty section is not rendered at all, and none of `tooltipClass` / `optionClass` / `addToOptions` / `positionInfo` places a node after the list. So the footer is appended to the popup root directly. Two details make that hold up. CodeMirror rebuilds the option list on every update with `list.remove(); dom.appendChild(createListBox(...))` — it removes only the list, so the footer survives, but the new `<ul>` lands AFTER it in DOM order. Laying the popup out as a flex column and ordering both children makes the rendered order independent of DOM order, so the rebuild cannot move it. And the list needs `height: auto` + `min-height: 0` to beat CM's `height: 100%`, because when vertical space is tight CM pins an explicit pixel height on the popup and the footer would otherwise be pushed out instead of the list scrolling. An updateListener is the right hook: `EditorView.update` runs `updatePlugins`, which builds the tooltip DOM synchronously, before the listener loop and before the measure pass — so we always see the current popup and the footer is included when it is measured. It is `pointer-events: none`, which keeps it out of both the tooltip's mousedown handler and the close-on-blur focusout path. Attaching to every popup is correct only because `wikiLinkCompletionSource` is the sole registered source; noted in the code, since a second source would otherwise inherit hints that do not apply to it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>


+122
3 changed files