chore: import upstream snapshot with attribution
Spell checking / Check Spelling (push) Has been cancelled
Spell checking / Update PR (push) Has been cancelled
Publish Dev Docs Website / build (push) Failing after 1s
Publish Dev Docs Website / deploy (push) Has been skipped
Spell checking / Report (Push) (push) Has been cancelled
Spell checking / Report (PR) (push) Has been cancelled

This commit is contained in:
wehub-resource-sync
2026-07-13 12:16:02 +08:00
commit 79031da543
8235 changed files with 1365916 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
# docmd build output — published to GitHub Pages by CI, not committed.
site/
+3
View File
@@ -0,0 +1,3 @@
# No lockfile: docmd is pinned in package.json and installed fresh on every build
# (locally and in CI), so a tracked package-lock.json is unnecessary here.
package-lock=false
+44
View File
@@ -0,0 +1,44 @@
# Dev Docs Website
This folder hosts the [docmd](https://docmd.io/) project that turns the PowerToys developer
documentation in [`doc/devdocs`](../devdocs) into a static website.
## Generated site
The `site/` folder is the docmd build output. It is **not committed** to the repository — it is
git-ignored and rebuilt on demand. You only need it locally when previewing your changes (see below).
Publishing is handled by the
[Publish Dev Docs Website](../../.github/workflows/regenerate-devdocs-website.yml) GitHub Action, which
runs whenever files under `doc/devdocs` (or this folder) change on the `main` branch — it can also
be triggered manually from the **Actions** tab. The action builds the site and deploys it straight to
GitHub Pages as an artifact, so nothing is written back to the repository.
> [!NOTE]
> The action requires GitHub Pages to be enabled with **Source: GitHub Actions** under the repository
> **Settings → Pages**.
## Editing the docs
To change the documentation, edit the Markdown files under [`doc/devdocs`](../devdocs). The remaining
files in this folder are maintained by hand and are safe to edit:
- `docmd.config.json` — docmd configuration (title, source, output, plugins)
- `package.json` — pins the docmd version used to build the site
- `docmd-plugins/` — local build-time docmd plugins
> [!TIP]
> Link to repository files with repo-root-relative paths such as `/src/modules/.../Foo.cpp`.
> VS Code resolves these against the workspace root (so they open the local file), and the
> bundled `github-source-links` plugin rewrites them to
> `https://github.com/microsoft/PowerToys/blob/main/...` on the published site.
## Building locally
Requires [Node.js](https://nodejs.org/).
```powershell
npm install # install dependencies (first time only)
npm run dev # start a local preview server at http://localhost:3000
npm run build # generate the static site into ./site
```
@@ -0,0 +1,52 @@
// docmd plugin: github-source-links
//
// The dev docs link to source files with repo-root-relative paths such as
// "/src/modules/.../Foo.cpp". VS Code resolves those against the workspace root,
// so they stay clickable while editing locally. On the published static site,
// however, a "/src/..." link resolves against the site origin and 404s.
//
// This plugin rewrites those links to absolute GitHub blob URLs so they work on
// the published site, while the Markdown sources stay untouched (keeping local
// VS Code navigation intact).
//
// It hooks markdownSetup at the Markdown token level, so it only rewrites links
// written in the docs' content. docmd's own generated links (sidebar, breadcrumbs,
// canonical tags) are never seen here, which matters because an internal doc route
// like "/tools/build-tools" is otherwise indistinguishable from a repo path like
// "/tools/BugReportTool" once rendered to HTML.
//
// docmd appends a trailing slash to the rewritten links (".../Foo.cpp/"); GitHub
// resolves that to the file anyway, so it is left as-is for simplicity.
const REPO_BLOB_BASE = 'https://github.com/microsoft/PowerToys/blob/main';
export default {
plugin: {
name: 'github-source-links',
version: '1.0.0',
capabilities: ['markdown'],
},
markdownSetup(md) {
const defaultRender =
md.renderer.rules.link_open ||
((tokens, idx, options, env, self) => self.renderToken(tokens, idx, options));
md.renderer.rules.link_open = (tokens, idx, options, env, self) => {
const token = tokens[idx];
const hrefIndex = token.attrIndex('href');
if (hrefIndex >= 0) {
const href = token.attrs[hrefIndex][1];
// Only repo-root-relative links ("/src/..."). Leave protocol-relative
// ("//host"), absolute ("https://..."), relative and anchor links alone.
if (href.length > 1 && href[0] === '/' && href[1] !== '/') {
token.attrs[hrefIndex][1] = REPO_BLOB_BASE + href;
}
}
return defaultRender(tokens, idx, options, env, self);
};
},
};
@@ -0,0 +1,8 @@
{
"name": "docmd-plugin-github-source-links",
"version": "1.0.0",
"private": true,
"type": "module",
"main": "index.js",
"description": "docmd plugin that rewrites repo-root-relative doc links to GitHub blob URLs at build time."
}
+9
View File
@@ -0,0 +1,9 @@
{
"title": "PowerToys Dev Docs",
"src": "../devdocs",
"out": "site",
"base": "/",
"plugins": {
"docmd-plugin-github-source-links": {}
}
}
+16
View File
@@ -0,0 +1,16 @@
{
"name": "powertoys-devdocs-website",
"version": "1.0.0",
"private": true,
"description": "Static Dev Docs website generated from doc/devdocs with docmd.",
"scripts": {
"dev": "docmd dev",
"build": "docmd build"
},
"dependencies": {
"docmd-plugin-github-source-links": "file:./docmd-plugins/github-source-links"
},
"devDependencies": {
"@docmd/core": "0.8.6"
}
}