Skip to content

Add professional CSV notes export - #22

Merged
D-Mad merged 2 commits into
mainfrom
agent/csv-export-review
Jul 14, 2026
Merged

Add professional CSV notes export#22
D-Mad merged 2 commits into
mainfrom
agent/csv-export-review

Conversation

@D-Mad

@D-Mad D-Mad commented Jul 14, 2026

Copy link
Copy Markdown
Owner

Summary

  • rebase Eric Levy's CSV notes export from Add CSV notes export #19 onto the current professional comment sidebar
  • export comments and drawings as deterministic rows with frame, SMPTE timecode, content, colour, pin coordinates, resolved state and timestamp
  • write Excel-friendly UTF-8 with BOM so Vietnamese and other Unicode notes open correctly on Windows
  • degrade malformed note coordinates safely instead of failing the handoff export
  • document the workflow on the homepage

Why this replaces #19

PR #19 contains the earlier stacked test/timecode/comment commits and now conflicts with main. This branch preserves the authored CSV commit, applies only its feature delta to current main, and adds the Windows/Unicode hardening above.

Authored feature commit: @emlcpfx / #19.

Validation

  • pytest tests/test_notes_csv.py -q (16 passed)
  • pytest -q (238 passed)
  • git diff --check

Replaces #19.

emlcpfx and others added 2 commits July 14, 2026 23:29
File > Export Notes as CSV... writes every comment and drawing to a flat
CSV, one row per note: frame, timecode, type, content, color, x, y, done,
timestamp.

- utils/notescsv.py is pure (no Qt), so the row building is tested on its
  own. Rows are ordered by frame ascending; within a frame the comments come
  first, then the drawings in the order they were made.
- Coordinates are the normalized 0-1 image-space values the annotations are
  already stored in, so a note stays meaningful regardless of the resolution
  it was made at. Blank means not applicable: a scribble has no text, a
  frame-level comment has no pin.
- Text annotations carry their words into the content column; pencil strokes
  anchor on their first point, shapes on their start corner.
- An unusable frame rate degrades the timecode to a frame label (f0042)
  rather than failing the export. Bad metadata must not cost a supervisor
  their notes.
- The file is opened with an empty newline argument, else the csv module
  emits CRLF twice per row on Windows and every other line of the exported
  file comes out blank.

14 tests, including comma and quote escaping, malformed colours, a pencil
with no points, and the blank-line regression.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TexnzYbmCjjTDB8zzZuUPb
@D-Mad D-Mad mentioned this pull request Jul 14, 2026
@D-Mad
D-Mad marked this pull request as ready for review July 14, 2026 16:32
@D-Mad
D-Mad merged commit 9c60e73 into main Jul 14, 2026
3 checks passed
@D-Mad
D-Mad deleted the agent/csv-export-review branch July 14, 2026 16:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants