Skip to content

feat: landing page redesign - #3

Closed
YairEtzion wants to merge 9 commits into
mainfrom
feat/landing-page-redesign
Closed

feat: landing page redesign#3
YairEtzion wants to merge 9 commits into
mainfrom
feat/landing-page-redesign

Conversation

@YairEtzion

Copy link
Copy Markdown
Contributor

Summary

  • Full-width layout with alternating section backgrounds (was constrained to max-w-2xl / 672px)
  • Two-column hero with tabbed install CTA (Homebrew / npm / Binary) and before/after code demo
  • New comparison table: amesh vs API Keys vs mTLS vs Vault vs OAuth
  • 3-column feature grid with icon badges (6 features including "Open source")
  • Two-column "How it works" layout (description left, code right)
  • CLI demo with proper terminal chrome (colored dots, title bar) and tabbed commands
  • Bottom CTA section with install command + link cards to docs/integration/GitHub
  • 4-column footer (Brand / Product / Resources / Use Cases)
  • GitHub Invertocat SVG logo in nav and footer
  • Responsive: nav items hidden on mobile, sections stack cleanly

Test plan

  • pnpm build passes (static adapter)
  • Desktop (1440px): two-column hero, comparison table, 3-col feature grid
  • Mobile (375px): single-column layout, clean nav (GitHub + Get Started only)
  • Tab switching: install CTA (Homebrew/npm/Binary), CLI demo, before/after code
  • Copy-to-clipboard on install command
  • All existing routes work: /docs, /use-cases/*, /docs/integration, /docs/self-hosting

🤖 Generated with Claude Code

YairEtzion and others added 9 commits March 30, 2026 16:55
Replace static API keys with P-256 ECDSA device identities stored in
Secure Enclave, TPM 2.0, or encrypted files. Zero static secrets.

Packages:
  @amesh/core      — crypto primitives (81 tests)
  @amesh/keystore  — hardware key storage (32 tests)
  @amesh/sdk       — signing client + verification middleware (25 tests)
  @amesh/cli       — device management CLI
  @amesh/relay     — WebSocket pairing relay (5 tests)

143 tests. Full protocol spec v2.0.0. MIT licensed.
…file permissions

* fix: critical security hardening — HMAC key material, file permissions, input validation

- AllowList HMAC seal now uses private key material (encrypted-file) or
  a stored random secret (hardware keystores) instead of the public key,
  which was publicly known from identity.json
- All sensitive files (keys, identity, allow list) written with 0o600/0o700
- deviceId validated against path traversal (/^[a-zA-Z0-9_-]+$/)
- Bootstrap token jti entropy increased from 32 to 128 bits
- authMeshVerify middleware accepts custom NonceStore for multi-instance replay protection
- 500 error responses no longer leak allow_list_integrity_failure to clients
- TPM temp files use crypto.randomUUID() instead of Math.random()

* fix: second wave security hardening — ECDH, bootstrap, relay, nonce store

Core crypto:
- ECDH shared secret now returns raw 32-byte x-coordinate per NIST SP 800-56A
  (was including the compressed point prefix byte)
- Canonical string rejects newlines in fields to prevent injection

Bootstrap:
- Controller public key now embedded in token payload (pub field) — token
  signature verified against trusted embedded key, not untrusted relay message
- Hardware keystore bootstrap no longer re-generates keypair (was creating
  a mismatched key); uses keyAlias mapping instead

Relay hardening:
- Per-OTC attempt tracker (max 10 failed connects per OTC) blocks distributed
  brute-force regardless of source IP count
- WebSocket maxPayload set to 64KB (was 100MB default)
- Connection limit of 10,000 concurrent WebSocket connections
- Bootstrap watcher TTL + cleanup on socket disconnect
- Message field whitelisting on bootstrap_init forwarding
- Rate limiter periodic cleanup prevents unbounded Map growth

SDK:
- Base64URL decoding for public key id field (was plain base64, mismatching spec)

Nonce store:
- Max size cap (1M entries) prevents memory exhaustion under flooding
- Expired nonces detected on individual lookup, not just periodic sweep

* docs: update spec, ADRs, and roadmap for security hardening

- protocol-spec.md: ECDH shared secret is raw x-coordinate (32 bytes),
  AllowList HMAC derivation documents hardware keystore fallback,
  KeyStore interface includes getHmacKeyMaterial
- architecture-decisions.md: ADR-009 covers all security hardening decisions
- roadmap.md: Security Hardening section, remaining items in Future
Add standalone binary packaging using Node.js Single Executable Application.
The CLI is bundled with esbuild into a single CJS file, then embedded into
the Node.js binary via SEA — no Node.js required on the user's machine.

- Custom SEA entry point bypassing oclif filesystem discovery
- esbuild build script (3.9MB minified bundle)
- GitHub Actions workflow: matrix build for darwin-arm64/x64 + linux-x64
- Homebrew formula (platform-specific binary tarballs)
- nfpm config for .deb packages
- Upgrade Node.js to 24 LTS across CI, Docker, and docs
feat: Homebrew + APT distribution via Node.js SEA
Add Homebrew + APT distribution section to roadmap, remove
legacy docs/index.html (replaced by landpage), update gitignore.
…son table

Inspired by bun.sh, the landing page now uses the full viewport width with
alternating section backgrounds instead of being constrained to max-w-2xl.
Adds tabbed install CTA (Homebrew/npm/Binary), comparison table vs alternatives,
3-column feature grid, two-column how-it-works, CLI demo with terminal chrome,
bottom CTA, 4-column footer, GitHub Invertocat logo, and responsive mobile nav.
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