All checks were successful
CI / Windows build (push) Successful in 20m37s
The split-view scratchpad was the last surface on the old ink_canvas. Move its inking engine to the performant PenCanvas while keeping the infinite auto-expanding world. Key idea: store strokes in absolute WORLD pixels (InkStroke — unchanged saveScratchpad format) and render through PenCanvas by normalizing against the CURRENT world size. When the world auto-expands, stored world coords do not move — only the normalization divisor grows — so ink stays put with zero drift (proven by the world-expand-stability test). - Replace InteractiveViewer+SizedBox+InkCanvas with PenCanvas (own pan/zoom, minScale 0.1 to survey the big world); keep the AnnotationToolbar. - Stroke callbacks go through ink_stroke_adapter; load filters to freehand so the canvas list stays 1:1 with the undo manager. - Pen/highlighter/eraser map from the toolbar's PenTool; width is world px. The left PDF-reference pane (SfPdfViewer, read-only) is unchanged. Tests: world-expand stability added. flutter analyze: 0. Suite: 270/270.