feat: points of interest (POI) annotations #2

Closed
hugooconnor wants to merge 10 commits from hence/plan-IMPL-002 into main
hugooconnor commented 2026-03-13 20:30:24 +00:00 (Migrated from codeberg.org)

Summary

  • Add single-point annotations (POIs) to source material — complementing existing range-based markers
  • POIs use the same Word(u32) / Scene(u32) / TimeMs(u64) tagged union as shot ranges, but for instants rather than spans
  • Five categories: Highlight, Issue, Transition, Cue, Note

What's included

  • poi.rs — CRUD operations (add/list/remove) following the marker.rs pattern, with SourcePois persistence to annotations/*.pois.json
  • resolve.rs — resolve_poi_point() converts any PoiPoint variant to a millisecond timestamp; find_nearest_word() for reverse lookup
  • display.rs — ResolvedPoi struct + interleave_pois_into_transcript() inserts POI markers inline with transcript words
  • cli/mod.rs — poi add, poi list, poi remove subcommands with --at-word/--at-scene/--at-ms (mutually exclusive)
  • main.rs — dispatch handlers with --json structured output and exit codes per CON-011

Test coverage

  • 10 CRUD tests, 9 resolution tests, 5 display interleaving tests, 9 CLI parse tests
  • All 599 tests pass

Spec

Implements specs/SPEC-002-points-of-interest.md (REQ-054 through REQ-066)

Summary - Add single-point annotations (POIs) to source material — complementing existing range-based markers - POIs use the same Word(u32) / Scene(u32) / TimeMs(u64) tagged union as shot ranges, but for instants rather than spans - Five categories: Highlight, Issue, Transition, Cue, Note What's included - poi.rs — CRUD operations (add/list/remove) following the marker.rs pattern, with SourcePois persistence to annotations/*.pois.json - resolve.rs — resolve_poi_point() converts any PoiPoint variant to a millisecond timestamp; find_nearest_word() for reverse lookup - display.rs — ResolvedPoi struct + interleave_pois_into_transcript() inserts POI markers inline with transcript words - cli/mod.rs — poi add, poi list, poi remove subcommands with --at-word/--at-scene/--at-ms (mutually exclusive) - main.rs — dispatch handlers with --json structured output and exit codes per CON-011 Test coverage - 10 CRUD tests, 9 resolution tests, 5 display interleaving tests, 9 CLI parse tests - All 599 tests pass Spec Implements specs/SPEC-002-points-of-interest.md (REQ-054 through REQ-066)

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
anuna-research/ar-edit!2
No description provided.