Skip to content

refactor(docs): convert absolute coder/coder blob/tree/main links to relative (DOCS-351)#26341

Open
nickvigilante wants to merge 1 commit into
mainfrom
vigilante/docs-351-convert-absolute-codercoder-blobtreemain-links-in-docs-to
Open

refactor(docs): convert absolute coder/coder blob/tree/main links to relative (DOCS-351)#26341
nickvigilante wants to merge 1 commit into
mainfrom
vigilante/docs-351-convert-absolute-codercoder-blobtreemain-links-in-docs-to

Conversation

@nickvigilante

@nickvigilante nickvigilante commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Closes DOCS-351.

Warning

DO NOT MERGE until DOCS-349 (coder.com#877) has shipped to production and baked for at least one Vercel cycle.

Without DOCS-349, the relative links in this PR resolve to broken docs-route URLs (/docs/helm/coder/values.yaml -> 404) instead of GitHub URLs tagged with the displayed docs version. DOCS-349 fixes the rewriter to classify these as GitHub blob/tree URLs with the page's resolved ref.

TL;DR

Converts 121 absolute https://github.com/coder/coder/(blob|tree)/main/<path> links across 39 docs markdown files to relative paths. After this lands AND DOCS-349 deploys, every one of these links will follow the displayed docs version (mainline tag on bare URLs, explicit tag on /@vX.Y.Z/, main on /@main/) instead of always pointing to main.

Why

Today a reader on /docs/@v2.30.0/install/docker follows a compose.yaml link and arrives at main's compose.yaml, which doesn't necessarily match what the docs page describes. Helm values, Terraform templates, and source-code references in particular drift across versions. The fix is to let the coder.com rewriter substitute the page's resolved ref into the URL; that only works on relative links.

Example payoff (post-DOCS-349)

URL Today (absolute, always main) After (relative + rewriter)
/docs/install/docker https://github.com/coder/coder/blob/main/compose.yaml https://github.com/coder/coder/blob/v2.34.1/compose.yaml (today's mainline)
/docs/@v2.30.0/install/docker same as above https://github.com/coder/coder/blob/v2.30.0/compose.yaml
/docs/@main/install/docker same as above https://github.com/coder/coder/blob/main/compose.yaml

Scope

  • 121 conversions across 39 files.
  • Verb breakdown: tree/main (directories) and blob/main (files), both flipped to relative paths.
  • Line anchors (#L23-L24) and query strings preserved verbatim.
  • Conversion is mechanical: relative path computed from the doc file's directory to the target via os.path.relpath. Any path starting at the same directory or below gets a ./ prefix; otherwise ../ chains.

Rebased on main

The branch was rebased onto main after the DOCS-350 hotfix (#26339) merged. The hotfix repointed 3 docs-backend-contrib-guide refs in backend.md to main, which then needed the same main -> relative conversion this PR is doing for the other 121 links. The conflict was resolved by reapplying the mechanical conversion to backend.md after taking the hotfix's content. Net result: those 3 links land here as relative, same as everything else. New HEAD 3f501cb622.

Inline fix folded in: dead nix link

  • docs/about/contributing/CONTRIBUTING.md:7 -> ../../../nix

The original absolute URL https://github.com/coder/coder/tree/main/nix already returned 404 today. Repointed to flake.nix (modern Nix entrypoint, what the prose "Nix environment" semantically refers to). Closes DOCS-357 here since the check-docs Linkspector job surfaced it during rebase; cheaper to fix inline than in a separate single-line PR.

Out of scope (filed separately)

  • DOCS-350: 3 dead docs-backend-contrib-guide branch refs in backend.md (#26339, merged).
  • DOCS-352: 10 SHA-pinned (blob|tree)/<sha> links pending intent review.
  • DOCS-355: code-server analog (4 absolute (blob|tree)/main links in coder/code-server).
  • DOCS-356: 2 upstream content bugs in coder/code-server/docs/CONTRIBUTING.md (independent of this PR).

Not triggering /coder-agents-review

Docs-only edit; per AGENTS.md the bot review is reserved for product/CI changes.

Pre-mortem

Concern Mitigation
Merging before DOCS-349 deploys regresses ~120 currently-working links into 404s on coder.com Clear DO-NOT-MERGE banner; tracked as blocker in Linear.
Relative path computed incorrectly (off-by-one ..) Verified all 114 newly-relative non-md/non-image paths resolve to existing files in the repo (only exception is the pre-existing dead nix link above).
Line anchors stripped during conversion Preserved by the substitution regex; verified #L<n>-L<m> cases in airgap.md and speed-up-templates.md.
Future code reorgs change file locations Relative links will start pointing to nothing. Same failure mode as absolute links pointing to renamed files; can be caught with a future link-checker job.

Validation

$ grep -rE 'github\.com/coder/coder/(blob|tree)/main' docs --include="*.md" | wc -l
0
$ git diff --stat origin/main | tail -1
39 files changed, 118 insertions(+), 118 deletions(-)

114 newly-relative paths verified to resolve to existing repo files (Python os.path.exists check on each computed target).

Decision log + planning context

Why relative over (blob|tree)/{{currentDocsVersion}}/... templating: relative paths require zero markdown-system support and zero upstream churn beyond this one PR. Templating would require a preprocessor on coder.com side AND a convention upstream authors have to remember; relative paths just work in a plain editor and github.com's own renderer too.

Why ./ prefix on same-directory targets: makes the conversion grep-able later (grep -E '\((\.\./|\./)').

Why preserve #L<n>-L<m> anchors verbatim: the anchor is meaningful to the linked file's content, not to the URL form; keeping it as-is preserves authorial intent. If the file later changes such that the line range drifts, that's a different problem the SHA-pin audit (DOCS-352) will surface.


Generated by Coder Agents on @nickvigilante's behalf.

Drive-by external link fix folded in

docs/about/contributing/CONTRIBUTING.md:296 cited https://reflectoring.io/meaningful-commit-messages/ which is returning HTTP 503 (the host appears to be down site-wide right now). check-docs Linkspector flagged it after the rebase. Replaced with https://cbea.ms/git-commit/ (Chris Beams' canonical "If applied, this commit will..." article, confirmed 200), which is the original source of the rule the prose recites anyway.

@linear-code

linear-code Bot commented Jun 12, 2026

Copy link
Copy Markdown

DOCS-351

DOCS-357

@github-actions

Copy link
Copy Markdown

Docs preview

📖 View docs preview for docs/README.md

@nickvigilante nickvigilante force-pushed the vigilante/docs-351-convert-absolute-codercoder-blobtreemain-links-in-docs-to branch from 8b8e2d0 to 3f501cb Compare June 12, 2026 18:03
@nickvigilante nickvigilante marked this pull request as ready for review June 12, 2026 18:03
@nickvigilante nickvigilante force-pushed the vigilante/docs-351-convert-absolute-codercoder-blobtreemain-links-in-docs-to branch from 3f501cb to 2b63e14 Compare June 12, 2026 18:09
…relative (DOCS-351)

Replaces 121 absolute github.com/coder/coder/(blob|tree)/main/<path>
links across 39 markdown files with relative paths computed from
each doc file's directory to the target. Line anchors and query
strings are preserved.

After this lands AND DOCS-349 (coder.com rewriter classifier fix)
deploys, these links will follow the displayed docs version:

- /docs/install/docker -> https://github.com/coder/coder/blob/v2.34.1/compose.yaml
- /docs/@v2.30.0/install/docker -> https://github.com/coder/coder/blob/v2.30.0/compose.yaml
- /docs/@main/install/docker -> https://github.com/coder/coder/blob/main/compose.yaml

Pre-existing dead link surfaced by the conversion:

- docs/about/contributing/CONTRIBUTING.md:7 -> ../../../nix
  The original absolute URL https://github.com/coder/coder/tree/main/nix
  already returns 404 today; this repo's Nix entrypoints are flake.nix
  and shell.nix at the root, not a nix/ directory. Out of scope for
  this refactor; tracked as a separate fix-as-you-go item.

Out of scope:

- 10 SHA-pinned (blob|tree)/<sha> links (DOCS-352).
- 3 dead docs-backend-contrib-guide branch refs (DOCS-350).
- 4 coder/code-server (blob|tree)/main links (filed separately).

Generated by Coder Agents on Nick Vigilante's behalf.
@nickvigilante nickvigilante force-pushed the vigilante/docs-351-convert-absolute-codercoder-blobtreemain-links-in-docs-to branch from 2b63e14 to 0e76ebb Compare June 12, 2026 18:21
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.

2 participants