Skip to content

fix(seo): stop the retired Agent Desk from claiming the apex root as its canonical (clean /agent-desk) - #229

Merged
nish3451 merged 8 commits into
mainfrom
fix/agent-desk-canonical-apex-lane1
Aug 16, 2026
Merged

fix(seo): stop the retired Agent Desk from claiming the apex root as its canonical (clean /agent-desk)#229
nish3451 merged 8 commits into
mainfrom
fix/agent-desk-canonical-apex-lane1

Conversation

@nish3451

@nish3451 nish3451 commented Aug 15, 2026

Copy link
Copy Markdown
Collaborator

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-desk surface still declared <link rel="canonical" href="https://tinystudio.io/" /> and og:url pointing at the homepage. The 2026-08-09 de-indexing pass (PR #46) added noindex, nofollow and retired framing to public/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 address https://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 fails npm run check when the canonical or og:url is missing, duplicated, or points anywhere other than https://tinystudio.io/agent-desk.

Deliberately untouched: noindex framing, 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 .html address

PR #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 --check clean.
  • Regression proof: re-pointing canonical+og:url at the apex root makes npm run check fail with both messages; restored fix passes.
  • Live baseline before deploy: /agent-desk 200 carrying the apex-root canonical/og:url; /agent-desk.html 307 → /agent-desk.

Report

  • .lane/reports/fix-agent-desk-canonical-apex-lane1.md

Summary by CodeRabbit

  • Bug Fixes
    • Corrected the retired Agent Desk page’s canonical and Open Graph URLs to point to the page itself instead of the site root.
    • Improved site validation to detect missing, duplicate, or incorrect SEO URL metadata.
  • Documentation
    • Added verification details documenting the SEO correction and its validation results.

nish3451 and others added 2 commits August 15, 2026 12:18
…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>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown

Review Change Stack

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Free

Run ID: 474fe4cc-5c70-4e09-bea8-fc4cc0ee66b3

📥 Commits

Reviewing files that changed from the base of the PR and between a654ab4 and 7262596.

📒 Files selected for processing (3)
  • .lane/reports/fix-agent-desk-canonical-apex-lane1.md
  • public/agent-desk.html
  • scripts/check-site.mjs

📝 Walkthrough

Walkthrough

The retired /agent-desk page now uses https://tinystudio.io/agent-desk for its canonical and Open Graph URL. scripts/check-site.mjs validates both tags and ignores commented-out markup. A report records the correction and verification.

Changes

Agent Desk SEO metadata

Layer / File(s) Summary
Canonical metadata correction
public/agent-desk.html
The page’s canonical link and og:url now use the /agent-desk URL.
SEO regression guard
scripts/check-site.mjs, .lane/reports/fix-agent-desk-canonical-apex-lane1.md
The site check requires exactly one canonical link and one og:url, validates their values, ignores commented-out markup, and records the verification results.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 72625

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 Free

Your 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 @coderabbitai help to get the list of available commands.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your trial has ended. Reactivate Greptile to resume code reviews.

@nish3451
nish3451 merged commit 798cd71 into main Aug 16, 2026
3 checks passed
nish3451 added a commit that referenced this pull request Aug 17, 2026
… 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>
nish3451 added a commit that referenced this pull request Aug 17, 2026
…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>
nish3451 added a commit that referenced this pull request Aug 21, 2026
… 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>
nish3451 added a commit that referenced this pull request Aug 21, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant