fix(seo): stop the retired Agent Desk from claiming the apex root as its canonical (clean /agent-desk) - #229
Conversation
…oot as its canonical The retired self-serve surface (public/agent-desk.html) still declared canonical and og:url pointing at https://tinystudio.io/ — the homepage of the current offer. That is the same consolidation path by which Google presented the retired "TinyStudio Agent Desk" title/snippet for tinystudio.io: the legacy page's head metadata was consolidated onto the homepage URL. The page is already noindex/nofollow and frames itself as retired; this change makes the legacy page's canonical and og:url name the legacy page itself (https://tinystudio.io/agent-desk, the clean form that serves 200) so the retired name stops being handed to the apex root. scripts/check-site.mjs: extend the retired-desk index guard to require exactly one canonical and one og:url, both naming the clean /agent-desk address — a regression to the apex-root claim now fails `npm run check`. Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
Co-authored-by: CommandCodeBot <noreply@commandcode.ai>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Free Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughThe retired ChangesAgent Desk SEO metadata
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to The PR localizes the retired Agent Desk canonical and social URL to its own clean address and adds regression checks; no actionable merge-blocking risk remains after normal checks and review. Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login. Comment |
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
… finding on current main and live (2026-08-17) (#236) All code-side paths that fed Google the retired 'TinyStudio Agent Desk' name are closed and live: PR #46 noindex+retired framing on the legacy /agent-desk surface, PR #181 (05efed1) retiring the duplicate www host by 301 to apex, and PR #229 (798cd71, merged today) making the legacy page's canonical/og:url name the clean /agent-desk instead of the apex root. This lane re-verified every surface against origin/main 7d3a8ae and live: apex title/description/canonical current with zero Agent Desk strings, www (http+https, deep paths, query) 301s to apex, /agent-desk serves noindex/nofollow retired framing with self-canonical, app/api 410, and robots/sitemap/llms/offer all correct. npm run check passes, npm test is green (121 tests, 0 failures), git diff --check clean. SERP measurement was attempted but curl fetches are bot-blocked; index refresh is Google's timetable. Closes item f41c8af0f8. Co-authored-by: nish3451 <nish3451@users.noreply.github.com>
…oot as canonical (2026-08-17, lane 1) (#242) Backlog item 67d184c9a7: '[unreviewed-by-opus] Stop /agent-desk from claiming the apex root as its canonical — the live legacy surface still…' (truncated at dispatch). The substantive concern is already closed on origin/main (head 4efeb4d) and on live: public/agent-desk.html now declares both canonical and og:url as https://tinystudio.io/agent-desk (the clean 200-serving form) after PR #229 (commit 798cd71). The 'Retired Agent Desk index guard' in scripts/check-site.mjs fails npm run check if the page drops noindex/nofollow, the retired-framing description, the canonical, the og:url, or points any of them anywhere other than the clean /agent-desk address. Live (curl on 2026-08-17): - https://tinystudio.io/agent-desk -> 200, noindex/nofollow, canonical + og:url https://tinystudio.io/agent-desk (NOT the apex root). - https://tinystudio.io/ -> 200, 'TinyStudio — The Website Appraisal', zero Agent Desk strings in the served HTML. - https://tinystudio.io/agent-desk.html -> 307 -> /agent-desk, same head. Static: node scripts/check-site.mjs green; node --test passes 121/121 (headings 6, sitemap 7, agent-worker 80, agent-ui 16, product-contract 8, first-viewport-audience 4); git diff --check clean. Negative test (re-running check-site.mjs after temporarily reverting canonical/og:url to https://tinystudio.io/) fires both guard messages; restoring the fix returns to green. No code change needed; lands the canonical-specific re-verification receipt alongside the parent finding's re-verification (docs/evidence/agent-desk-retired-title-rereverify-2026-08-17.md) so a future reader can see one receipt per concern. Co-authored-by: minimax-vps <minimax-vps@nish.local>
… current main and live (2026-08-21, lane 1) (#276) Item ba5fb5fb58: the THREE agent-desk-canonical PRs #91/#131/#138 are no longer a duplicate open-PR cluster — #131 and #138 were closed by PR #157 on 2026-08-12, the substantive fix is on origin/main head 92d55c3 via PR #229 (commit 798cd71, merged 2026-08-17), and the canonical <link rel="canonical" href="https://tinystudio.io/agent-desk"> plus matching <meta property="og:url"> are present on source and live, md5-for-md5 (3310f720f1b9234970327ba35c52da94). Re-verification on the current head shows no code change is needed. This receipt is process evidence — a state verification of the repository's pull requests plus a reconciliation-history re-verify — not a live-index measurement. The dispatch item's trailing token "#105's declared survivor #9" reads "#91" in the backlog source and in the pr/postmerge-198 snapshot; the typo is in the dispatch only. Co-authored-by: minimax-vps <minimax-vps@local> Co-authored-by: minimax-vps <minimax-vps@users.noreply.github.com>
…oot as canonical (2026-08-21, lane 1) (#265) Item 67d184c9a7: the retired self-serve /agent-desk surface still claims the apex root as its canonical/og:url (truncated at dispatch). The fix landed in PR #229 (commit 798cd71, 2026-08-17); this lane re-verifies that the fix is still in place on origin/main head 92d55c3 (2026-08-20) and against the live deployment of that head on 2026-08-21. - Source: public/agent-desk.html still has noindex/nofollow, the retired-framing title/description, and both canonical and og:url naming https://tinystudio.io/agent-desk. File unchanged since 798cd71; the ten merges between 798cd71 and 92d55c3 touched neighbour files only. - Source guard: scripts/check-site.mjs 'Retired Agent Desk index guard' (lines ~1327-1362) fails npm run check if any of the noindex meta, retired-framing sentence, canonical, or og:url is missing/duplicated/pointing anywhere other than the clean /agent-desk address. - Live: GET https://tinystudio.io/agent-desk -> 200 with the expected head; /agent-desk.html -> 307 to /agent-desk; the apex root no longer carries any 'Agent Desk' string in its served HTML. - Bytes equality: md5sum of public/agent-desk.html on disk (3310f720f1b9234970327ba35c52da94) matches the wire bytes identically. - Tests: 124/124 node --test, narrow-viewport pages and viewport suites all green; git diff --check clean. Receipt: docs/evidence/agent-desk-canonical-apex-rereverify-2026-08-21.md Lane report: .lane/reports/lane1-agent-desk-canonical-apex-rereverify-2026-08-21.md Co-authored-by: minimax-vps <minimax-vps@users.noreply.github.com>
Closes the [unreviewed-by-opus] item: "Google still presents the retired self-serve 'TinyStudio Agent Desk' title/snippet for tinystudio.io".
Problem
The live legacy
/agent-desksurface still declared<link rel="canonical" href="https://tinystudio.io/" />andog:urlpointing at the homepage. The 2026-08-09 de-indexing pass (PR #46) addednoindex, nofollowand retired framing topublic/agent-desk.html, but left it claiming the apex root as its canonical — the exact consolidation mechanism through which the retired "TinyStudio Agent Desk" title reached tinystudio.io (q5 evidence, 2026-08-06). A noindex page whose canonical names a live page tells Google it is a duplicate of that page.The canonical fix has sat unmerged in PR #91 since 2026-08-10; main and live still serve the apex-root claim.
Change
public/agent-desk.html: canonical and og:url now name the legacy page's own addresshttps://tinystudio.io/agent-desk— the clean form that serves 200 — never the apex root.scripts/check-site.mjs: the retired-desk index guard now also failsnpm run checkwhen the canonical or og:url is missing, duplicated, or points anywhere other thanhttps://tinystudio.io/agent-desk.Deliberately untouched:
noindexframing, worker routing,robots.txt,sitemap.xml, visible UI, and the other pages' canonicals. No SERP change is claimed; this removes the last repo-side mechanism still handing the retired name to the homepage.Why not the
.htmladdressPR #91 pointed the canonical at
https://tinystudio.io/agent-desk.html, but the deployed worker 307-redirects that form to/agent-desk(verified live 2026-08-15), and the repo's own canonical convention — which the audit page already follows — requires a canonical to name the 200-serving address, never the redirecting form. This branch is the corrected version of #91; #91 is closed as superseded so exactly one delivery path remains.Verification
node scripts/check-site.mjs→ "TinyStudio.io checks passed."npm test→ 121 tests, 0 failures; narrow-viewport suite PASS.git diff --checkclean.npm run checkfail with both messages; restored fix passes./agent-desk200 carrying the apex-root canonical/og:url;/agent-desk.html307 →/agent-desk.Report
.lane/reports/fix-agent-desk-canonical-apex-lane1.mdSummary by CodeRabbit