Files
LambdaMail/services/webmail/package.json
T
Lucas RayanandClaude Sonnet 5.5 dabd1568d1 feat(bimi): logo studio, certificate upload and a setup check in the console
The console took pasted SVG text and a URL. It now:

- takes a PNG or SVG and makes the logo BIMI accepts (SVG Tiny PS, square,
  at most 32 KB). An SVG has what the format forbids removed and is told what;
  a PNG is traced into vectors in the browser (imagetracerjs, public domain),
  walking down quality presets until it fits. The person positions it as in the
  photo editor: drag, zoom, background colour, preview in a circle or rounded
  square, and downloads the exact SVG to give a certificate authority
- holds the .pem the authority returns, validated against the logo and domain,
  and serves it at /.well-known/bimi/vmc.pem (routed by the webmail)
- shows the DNS record and runs the setup check (logo, DMARC, record, public
  URLs, certificate)
- a golden-file contract: the SVGs the studio produces are validated by the
  server's own validator (Go) and pinned by the studio's tests (TS)
- found by those tests: an element inside a link kept its onclick when the
  link was unwrapped; links are now unwrapped before cleaning
- the BIMI and photo texts are in Brazilian Portuguese with accents (they had
  been written without), and in Spanish with accents

A VMC cannot be generated from an image: it is issued by a certificate
authority. The README and the panel say so.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 17:04:35 -03:00

43 lines
950 B
JSON

{
"name": "@lambdamail/webmail",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start -p 3000",
"test": "vitest run",
"lint": "tsc --noEmit"
},
"dependencies": {
"clsx": "^2.1.1",
"dompurify": "^3.4.14",
"framer-motion": "^11.18.2",
"imagetracerjs": "1.2.6",
"lucide-react": "^0.474.0",
"next": "15.5.27",
"qrcode-generator": "^2.0.4",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"tailwind-merge": "^3.0.1"
},
"devDependencies": {
"@types/dompurify": "^3.0.5",
"@types/node": "^20.14.0",
"@types/react": "^18.3.3",
"autoprefixer": "^10.4.20",
"jsdom": "^29.1.1",
"postcss": "^8.5.25",
"tailwindcss": "^3.4.17",
"typescript": "^5.5.4",
"vitest": "^3.2.7"
},
"overrides": {
"sharp": "^0.35.0",
"next": {
"postcss": "^8.5.25"
},
"nanoid": "^3.3.18"
}
}