diff --git a/README.md b/README.md index d8a8054..1421d27 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ and [custom domains](https://developers.cloudflare.com/workers/configuration/rou - `src/layouts/Layout.astro`: shared navigation, metadata and footer. - `src/styles/global.css`: T3-inspired tokens and shared styles. -mdoc's latest public release is **v0.1.0-beta.10**, published on 2026-10-15 +mdoc's latest public release is **v0.1.0-beta.11**, published on 2026-10-16 and checked on 2026-10-16. The manifest keeps the two newest releases, with installers for Apple Silicon Macs and Windows x64. The macOS app is signed and notarized; the Windows installer is unsigned. Since 2026-10-10 the pinned diff --git a/docs/adr/0007-mdoc-product-media.md b/docs/adr/0007-mdoc-product-media.md new file mode 100644 index 0000000..042fb29 --- /dev/null +++ b/docs/adr/0007-mdoc-product-media.md @@ -0,0 +1,93 @@ +# ADR 0007: mdoc product media from scripted, clean captures + +Date: 2026-10-16 +Status: Accepted + +## Context + +PR #6 replaced the explainer films and single screenshot with a Convert / +Review / Compare gallery and three films. Review found: the dark captures were +flattened to JPG with white rounded-window corners (also visible in every film); +captures disagree with each other (screen-capture indicator instead of traffic +lights, notification badge, zoom pill over text, unsaved dot, resize grip); the +films only crossfade light and dark; the scan/OCR and reply-restore stories are +gone; the fixture agreement is too thin to fill the review panel; old cuts and +duplicate assets remain. + +## Decision + +- Fix PR #6 in place before merging, not in a follow-up. +- Captures are scripted: mdoc opens a fixture document and each state is taken + with `screencapture -o -l` as PNG with alpha. Astro makes the WebP; + fframes uses the PNGs directly. No JPG for UI captures. +- Clean state for every capture: traffic lights visible, no notification badge, + no floating view pill over text, saved file, no resize grip. +- The fixture becomes a richer fictional legal document (claim letter or NDA) + with at least eight entity types: people, organizations, addresses, phones, + emails, IBANs, case numbers, dates. +- Films are short real screen recordings (about 6–8 s per step) edited in + fframes, which adds only captions and framing. No theme crossfade; the + gallery's Light/Dark toggle covers themes. +- Story: scan/PDF → review → Copy for AI → AI reply with real names restored. + Compare is a gallery view, not a film. +- The AI step is a neutral mocked chat panel inside the fframes composition, + not a recording of the ChatGPT or Claude UI. +- Capture the polished details, not only whole screens: the hover tooltip on a + mention, the replacement popup, replacement motion, OCR and pseudonymization + marks on sidebar tabs, notices as toasts, the Review | Share inspector, the + categories popup and the before/after view. +- The website uses mdoc's vector logo (`mdoc/build/appicon.svg`, optimized) + instead of `src/assets/mdoc-icon.png`. +- Remove unused media: `public/videos/mdoc/{ocr,pseudo,ai}*`, + `src/assets/mdoc-screenshot.png`, duplicated capture copies, and move + `docs/evidence` screenshots out of git. +- Capture from mdoc 0.1.0-beta.11 installed in `/Applications`. The beta.11 + release must be published and `mdoc-releases.json` updated in the same PR, so + the site never shows a build visitors cannot download. +- Fixture: a fictional pre-action claim letter as a scanned 1–2 page PDF, so one + document carries scan → review → Copy for AI → restore, with 8+ categories. +- Gallery tabs: Scan, Review (replacement popup open), Compare, Copy for AI, + Restore. Each shows a polished detail in use. +- Films: a library of many short scenes (about 2–4 s each) rendered as separate + cuts, to be curated and reordered later. The page keeps the tabbed player with + autoplay-when-visible and the reduced-motion fallback; `current.mp4` and its + link go. +- Logo: `mdoc/build/appicon.svg` (optimized) replaces `mdoc-icon.png` wherever it + is used, and appears on the film title card. The PNG stays only where a raster + is required (OG image, Apple touch icon). +- Deployment proof goes in the PR description; only a short `verification.md` + stays in the repo. + +## Amendments during capture (2026-10-16) + +- **OCR is shown only up to the recognition prompt.** On the scanned letter, + beta.11's OCR merges paragraphs and headings and splits table rows. The `scan` + gallery view and scene show the "Some pages need text recognition" card; the + review story uses the same letter as a Word file. Show OCR output again once + mdoc's layout recovery improves. +- **Wording, not detection, was adjusted.** Surname-only mentions ("Ms Raman") are + not linked to the full name, and adding one manually splits the existing entity + (an mdoc bug), so the fictional letter avoids surname-only mentions. The missed + Southampton address is kept and fixed on camera (`address` scene). +- Page films: `find`, `fix`, `share`, `restore`, each an ordered list of library + scenes; dark only (the site is dark). The light set renders on demand. + +## Scene library (first cut) + +Each scene is its own 2–4 s cut; the page picks and orders a subset later. + +| id | shows | +| --- | --- | +| `intro` | logo card | +| `scan` | a scan asks for text recognition | +| `detect` | Pseudonymize: mentions highlight by category | +| `tooltip` | hover tooltip on a mention | +| `popup` | a mention opens every mention of the identity | +| `alias` | "Same as…" alias dropdown | +| `keep` | untick a false positive | +| `address` | add a missed address, file it as Address | +| `apply` | Apply with replacement motion | +| `compare` | original and pseudonymized side by side | +| `copy` | Share → Copy for AI | +| `chat` | neutral mocked chat answers using aliases (composited) | +| `restore` | Paste AI reply: a new tab with real names restored | diff --git a/docs/evidence/product-media/2026-10-16/verification.md b/docs/evidence/product-media/2026-10-16/verification.md new file mode 100644 index 0000000..92b9d38 --- /dev/null +++ b/docs/evidence/product-media/2026-10-16/verification.md @@ -0,0 +1,17 @@ +# Product media verification · October 16, 2026 + +Captured with installed `/Applications/mdoc.app` 0.1.0-beta.11 in an isolated +profile (`videos/mdoc/capture/session.sh`); the user's own mdoc session was not +used. Fixture: the fictional letter before claim in `videos/mdoc/fixture/`. + +- Gallery PNGs keep transparent window corners (alpha 0 at the corners); no + white corners in either theme. Films clip the window to its 13 px radius. +- Every capture shows the traffic lights, no notification badge, no update card, + no spelling marks. +- `mdoc-captures inspect` found no problems in either theme (199 frames each). +- `npm run check` passed: Prettier, Astro check, tests, build, `verify-build`. +- Browser (`/mdoc/`, dev server): gallery opens on Review; Light/Dark and all + five views load; the four films autoplay in sequence with no console errors; + at 375 px there is no horizontal page scroll and the gallery pans. + +Screenshots of these checks are attached to the pull request, not stored here. diff --git a/public/videos/mdoc/ai-poster.webp b/public/videos/mdoc/ai-poster.webp deleted file mode 100644 index 07b12f5..0000000 Binary files a/public/videos/mdoc/ai-poster.webp and /dev/null differ diff --git a/public/videos/mdoc/ai.mp4 b/public/videos/mdoc/ai.mp4 deleted file mode 100644 index cd51ec7..0000000 Binary files a/public/videos/mdoc/ai.mp4 and /dev/null differ diff --git a/public/videos/mdoc/find-poster.webp b/public/videos/mdoc/find-poster.webp new file mode 100644 index 0000000..94d43c3 Binary files /dev/null and b/public/videos/mdoc/find-poster.webp differ diff --git a/public/videos/mdoc/find.mp4 b/public/videos/mdoc/find.mp4 new file mode 100644 index 0000000..b99a334 Binary files /dev/null and b/public/videos/mdoc/find.mp4 differ diff --git a/public/videos/mdoc/fix-poster.webp b/public/videos/mdoc/fix-poster.webp new file mode 100644 index 0000000..78aeee8 Binary files /dev/null and b/public/videos/mdoc/fix-poster.webp differ diff --git a/public/videos/mdoc/fix.mp4 b/public/videos/mdoc/fix.mp4 new file mode 100644 index 0000000..930b64e Binary files /dev/null and b/public/videos/mdoc/fix.mp4 differ diff --git a/public/videos/mdoc/ocr-poster.webp b/public/videos/mdoc/ocr-poster.webp deleted file mode 100644 index b0ac717..0000000 Binary files a/public/videos/mdoc/ocr-poster.webp and /dev/null differ diff --git a/public/videos/mdoc/ocr.mp4 b/public/videos/mdoc/ocr.mp4 deleted file mode 100644 index dc74eec..0000000 Binary files a/public/videos/mdoc/ocr.mp4 and /dev/null differ diff --git a/public/videos/mdoc/pseudo-poster.webp b/public/videos/mdoc/pseudo-poster.webp deleted file mode 100644 index f2cc241..0000000 Binary files a/public/videos/mdoc/pseudo-poster.webp and /dev/null differ diff --git a/public/videos/mdoc/pseudo.mp4 b/public/videos/mdoc/pseudo.mp4 deleted file mode 100644 index c2df576..0000000 Binary files a/public/videos/mdoc/pseudo.mp4 and /dev/null differ diff --git a/public/videos/mdoc/restore-poster.webp b/public/videos/mdoc/restore-poster.webp new file mode 100644 index 0000000..c31b1af Binary files /dev/null and b/public/videos/mdoc/restore-poster.webp differ diff --git a/public/videos/mdoc/restore.mp4 b/public/videos/mdoc/restore.mp4 new file mode 100644 index 0000000..7a32f18 Binary files /dev/null and b/public/videos/mdoc/restore.mp4 differ diff --git a/public/videos/mdoc/share-poster.webp b/public/videos/mdoc/share-poster.webp new file mode 100644 index 0000000..949f511 Binary files /dev/null and b/public/videos/mdoc/share-poster.webp differ diff --git a/public/videos/mdoc/share.mp4 b/public/videos/mdoc/share.mp4 new file mode 100644 index 0000000..2636394 Binary files /dev/null and b/public/videos/mdoc/share.mp4 differ diff --git a/src/assets/mdoc-compare-dark.png b/src/assets/mdoc-compare-dark.png new file mode 100644 index 0000000..3bcc1c8 Binary files /dev/null and b/src/assets/mdoc-compare-dark.png differ diff --git a/src/assets/mdoc-compare-light.png b/src/assets/mdoc-compare-light.png new file mode 100644 index 0000000..6405ee6 Binary files /dev/null and b/src/assets/mdoc-compare-light.png differ diff --git a/src/assets/mdoc-copy-dark.png b/src/assets/mdoc-copy-dark.png new file mode 100644 index 0000000..94c0806 Binary files /dev/null and b/src/assets/mdoc-copy-dark.png differ diff --git a/src/assets/mdoc-copy-light.png b/src/assets/mdoc-copy-light.png new file mode 100644 index 0000000..1e2bee7 Binary files /dev/null and b/src/assets/mdoc-copy-light.png differ diff --git a/src/assets/mdoc-icon.png b/src/assets/mdoc-icon.png deleted file mode 100644 index 7cd2061..0000000 Binary files a/src/assets/mdoc-icon.png and /dev/null differ diff --git a/src/assets/mdoc-logo.svg b/src/assets/mdoc-logo.svg new file mode 100644 index 0000000..635f1cf --- /dev/null +++ b/src/assets/mdoc-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/mdoc-restore-dark.png b/src/assets/mdoc-restore-dark.png new file mode 100644 index 0000000..50e8bdb Binary files /dev/null and b/src/assets/mdoc-restore-dark.png differ diff --git a/src/assets/mdoc-restore-light.png b/src/assets/mdoc-restore-light.png new file mode 100644 index 0000000..30eb153 Binary files /dev/null and b/src/assets/mdoc-restore-light.png differ diff --git a/src/assets/mdoc-review-dark.png b/src/assets/mdoc-review-dark.png new file mode 100644 index 0000000..f3b0d16 Binary files /dev/null and b/src/assets/mdoc-review-dark.png differ diff --git a/src/assets/mdoc-review-light.png b/src/assets/mdoc-review-light.png new file mode 100644 index 0000000..620c09d Binary files /dev/null and b/src/assets/mdoc-review-light.png differ diff --git a/src/assets/mdoc-scan-dark.png b/src/assets/mdoc-scan-dark.png new file mode 100644 index 0000000..d2dbc0f Binary files /dev/null and b/src/assets/mdoc-scan-dark.png differ diff --git a/src/assets/mdoc-scan-light.png b/src/assets/mdoc-scan-light.png new file mode 100644 index 0000000..bfc93de Binary files /dev/null and b/src/assets/mdoc-scan-light.png differ diff --git a/src/assets/mdoc-screenshot.png b/src/assets/mdoc-screenshot.png deleted file mode 100644 index e3a1c6f..0000000 Binary files a/src/assets/mdoc-screenshot.png and /dev/null differ diff --git a/src/components/DemoVideos.astro b/src/components/DemoVideos.astro index ac7f84e..480f29c 100644 --- a/src/components/DemoVideos.astro +++ b/src/components/DemoVideos.astro @@ -1,32 +1,43 @@ --- -// Three short mdoc explainer videos (made in videos/mdoc with fframes) played -// as one looping sequence. Muted, plays only while on screen; under reduced -// motion nothing plays by itself and each video shows its final-state poster -// with controls. Files: public/videos/mdoc/ (videos/mdoc/export-web.sh). +// Four short films of mdoc 0.1.0-beta.11, cut from scripted screen recordings +// (videos/mdoc: capture/take.sh records, src/scenes.rs is the scene library, +// export-web.sh picks and orders the scenes). Played as one looping sequence, +// muted, only while on screen; under reduced motion nothing plays by itself. +// Native controls remain available in both modes. Files: public/videos/mdoc/. const steps = [ { - id: "ocr", - tab: "Recognize scans", + id: "find", + tab: "Find", label: - "A scanned court opinion is recognized on the computer and becomes editable Markdown.", + "mdoc proposes the people, companies, addresses and bank details in a fictional letter before claim; hovering a name shows its alias, and clicking it opens every mention of that person.", }, { - id: "pseudo", - tab: "Pseudonymize", + id: "fix", + tab: "Fix", label: - "In a services agreement, a company, a person, an email and a phone number are proposed as personal data, approved, and replaced with aliases such as ORG_1 and PERSON_1.", + "A court name is unticked to keep it, and an address detection missed is selected, replaced and filed as an address.", }, { - id: "ai", - tab: "Paste into AI", + id: "share", + tab: "Share", label: - "The prepared text is copied and pasted into ChatGPT or Claude, which only sees the aliases.", + "Replacements are applied in one step, checked side by side with the original, and copied for AI with a note to keep every placeholder.", + }, + { + id: "restore", + tab: "Restore", + label: + "An AI chat sees only aliases; its reply is pasted back into mdoc, which restores the real names on this computer.", }, ]; ---
-
+
{steps.map((step, i) => ( + ))} +
+ )} +
+ + +
- {tool.screenshotAlt} + {captures.map((capture, i) => ( + + ))}
{tool.screenshotCaption} - Scroll to compare both panes + Scroll to explore
+