fix(seo): fix GSC indexing issues, remove unused academy/partners pages#5388
Conversation
- robots.ts: unblock /chat/ (page-level noindex now gates gated/inactive deployments instead), drop the now-vestigial blog-tag/link-preview carve-out - next.config.ts: add missing redirects for renamed integration slugs (sap-s-4hana, calcom), removed /partners, and removed /academy - fix missing canonical/noindex on filtered catalog pages (integrations, models, blog, careers, pricing) causing GSC "duplicate, Google chose different canonical" - standardize page titles to "Page | Sim, the AI Workspace" across the board - remove the academy marketing pages and partner program page (content consolidated into docs.sim.ai/academy); drop the unused academy_certificate table via migration and strip the sandbox-mode plumbing from the workflow editor that only academy ever used
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
PR SummaryMedium Risk Overview SEO / indexing: Removed pages & redirects: The Partners page and footer link are removed; Workflow editor: Academy-only sandbox mode is stripped from the workflow canvas, panel, execution hook, and related types/providers. Other: Theme provider no longer forces dark mode for Reviewed by Cursor Bugbot for commit 0729fae. Configure here. |
Greptile SummaryThis PR fixes a batch of Google Search Console indexing issues and removes the never-public Academy and Partners marketing pages. All changes are clean, well-commented, and follow consistent patterns across the affected pages.
Confidence Score: 5/5Safe to merge — SEO-only changes with no data mutations; the one DB query added (chat page metadata) is read-only and handles missing rows gracefully. All changes are additive or purely subtractive (dead code removal). The noindex-on-filter pattern is applied consistently across five pages. The academy DB table is deliberately kept in schema.ts with a clear explanation — no migration mismatch risk. The 301 redirects are straightforward and the academy redirect correctly uses :path* which matches the bare /academy path as well. No auth paths, payment paths, or data-write paths are touched. No files require special attention. Important Files Changed
Reviews (2): Last reviewed commit: "fix(seo): drop dead revalidate exports o..." | Re-trigger Greptile |
CI's expand/contract migration safety check correctly flagged this: the academy_certificate DROP TABLE was bundled in the same PR as removing the code that reads/writes it (the certificates API route had no feature-flag guard of its own, so it was reachable independent of the marketing pages being disabled). Dropping the table in the same deploy risks breaking any pod still running the old code during a rolling deploy. Restores the table/enum in schema.ts and the test mock, and removes the 0254 migration. The table drop should ship in its own PR once this one's code removal is confirmed live.
Any Server Component in the route tree reading searchParams forces the whole route to fully dynamic per-request rendering, which overrides ISR — revalidate is a silent no-op once that happens. True on pricing/careers because generateMetadata now parses searchParams directly, and was already true on blog before this PR (its page body already read searchParams). Flagged by Greptile on pricing; same root cause applies to all three.
|
Addressed both automated findings, plus one CI safety-gate failure that needed a real fix rather than a bypass: Greptile — dead CI — Pushed both fixes. |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 0729fae. Configure here.
generateMetadata queried the DB with no error handling, unlike the identical query in api/chat/[identifier]/route.ts (which already wraps it in try/catch). There's no error.tsx under app/(interfaces)/chat/ — metadata resolution errors aren't caught by route-segment error boundaries at all, only the root global-error.tsx — so a DB hiccup during this lookup would take the whole page down to a generic error page instead of just failing to determine indexability. Catches the error, logs it, and defaults to noindex: if we can't confirm the deployment is safely public, that's the correct SEO default anyway, not a reason to crash the request. Flagged by Cursor Bugbot on #5388 (already merged); this ships the fix as a standalone follow-up since the underlying code is already live.
Summary
/chat/in robots.txt; deployed chats are now noindexed per-page instead (only public + active ones are indexable) — robots.txt was previously blocking Google from ever seeing the noindex on gated onessap-s-4hana→sap-s4hana,calcom→cal-com) that were 404ing with no redirect"Page | Sim, the AI Workspace"across careers and comparison pages (previously inconsistent formatting)/contactacademy_certificatetable via migration (never had a live write)Type of Change
Testing
Tested manually. Typecheck, Biome lint,
check:api-validation, andseo.test.tsall pass.Checklist