Skip to content

snd: how-it-works modal, API docs, expired hero fix#26

Merged
jaschadub merged 3 commits into
masterfrom
fix/snd-expired-vault-hero
May 24, 2026
Merged

snd: how-it-works modal, API docs, expired hero fix#26
jaschadub merged 3 commits into
masterfrom
fix/snd-expired-vault-hero

Conversation

@jaschadub
Copy link
Copy Markdown
Member

Summary

Three independent changes batched on this branch:

  • feat: How-it-works footer modal. Adds a How it works link to the footer that opens a non-technical explainer dialog: a 4-step plain-English walkthrough (lock in browser → store ciphertext → share link → link expires) with a small animated SVG diagram (packet flowing you → snd → them, color-flipping at the locked stop). Respects prefers-reduced-motion. Wires through the existing state.modal pattern so it dismisses like any other dialog.
  • docs: docs/API.md. Documents all 11 API routes (HTTP upload, WS upload, exists, metadata, download, delete, password, params, info, filelist) plus the send-v1 / owner_token / FxA auth schemes, server limits with env vars, status codes, and health/version paths.
  • fix: expired-link Vault hero. Replaces the legacy blue cloud on the expired-link screen with the Vault hero — the original purpose of this branch.

No new dependencies. All lints pass; webpack build is clean.

Test plan

  • npm start, open http://localhost:8080, click How it works in the footer → modal opens with the animated diagram and 4 steps.
  • Close the modal via the ×, the backdrop, and the Got it button.
  • Toggle the OS reduce motion setting → the packet stops animating and parks at the server node.
  • Visit an expired share link → the new Vault hero renders (no legacy blue cloud).
  • Skim docs/API.md against server/routes/*.js for any spec drift.

jaschadub added 3 commits May 23, 2026 13:59
… hero

app/ui/notFound.js (rendered when a share link has expired or 404s)
was still using assets/notFound.svg -- a Mozilla Firefox Send-era
illustration: saturated blue, soft cloud-with-strike-through glyph,
decorative. Same off-brand carryover that downloadCompleted.js had
before PR #18 fixed it.

Replacement uses the existing Vault visual vocabulary, mirroring the
download-complete hero from PR #18 so the encrypt/decrypt/expired
moments visually rhyme:

- Three nested squares (concentric, hairline outer pair).
- Inner square in `--snd-mute` (not danger -- expired is not a
  destructive condition, it's an absent one).
- Diagonal slash from corner to corner of the inner square, in mute.
- EXPIRED tag eyebrow above the headline.
- A `>`-prefixed mono caption -- "share no longer available · file
  removed from server" -- echoing the Vault comment-line motif.

assets/notFound.svg is no longer referenced. Leaving the file in
place for now; webpack still emits it but no template loads it.

The `assets` import is also dropped since it's no longer used.
Covers all 11 routes (HTTP upload, WS upload, exists, metadata,
download, delete, password, params, info, filelist), the send-v1 /
owner_token / FxA auth schemes, server limits, status codes, and
health/version paths.
Adds a footer link that opens a non-technical explainer modal: a
4-step plain-English walkthrough (lock in browser, store ciphertext,
share link, link expires) with a small animated SVG diagram showing
a packet flowing you → snd → them and flipping color at the locked
stop. Respects prefers-reduced-motion.

Wires showHowItWorks through the existing state.modal pattern so it
dismisses like every other dialog.
@jaschadub jaschadub merged commit 1572979 into master May 24, 2026
2 checks passed
@jaschadub jaschadub deleted the fix/snd-expired-vault-hero branch May 24, 2026 22:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant