Drag a tile by its header to move it; drag a side / bottom / corner adorner to resize. Neighbouring tiles get pushed and gravity-compacted upward in real time. Layout auto-persists to localStorage — reload to verify.
disableMove and disableResize.tilelayoutchange; a step the packer can't place is announced as “Move blocked” and changes nothing.