Hiren Kangad
21a724c0f4
fix: address code review findings from crop/text commit
...
- Fix crop confirm anchor drift for rotated images by using crop corner
world point instead of AABB min in useCanvasSetup.ts
- Document ungroup shear limitation for non-uniform scale + rotation
- Add 6 integration tests covering crop confirm and ungroup paths
2026-03-13 13:47:14 +05:30
Hiren Kangad
9a4edd90c7
refboard: complete image geometry rework — consumer adoption + tests
...
- Fix grouping.ts ungroup: transform display position (with flip
compensation) through group transform, then back-calculate canonical
data.x/y. Fixes visual jump for flipped images in rotated groups.
- Fix clipboard.ts + export.ts resolution estimation: account for
scale when computing effective rendered width for texture ratio.
- Add imageTransforms.test.ts: 32 unit tests covering source rect,
visible local rect, display transform, display geometry, editor
geometry anchor preservation, crop rect round-trips, coordinate
conversions, negative scale normalization, and world bounds invariants.
- Add vitest as dev dependency with "test" script.
- Include canonical geometry layer (imageTransforms.ts) and crop
session rewrite (CropOverlay.ts) from prior work.
- Add image geometry rework plan document.
2026-03-13 13:37:42 +05:30
Hiren Kangad
c874e34577
refboard: export cropped images from visible frame
2026-03-13 13:05:31 +05:30
Hiren Kangad
407fa82915
refboard: fix flipped image crop coordinate mapping
2026-03-13 13:03:37 +05:30
Hiren Kangad
cd9db8816c
refboard: cull images by visible bounds
2026-03-13 12:59:20 +05:30
Hiren Kangad
dc283124d7
refboard: centralize image visible frame transforms
2026-03-13 12:58:29 +05:30
Hiren Kangad
768de39463
refboard: use full image geometry in crop mode
2026-03-13 12:50:13 +05:30
Hiren Kangad
ddd395444d
refboard: resize images from visible bounds
2026-03-13 12:46:48 +05:30
Hiren Kangad
50dbb4e0cf
refboard: anchor crop apply to selected region
2026-03-13 12:42:16 +05:30
Hiren Kangad
267deefc10
refboard: preserve image position when applying crop
2026-03-13 12:39:24 +05:30
Hiren Kangad
18c968b54f
refboard: fix cropped image offset transforms
2026-03-13 12:36:57 +05:30
Hiren Kangad
4dc338cdb6
refboard: rebase cropped image rendering to visible frame
2026-03-13 12:33:03 +05:30
Hiren Kangad
f6a937f598
refboard: use visible bounds for image layout ops
2026-03-13 12:25:29 +05:30
Hiren Kangad
5c13def2d2
refboard: improve crop preview and cropped bounds focus
2026-03-13 12:15:22 +05:30
Hiren Kangad
4f8e3984b2
refboard: fix crop pointer coordinate mapping
2026-03-13 12:04:57 +05:30
Hiren Kangad
c78325227f
refboard: drive crop drag from DOM pointer events
2026-03-13 11:57:26 +05:30
Hiren Kangad
421ad176d4
refboard: align crop drag handling with transform box
2026-03-13 11:48:13 +05:30
Hiren Kangad
e1b97d52f8
refboard: route crop drag events through viewport
2026-03-13 11:41:03 +05:30
Hiren Kangad
8e23c3e884
refboard: hide transform box during crop mode
2026-03-13 11:37:03 +05:30
Hiren Kangad
f978153a83
fix: improve text sharpness on zoom with tighter buckets and reliable init
...
Fix text staying blurry on zoom by ensuring the first setZoomBucket call
always applies (PixiJS v8 defaults to auto-resolution which skipped the
initial bucket=1 assignment), listening on both 'moved' and 'zoomed'
viewport events, and tightening bucket thresholds from 6 to 9 levels.
2026-03-13 11:33:57 +05:30
Hiren Kangad
470693266e
refboard: stabilize crop interaction bounds
2026-03-13 11:31:18 +05:30
Hiren Kangad
accbe2e0f3
fix(markdown): polish editor UX — side panel, overlay sync, paste segregation
...
- Move markdown editor from canvas overlay to side panel (70% width)
for better performance and editing experience
- Add @blocknote/mantine for full BlockNoteView with default UI components
- Fix socket reconnect loop caused by unstable pasteOpts object reference
(memoize with useMemo)
- Add ResizeObserver to markdown overlay cards for automatic height sync
- Call mdOverlay.refreshAll() on every canvas change so overlays track
pack/grid/arrange/save operations
- Paste goes to BlockNote editor when contentEditable is focused
- Simplify toolbar: single color picker (accent + auto-derived bg),
title/name field, width presets S/M/L
- Guard normalize/flip operations to skip markdown and sticky items
- Fix title not updating on card preview (pass name prop, bump revision)
- Fix preview not refreshing after editor save (revision counter + overlay refresh)
2026-03-13 11:21:28 +05:30
Hiren Kangad
a7579a9ff5
refboard: add manual board preview refresh button
2026-03-13 11:21:28 +05:30
Hiren Kangad
b350951bf1
refboard: merge crop mode polish with markdown editor
2026-03-13 11:21:28 +05:30
Hiren Kangad
04d499b755
fix(markdown): address code review findings — updateItem, height measurement, CSS injection, paste fallback, resize sprite update
2026-03-13 11:21:28 +05:30
Hiren Kangad
dfdfd07a1d
feat(markdown): add contextual toolbar for background color, accent color, and width presets
2026-03-13 11:21:28 +05:30
Hiren Kangad
aa3112a5bc
feat(markdown): add paste detection with PasteChoicePopup for text/markdown/image
...
Simplify Ctrl+V shortcut to only handle recent internal copies, letting
native paste events flow to setupPaste for external clipboard content.
Extend setupPaste with text/HTML detection and popup callbacks. Wire
PasteChoicePopup in Editor.tsx with markdown (turndown HTML-to-MD),
plain text, and image paste choices.
2026-03-13 11:21:28 +05:30
Hiren Kangad
375e7adc4a
feat(markdown): add PasteChoicePopup component for paste-as choice
2026-03-13 11:21:28 +05:30
Hiren Kangad
11fc3c6d8e
feat(markdown): horizontal-only resize with ResizeConstraint enum in TransformBox
2026-03-13 11:21:28 +05:30
Hiren Kangad
b1163c3232
feat(markdown): integrate undo/redo for edit mode and checkbox toggles
2026-03-13 11:21:28 +05:30
Hiren Kangad
6118193f19
feat(markdown): add MARKDOWN tool, toolbar button, and m/6 shortcuts
2026-03-13 11:21:28 +05:30
Hiren Kangad
2d5396ef09
feat(markdown): add double-click → edit mode via SelectionManager callback
2026-03-13 11:21:27 +05:30
Hiren Kangad
02597abc9d
fix: suppress canvas shortcuts when contenteditable is focused (BlockNote)
2026-03-13 11:21:27 +05:30
Hiren Kangad
2cede1ae95
feat(markdown): add MarkdownEditView with lazy BlockNote editor + dark theme styles
2026-03-13 11:21:27 +05:30
Hiren Kangad
10135463b1
feat(markdown): wire MarkdownOverlay into canvas lifecycle with React portals
2026-03-13 11:21:27 +05:30
Hiren Kangad
ced187bbd3
feat(markdown): add MarkdownReadView component with dark theme and checkbox toggling
2026-03-13 11:21:27 +05:30
Hiren Kangad
0d40b2b973
feat(markdown): add MarkdownOverlay DOM overlay manager
2026-03-13 11:21:27 +05:30
Hiren Kangad
de527954da
feat(markdown): add MarkdownSprite and register in SceneManager
...
Creates MarkdownSprite (Graphics-only background rect with header bar)
and wires it into SceneManager._createItem() under case 'markdown'.
2026-03-13 11:21:27 +05:30
Hiren Kangad
f989a8111b
feat(markdown): add markdownDefaults module with constants and extractTitle
2026-03-13 11:21:27 +05:30
Hiren Kangad
50c34a409f
feat(markdown): add MarkdownObject type to scene format
2026-03-13 11:21:27 +05:30
Hiren Kangad
cc38adb1d6
chore: add markdown block dependencies (react-markdown, blocknote, turndown)
2026-03-13 11:21:27 +05:30
Hiren Kangad
dd1578110b
refboard: support rotated image crop editing
2026-03-13 11:21:27 +05:30
Hiren Kangad
9502f89a06
refboard: tighten rotated image hit testing
2026-03-13 11:21:27 +05:30
Hiren Kangad
12410c0098
refboard: stabilize image flip and crop transforms
2026-03-13 11:21:27 +05:30
Hiren Kangad
c40304464f
chore: add .worktrees/ and .superpowers/ to .gitignore
2026-03-13 11:21:27 +05:30
Hiren Kangad
75a975447b
chore: commit pending workspace changes
2026-03-13 08:43:44 +05:30
Hiren Kangad
f77ac59e6c
fix(sticky): make size presets absolute again
2026-03-13 00:50:21 +05:30
Hiren Kangad
9f69eae308
refine(sticky): reduce preset sizes and remove pan tool shortcuts
2026-03-13 00:46:37 +05:30
Hiren Kangad
ce1cc60d67
fix(sticky): restore zoom-aware preset creation and live editing sync
2026-03-13 00:42:32 +05:30
Hiren Kangad
2d05226ddd
fix(sticky): fixed-size creation, shared presets module, live resize sync
...
Fixes three review findings:
1. Sticky creation no longer zoom-adapts — always creates at M preset
(28px/260w) in world space. Consistent at any zoom level.
2. Preset definitions extracted to stickyPresets.ts (shared domain module).
TextFormatToolbar and tools.ts both import from there — no more
canvas→component dependency inversion.
3. TextEditor.onLiveResize callback syncs spatial index and transform
box as sticky background grows during typing.
2026-03-13 00:31:44 +05:30