Deploying to gh-pages from @ qmk/qmk_firmware@40e81ad893 🚀

This commit is contained in:
QMK Bot
2026-03-09 22:07:04 +00:00
parent cf78a9baa6
commit 5cb30d749b
626 changed files with 1480 additions and 1480 deletions
+2 -2
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+5 -5
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+5 -5
View File
File diff suppressed because one or more lines are too long
+5 -5
View File
File diff suppressed because one or more lines are too long
+5 -5
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2019 Aug 30","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20190830.md","filePath":"ChangeLog/20190830.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20190830.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 19);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 Feb 29 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20200229.md","filePath":"ChangeLog/20200229.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20200229.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 20);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 May 30 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20200530.md","filePath":"ChangeLog/20200530.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20200530.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 84);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 Aug 29 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20200829.md","filePath":"ChangeLog/20200829.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20200829.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 29);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Change - 2020 Nov 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20201128.md","filePath":"ChangeLog/20201128.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20201128.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 30);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 February 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20210227.md","filePath":"ChangeLog/20210227.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20210227.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 29);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 May 29 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20210529.md","filePath":"ChangeLog/20210529.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20210529.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 44);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 August 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20210828.md","filePath":"ChangeLog/20210828.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20210828.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 65);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2021 November 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20211127.md","filePath":"ChangeLog/20211127.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20211127.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 83);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 February 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20220226.md","filePath":"ChangeLog/20220226.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20220226.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 43);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 May 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20220528.md","filePath":"ChangeLog/20220528.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20220528.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 47);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 August 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20220827.md","filePath":"ChangeLog/20220827.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20220827.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 54);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2022 November 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20221126.md","filePath":"ChangeLog/20221126.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20221126.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 66);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 February 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20230226.md","filePath":"ChangeLog/20230226.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20230226.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 47);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 May 28 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20230528.md","filePath":"ChangeLog/20230528.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20230528.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 46);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 Aug 27 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20230827.md","filePath":"ChangeLog/20230827.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20230827.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 49);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2023 November 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20231126.md","filePath":"ChangeLog/20231126.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20231126.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 51);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2024 February 25 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20240225.md","filePath":"ChangeLog/20240225.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20240225.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 43);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2024 May 26 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20240526.md","filePath":"ChangeLog/20240526.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20240526.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 54);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2024 August 25 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20240825.md","filePath":"ChangeLog/20240825.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20240825.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 46);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2024 November 24 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20241124.md","filePath":"ChangeLog/20241124.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20241124.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 31);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2025 February 23 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20250223.md","filePath":"ChangeLog/20250223.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20250223.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 36);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, D as resolveComponent, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, E as resolveComponent, o as openBlock, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2025 May 25 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20250525.md","filePath":"ChangeLog/20250525.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20250525.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 19);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, D as resolveComponent, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, E as resolveComponent, o as openBlock, c as createElementBlock, I as createVNode, w as withCtx, a8 as createStaticVNode, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2025 Aug 31 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20250831.md","filePath":"ChangeLog/20250831.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20250831.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 16);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2025 Nov 30 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20251130.md","filePath":"ChangeLog/20251130.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20251130.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 39);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Breaking Changes - 2026 Feb 22 Changelog","description":"","frontmatter":{},"headers":[],"relativePath":"ChangeLog/20260222.md","filePath":"ChangeLog/20260222.md","lastUpdated":null}');
const _sfc_main = { name: "ChangeLog/20260222.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 23);
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"Development Environment Setup","description":"","frontmatter":{},"headers":[],"relativePath":"api_development_environment.md","filePath":"api_development_environment.md","lastUpdated":null}');
const _sfc_main = { name: "api_development_environment.md" };
const _hoisted_1 = /* @__PURE__ */ createBaseVNode("h1", {
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, l as createBaseVNode, a as createTextVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"Development Environment Setup","description":"","frontmatter":{},"headers":[],"relativePath":"api_development_environment.md","filePath":"api_development_environment.md","lastUpdated":null}');
const _sfc_main = { name: "api_development_environment.md" };
const _hoisted_1 = /* @__PURE__ */ createBaseVNode("h1", {
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Compiler Development Guide","description":"","frontmatter":{},"headers":[],"relativePath":"api_development_overview.md","filePath":"api_development_overview.md","lastUpdated":null}');
const _sfc_main = { name: "api_development_overview.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode('<h1 id="qmk-compiler-development-guide" tabindex="-1">QMK Compiler Development Guide <a class="header-anchor" href="#qmk-compiler-development-guide" aria-label="Permalink to &quot;QMK Compiler Development Guide&quot;">​</a></h1><p>This page attempts to introduce developers to the QMK Compiler. It does not go into nitty gritty details- for that you should read code. What this will give you is a framework to hang your understanding on as you read the code.</p><h1 id="overview" tabindex="-1">Overview <a class="header-anchor" href="#overview" aria-label="Permalink to &quot;Overview&quot;">​</a></h1><p>The QMK Compile API consists of a few moving parts:</p><p><img src="https://raw.githubusercontent.com/qmk/qmk_api/master/docs/architecture.svg" alt="Architecture Diagram"></p><p>API Clients interact exclusively with the API service. This is where they submit jobs, check status, and download results. The API service inserts compile jobs into <a href="https://python-rq.org" target="_blank" rel="noreferrer">Redis Queue</a> and checks both RQ and S3 for the results of those jobs.</p><p>Workers fetch new compile jobs from RQ, compile them, and then upload the source and the binary to an S3 compatible storage engine.</p><h1 id="workers" tabindex="-1">Workers <a class="header-anchor" href="#workers" aria-label="Permalink to &quot;Workers&quot;">​</a></h1><p>QMK Compiler Workers are responsible for doing the actual building. When a worker pulls a job from RQ it does several things to complete that job:</p><ul><li>Make a fresh qmk_firmware checkout</li><li>Use the supplied layers and keyboard metadata to build a <code>keymap.c</code></li><li>Build the firmware</li><li>Zip a copy of the source</li><li>Upload the firmware, source zip, and a metadata file to S3.</li><li>Report the status of the job to RQ</li></ul><h1 id="api-service" tabindex="-1">API Service <a class="header-anchor" href="#api-service" aria-label="Permalink to &quot;API Service&quot;">​</a></h1><p>The API service is a relatively simple Flask application. There are a few main views you should understand.</p><h2 id="app-route-v1-compile-methods-post" tabindex="-1">@app.route(&#39;/v1/compile&#39;, methods=[&#39;POST&#39;]) <a class="header-anchor" href="#app-route-v1-compile-methods-post" aria-label="Permalink to &quot;@app.route(&#39;/v1/compile&#39;, methods=[&#39;POST&#39;])&quot;">​</a></h2><p>This is the main entrypoint for the API. A client&#39;s interaction starts here. The client POST&#39;s a JSON document describing their keyboard, and the API does some (very) basic validation of that JSON before submitting the compile job.</p><h2 id="app-route-v1-compile-string-job-id-methods-get" tabindex="-1">@app.route(&#39;/v1/compile/&lt;string:job_id&gt;&#39;, methods=[&#39;GET&#39;]) <a class="header-anchor" href="#app-route-v1-compile-string-job-id-methods-get" aria-label="Permalink to &quot;@app.route(&#39;/v1/compile/&amp;lt;string:job_id&amp;gt;&#39;, methods=[&#39;GET&#39;])&quot;">​</a></h2><p>This is the most frequently called endpoint. It pulls the job details from redis, if they&#39;re still available, or the cached job details on S3 if they&#39;re not.</p><h2 id="app-route-v1-compile-string-job-id-download-methods-get" tabindex="-1">@app.route(&#39;/v1/compile/&lt;string:job_id&gt;/download&#39;, methods=[&#39;GET&#39;]) <a class="header-anchor" href="#app-route-v1-compile-string-job-id-download-methods-get" aria-label="Permalink to &quot;@app.route(&#39;/v1/compile/&amp;lt;string:job_id&amp;gt;/download&#39;, methods=[&#39;GET&#39;])&quot;">​</a></h2><p>This method allows users to download the compiled firmware file.</p><h2 id="app-route-v1-compile-string-job-id-source-methods-get" tabindex="-1">@app.route(&#39;/v1/compile/&lt;string:job_id&gt;/source&#39;, methods=[&#39;GET&#39;]) <a class="header-anchor" href="#app-route-v1-compile-string-job-id-source-methods-get" aria-label="Permalink to &quot;@app.route(&#39;/v1/compile/&amp;lt;string:job_id&amp;gt;/source&#39;, methods=[&#39;GET&#39;])&quot;">​</a></h2><p>This method allows users to download the source for their firmware.</p>', 20);
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK Compiler Development Guide","description":"","frontmatter":{},"headers":[],"relativePath":"api_development_overview.md","filePath":"api_development_overview.md","lastUpdated":null}');
const _sfc_main = { name: "api_development_overview.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 20);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK API","description":"","frontmatter":{},"headers":[],"relativePath":"api_docs.md","filePath":"api_docs.md","lastUpdated":null}');
const _sfc_main = { name: "api_docs.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 28);
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK API","description":"","frontmatter":{},"headers":[],"relativePath":"api_overview.md","filePath":"api_overview.md","lastUpdated":null}');
const _sfc_main = { name: "api_overview.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode('<h1 id="qmk-api" tabindex="-1">QMK API <a class="header-anchor" href="#qmk-api" aria-label="Permalink to &quot;QMK API&quot;">​</a></h1><p>The QMK API provides an asynchronous API that Web and GUI tools can use to compile arbitrary keymaps for any keyboard supported by <a href="https://qmk.fm/" target="_blank" rel="noreferrer">QMK</a>. The stock keymap template supports all QMK keycodes that do not require supporting C code. Keyboard maintainers can supply their own custom templates to enable more functionality.</p><h2 id="app-developers" tabindex="-1">App Developers <a class="header-anchor" href="#app-developers" aria-label="Permalink to &quot;App Developers&quot;">​</a></h2><p>If you are an app developer interested in using this API in your application you should head over to <a href="./api_docs">Using The API</a>.</p><h2 id="keyboard-maintainers" tabindex="-1">Keyboard Maintainers <a class="header-anchor" href="#keyboard-maintainers" aria-label="Permalink to &quot;Keyboard Maintainers&quot;">​</a></h2><p>If you would like to enhance your keyboard&#39;s support in the QMK Compiler API head over to the <a href="./reference_configurator_support">Keyboard Support</a> section.</p><h2 id="backend-developers" tabindex="-1">Backend Developers <a class="header-anchor" href="#backend-developers" aria-label="Permalink to &quot;Backend Developers&quot;">​</a></h2><p>If you are interested in working on the API itself you should start by setting up a <a href="./api_development_environment">Development Environment</a>, then check out <a href="./api_development_overview">Hacking On The API</a>.</p>', 8);
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"QMK API","description":"","frontmatter":{},"headers":[],"relativePath":"api_overview.md","filePath":"api_overview.md","lastUpdated":null}');
const _sfc_main = { name: "api_overview.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 8);
@@ -1,5 +1,5 @@
import { R as RawTheme } from "./chunks/theme.UmtsjDQ8.js";
import { V as inBrowser, a9 as useUpdateHead, aa as RouterSymbol, ab as initData, ac as dataSymbol, ad as Content, ae as ClientOnly, af as siteDataRef, ag as createSSRApp, ah as createRouter, ai as pathToFile, d as defineComponent, u as useData, k as onMounted, y as watchEffect, aj as usePrefetch, ak as useCopyCode, al as useCodeGroups, am as h } from "./chunks/framework.Cauyuiy8.js";
import { R as RawTheme } from "./chunks/theme.DaTnCy1N.js";
import { V as inBrowser, a9 as useUpdateHead, aa as RouterSymbol, ab as initData, ac as dataSymbol, ad as Content, ae as ClientOnly, af as siteDataRef, ag as createRouter, ah as pathToFile, ai as createSSRApp, d as defineComponent, u as useData, k as onMounted, y as watchEffect, aj as usePrefetch, ak as useCopyCode, al as useCodeGroups, am as h } from "./chunks/framework.DUYk0S7v.js";
function resolveThemeExtends(theme) {
if (theme.extends) {
const base = resolveThemeExtends(theme.extends);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"ARM Debugging using Eclipse","description":"","frontmatter":{},"headers":[],"relativePath":"arm_debugging.md","filePath":"arm_debugging.md","lastUpdated":null}');
const _sfc_main = { name: "arm_debugging.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 43);
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"Breaking Changes","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes.md","filePath":"breaking_changes.md","lastUpdated":null}');
const _sfc_main = { name: "breaking_changes.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode("", 37);
@@ -1,4 +1,4 @@
import { _ as _export_sfc, c as createElementBlock, o as openBlock, a8 as createStaticVNode } from "./chunks/framework.Cauyuiy8.js";
import { _ as _export_sfc, o as openBlock, c as createElementBlock, a8 as createStaticVNode } from "./chunks/framework.DUYk0S7v.js";
const __pageData = JSON.parse('{"title":"Past Breaking Changes","description":"","frontmatter":{},"headers":[],"relativePath":"breaking_changes_history.md","filePath":"breaking_changes_history.md","lastUpdated":null}');
const _sfc_main = { name: "breaking_changes_history.md" };
const _hoisted_1 = /* @__PURE__ */ createStaticVNode('<h1 id="past-breaking-changes" tabindex="-1">Past Breaking Changes <a class="header-anchor" href="#past-breaking-changes" aria-label="Permalink to &quot;Past Breaking Changes&quot;">​</a></h1><p>This page links to all previous changelogs from the QMK Breaking Changes process.</p><ul><li><a href="./ChangeLog/20260222">2026 Feb 22</a> - version 0.32.0</li><li><a href="./ChangeLog/20251130">2025 Nov 30</a> - version 0.31.0</li><li><a href="./ChangeLog/20250831">2025 Aug 31</a> - version 0.30.0</li><li><a href="./ChangeLog/20250525">2025 May 25</a> - version 0.29.0</li><li><a href="./ChangeLog/20250223">2025 Feb 23</a> - version 0.28.0</li><li><a href="./ChangeLog/20241124">2024 Nov 24</a> - version 0.27.0</li><li><a href="./ChangeLog/20240825">2024 Aug 25</a> - version 0.26.0</li><li><a href="./ChangeLog/20240526">2024 May 26</a> - version 0.25.0</li><li><a href="./ChangeLog/20240225">2024 Feb 25</a> - version 0.24.0</li><li><a href="./ChangeLog/20231126">2023 Nov 26</a> - version 0.23.0</li><li><a href="./ChangeLog/20230827">2023 Aug 27</a> - version 0.22.0</li><li><a href="./ChangeLog/20230528">2023 May 28</a> - version 0.21.0</li><li><a href="./ChangeLog/20230226">2023 Feb 26</a> - version 0.20.0</li><li><a href="./ChangeLog/20221126">2022 Nov 26</a> - version 0.19.0</li><li><a href="./ChangeLog/20220827">2022 Aug 27</a> - version 0.18.0</li><li><a href="./ChangeLog/20220528">2022 May 28</a> - version 0.17.0</li><li><a href="./ChangeLog/20220226">2022 Feb 26</a> - version 0.16.0</li><li><a href="./ChangeLog/20211127">2021 Nov 27</a> - version 0.15.0</li><li><a href="./ChangeLog/20210828">2021 Aug 28</a> - version 0.14.0</li><li><a href="./ChangeLog/20210529">2021 May 29</a> - version 0.13.0</li><li><a href="./ChangeLog/20210227">2021 Feb 27</a> - version 0.12.0</li><li><a href="./ChangeLog/20201128">2020 Nov 28</a> - version 0.11.0</li><li><a href="./ChangeLog/20200829">2020 Aug 29</a> - version 0.10.0</li><li><a href="./ChangeLog/20200530">2020 May 30</a> - version 0.9.0</li><li><a href="./ChangeLog/20200229">2020 Feb 29</a> - version 0.8.0</li><li><a href="./ChangeLog/20190830">2019 Aug 30</a> - version 0.7.0</li></ul>', 3);

Some files were not shown because too many files have changed in this diff Show More