|
| 1 | +# Website SEO hardening pass |
| 2 | + |
| 3 | +- [x] Reproduce the current website SEO artifact/output state and confirm root causes for the reported issues |
| 4 | +- [x] Add failing tests first for deploy URL parsing and generated SEO artifacts (`robots.txt`, canonical URL/base handling, custom-domain `CNAME`) |
| 5 | +- [x] Implement the minimal website config/build changes to fix the reproducible issues |
| 6 | +- [x] Improve crawlable homepage copy to address the low text-to-code warning without changing product meaning |
| 7 | +- [x] Run website verification plus post-feature QA and append review notes |
| 8 | + |
| 9 | +## Review (Website SEO hardening pass) |
| 10 | + |
| 11 | +- Changes implemented: |
| 12 | + - replaced the website’s hardcoded GitHub Pages path assumptions with a single resolved `DEPLOY_SITE_URL` contract that derives origin, base path, public URLs, and optional custom-domain `CNAME` output from one source of truth |
| 13 | + - expanded the SEO build integration so it always writes `robots.txt` and writes `CNAME` automatically for custom-domain deployments |
| 14 | + - converted hardcoded `/agentsmesh/...` doc links to base-agnostic relative links so the docs build works both on the current GitHub Pages project URL and on a root custom domain |
| 15 | + - added more crawlable homepage copy to improve the low text-to-code ratio without changing the product positioning |
| 16 | + - added website unit tests and wired them into `website/package.json` plus the deploy workflow so the SEO behavior is enforced in automation |
| 17 | +- Tests added: |
| 18 | + - `website/site-url.test.mjs` |
| 19 | + - `website/integrations/seo-robots.test.mjs` |
| 20 | +- Verification: |
| 21 | + - `node --test website/site-url.test.mjs website/integrations/seo-robots.test.mjs` |
| 22 | + - `node ./node_modules/astro/astro.js build` (in `website/`) |
| 23 | + - `DEPLOY_SITE_URL=https://docs.agentsmesh.dev/ node ./node_modules/astro/astro.js build` (in `website/`) |
| 24 | + - `rg -n 'href="/agentsmesh/|src="/agentsmesh/|https://docs.agentsmesh.dev/agentsmesh' website/dist -g '*.html'` |
| 25 | + - inspected generated `website/dist/robots.txt` and custom-domain `website/dist/CNAME` |
| 26 | +- QA Report — Website SEO hardening pass |
| 27 | + |
| 28 | +### Acceptance Criteria |
| 29 | + |
| 30 | +| Criterion | Covered by test? | Status | |
| 31 | +| --- | --- | --- | |
| 32 | +| Deploy URL handling supports both GitHub Pages project paths and root custom domains | `website/site-url.test.mjs`, default/custom Astro builds | OK | |
| 33 | +| SEO artifact generation emits the correct `robots.txt` and optional `CNAME` from the same deploy URL | `website/integrations/seo-robots.test.mjs`, custom-domain Astro build | OK | |
| 34 | +| Internal docs links remain valid when the website base path changes | default/custom Astro builds plus no `/agentsmesh/` matches in custom-domain HTML output | OK | |
| 35 | +| Homepage ships more crawlable explanatory copy to help the text-to-code warning | updated `website/src/content/docs/index.mdx`, verified in Astro build output | OK | |
| 36 | +| Website deploy automation exercises the new SEO tests before building | `website/package.json`, `.github/workflows/deploy-website.yml` | OK | |
| 37 | + |
| 38 | +### Edge Cases |
| 39 | + |
| 40 | +| Scenario | Covered? | Test location | |
| 41 | +| --- | --- | --- | |
| 42 | +| Project-site deployment under `/agentsmesh` keeps the base path in canonical URLs and sitemap links | ✓ | `website/site-url.test.mjs` | |
| 43 | +| Root custom-domain deployment drops the `/agentsmesh` path entirely | ✓ | `website/site-url.test.mjs`, custom `astro build` | |
| 44 | +| GitHub Pages host does not emit an unnecessary `CNAME` file | ✓ | `website/site-url.test.mjs`, default `astro build` | |
| 45 | +| Custom-domain host emits `CNAME` and root sitemap URL | ✓ | `website/integrations/seo-robots.test.mjs`, custom `astro build` | |
| 46 | +| Built HTML for a root custom domain contains no stale `/agentsmesh` href/src references | ✓ | `rg -n 'href="/agentsmesh/|src="/agentsmesh/|https://docs.agentsmesh.dev/agentsmesh' website/dist -g '*.html'` | |
| 47 | + |
| 48 | +### Gaps Identified |
| 49 | + |
| 50 | +- none in the implemented website changes; the live site still needs `DEPLOY_SITE_URL` pointed at a root custom domain plus DNS hostname redirection for the SEO report to stop seeing the GitHub Pages project-path redirect |
| 51 | + |
| 52 | +### Actions Taken |
| 53 | + |
| 54 | +- proved the current GitHub Pages project-path build already generated `robots.txt`, then fixed the underlying deploy contract so the site can also ship from a root custom domain where root-level SEO files and non-redirected status codes are possible |
| 55 | +- protected the new behavior with unit tests and deploy-workflow coverage instead of leaving it as a one-off config tweak |
| 56 | + |
1 | 57 | # TypeScript error repair pass |
2 | 58 |
|
3 | 59 | - [x] Run `pnpm typecheck` and capture the full current TypeScript error set |
|
218 | 274 |
|
219 | 275 | | Criterion | Covered by test? | Status | |
220 | 276 | | --- | --- | --- | |
| 277 | + |
| 278 | +# Website SEO issue repair pass |
| 279 | + |
| 280 | +- [ ] Reproduce the current website SEO output and confirm which issues are fixable in-repo vs blocked by hosting/domain constraints |
| 281 | +- [ ] Add failing tests first for the website SEO artifacts and URL behavior we can enforce from the repo |
| 282 | +- [ ] Implement the minimal website/deploy changes to fix the reproducible SEO issues |
| 283 | +- [ ] Run verification plus post-feature QA and append review notes |
221 | 284 | | Recover the global branch threshold without lowering config | `pnpm test:coverage -- --coverage.reporter=json-summary --coverage.reporter=text-summary` | OK | |
222 | 285 | | Add targeted branch tests instead of broad fixture churn | `tests/unit/config/git-remote.test.ts`, `tests/unit/install/install-manifest.test.ts`, `tests/unit/install/git-pin.test.ts`, `tests/unit/install/install-conflicts.branches.test.ts` | OK | |
223 | 286 | | Keep full suite stable under coverage load | `tests/unit/cli/commands/watch.test.ts`, full `pnpm test:coverage` run | OK | |
|
0 commit comments