Deploy / deploy (push) Successful in 28s
- Hero: gate RasterizedYES construction on a NodeRef resolving, not just "the Effect ran". Root cause of the reported "loading..." stall + "RefCell already borrowed" panic - navigating back to / client-side could run the Effect before the new <canvas> was actually in the DOM, yes.js did an unchecked getElementById(...).getContext() on null and threw mid-reactive-update, corrupting wasm_bindgen_futures' executor badly enough to panic on the next tick. Same NodeRef-gating pattern the prosekit editor's own mount already used. - style/main.css: .prosekit-wrap/.prosekit-toolbar/.prosekit-editor to match the existing input/textarea look (border, background, focus ring). - prosekit-editor.js: a real toolbar (Bold, Italic, H1, H2, Link, and a dedicated Gitea-repo-embed button reusing the paste rule's own insert logic) with active-state highlighting via the standard ProseMirror markActive/nodeActive idiom.