## What
Fixes three classes of invalid inline HTML in hand-written docs, all of
which
render incorrectly (or only render by accident) today. Found via a
systematic,
markdown-aware audit of every `.md` under `docs/` (ignores code blocks,
inline
code, comments, and autolinks), so this is a complete sweep of the
hand-written
surface, not a spot fix.
## Changes
1. **`<kdb>` → `<kbd>` (72 tags).** The keyboard element is `<kbd>`;
`<kdb>` is
a typo that is not a real element, so renderers drop/mangle it and the
keystrokes lose their styling. Corrected across the IDE access guides
(`cursor.md`, `windsurf.md`, `antigravity.md`). The correct `<kbd>` is
already used in the JetBrains Gateway guide.
2. **Unclosed `<div class="tabs">` in `docs/admin/users/idp-sync.md`.**
The
"Provider-Specific Guides" section opened a `.tabs` container (rendered
as
the `DocsTabs` component) that was never closed, so the wrapper leaked
over
the rest of the page. Added the missing `</div>` before `## Next Steps`,
matching the three other tab sections in the same file.
3. **`<Image>` → `<img>` (6 tags).** `<Image>` is not a registered docs
component — it renders only because the HTML5 parser rewrites the legacy
`<image>` tag to `<img>`. Converted to lowercase `<img>` for correctness
and
clarity; rendering is unchanged. (`organizations.md`, `idp-sync.md`,
`add-envbuilder.md`.)
## Scope / what is intentionally not here
- **Generated reference docs.** The audit also found swallowed
placeholders in
generated pages (`<server>` in `reference/api/{chats,schemas}.md`;
`<glob>`/`<host>` in `agent-firewall`; `<region>` in `server`). Those
are
fixed at the generator source (codersdk comments / CLI flag help) and
tracked
in DOCS-551.
- **`<b>Resource<b>`** in the generated audit-logs table was fixed
separately in
#27293 (merged) and is not duplicated here.
- **`<children></children>`** is an intentional, renderer-implemented
docs
component (child-page card grid) with no HTML equivalent, so it is left
as-is.
It is well-formed; a follow-up CI checker will still verify its
open/close
balance.
A follow-up adds CI enforcement so invalid inline HTML can't regress.
<details>
<summary>Verification</summary>
Run against the changed files:
- `markdownlint-cli2` — 0 errors
- `markdown-table-formatter --check` — no changes needed
- `typos --config .github/workflows/typos.toml` — clean
- Re-running the audit scanner: hand-written `unclosed`, `<kdb>`, and
capitalized-component findings all drop to 0 (only the generated-doc
placeholders tracked in DOCS-551 remain).
</details>
## Linear
DOCS-581:
https://linear.app/codercom/issue/DOCS-581/audit-and-fix-all-invalid-html-across-the-docs
> This PR was created with AI assistance (Coder Agents).
2.1 KiB
Windsurf
Windsurf is Codeium's code editor designed for AI-assisted development.
Follow this guide to use Windsurf to access your Coder workspaces.
If your team uses Windsurf regularly, ask your Coder administrator to add Windsurf as a workspace application in your template. You can also use the Windsurf module to easily add Windsurf to your Coder templates.
Install Windsurf
Windsurf can connect to your Coder workspaces via SSH:
-
Install Windsurf on your local machine.
-
Open Windsurf and select Get started.
Import your settings from another IDE, or select Start fresh.
-
Complete the setup flow and log in or create a Codeium account if you don't have one already.
Install the Coder extension
-
You can install the Coder extension through the Marketplace built in to Windsurf or manually.
Extension Marketplace
Search for Coder from the Extensions Pane and select Install.
Manually
-
Download the latest vscode-coder extension
.vsixfile. -
Drag the
.vsixfile into the extensions pane of Windsurf.Alternatively:
-
Open the Command Palette (Ctrl+Shift+P or Cmd+Shift+P) and search for
vsix. -
Select Extensions: Install from VSIX and select the vscode-coder extension you downloaded.
-
-
Open a workspace in Windsurf
-
From the Windsurf Command Palette (Ctrl+Shift+P or Cmd+Shift+P), enter
coderand select Coder: Login. -
Follow the prompts to login and copy your session token.
Paste the session token in the Coder API Key dialogue in Windsurf.
-
Windsurf prompts you to open a workspace, or you can use the Command Palette to run Coder: Open Workspace.
