docs(direction): standalone HTML + Android APK are the primary targets; drop iOS #172

Merged
forgejo_admin merged 1 commit from worktree-docs-direction-apk-standalone into master 2026-05-20 22:27:42 +00:00

Summary

Bring all direction-flavoured docs into sync with the May 2026 state of the project.

Primary distribution targets are now:

  1. Desktop offline standalone HTML (dist/web-standalone/index.html) — produced by yarn build:web:standalone
  2. Android APK (Capacitor wrapper) — produced by .github/workflows/build-android.yml or scripts/build-apk-local.sh

Demoted to secondary:

  • The deployed web PWA (dist/web/) is still buildable and self-hostable via the included Docker + Cloudflare Pages paths, but is no longer the recommended user-facing distribution.

Out of scope:

  • iOS in any form (App Store, PWA via Safari, Add to Home Screen).

What changed

File Change
.claude/rules/project-direction.md Main rewrite: "One code path, two distribution targets"; "Mobile = Android APK, not iOS"; "What's NOT in scope" updated; Phase E.1 issue list recast
.claude/rules/modernization-roadmap.md Phase E.1 table: #50 (iOS Photos picker) and #52 (PWA install prompt UX) marked out-of-scope; #23 recast from Web Share Target PWA to Android Intent filter; "PWA is sole channel" claim brought current; key constraints updated
.claude/rules/privacy-invariants.md §2 expanded to cover all three distribution paths (standalone inlines everything, APK uses Capacitor's localhost interceptor, self-host PWA caches via service worker)
CLAUDE.md Top of file + Tech Stack section reflect dual primary distribution
README.md Features list + Project Direction section reflect dual primary, iOS dropped, standalone-on-Android note updated to point at the APK
docs/android-apk.md Line 21 note flipped (APK is now primary, not "personal-distribution / not official"); comparison table relabelled; AAR conclusion updated
docs/deploying.md Reframed as the self-host PWA doc; iOS Safari install instructions removed; intro note clarifies this is secondary distribution
docs/architecture.md History note brought current — mentions APK #156 + standalone HTML as primaries
docs/PRIVACY_GAPS.md Android filesystem-isolation note updated to recommend the APK path
docs/standalone-html.md "No PWA install" trade-off bullet now points at the Android APK

10 files changed, 81 insertions, 58 deletions.

Phase E issues to close as out-of-scope

This direction change makes two open issues out-of-scope. Suggested follow-up — close (not in this PR, since closing is a separate decision):

  • #50 iOS Photos picker UX note — iOS dropped entirely
  • #52 PWA install prompt UX — deployed PWA demoted to self-host only

#23 (Web Share Target PWA) is recast rather than closed — the underlying "let users share files into MetaScrub from the Android gallery" feature is still wanted, but the implementation switches from the Web Share Target API in the manifest to a Capacitor @capacitor/share / native Intent filter.

What I deliberately did NOT touch

  • CHANGELOG.md — historical release notes. The Phase G entry says "PWA is the sole distribution channel" which was accurate at the time; changelogs are snapshots, not living documents.
  • docs/superpowers/plans/2026-05-14-phase-g-rollout.md + docs/superpowers/specs/2026-05-14-phase-g-electron-retirement-design.md — historical phase plans/specs describing the work as it was at the time of execution.
  • Playwright e2e mobile-iOS configs — these test responsive layouts under an iOS Safari user agent, useful coverage independent of iOS being a shipping target. Removing them is a separate test-strategy decision, not a direction-doc concern.
  • Source code — only two iOS references in src/, both in comments describing the mobile-browser landscape generally (not iOS-gated code paths). No code change needed for the direction shift.

Test plan

  • All edits are documentation-only; no source code touched
  • No *.md linting in CI; prettier-check only targets src/**/*.{ts,tsx}
  • Reviewer reads .claude/rules/project-direction.md first; satellites mirror its language
  • Decide whether to close #50 + #52 as out-of-scope as a follow-up

🤖 Generated with Claude Code

## Summary Bring all direction-flavoured docs into sync with the May 2026 state of the project. **Primary distribution targets are now:** 1. **Desktop offline standalone HTML** (`dist/web-standalone/index.html`) — produced by `yarn build:web:standalone` 2. **Android APK** (Capacitor wrapper) — produced by `.github/workflows/build-android.yml` or `scripts/build-apk-local.sh` **Demoted to secondary:** - The deployed web PWA (`dist/web/`) is still buildable and self-hostable via the included Docker + Cloudflare Pages paths, but is no longer the recommended user-facing distribution. **Out of scope:** - iOS in any form (App Store, PWA via Safari, Add to Home Screen). ## What changed | File | Change | |---|---| | `.claude/rules/project-direction.md` | Main rewrite: "One code path, two distribution targets"; "Mobile = Android APK, not iOS"; "What's NOT in scope" updated; Phase E.1 issue list recast | | `.claude/rules/modernization-roadmap.md` | Phase E.1 table: #50 (iOS Photos picker) and #52 (PWA install prompt UX) marked out-of-scope; #23 recast from Web Share Target PWA to Android Intent filter; "PWA is sole channel" claim brought current; key constraints updated | | `.claude/rules/privacy-invariants.md` | §2 expanded to cover all three distribution paths (standalone inlines everything, APK uses Capacitor's localhost interceptor, self-host PWA caches via service worker) | | `CLAUDE.md` | Top of file + Tech Stack section reflect dual primary distribution | | `README.md` | Features list + Project Direction section reflect dual primary, iOS dropped, standalone-on-Android note updated to point at the APK | | `docs/android-apk.md` | Line 21 note flipped (APK is now primary, not "personal-distribution / not official"); comparison table relabelled; AAR conclusion updated | | `docs/deploying.md` | Reframed as the self-host PWA doc; iOS Safari install instructions removed; intro note clarifies this is secondary distribution | | `docs/architecture.md` | History note brought current — mentions APK #156 + standalone HTML as primaries | | `docs/PRIVACY_GAPS.md` | Android filesystem-isolation note updated to recommend the APK path | | `docs/standalone-html.md` | "No PWA install" trade-off bullet now points at the Android APK | 10 files changed, 81 insertions, 58 deletions. ## Phase E issues to close as out-of-scope This direction change makes two open issues out-of-scope. Suggested follow-up — close (not in this PR, since closing is a separate decision): - **#50** iOS Photos picker UX note — iOS dropped entirely - **#52** PWA install prompt UX — deployed PWA demoted to self-host only #23 (Web Share Target PWA) is recast rather than closed — the underlying "let users share files into MetaScrub from the Android gallery" feature is still wanted, but the implementation switches from the Web Share Target API in the manifest to a Capacitor `@capacitor/share` / native Intent filter. ## What I deliberately did NOT touch - **`CHANGELOG.md`** — historical release notes. The Phase G entry says "PWA is the sole distribution channel" which was accurate at the time; changelogs are snapshots, not living documents. - **`docs/superpowers/plans/2026-05-14-phase-g-rollout.md` + `docs/superpowers/specs/2026-05-14-phase-g-electron-retirement-design.md`** — historical phase plans/specs describing the work as it was at the time of execution. - **Playwright e2e mobile-iOS configs** — these test responsive layouts under an iOS Safari user agent, useful coverage independent of iOS being a shipping target. Removing them is a separate test-strategy decision, not a direction-doc concern. - **Source code** — only two iOS references in `src/`, both in comments describing the mobile-browser landscape generally (not iOS-gated code paths). No code change needed for the direction shift. ## Test plan - [x] All edits are documentation-only; no source code touched - [x] No `*.md` linting in CI; prettier-check only targets `src/**/*.{ts,tsx}` - [ ] Reviewer reads `.claude/rules/project-direction.md` first; satellites mirror its language - [ ] Decide whether to close #50 + #52 as out-of-scope as a follow-up 🤖 Generated with [Claude Code](https://claude.com/claude-code)
forgejo_admin added 1 commit 2026-05-20 22:24:25 +00:00
docs(direction): standalone HTML + Android APK are the primary targets; drop iOS
All checks were successful
CI / Lint, Typecheck & Unit Tests (pull_request) Successful in 25s
CI / E2E (Standalone single-file) (pull_request) Successful in 1m11s
CI / E2E (Web) (pull_request) Successful in 2m18s
edc158b664
Update project direction across docs to reflect the May 2026 state:

- Primary distribution targets are now the desktop offline standalone HTML
  and the Android APK (Capacitor, shipped #156). The deployed web PWA is
  demoted to a self-host option.
- iOS in any form (App Store, PWA via Safari, Add to Home Screen) is now
  explicitly out of scope.
- Phase E.1 issues recast: #50 (iOS Photos picker) and #52 (PWA install
  prompt UX) marked out-of-scope; #49/#51/#63 kept as Android-critical UX;
  #23 recast from "Web Share Target PWA" to Android Intent filter.
- HEIC #48 rationale updated: still highest-priority deferred format, but
  framed as Android-camera default rather than iPhone default.
- docs/android-apk.md line 21 note flipped: APK is now primary, not
  "personal-distribution / not official".
- docs/deploying.md reframed as the self-host PWA path; iOS install
  instructions removed.
- privacy-invariants.md §2 expanded to cover all three distribution paths
  (standalone inlines everything, APK uses Capacitor localhost interceptor,
  self-host PWA caches via service worker).
- Cross-references to the WebPerl-ExifTool POC (PR #171) added in
  CLAUDE.md backlog + project-direction "what's in scope" + roadmap E.2,
  since the standalone+APK targets are exactly the audience that the
  ExifToolFallbackStrategy/ExifToolDiffStrategy proposal serves.

Historical records (CHANGELOG, Phase G plan/spec under docs/superpowers/)
deliberately left as-is — they describe the state at the time of release.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
forgejo_admin merged commit 6e52fd894f into master 2026-05-20 22:27:42 +00:00
Sign in to join this conversation.
No reviewers
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: forgejo_admin/exifcleaner-web#172
No description provided.