Commit Graph
151 Commits
Author SHA1 Message Date
Alex-GilbertandClaude Opus 4.6 c915935ee4 fix: defensive CSS hidden rule, cache MediaQueryList, guard setSheetSnap
- Add [hidden] { display: none !important } to prevent CSS specificity overrides
- Cache matchMedia query instead of creating new MediaQueryList per call
- Guard setSheetSnap against being called on desktop

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 16:25:46 -06:00
Alex-GilbertandClaude Opus 4.6 9ad2bc150a fix: mobile polish — tap-to-deselect and toast positioning
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 16:19:00 -06:00
Alex-GilbertandClaude Opus 4.6 f07a0c9c2c feat: wire sheet snap and tab switching to popover flow
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 16:13:15 -06:00
Alex-GilbertandClaude Opus 4.6 bee8a2f514 feat: sheet tab switching and responsive DOM relocation
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 16:11:46 -06:00
Alex-GilbertandClaude Opus 4.6 1eaf411847 feat: sheet drag and snap behavior for mobile
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 15:55:00 -06:00
Alex-GilbertandClaude Opus 4.6 6075a4f047 feat: mobile CSS for bottom sheet overlay
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 15:48:02 -06:00
Alex-GilbertandClaude Opus 4.6 95d909cc98 feat: desktop CSS for bottom-sheet as sidebar
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 15:46:47 -06:00
Alex-GilbertandClaude Opus 4.6 6ec5be11d9 refactor: replace left-panel with bottom-sheet container
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 15:42:03 -06:00
Alex-GilbertandClaude Opus 4.6 3a590e17c8 docs: add mobile-responsive implementation plan
7-task plan for bottom-sheet responsive redesign covering HTML restructuring,
desktop/mobile CSS, sheet snap behavior, tab switching, and integration.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 15:11:32 -06:00
Alex-GilbertandClaude Opus 4.6 534b3fbe33 docs: mobile-responsive redesign using bottom sheet pattern
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 15:02:28 -06:00
Alex-GilbertandClaude Opus 4.6 2297bd0aa0 fix: mobile touch-action and delete button visibility
- Add touch-action: none to #right-panel for reliable custom
  touch handling
- Show delete button on mobile (no hover state on touch devices)

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 13:29:29 -06:00
Alex-GilbertandClaude Opus 4.6 0de882c575 feat: add single-finger touch pan for mobile
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 13:26:02 -06:00
Alex-GilbertandClaude Opus 4.6 553563f871 feat: add mobile tab switching logic
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 13:24:57 -06:00
Alex-GilbertandClaude Opus 4.6 16ae903047 feat: add responsive CSS for mobile layout
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 13:24:54 -06:00
Alex-GilbertandClaude Opus 4.6 9124348e1c feat: add mobile tab bar markup and DOM refs
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 13:23:40 -06:00
Alex-GilbertandClaude Opus 4.6 028cad35fb docs: mobile-friendly implementation plan
5-task plan: HTML tab bar, JS tab switching, responsive CSS,
single-finger touch pan, integration test.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 13:22:31 -06:00
Alex-GilbertandClaude Opus 4.6 78788bce17 docs: mobile-friendly frontend design
CSS-responsive approach with tab-based navigation at ≤768px,
full-screen solver modal, and single-finger touch pan.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 13:20:51 -06:00
Alex-GilbertandClaude Opus 4.6 33b88f078f feat: manual guess input + continuous text preview rendering
- Replace redaction marker span with editable input for manual guesses
- Typing in the guess field sets r.preview and shows Accept button
- drawRedactionPreview now renders left+guess+right as continuous text
  with natural font kerning (no fixed gap width during preview)
- Active preview: green left, yellow highlighted guess, green right
- Inactive preview: full merged text in yellow

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 15:45:28 -06:00
Alex-GilbertandClaude Opus 4.6 a4863350ef fix: remove blue box overlay from approved redactions
Only the merged blue text is drawn — no box overlay needed.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 15:35:09 -06:00
Alex-GilbertandClaude Opus 4.6 bff50a1315 fix: drawRedactionApproved draws box overlay + distinct green badge
The approved draw function was only drawing text with no overlay on the
redaction box area, making it look like the redaction disappeared.
Now draws a blue semi-transparent box over the redaction area (like
other states) plus the merged blue text along the line.

Also made the approved CSS badge green (--accent) to distinguish it
from the blue analyzed badge.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 15:08:20 -06:00
Alex-GilbertandClaude Opus 4.6 0ffae2aeae feat: blue CSS badge for approved status
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 14:49:12 -06:00
Alex-GilbertandClaude Opus 4.6 651b7eee33 feat: popover handles approved redactions with solution pre-populated
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 14:49:02 -06:00
Alex-GilbertandClaude Opus 4.6 0873120775 feat: update main.js references from solved to approved status
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 14:48:51 -06:00
Alex-GilbertandClaude Opus 4.6 7bc5aa3239 feat: replace drawRedactionSolution with drawRedactionApproved (blue merged text)
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 14:48:32 -06:00
Alex-GilbertandClaude Opus 4.6 531693653a feat: acceptSolution produces 'approved' status with merged text
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 14:48:05 -06:00
Alex-GilbertandClaude Opus 4.6 9f5ceb38ae fix: remove inline-edit feature and backspace delete keybinding
- Delete inline-edit.js and all references
- Remove backspace/delete key handler for redaction deletion
- Clean up popover.js syncInlineEdit references

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 14:46:50 -06:00
Alex-GilbertandClaude Opus 4.6 f1e25f9712 feat: add LLM boundary detection for spot redaction path
analyze_spot_redaction is now async and calls identify_boundary_text()
to use Claude Haiku for clean left/right text extraction instead of
center-point character filtering. Falls back to center-point if LLM
is unavailable.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 14:46:45 -06:00
Alex-GilbertandClaude Opus 4.6 163a450720 docs: add redaction approval implementation plan
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 14:45:39 -06:00
Alex-GilbertandClaude Opus 4.6 f04bacd961 docs: add redaction approval design
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 14:44:32 -06:00
Alex-GilbertandClaude Opus 4.6 e9ec2ff7f3 feat: add inline-edit.js and sync popover with inline inputs
Missed files from the inline text editing task — adds the inline-edit
module and wires up bidirectional sync between popover text bar and
inline canvas inputs.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 12:55:25 -06:00
Alex-GilbertandClaude Opus 4.6 3d07faadc8 style: add OCR status indicator and edge case handling
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 12:52:14 -06:00
Alex-GilbertandClaude Opus 4.6 43e7f80bbe feat: drag handles for resizing redaction bounding boxes
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 12:49:52 -06:00
Alex-GilbertandClaude Opus 4.6 9b9618d9fa feat: spot redactions now created as analyzed with full data
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 12:44:35 -06:00
Alex-GilbertandClaude Opus 4.6 7331fc5936 feat: add OCR-on-upload and Detect Redactions button
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 12:43:09 -06:00
Alex-GilbertandClaude Opus 4.6 2783ed2615 feat: spot endpoint returns full analysis data
Enrich POST /api/doc/{doc_id}/page/{page}/spot to call
analyze_spot_redaction when OCR data is cached, returning full
analysis JSON (segments, gap, font, line, offsets) alongside the
bounding box. This makes spot redactions first-class, matching the
analysis format returned by get_page_data for auto-detected redactions.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 12:42:18 -06:00
Alex-GilbertandClaude Opus 4.6 8857793759 feat: add analyze_spot_redaction for single-box analysis
Add a synchronous function that runs the analysis mini-pipeline on a
single known bounding box using cached OCR data. This enables spot
redaction endpoints to get full analysis (font, left/right context text,
pixel alignment offsets) without needing LLM detection.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 12:39:57 -06:00
Alex-GilbertandClaude Opus 4.6 03333e212c feat: wire analyze endpoint to use cached OCR data
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 12:38:31 -06:00
Alex-GilbertandClaude Opus 4.6 f24a710b9e feat: allow analyze_page to accept pre-computed OCR lines
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 12:36:58 -06:00
Alex-GilbertandClaude Opus 4.6 ced68f2321 feat: add /api/doc/{id}/ocr SSE endpoint for cached OCR
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 12:36:46 -06:00
Alex-GilbertandClaude Opus 4.6 87a59802bf feat: add ocr_lines field to page_data structure
Add an ocr_lines slot (initially None) to each page's data dictionary
in the upload endpoint. This prepares for OCR caching so results can
be reused between the auto-detect and spot-redaction pipelines.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 12:34:58 -06:00
Alex-GilbertandClaude Opus 4.6 3345dde096 docs: add redaction workflow redesign implementation plan
13 tasks covering: OCR caching, spot analysis, detect button,
inline canvas editing, drag handles, and full integration.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 12:30:56 -06:00
Alex-GilbertandClaude Opus 4.6 050907ae89 docs: add redaction workflow redesign design
Captures the plan to decouple auto-detection from upload, make manual
(double-click) redactions first-class with full analysis, and move to
inline-on-canvas editing.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 12:22:17 -06:00
Alex-GilbertandClaude Opus 4.6 2a5db8f990 fix(frontend): update associates.js to use renamed dom exports
The rename from solveFilterPrefix/Suffix to solveKnownStart/End missed
associates.js, breaking the entire JS module tree and disabling upload.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-18 13:23:55 -06:00
Alex-GilbertandClaude Opus 4.6 4a92cb8463 fix: update app tests for mode/charset restructuring
Replaced test_solve_endpoint_dictionary and test_dictionary_crud with
test_solve_endpoint_name_mode testing the new name mode.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-18 13:16:57 -06:00
Alex-GilbertandClaude Opus 4.6 65865da28a feat: restructure solve endpoint with mode-based dispatch
Modes: name (default), full_name, email, enumerate
Renamed filter_prefix/suffix to known_start/known_end
Removed DictionaryStore and dictionary API endpoints

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-18 13:14:00 -06:00
Alex-GilbertandClaude Opus 4.6 bde5fce636 feat: update frontend JS for new modes, known start/end, and filter visibility
Renamed solveFilterPrefix/Suffix to solveKnownStart/End. Word filter
label hidden by default, shown only when enumerate mode is selected.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-18 13:12:54 -06:00
Alex-GilbertandClaude Opus 4.6 a9117e3876 feat: update HTML with new modes, charsets, and known start/end fields
Modes: Name (default), Full Name, Email, Enumerate
Charsets: lowercase, UPPERCASE, Capitalized
Renamed filter prefix/suffix to known start/end
Word filter hidden by default (shown only for enumerate mode)

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-18 13:12:17 -06:00
Alex-GilbertandClaude Opus 4.6 d0bd7967e4 feat: update solve_full_name_dictionary with casing and known_start/known_end
Replaces uppercase_only bool with casing string parameter. Adds
known_start/known_end support for filtering and gap-width measurement.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-18 13:11:53 -06:00
Alex-GilbertandClaude Opus 4.6 d32f27cb8d feat: add solve_name_dictionary for single-word associate name matching
Supports casing (lowercase/uppercase/capitalized), known_start/known_end
filtering with gap-width measurement of the unknown portion only.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-18 13:11:13 -06:00
Alex-GilbertandClaude Opus 4.6 57650af1fe docs: add mode/charset restructuring design and implementation plan
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-18 13:07:54 -06:00