8 Commits

Author SHA1 Message Date
Ethanfel 25e89ada2b feat: drag-reorder slots
pool.reorder() permutes slots (validated permutation) and keeps the
active selection on its slot; exposed via /grid_pool/reorder. The grid
thumbnails are drag handles; dropping on another cell reorders.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 15:12:53 +02:00
Ethanfel 6feb2c6e63 feat: pool set_mask + route
Write a per-slot grayscale mask sidecar (img_XXXX.mask.png) and record
it on the slot. Add the multipart /grid_pool/set_mask route.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 14:01:26 +02:00
Ethanfel 6b59a8d54f feat: pool rebuild_manifest recovery
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 12:59:50 +02:00
Ethanfel 2b3f2ffc88 feat: pool set_label
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 12:59:09 +02:00
Ethanfel 8b3043f3d4 feat: pool remove_slot with file cleanup
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 12:58:36 +02:00
Ethanfel 9f98775677 feat: pool set_active + resolve_slot selection rule
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 12:58:05 +02:00
Ethanfel 0bd981d29e feat: pool add_image + monotonic naming
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 12:57:06 +02:00
Ethanfel 9077969daf feat: pool manifest read/write with atomic save
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 12:56:32 +02:00