E4: Detailed before/after metadata diff view #22

Closed
opened 2026-05-04 21:19:28 +00:00 by obuvuyoviz26-lab · 1 comment
obuvuyoviz26-lab commented 2026-05-04 21:19:28 +00:00 (Migrated from github.com)

Part of v5 webapp migration — Phase E: Feature additions

Show a expandable before/after table per file: tag name, value before, value after (empty = removed). The webapp has enough screen real estate to surface this properly.

Addresses GitHub issue szTheory/exifcleaner#167.

See design doc docs/superpowers/specs/2026-05-05-webapp-migration-design.md §9.5

Part of v5 webapp migration — **Phase E: Feature additions** Show a expandable before/after table per file: tag name, value before, value after (empty = removed). The webapp has enough screen real estate to surface this properly. Addresses GitHub issue szTheory/exifcleaner#167. See design doc `docs/superpowers/specs/2026-05-05-webapp-migration-design.md` §9.5

Update 2026-05-11 — implementation deferred from the parallel Phase E starting batch.

Why deferred (not closed)

E4 looks like a renderer change but each format strategy currently exposes only a count of metadata items removed (metadataRemoved: number). To deliver the issue acceptance criteria ("tag name, value before, value after"), each strategy needs to enumerate parsed metadata as a structured list MetadataItem[] = { source, name, value }[].

That is per-strategy work touching privacy-critical paths (JPEG/PNG segment walkers, PDF Info dict, Office docProps, MP4 box tree). Shipping a half-baked version that shows tag names but not values for some formats, or values for none, is worse than not shipping — the trust copy work (#68/#69) sets an expectation of substance.

Surface to enable later

Two paths considered:

  1. Per-strategy enhancement — extend each FormatStrategy.strip() return type with parsedMetadata: MetadataItem[]. ~1 PR per format. Honest values, honest sources, but ~5 PRs total.
  2. Separate reader pass — run a parallel client-side metadata reader (e.g. exifr or hand-rolled EXIF IFD walker) before strip, surface that in the UI. Adds a 6th prod dep or ~150 LOC of EXIF parsing. Avoids strategy churn.

Default recommendation when work resumes: path 1, JPEG first (highest user value, strategy already has IFD-walker code from the orientation-preservation path), then PDF (pdf-lib already reads Info dict and XMP), then PNG, Office, video. Each per-format PR ships independently behind the same MetadataExpansion renderer component.

Sequencing

Belongs in Phase E.2 — Features alongside #19 (folder support) and #23 (Web Share Target), but unblocked only after one strategy ships the structured-metadata enhancement. Suggest re-bucketing as phase-e + e-features + a new blocked-on:strategy-enhancement label, or simply re-opening when ready to pick up.

Tagging this with priority-3 (or leaving as-is — currently no priority label) to reflect that #19 (folder zip) and copy work (#51, #68, #69) ship first.

**Update 2026-05-11** — implementation deferred from the parallel Phase E starting batch. ## Why deferred (not closed) E4 looks like a renderer change but each format strategy currently exposes only a *count* of metadata items removed (`metadataRemoved: number`). To deliver the issue acceptance criteria ("tag name, value before, value after"), each strategy needs to enumerate parsed metadata as a structured list `MetadataItem[] = { source, name, value }[]`. That is per-strategy work touching privacy-critical paths (JPEG/PNG segment walkers, PDF Info dict, Office docProps, MP4 box tree). Shipping a half-baked version that shows tag names but not values for some formats, or values for none, is worse than not shipping — the trust copy work (#68/#69) sets an expectation of substance. ## Surface to enable later Two paths considered: 1. **Per-strategy enhancement** — extend each `FormatStrategy.strip()` return type with `parsedMetadata: MetadataItem[]`. ~1 PR per format. Honest values, honest sources, but ~5 PRs total. 2. **Separate reader pass** — run a parallel client-side metadata reader (e.g. `exifr` or hand-rolled EXIF IFD walker) before strip, surface that in the UI. Adds a 6th prod dep or ~150 LOC of EXIF parsing. Avoids strategy churn. Default recommendation when work resumes: path 1, JPEG first (highest user value, strategy already has IFD-walker code from the orientation-preservation path), then PDF (pdf-lib already reads `Info` dict and XMP), then PNG, Office, video. Each per-format PR ships independently behind the same `MetadataExpansion` renderer component. ## Sequencing Belongs in **Phase E.2 — Features** alongside #19 (folder support) and #23 (Web Share Target), but unblocked only after one strategy ships the structured-metadata enhancement. Suggest re-bucketing as `phase-e` + `e-features` + a new `blocked-on:strategy-enhancement` label, or simply re-opening when ready to pick up. Tagging this with `priority-3` (or leaving as-is — currently no priority label) to reflect that #19 (folder zip) and copy work (#51, #68, #69) ship first.
Sign in to join this conversation.
No project
No assignees
2 participants
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: forgejo_admin/exifcleaner-web#22
No description provided.