docs(readme): web-first framing + standalone HTML build path (#90)
Some checks are pending
CI / E2E (Web) (push) Blocked by required conditions
CI / E2E (Standalone single-file) (push) Blocked by required conditions
CI / Lint, Typecheck & Unit Tests (push) Successful in 16m15s

## Summary

Brings the README in line with the v5 codebase and the [`modernization-roadmap.md`](.claude/rules/modernization-roadmap.md) web-only direction. The previous README still framed ExifCleaner as a desktop app first — "Desktop app + browser webapp" tagline, a "Download and Install" section linking to upstream `szTheory/exifcleaner` .dmg / .exe / .AppImage from v3.6.0 (May 2021, pre-Phase-D).

## Changes

- **Tagline** → "Runs entirely in your browser — no uploads, no server."
- **Features list** → drops the cross-platform line; leads with "Browser-based: install as a PWA or run from a single self-contained HTML file." Also corrects the privacy-controls line — Phase F #83 enforces epoch timestamps, there is no "preserve timestamps" setting (per [`privacy-invariants.md`](.claude/rules/privacy-invariants.md) §6).
- **Remove "Download and Install" entirely** — the upstream desktop links pointed at the legacy v3.6.0 binaries (last released May 2021); they don't reflect the v5 codebase, and sending users there is misleading.
- **"Running the web app locally"** gets a new **Option 1: Single-file HTML** via `yarn build:web:standalone` (lands in [docs/standalone-html.md](docs/standalone-html.md), shipped in #89). Docker / Node dev server / build+preview shift to Options 2–4.
- **Drop the screenshot** — `static/screenshot.png` pre-dated the BEFORE/AFTER/RESULT columns (#88) and the overall v5 UI. File deleted; reference removed. A fresh screenshot is a separate task with its own decisions (mode, sample files, platform chrome).

## Out of scope (deliberately not in this PR)

- New screenshot — separate task.
- Touching the "Development" section. `yarn dev` still launches Electron and that path is functional until Phase G ships; the README's dev instructions match the current dev workflow even if they downplay the Web-first direction.
- Editing `CLAUDE.md`, `project-direction.md`, or `modernization-roadmap.md`. Those are internal docs for contributors and Claude; reframing them is a larger swing.

## Test plan

- [x] `yarn lint` (prettier) passes on README.md
- [ ] Reviewer eyeballs the rendered README in Forgejo's preview to confirm the option ordering and section flow read cleanly
- [ ] No broken intra-repo links (docs/standalone-html.md and the other doc paths all exist)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Randa <obuvuyoviz26@gmail.com>
Reviewed-on: http://localhost:3000/forgejo_admin/exifcleaner-web/pulls/90
This commit is contained in:
forgejo_admin 2026-05-14 07:06:19 +04:00
parent 2190272ea7
commit 948af5433e
2 changed files with 16 additions and 32 deletions

View file

@ -1,15 +1,13 @@
# <img src="static/icon.svg" height=26> ExifCleaner
> Clean metadata from images, videos, PDFs, and other files. Desktop app + browser webapp.
![ExifCleaner screenshot](static/screenshot.png)
> Clean metadata from images, videos, PDFs, and other files. Runs entirely in your browser — no uploads, no server.
## Features
- Cross-platform: macOS, Windows, and Linux desktop apps + browser-based webapp
- Browser-based: install as a PWA or run from a single self-contained HTML file — no server, no native install
- Drag and drop files or folders; recursive folder processing
- Fully offline — files never leave your device
- Privacy controls: preserve orientation, save as copy, remove macOS extended attributes, preserve timestamps
- Privacy controls: preserve orientation, save as copy, timestamps written to epoch
- 25 translated locales with in-app language switching (contributions welcome in [`.resources/strings.json`](.resources/strings.json))
- Dark mode (follows OS preference)
- Free and open source (MIT)
@ -56,35 +54,21 @@ Footnotes:
5. MP4/MOV: drops `udta`, `meta`, and `Xtra` containers via mp4box.js box-tree rewrite (no re-encoding, lossless). Known gaps in timed-metadata tracks, `hdlr` names, `compressorname`, mdat orphans, and sidecar files — see [`docs/PRIVACY_GAPS.md`](docs/PRIVACY_GAPS.md#mp4--mov-video-gaps) for the user-facing summary.
6. RAW: removed in v5 ([issue #16](https://github.com/obuvuyoviz26-lab/exifcleaner-web/issues/16), decided 2026-05-09, shipped 2026-05-10). No production-ready WASM library covers proprietary RAW. RAW workflows should use [ExifTool standalone](https://exiftool.org/) or a dedicated RAW tool — see [`docs/PRIVACY_GAPS.md#raw-unsupported`](docs/PRIVACY_GAPS.md#raw-unsupported).
## Download and Install
macOS 10.15+, Windows 10+, and Linux are supported (64-bit).
- **macOS**: [Download the .dmg file](https://github.com/szTheory/exifcleaner/releases/latest) (universal binary — Intel + Apple Silicon)
- **Windows**: [Download the .exe installer or portable version](https://github.com/szTheory/exifcleaner/releases/latest)
- **Linux**: [Download the .AppImage, .deb, or .rpm file](https://github.com/szTheory/exifcleaner/releases/latest)
For Linux, the AppImage needs to be [made executable](https://discourse.appimage.org/t/how-to-make-an-appimage-executable/80) after download.
Arch Linux users can install from the AUR:
```bash
paru -S exifcleaner-bin
```
### Verifying checksums
Each release includes a `SHASUMS256.txt` file. Download it from the [release page](https://github.com/szTheory/exifcleaner/releases/latest) and verify your download:
```bash
sha256sum -c SHASUMS256.txt 2>&1 | grep OK
```
## Running the web app locally
ExifCleaner runs entirely in your browser — no server-side processing, no file uploads.
### Option 1: Docker (recommended)
### Option 1: Single-file HTML (no server, no install)
```bash
yarn build:web:standalone
```
Produces `dist/web-standalone/index.html` — one self-contained ~830 KB HTML file with the entire app inlined (JS, CSS, dependencies). Open it directly in any modern desktop browser from disk; no server, no install, no internet. Email it, share it on a USB stick — recipients double-click it and it runs.
This is a desktop deliverable (Chrome, Brave, Edge, Firefox, Safari). Chrome on Android doesn't support opening local HTML files — for mobile, use the PWA install path against a deployed instance. Trade-offs (no service worker, no lazy-loading, no PWA install) and the full rationale live in [`docs/standalone-html.md`](docs/standalone-html.md).
### Option 2: Docker
```bash
# Build the image
@ -96,7 +80,7 @@ docker run -p 8080:80 exifcleaner-web
Open http://localhost:8080. Drag and drop files to clean metadata.
### Option 2: Node dev server
### Option 3: Node dev server
Requires Node 22 and yarn:
@ -107,7 +91,7 @@ yarn dev:web
Open http://localhost:5173.
### Option 3: Build and preview
### Option 4: Build and preview
```bash
yarn build:web

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 KiB