feat(landing): OpenCode mobile wedge — flagship page, guide, notifications - #187
feat(landing): OpenCode mobile wedge — flagship page, guide, notifications#187tanlethanh wants to merge 1 commit into
Conversation
…tions ## Summary Enter the market as the mobile companion for OpenCode and local coding agents, without redesigning the homepage. The wedge is the blocked-agent workflow: notify → open the exact live session → inspect → respond → let the agent keep running on the user's machine. - Promote `/opencode` from the shared agent template to a bespoke flagship page (workflow, real setup, notifications, live-session access, local-first + open plugin transparency, focused "Connect OpenCode" CTA). - Add `/coding-agent-notifications` intent page for the notification wedge. - Add the missing `docs/guides/run-opencode-from-phone` setup guide and register it first in the docs sidebar. - Strengthen the "Why Zedra vs the built-in Claude/Codex apps?" answer on both agent pages (real terminal + workspace, your machine, agent-neutral). - Surface OpenCode first in the mobile-agents hub, marketing footer, and llms.txt. ## Notes - Notification copy matches shipped host hooks: approval (`permission.asked`) + completion (`session.idle`) pushes only; error is session state, not a push. No invented commands or plugin APIs. - Homepage (`index.astro`) is intentionally untouched. - Verified: biome ci clean (32 files); astro build 21 pages, `/opencode`, `/coding-agent-notifications`, and the guide all emit with no route collision. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📝 WalkthroughWalkthroughAdded a bespoke OpenCode-from-phone landing page, setup guide, coding-agent notifications page, navigation links, structured metadata, and updated Claude Code/Codex FAQ and AI-reference content. ChangesOpenCode mobile content
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
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 |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/landing/src/pages/opencode.astro`:
- Around line 259-262: Update the internal links in the Zedra description to use
trailing slashes: change the Claude Code and Codex href values to
`/claude-code/` and `/codex/`, respectively, matching the site’s URL convention.
- Around line 297-305: Replace the hardcoded color values in .oc-cta-primary and
its :hover rule with the appropriate existing theme CSS variables, verifying the
exact token names in docs/THEMING.md or the site's global stylesheet; preserve
the current contrast and hover appearance.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 0534a9b1-7f93-4479-96da-dbd4a09d0da0
📒 Files selected for processing (9)
packages/landing/astro.config.mjspackages/landing/public/llms.txtpackages/landing/src/agent-pages.tspackages/landing/src/content/docs/docs/guides/run-opencode-from-phone.mdxpackages/landing/src/layouts/MarketingLayout.astropackages/landing/src/pages/[agent].astropackages/landing/src/pages/coding-agent-notifications.astropackages/landing/src/pages/mobile-coding-agents.astropackages/landing/src/pages/opencode.astro
| Zedra is agent-neutral: the same workspace runs <a href="/claude-code">Claude Code</a>, | ||
| <a href="/codex">Codex</a>, Pi, Hermes, and any terminal-based agent. See | ||
| <a href="/coding-agent-notifications/">coding agent notifications</a> or | ||
| <a href="/mobile-coding-agents/">mobile coding agents</a> for the broader picture. |
There was a problem hiding this comment.
🚀 Performance & Scalability | 🟡 Minor | ⚡ Quick win
Add trailing slashes to /claude-code and /codex links.
These two internal links lack trailing slashes while every other internal link in this file (and in coding-agent-notifications.astro) uses trailing slashes. Since MarketingLayout canonicalizes URLs with trailing slashes, links without them will trigger unnecessary redirects.
💚 Proposed fix
- Zedra is agent-neutral: the same workspace runs <a href="/claude-code">Claude Code</a>,
- <a href="/codex">Codex</a>, Pi, Hermes, and any terminal-based agent. See
+ Zedra is agent-neutral: the same workspace runs <a href="/claude-code/">Claude Code</a>,
+ <a href="/codex/">Codex</a>, Pi, Hermes, and any terminal-based agent. See📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| Zedra is agent-neutral: the same workspace runs <a href="/claude-code">Claude Code</a>, | |
| <a href="/codex">Codex</a>, Pi, Hermes, and any terminal-based agent. See | |
| <a href="/coding-agent-notifications/">coding agent notifications</a> or | |
| <a href="/mobile-coding-agents/">mobile coding agents</a> for the broader picture. | |
| Zedra is agent-neutral: the same workspace runs <a href="/claude-code/">Claude Code</a>, | |
| <a href="/codex/">Codex</a>, Pi, Hermes, and any terminal-based agent. See | |
| <a href="/coding-agent-notifications/">coding agent notifications</a> or | |
| <a href="/mobile-coding-agents/">mobile coding agents</a> for the broader picture. |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/landing/src/pages/opencode.astro` around lines 259 - 262, Update the
internal links in the Zedra description to use trailing slashes: change the
Claude Code and Codex href values to `/claude-code/` and `/codex/`,
respectively, matching the site’s URL convention.
| .oc-cta-primary { | ||
| background: var(--green); | ||
| color: #06120c !important; | ||
| font-weight: 600; | ||
| } | ||
|
|
||
| .oc-cta-primary:hover { | ||
| background: #57e3a0; | ||
| } |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win
Use theme tokens instead of hardcoded hex values.
Lines 299 and 305 use hardcoded hex values (#06120c, #57e3a0) while the rest of the file consistently uses CSS custom properties (var(--green), var(--text), etc.). As per coding guidelines, packages/landing/** views should use theme tokens rather than hardcoded hex values.
♻️ Proposed fix
.oc-cta-primary {
background: var(--green);
- color: `#06120c` !important;
+ color: var(--green-text) !important;
font-weight: 600;
}
.oc-cta-primary:hover {
- background: `#57e3a0`;
+ background: var(--green-hover);
}Verify the exact token names in docs/THEMING.md or the site's global CSS variables.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/landing/src/pages/opencode.astro` around lines 297 - 305, Replace
the hardcoded color values in .oc-cta-primary and its :hover rule with the
appropriate existing theme CSS variables, verifying the exact token names in
docs/THEMING.md or the site's global stylesheet; preserve the current contrast
and hover appearance.
Source: Coding guidelines
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c717ebf7dc
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const workflow = [ | ||
| { | ||
| title: "Start OpenCode at your desk", | ||
| body: "Run OpenCode in your project as usual. Zedra attaches to that session — it does not host or replace it.", |
There was a problem hiding this comment.
Require launching OpenCode from a Zedra terminal
In the workflow where the user starts OpenCode in a normal local terminal, this promise does not hold: the hook receiver returns before updating state or notifying unless the request carries a terminal_id (crates/zedra-host/src/api.rs), and the only path I found that injects ZEDRA_TERMINAL_ID is Zedra-created PTYs (crates/zedra-host/src/rpc_daemon.rs). The zedra setup opencode global plugin invokes agent hook receive without adding a terminal id, so an OpenCode process launched “as usual” at the desk will not produce the advertised tap-to-live-session notification. Please either route hooks by OpenCode session/workdir or update the copy to require launching OpenCode from a Zedra terminal.
Useful? React with 👍 / 👎.
Summary
Positioning shift to enter as the mobile companion for OpenCode and local coding agents, without redesigning the homepage. The wedge is the blocked-agent workflow: notify → open the exact live session → inspect → respond → let the agent keep running on the user's machine.
/opencodefrom the shared agent template to a bespoke flagship page (workflow, real setup, OpenCode notifications, live-session access, local-first + open plugin transparency, focused "Connect OpenCode" CTA). Same URL — no nav/sitemap/llms.txt breakage./coding-agent-notificationsintent page for the notification wedge.docs/guides/run-opencode-from-phonesetup guide, registered first in the docs sidebar.llms.txt.Homepage (
index.astro) is intentionally untouched.Notes
crates/zedra-host/src/agent/opencode.rs): approval (permission.asked) + completion (session.idle) pushes only; error is session state, not a push. No invented commands or plugin APIs.hooks_enabled()— confirm release builds ship them before external promotion.biome ciclean (32 files);astro build21 pages,/opencode,/coding-agent-notifications, and the guide all emit with no route collision.🤖 Generated with Claude Code
Summary by CodeRabbit