Marcel
28ac90b529
fix(annotations): replace outline:none with focus-visible ring for keyboard accessibility [M7]
...
CI / Unit & Component Tests (pull_request) Failing after 1s
CI / Backend Unit Tests (pull_request) Failing after 1s
CI / Unit & Component Tests (push) Failing after 2s
CI / Backend Unit Tests (push) Failing after 1s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 14:42:01 +02:00
Marcel
76828a95e3
fix(annotations): add catch(err) binding to handlePointerUp error handler [M6]
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 14:41:21 +02:00
Marcel
7125a0a8eb
fix(annotations): reset liveWidth/liveHeight in handleKeyDown error rollback [M1, M6]
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 14:40:55 +02:00
Marcel
7097f991fe
feat(annotations): add keyboard accessibility to resize handles [B2]
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 14:40:30 +02:00
Marcel
4d9145e49f
feat(annotations): wire SVG aria-label to Paraglide i18n [B3]
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 14:39:35 +02:00
Marcel
060d1c0515
feat(i18n): add annotation_resize_area and annotation_resize_handle message keys [B2, B3]
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 14:38:10 +02:00
Marcel
72700bd28f
test(annotations): add Testcontainers integration tests for V33 chk_annotation_bounds [B1]
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 14:36:37 +02:00
Marcel
40c8f548db
docs(annotations): fix ANNOTATION_UPDATE_FAILED Javadoc to reflect 400 status [M3]
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 14:34:55 +02:00
Marcel
a19faa3806
feat(annotations): add @Slf4j and DataIntegrityViolationException catch to updateAnnotation [M2]
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 14:34:03 +02:00
Marcel
f00b470928
test(annotations): add failing test for DataIntegrityViolationException defense [M2 red]
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 14:33:43 +02:00
Marcel
65d606d8bb
test(annotations): add missing height and x boundary validation tests [M4]
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 14:31:07 +02:00
Marcel
4d3207fc27
test(annotations): verify save() is called in updateAnnotation test [M5]
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 14:30:50 +02:00
Marcel
2350b4f845
fix(annotations): make resize overlay keyboard-interactive
...
CI / Unit & Component Tests (push) Failing after 1s
CI / Backend Unit Tests (push) Failing after 1s
CI / Unit & Component Tests (pull_request) Failing after 2s
CI / Backend Unit Tests (pull_request) Failing after 1s
- Add tabindex="0" so the SVG can receive DOM focus
- Auto-focus the SVG on mount so arrow keys work immediately after
clicking an annotation to select it
- Show preview rect during keyboard nudging (not just pointer drag) by
checking hasLiveChanges instead of only checking dragState
- Suppress default browser focus outline (outline: none) on the SVG
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 11:47:41 +02:00
Marcel
9fe5b32a69
feat(annotations): add N/S/E/W edge midpoint handles to resize overlay
...
Extends the 4-corner L-bracket handles with 4 tick-mark edge handles
(short lines along each edge), enabling single-axis resize from any edge.
Updates applyHandleDrag to route each handle to the correct axis.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 11:40:39 +02:00
Marcel
fcc0efbf02
refactor(annotations): replace 8-square handles with 4 corner L-brackets
...
- 4 corner-only handles (nw/ne/sw/se), no edge midpoints
- Each handle renders as two short perpendicular lines meeting at the corner
(10px arms, navy, square linecap) — no fill, no box
- Thin dashed selection border added to SVG overlay to signal edit mode
- Simplify applyHandleDrag to remove dead n/s/e/w branches
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 11:14:30 +02:00
Marcel
e7f88a4ea1
fix(annotations): use pixel-space viewBox so handles stay square on non-square annotations
...
ResizeObserver binds actual SVG pixel dimensions; viewBox matches them so
16px handle squares and 44px hit areas are physically correct regardless of
the annotation's aspect ratio.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 11:03:15 +02:00
Marcel
c610a3cc37
feat(annotations): wire updateAnnotation context and error display into PdfViewer
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 11:00:50 +02:00
Marcel
3fb32ea285
feat(annotations): pass isResizable to AnnotationShape based on selection + transcribeMode
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:57:13 +02:00
Marcel
3b756cd718
feat(annotations): add isResizable prop to AnnotationShape to render edit overlay
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:55:13 +02:00
Marcel
f5362a5850
feat(annotations): add AnnotationEditOverlay component with resize handles and drag
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:52:07 +02:00
Marcel
953cb2c910
feat(i18n): add ANNOTATION_UPDATE_FAILED error code and annotation_edit_mode_active translation
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:43:10 +02:00
Marcel
ff231db671
feat(annotations): add PATCH endpoint for annotation resize/move
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:42:08 +02:00
Marcel
1558881c01
feat(annotations): add updateAnnotation service method with partial-update DTO
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:39:50 +02:00
Marcel
26c7181ba4
feat(annotations): add ANNOTATION_UPDATE_FAILED error code
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:38:33 +02:00
Marcel
f76a6c0ee5
migration(annotations): add chk_annotation_bounds CHECK constraint (V33)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-14 10:38:11 +02:00