diff --git a/AGENTS.md b/AGENTS.md
index ad9b32f..509286f 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -2,7 +2,7 @@
## Current Release
-**v0.9.27** — Open Product Family Branding Alignment + Vercel Deployment (2026-07-03)
+**v1.0.0** — Web + PWA Stable Release (2026-07-07)
## Product Identity
@@ -36,24 +36,25 @@ Sprout Individual product → apps/web/docs/BRANDING.md
- **Frontend:** Next.js 15 (App Router) + Tailwind CSS v4 + TypeScript
- **Backend:** Supabase (auth, PostgreSQL DB, file storage, edge functions)
-- **Mobile:** Capacitor v8 Android (PWA for Windows/desktop)
+- **Mobile:** PWA (Installable on all platforms; Android archive preserved at `archive/android/`)
- **AI:** MCP server at `apps/mcp/` — 28 tools, 112 tests
- **Auth:** Google OAuth (email/password disabled via Supabase)
- **Design:** Sora variable font, warm paper light mode, deep botanical dark mode
- **Hosting:** Vercel (web at sprout.kovina.org), Supabase (backend, shared project with OpenSend)
-- **CI:** GitHub Actions — Java 21 for Android, Node 24 for web, caching via `setup-node`
+- **CI:** GitHub Actions — Node 24 for web, caching via `setup-node`
## Repo Structure
```
opensprout/
├── apps/
-│ ├── web/ # Next.js app + Capacitor Android
+│ ├── web/ # Next.js app (App Router) + PWA
│ │ ├── src/app/ # App Router pages + API routes
│ │ ├── src/lib/ # Data layer, auth, supabase clients, context
│ │ └── src/components/# UI components
│ └── mcp/ # MCP server (28 tools, HTTP + stdio)
│ └── src/tools/ # 7 tool modules (plants, care, journal, etc.)
+├── archive/ # Archived platforms (Android/Capacitor)
├── docs/ # 35+ docs
├── scripts/ # build/release scripts
├── supabase/
@@ -346,6 +347,34 @@ The Supabase project `rbdyrymtgfqqkdemicdo` is shared between OpenSprout (plant
- All MCP tool files, test mocks, sync cache mappings, and `db.ts` store names updated.
- `delete_account()` RPC function replaced (table `RENAME` doesn't update hardcoded names in function bodies).
+## Key Changes in v1.0.0 — Web + PWA Stable Release (2026-07-07)
+
+### Android/Capacitor Archived
+- Full Android build preserved at `archive/android/` (120 MB, 2814 files).
+- Capacitor config archived at `archive/capacitor.config.ts`.
+- 8 `@capacitor/*` npm packages removed from both `package.json` files.
+- All 18 Android/Cap scripts removed. Only `rc:web` remains.
+
+### Capacitor Code Cleaned (13 files touched)
+- `platform.ts` — simplified to `resolveApiUrl()` and `PRODUCTION_ORIGIN` only.
+- `haptics.ts` — Capacitor plugin removed, `navigator.vibrate` only.
+- `reminders.ts` — Capacitor LocalNotifications path removed, web-only scheduling.
+- `app-context.tsx` — Capacitor `appUrlOpen` listener removed.
+- `auth-gate.tsx` — Capacitor native detection removed, always shows public page.
+- `photo-picker.tsx` — Capacitor Camera plugin removed, `capture="environment"` only.
+- `login/page.tsx` — Capacitor "native" auth branch removed.
+- `debug-info.tsx` — Capacitor diagnostics removed.
+- `oauth-deeplink-handler.tsx` — deleted (Capacitor-only).
+- `capacitor-haptics.d.ts` — deleted.
+
+### Other Changes
+- **GeneratedAssets committed** — 324 cross-platform brand icon files.
+- **Footer redesigned** — OPEN/Sprout lockup with icon, KOVINA wordmark, no AGPLv3 legalese.
+- **About page** — dual dark/light icons, PublicFooter restored.
+- **Feature grid** — responsive 1→2→3 column layout.
+- **Header** — "View on GitHub" button removed.
+- **Version bumped** to 1.0.0.
+
## Key Changes in v0.9.27 — Open Product Family Branding Alignment (2026-07-02)
### Header Lockup Standardization
@@ -408,8 +437,6 @@ The Supabase project `rbdyrymtgfqqkdemicdo` is shared between OpenSprout (plant
- No crash reporting / analytics (intentional privacy choice)
- Vercel Hobby plan rate-limited for deployments (24h cooldown)
- Supabase project shared with OpenSend (send.kovina.org) — all tables use `opensprout_` prefix
-- Android OAuth requires `opensprout://auth/callback` and `https://sprout.kovina.org/auth/complete` added to Supabase Redirect URLs
-- Android APK built in CI has placeholder web assets (no static export) — functional for development only
## Build Commands
@@ -418,9 +445,7 @@ npm run dev # Dev server at localhost:9999
npm run build # Web production build
npm run typecheck # TypeScript check (builds MCP first)
npm run lint # ESLint
-npm run android:debug # Debug APK
-npm run android:release # Both signed AAB + APK
-npm run -w @opensprout/mcp test # MCP tests
+npm run -w @opensprout/mcp test # MCP tests (112)
bash scripts/release.sh # Full release automation
bash scripts/release.sh --check-only # Checks only, no build
```
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7b75694..fcd9735 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,22 @@
All notable changes to OpenSprout will be documented here. The format follows [Keep a Changelog](https://keepachangelog.com/). OpenSprout uses [Semantic Versioning](https://semver.org/).
+## 1.0.0 — 2026-07-07
+
+### Changed
+- **v1.0.0 stable release** — OpenSprout ships as a web + PWA application.
+- **Android/Capacitor archived** — Android build removed from active tree for future revisiting (preserved in `archive/`).
+- **Capacitor dependencies removed** — 8 @capacitor/* packages cleaned from both package.json files. Android scripts stripped.
+- **Notification system simplified** — Capacitor LocalNotifications path removed; all reminders use Web Notification API (PWA).
+- **Auth flow cleaned** — Capacitor native auth branch removed; web + PWA sign-in streamlined.
+- **Haptics simplified** — Capacitor Haptics plugin path removed; falls back to navigator.vibrate.
+- **Debug page cleaned** — Capacitor detection diagnostics removed.
+- **Photo picker simplified** — Capacitor Camera plugin path removed; uses native `capture="environment"` input.
+- **Platform utilities simplified** — Capacitor-specific routing removed.
+- **GeneratedAssets committed to repo** (324 cross-platform brand icon files).
+- **Branding updates** — About page icon fixed with dark/light variants. Footer features OPEN/Sprout lockup with icon, KOVINA wordmark, no AGPLv3 legalese. Landing page feature cards in responsive grid.
+- **Header cleaned** — "View on GitHub" button removed.
+
## 0.9.26 — 2026-06-28
### Added
diff --git a/CLAUDE.md b/CLAUDE.md
index 6fb22d6..ad2fc63 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -1,6 +1,6 @@
-# OpenSprout v0.9.27
+# OpenSprout v1.0.0
-**Stack:** Next.js 15 (App Router) · Supabase · Capacitor v8 Android · Tailwind CSS v4 · Sora font
+**Stack:** Next.js 15 (App Router) · Supabase · Tailwind CSS v4 · Sora font · PWA
**Deploy:** https://sprout.kovina.org
**Source:** github.com/sparshsam/opensprout
**License:** AGPLv3
@@ -20,7 +20,7 @@ npm run android:release # Signed AAB + APK
## Project Layout
```
-apps/web/ # Next.js + Capacitor Android
+apps/web/ # Next.js app + PWA
├── src/app/
│ ├── page.tsx # Public homepage
│ ├── login/ # Google OAuth sign-in (platform-aware: web/PWA/Android)
@@ -43,7 +43,6 @@ apps/web/ # Next.js + Capacitor Android
│ ├── terms/ # Terms of service
│ ├── mcp/ # AI Access guide
│ └── globals.css # Design tokens, animations, a11y
- ├── android/ # Capacitor Android project
├── public/
│ ├── sw.js # Service worker (v0.9.27)
│ ├── manifest.webmanifest # PWA manifest
@@ -85,10 +84,6 @@ supabase/migrations/ # Database migrations (shared project)
| `npm run build` | Web production build |
| `npm run typecheck` | TypeScript check (builds MCP first) |
| `npm run lint` | ESLint |
-| `npm run android:debug` | Debug APK |
-| `npm run android:release:bundle` | Signed release AAB |
-| `npm run android:release:apk` | Signed release APK |
-| `npm run android:release` | Both AAB + APK |
| `npm run -w @opensprout/mcp test` | MCP tests (112) |
| `bash scripts/release.sh` | Full release automation (check → build → sign) |
| `bash scripts/release.sh --check-only` | Run all checks without building |
@@ -135,7 +130,7 @@ Sprout Individual product → apps/web/docs/BRANDING.md
- **Callback:** `/auth/callback` exchanges code server-side via `createServerClient` + `exchangeCodeForSession()` (critical — without this the redirect drops the `code` param causing a sign-in loop)
- **Session:** Auto-refreshed via `@supabase/ssr`
- **CSP:** Security headers disabled in dev mode (Next.js HMR needs `'unsafe-eval'`); production Vercel builds get strict headers
-- **Platform awareness:** `AuthGate` detects Capacitor native via `window.Capacitor.isNativePlatform()` — web shows public homepage, native redirects to login
+- **Platform awareness:** Web + PWA only. Capacitor native (Android) archived at `archive/`.
## MCP Server
@@ -155,6 +150,7 @@ Architecture follows the MCP Build Guide: SHA-256 token auth, centralized regist
## Release History
+- **v1.0.0** (Jul 7) — **Stable release — Web + PWA.** Android/Capacitor archived, 8 Capacitor packages removed, 13 source files cleaned, footer redesigned, feature grid, KOVINA wordmark, GeneratedAssets committed.
- **v0.9.27** (Jul 3) — Open Product Family branding alignment + Vercel deployment. Header lockups standardized to `[icon] OPEN / Sprout` stacked layout in all three header components (public-nav, shell/top-bar, app-shell). Icons generated from 1024x1024 light + dark masters via Lanczos resampling: 210 assets across Windows ICO, MSIX, Android mipmaps, iOS, macOS, Web/PWA favicons, social OG, GitHub, and header icons. 114 dark mode variant assets generated (including opensprout-icon-header-dark.png). All three header locations use dual-image wrap with `dark:opacity-0`/`dark:opacity-100` CSS transitions for dark/light theming. Generated PNG icons replace the lucide Sprout icon in public-nav.tsx and app-shell.tsx. Lockup styling aligned to OpenPalette canonical spec. Brand hierarchy documented in `apps/web/docs/BRANDING.md`. Build fixes: added eslint-disable comments for `` tags (blocking Vercel build), added missing `import Link from "next/link"` to app-shell.tsx, added root `public/` directory with hard copies for Vercel static file serving. Docs/BRANDING.md created. OpenPalette canonical spec alignment. Vercel deploy live at sprout.kovina.org.
- **v0.9.26** (Jun 28) — CI stabilization + database namespacing. Android CI now builds with Java 21 (fixes AGP 8.13 compile error) and uses normal `next build` (not static export) — all `force-static`/`generateStaticParams` route hacks reverted. All 14 OpenSprout tables renamed to `opensprout_` prefix for shared Supabase project namespacing. Code references, type definitions, MCP tools, and tests updated.
- **v0.9.26** (Jun 28) — Native Google Sign-In + Android Fixes. In-app Chrome Custom Tab for Android, browser-popup login for Windows/PWA, platform-aware sign-in dispatch, API routing for Capacitor static export, adaptive icon fix, white flash fix, debug diagnostics page.
diff --git a/README.md b/README.md
index 5a30243..2c30c1b 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@
{sessionStatus}
- URL: {process.env.NEXT_PUBLIC_SUPABASE_URL ?? "not set"} -
-