feat(landing): outcome-first homepage, less code up front#1112
Conversation
Reworks the homepage to read benefit-first for semi-technical evaluators while keeping one code anchor for developers. - Hero: plain-language subhead, drop the spec-strip pill. "Copy setup prompt" stays the primary CTA; the init command moves to a sub-line. - Add a "What it does" artifact: a graph-derived insight next to the proactive action it triggers, with chat shown as just one surface. - Replace the architecture diagram and the five stacked code sections with a three-step "How it works" (connect data, it builds itself into memory via watchers, agents act where your team works) plus a single collapsed lobu.config.ts. Visible code blocks go from 7 to 1. - The detailed per-primitive code sections now render only on the /for/<useCase> SEO pages, not the homepage. - CodeBlock gains a collapsible/defaultOpen toggle. - agentConfigSlice now includes a real defineWatcher plus the defineConfig wiring, so the snippet actually shows the watcher, connectors, and agent. - Fix a pre-existing dead /getting-started/watchers/ link (-> /memory/). - Page title -> "Open-source backend for proactive AI agents".
|
Caution Review failedPull request was closed or merged during review 📝 WalkthroughWalkthroughThis PR redesigns the landing page to prominently feature a new homepage with a proactive agent flow visualization, adds collapsible code blocks throughout feature sections to improve readability, introduces dual-mode copy-to-clipboard in the hero (setup prompt vs. quickstart command), and enhances snippet generation to include full agent configuration context. ChangesLanding Page Homepage Redesign
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
ESLint skipped: no ESLint configuration detected in root package.json. To enable, add Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
bug_free 84, simplicity 80, slop 8, bugs 0, 0 blockers Read diff/logs; typecheck/unit/integration all exit 0. Ran Suggested fixes
Full verdict JSON{
"bug_free_confidence": 84,
"bugs": 0,
"slop": 8,
"simplicity": 80,
"blockers": [],
"change_type": "feat",
"behavior_change_risk": "medium",
"tests_adequate": true,
"suggested_fixes": [
{
"file": "packages/landing/src/components/ProactiveLoop.tsx",
"line": 105,
"change": "Replace the em dash with comma/semicolon copy, e.g. `derived from 1,204 raw events by a watcher, no app code`."
},
{
"file": "packages/landing/src/components/ProactiveLoop.tsx",
"line": 165,
"change": "Replace the em dash with punctuation allowed by landing copy rules, e.g. `is just one surface; the same loop fires over MCP or HTTP.`"
},
{
"file": "packages/landing/scripts/gen-landing-snippets.ts",
"line": 263,
"change": "Make `agentConfigSlice` include the adjacent type-only imports from `lobu.config.ts` so the newly included watcher/connector generic references are not displayed as undefined symbols."
}
],
"notes": "Read diff/logs; typecheck/unit/integration all exit 0. Ran `cd packages/landing && bun run build` -> success. [env] build still emits an existing CSS @import ordering warning. No browser visual probe.",
"categories": {
"src": 630,
"tests": 0,
"docs": 0,
"config": 0,
"deps": 0,
"migrations": 0,
"ci": 0,
"generated": 2
}
}Local review gate — branch protection can require the |
- Drop em dashes from ProactiveLoop copy (landing copy rule). - agentConfigSlice: capture the contiguous import section, including the `import type` connector/reaction lines, so the snippet's `<typeof X>` generics resolve to a visible import instead of undefined symbols. - Renumber the hero-rise animation to start at 0ms now that the badge pill is gone, and drop the unused .hero-rise-5 utility.
Dead-code removal in use-case-showcases.ts. Every removed symbol is verified unused both in the workspace (knip) and repo-wide (git grep). - Remove `surfaceHeroCopy` data + `getSurfaceHeroCopy` getter and the `SurfaceId` / `SurfaceHeroCopy` / `SurfaceHeroCopyOverride` / `SurfaceHeroCopyConfig` types: dead "surface hero copy" feature. - Remove `landingUseCaseGroupedOptions` and its private maps (`useCaseRoleMap`, `useCaseEmojiMap`, `landingUseCaseRoleMeta`) and the `LandingUseCaseRole` type: dead role-grouped picker. - Remove `getLobuUrl`. `buildOrgUrl` and `getLobuOrgSlug` stay, they're still used by a live workspace-option builder. - Demote `DEFAULT_LANDING_USE_CASE_ID` from `export` (used internally). Net: -191 lines. Knip now flags only the generated-file type (left untouched), build/typecheck green, /for/<useCase> SEO pages still render their detailed sections. Plus: link the existing comparison page (/getting-started/comparison/, Lobu vs OpenClaw / DeepAgents / Claude Managed Agents) from HowItWorks so semi-technical visitors can find it without a fresh "Why Lobu" block.
Reworks the homepage so it reads benefit-first for semi-technical evaluators while still giving developers a real code anchor. The deep per-primitive code now lives on the /for/ SEO pages and the docs, not the homepage.
What changed on the homepage:
npx @lobu/cli initcommand moved to a sub-line.Mechanics:
Verification: astro build clean (86 pages), no console/hydration errors on the live homepage, all internal links resolve against dist, homepage vs /for split confirmed. This is a marketing-page content change; no backend/runtime code touched.
Summary by CodeRabbit
New Features
UI/Layout Updates