From 7acea615abf84d098f2c481c78dc7405f8e4a070 Mon Sep 17 00:00:00 2001 From: YairEtzion Date: Sun, 5 Apr 2026 19:14:22 +0300 Subject: [PATCH 1/4] =?UTF-8?q?site:=20maturity=20pass=20=E2=80=94=20JSON-?= =?UTF-8?q?LD,=20docs=20IA,=20blog,=20visual=20upgrades?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Brings the landpage closer to vite.dev / bun.com maturity and fixes remote-shell docs to match reality. SEO baseline - Add JSON-LD helper (lib/seo.ts) and Organization/SoftwareApplication/ WebSite schema on the homepage, plus BreadcrumbList + TechArticle on every /docs/* and /use-cases/* page. FAQPage schema on /docs/faq. - Fix sitemap: add missing /docs/key-storage, bump lastmod, add all new /docs/* routes, /blog, and new blog posts. Nav + visual polish - Flatten Nav: remove Use Cases dropdown, add flat Docs | Use Cases | Blog | GitHub | Get Started. - Hero: replace v0.3.0 badge with Beta chip (production ready was overclaiming for a 0.3.x product), add Trust strip below hero with @noble/* credits, card lift hover states with shadow, tighter typographic hierarchy. - Fix TableOfContents magic-number margin: responsive calc positioning gated on 2xl breakpoint so it stops overlapping content on 1024-1535px viewports. Docs IA restructure (bun.com-style) - New DocsSidebar with nested sections: Introduction / Getting Started / Guides / Reference / Packages. - Rewrite navigation.ts with hierarchical docSections + cross-section prev/next. - New pages: /docs/introduction, /docs/quickstart, /docs/faq, /docs/troubleshooting, /docs/changelog. - Redesign /docs landing with feature grid (Start here / Guides / Reference cards, Quickstart featured). Blog (maturity signal) - New /blog section with metadata store (lib/blog.ts), landing page with card list, BlogPosting JSON-LD schema. - Two seed posts drawn from existing content: 'Why we built amesh' (essay) and 'Introducing amesh 0.3' (release notes). Remote-shell docs fix - Correct the command: amesh agent start -> amesh-agent agent start (the command lives in @authmesh/agent, not @authmesh/cli). - Drop phantom 'brew install ameshdev/tap/amesh-agent' formula reference and 'amesh-agent-linux-x64.tar.gz' binary download reference — neither exists today. npm install is the only working path until prebuilt agent binaries ship (see companion commit). - Add 'Runtime requirement' amber callout explaining the Bun dependency and the 'bun $(which amesh-agent) agent start' workaround until binaries ship. Lists supported platforms; notes armv7 is unsupported. - New Troubleshooting entry for 'requires Bun runtime for PTY support'. Messaging cleanup (no 'we know better') - Hero chip: Production ready -> Beta. - Comparison table: Vault column -> Secrets Manager. - Remove all specific competitor/company mentions from prose (AWS Secrets Manager, HashiCorp Vault, Doppler, Uber, Samsung, Toyota, Twitch, Ethereum, Signal, Cloudflare). Keep the technical critique of the secrets-manager pattern; drop the name-dropping. Applied across blog post, /docs/introduction, /docs/faq, and /docs hub FAQ card description. --- landpage/src/lib/blog.ts | 48 ++++ .../src/lib/components/DocsSidebar.svelte | 122 ++++----- landpage/src/lib/components/Footer.svelte | 10 +- landpage/src/lib/components/Nav.svelte | 50 +--- .../src/lib/components/TableOfContents.svelte | 13 +- landpage/src/lib/navigation.ts | 83 +++++- landpage/src/lib/seo.ts | 97 +++++++ landpage/src/routes/+page.svelte | 93 ++++++- landpage/src/routes/blog/+page.svelte | 85 ++++++ .../blog/introducing-amesh-0-3/+page.svelte | 166 ++++++++++++ .../blog/why-we-built-amesh/+page.svelte | 207 +++++++++++++++ landpage/src/routes/docs/+page.svelte | 248 ++++++++++-------- .../src/routes/docs/changelog/+page.svelte | 220 ++++++++++++++++ landpage/src/routes/docs/faq/+page.svelte | 132 ++++++++++ .../src/routes/docs/integration/+page.svelte | 14 + .../src/routes/docs/introduction/+page.svelte | 137 ++++++++++ .../src/routes/docs/key-storage/+page.svelte | 14 + .../src/routes/docs/quickstart/+page.svelte | 177 +++++++++++++ .../src/routes/docs/remote-shell/+page.svelte | 57 +++- .../src/routes/docs/self-hosting/+page.svelte | 14 + .../routes/docs/troubleshooting/+page.svelte | 189 +++++++++++++ landpage/src/routes/use-cases/+page.svelte | 5 + .../routes/use-cases/cron-jobs/+page.svelte | 14 + .../use-cases/internal-tools/+page.svelte | 14 + .../use-cases/microservices/+page.svelte | 14 + .../use-cases/remote-shell/+page.svelte | 14 + .../routes/use-cases/webhooks/+page.svelte | 14 + landpage/static/sitemap.xml | 51 +++- 28 files changed, 2047 insertions(+), 255 deletions(-) create mode 100644 landpage/src/lib/blog.ts create mode 100644 landpage/src/lib/seo.ts create mode 100644 landpage/src/routes/blog/+page.svelte create mode 100644 landpage/src/routes/blog/introducing-amesh-0-3/+page.svelte create mode 100644 landpage/src/routes/blog/why-we-built-amesh/+page.svelte create mode 100644 landpage/src/routes/docs/changelog/+page.svelte create mode 100644 landpage/src/routes/docs/faq/+page.svelte create mode 100644 landpage/src/routes/docs/introduction/+page.svelte create mode 100644 landpage/src/routes/docs/quickstart/+page.svelte create mode 100644 landpage/src/routes/docs/troubleshooting/+page.svelte diff --git a/landpage/src/lib/blog.ts b/landpage/src/lib/blog.ts new file mode 100644 index 0000000..c309690 --- /dev/null +++ b/landpage/src/lib/blog.ts @@ -0,0 +1,48 @@ +export interface BlogPost { + slug: string; + title: string; + description: string; + date: string; + author: string; + readingTime: string; + tags: string[]; +} + +// Posts listed newest first. Individual post content lives in +// src/routes/blog/[slug]/+page.svelte — this file is for metadata only. +export const posts: BlogPost[] = [ + { + slug: 'introducing-amesh-0-3', + title: 'Introducing amesh 0.3', + description: + 'Auto-generated passphrases, verbose backend detection, a docs sidebar, and the security hardening that shipped across the 0.3.x line.', + date: '2026-04-04', + author: 'The amesh team', + readingTime: '5 min read', + tags: ['release', 'changelog'], + }, + { + slug: 'why-we-built-amesh', + title: 'Why we built amesh', + description: + "Static API keys are a broken model. Over 1 million were leaked on GitHub in 2024. Here's why we think device-bound identity is the only honest fix.", + date: '2026-04-01', + author: 'The amesh team', + readingTime: '7 min read', + tags: ['essay', 'security'], + }, +]; + +export function getPost(slug: string): BlogPost | undefined { + return posts.find((p) => p.slug === slug); +} + +export function getPostNav(slug: string): { prev?: BlogPost; next?: BlogPost } { + const idx = posts.findIndex((p) => p.slug === slug); + if (idx === -1) return {}; + return { + // posts[] is newest-first, so "next (newer)" is idx-1 and "prev (older)" is idx+1 + prev: idx < posts.length - 1 ? posts[idx + 1] : undefined, + next: idx > 0 ? posts[idx - 1] : undefined, + }; +} diff --git a/landpage/src/lib/components/DocsSidebar.svelte b/landpage/src/lib/components/DocsSidebar.svelte index c6d73b4..a96ec7e 100644 --- a/landpage/src/lib/components/DocsSidebar.svelte +++ b/landpage/src/lib/components/DocsSidebar.svelte @@ -1,6 +1,6 @@