InlinePhotoBlock QA Audit

LetterBodyComposer + InlinePhotoBlock — all 5 wrap modes, keyboard handlers, floating isolation

✅ All 12 tests pass

Logic Unit Tests — pure function simulation

insertBlock(behind): existing flow blocks are NOT shifted
insertBlock(inline): existing flow blocks at/after position ARE shifted
insertBlock(inline): behind blocks are never shifted
removeBlock(behind): removes only that block, no re-indexing of others
removeBlock(inline): re-indexes blocks after the removed position
Enter key: behind/front blocks are NOT shifted by split
Backspace: block at merged paragraph index removed, floating preserved
moveBlockTo: returns early for behind/front blocks
blocksAfter: behind/front blocks excluded from slot rendering
New inline block defaults: wrap_mode=inline, corner_radius=true
New behind block: opacity=0.45 by default
New front block: opacity=1 by default

What these tests verify:

  • insertBlock floating — behind/front blocks never cause flow re-indexing
  • insertBlock flow — only flow blocks at/after position are shifted +1
  • removeBlock floating — floating blocks removed cleanly, no position side-effects
  • removeBlock flow — blocks after removed position shift -1, floats untouched
  • Enter key — splits text, shifts only flow blocks > idx
  • Backspace key — merges text, removes flow block at idx, never removes floats
  • moveBlockTo — early-returns for floating blocks
  • blocksAfter — floating blocks excluded from flow slot rendering
  • Defaults — opacity 0.45 for behind, 1.0 for front