Restore the real VForge product shell - #102
Conversation
Remove the rejected editorial landing and static Casa Olivo mock by restoring the exact source tree from commit 3c28937. This keeps the live project viewer, authentication, scoped portal, and owned API integration as the product baseline.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c4217492a5
ℹ️ 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 liveRoute = pathname.startsWith("/app/live/"); | ||
| export default function ProductShell({ children }: { children: ReactNode }) { | ||
| const pathname = usePathname() ?? ""; | ||
| const { user } = useUser(); |
There was a problem hiding this comment.
Preserve the Clerk-free shell path
When NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY is absent, ClerkShell deliberately renders its children without a ClerkProvider and the middleware allows /app through, but this unconditional useUser() requires that provider and makes every /app/* page fail at runtime. OnboardingPage now has the same unconditional hook; restore the key-gated wrapper/fallback before rendering Clerk hooks or components.
Useful? React with 👍 / 👎.
| <input value={pasteValues[svc.pasteKey!]||""} onChange={e=>setPasteValues(v=>({...v,[svc.pasteKey!]:e.target.value}))} | ||
| placeholder={`Pega tu ${name} API key`} | ||
| className="flex-1 rounded-xl border border-[var(--border-1)] bg-white/[0.025] px-3 py-2.5 font-mono text-[11px] text-[var(--fg-secondary)] outline-none placeholder:text-[var(--fg-muted)] focus:border-violet-500/40"/> |
There was a problem hiding this comment.
Mask API keys while they are entered
For Neon, Clerk, and Resend connections, this input now defaults to type="text", whereas the replaced implementation used type="password". Anyone entering a production credential while screen-sharing or near another person exposes the complete secret in clear text; restore password masking, optionally with an explicit reveal control.
Useful? React with 👍 / 👎.
| {/* Col 2: Context + Stack */} | ||
| <div style={{display:'flex',flexDirection:'column',gap:24}}> | ||
| {/* Context Upload */} | ||
| <div style={{background:'rgba(15,23,42,.4)',border:'2px dashed rgba(0,240,255,.3)',padding:40,display:'flex',flexDirection:'column',alignItems:'center',textAlign:'center',position:'relative'}}> |
There was a problem hiding this comment.
Wire the advertised context uploader to persisted storage
In the real onboarding flow, this surface advertises dropping PRDs, FIG files, documents, and images, but it is only a <div> with no file input, click handler, or drag/drop handlers, so attempting to provide the requested context does nothing. Connect it to real persisted upload behavior or replace it with an honest unavailable/empty state rather than shipping demo-only functionality in the app.
AGENTS.md reference: AGENTS.md:L134-L136
Useful? React with 👍 / 👎.
| description={t.projects.body} | ||
| actions={ | ||
| <> | ||
| <button className="btn-ghost flex-1 !px-3 md:flex-none md:!px-5">{t.projects.cta_import}</button> |
There was a problem hiding this comment.
Restore navigation for the import action
Clicking the newly rendered import CTA does nothing because it is a plain button without an onClick handler. The replaced UI linked the corresponding “Conectar repositorio” action to /app/integrations, so users have lost the visible path for importing or connecting a repository.
Useful? React with 👍 / 👎.
| <div className="flex items-center gap-3 rounded-[14px] px-2 py-2"> | ||
| {accountControl} | ||
| <div className="min-w-0"><p className="truncate text-sm font-medium text-[#1b1a17]">{name}</p><p className="mt-0.5 text-[11px] text-[#8a847a]">Propietario</p></div> | ||
| <div className="min-h-screen bg-[#030306] text-white"> |
There was a problem hiding this comment.
Route the product shell through design tokens
When a user selects light mode from /app/settings, AppProviders changes data-theme, but this wrapper and its newly added chrome remain hardcoded black/white, so every route under this shell stays visually dark. Use the surface and foreground token variables instead of literal colors so the existing theme state can affect the shell and color changes remain centralized.
AGENTS.md reference: AGENTS.md:L82-L84
Useful? React with 👍 / 👎.
Qué cambia
3c289375, la última versión del VForge real anterior a los PR Unify VForge around the live review room #99–Retire the legacy obsidian theme default #101Causa
Se sustituyó por error el producto por una capa visual de demostración. Esa dirección fue rechazada porque no representa VForge ni el visor en tiempo real.
Validación
3a8376f791187128c005a61c71256d3a1a462ed4mainen1b6bb74c