mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
ed908ed019ffa50c873e0b367cf8a82345f2b33c
5
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
e458692cb8 |
refactor(docs): convert absolute coder/coder blob/tree/main links to relative (DOCS-351) (#26341)
Closes [DOCS-351](https://linear.app/codercom/issue/DOCS-351). > [!WARNING] > **DO NOT MERGE** until [DOCS-349](https://linear.app/codercom/issue/DOCS-349) ([coder.com#877](https://github.com/coder/coder.com/pull/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](https://github.com/coder/coder/pull/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](https://linear.app/codercom/issue/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](https://linear.app/codercom/issue/DOCS-350): 3 dead `docs-backend-contrib-guide` branch refs in `backend.md` ([#26339](https://github.com/coder/coder/pull/26339), merged). - [DOCS-352](https://linear.app/codercom/issue/DOCS-352): 10 SHA-pinned `(blob|tree)/<sha>` links pending intent review. - [DOCS-355](https://linear.app/codercom/issue/DOCS-355): code-server analog (4 absolute `(blob|tree)/main` links in `coder/code-server`). - [DOCS-356](https://linear.app/codercom/issue/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). <details> <summary>Decision log + planning context</summary> **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](https://linear.app/codercom/issue/DOCS-352)) will surface. </details> --- *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. |
||
|
|
d2950e7615 |
docs: document that license validation works offline (#24013)
## What Documents that Coder license keys are validated locally using cryptographic signatures and do not require an outbound connection to Coder's servers. This is a common question from customers evaluating Coder for air-gapped environments. ## Changes - **`docs/admin/licensing/index.md`**: Added an "Offline license validation" section explaining that license keys are signed JWTs validated locally with no phone-home requirement. - **`docs/install/airgap.md`**: Added a "License validation" row to the air-gapped comparison table, confirming no changes are needed for offline license validation and linking to the licensing docs. ## Why While the air-gapped docs state that "all Coder features are supported" offline, there was no explicit mention that the license itself doesn't require connectivity. This is a frequent question from security-conscious and air-gapped customers. --------- Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com> Co-authored-by: Matyas Danter <mdanter@gmail.com> |
||
|
|
63563e57db |
docs: add registry mirroring guide for Artifactory (#22025)
Verified to be working locally. --------- Co-authored-by: Phorcys <57866459+phorcys420@users.noreply.github.com> |
||
|
|
ece531ab4e |
chore: mention usage data reporting in AI Gov docs (#21664)
<!-- If you have used AI to produce some or all of this PR, please ensure you have read our [AI Contribution guidelines](https://coder.com/docs/about/contributing/AI_CONTRIBUTING) before submitting. --> |
||
|
|
02ecf32afe |
docs: replace offline deployments terminology to air-gapped (#19625)
This PR comprehensively updates the offline deployments documentation to use more precise "air-gapped" terminology and improves consistency throughout the documentation. ## Changes Made ### Terminology Updates - **Title**: Changed from "Offline Deployments" to "Air-gapped Deployments" - **Summary**: Updated to prioritize "air-gapped" terminology and added "disconnected" to cover additional deployment scenarios - **Content**: Updated tutorial references to use "air-gapped" instead of "offline" - **Section headers**: - Changed "Offline container images" to "Air-gapped container images" - Changed "Offline docs" to "Air-gapped docs" - **Table headers**: Changed "Offline deployments" to "Air-gapped deployments" ### Navigation & URL Structure - **Navigation title**: Updated `docs/manifest.json` to show "Air-gapped Deployments" in sidebar - **Navigation description**: Updated to "Run Coder in air-gapped / disconnected / offline environments" - **File rename**: `docs/install/offline.md` → `docs/install/airgap.md` for consistency - **URL change**: `/install/offline` → `/install/airgap` - **Subsection anchors**: - `/install/offline#offline-docs` → `/install/airgap#airgap-docs` - `/install/offline#offline-container-images` → `/install/airgap#airgap-container-images` ### Internal Links & References Updated all internal documentation links: - `docs/admin/integrations/index.md` - `docs/admin/networking/index.md` - `docs/changelogs/v0.27.0.md` (including anchor reference) - `docs/tutorials/faqs.md` ### Backward Compatibility - **Redirects**: Added `docs/_redirects` with 301 redirects: - `/install/offline` → `/install/airgap` - `/install/offline#offline-docs` → `/install/airgap#airgap-docs` - `/install/offline#offline-container-images` → `/install/airgap#airgap-container-images` - **Content**: Maintains "offline" in the description for broader understanding - **Deep links**: All subsection anchors redirect properly to maintain existing bookmarks ## Rationale - **"Air-gapped"** is more precise and commonly used in enterprise/security contexts - **"Disconnected"** covers additional scenarios where networks may be temporarily or partially isolated - **Consistency** ensures filename, URL, navigation, content, and subsection anchors all align with the same terminology - **Backward compatibility** maintained through comprehensive redirects to prevent broken links at any level ## Testing - [x] Verified all internal links point to the new URL structure - [x] Confirmed navigation title updates correctly - [x] Ensured content accuracy is maintained - [x] Added redirects for backward compatibility (main page + subsections) - [x] Updated all cross-references in related documentation - [x] Verified subsection anchor redirects work properly - [x] Confirmed no unnecessary .md file redirects ## Result Complete terminology consistency across: - ✅ Page title and headers - ✅ Navigation and breadcrumbs - ✅ File names and URL structure - ✅ Internal documentation links - ✅ Table headers and section titles - ✅ Subsection anchors and deep links - ✅ Backward compatibility via comprehensive redirects --------- Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com> Co-authored-by: david-fraley <67079030+david-fraley@users.noreply.github.com> |