From 2dddf6b24741abcd24ee18029dd25a3a55aaa31e Mon Sep 17 00:00:00 2001 From: Abhijith Chatra Date: Mon, 9 Feb 2026 14:45:42 -0800 Subject: [PATCH 001/241] Bumping pxt-core minor version to 12.3.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6cd4c7b84a77..c22ab6aa44a1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pxt-core", - "version": "12.2.24", + "version": "12.3.0", "description": "Microsoft MakeCode provides Blocks / JavaScript / Python tools and editors", "keywords": [ "TypeScript", From fc11e01299747057c637da72c6a7c8b264fed850 Mon Sep 17 00:00:00 2001 From: Abhijith Chatra Date: Mon, 9 Feb 2026 14:46:37 -0800 Subject: [PATCH 002/241] [pxt-cli] bump version to v12.3.1 (#11098) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c22ab6aa44a1..c26f303a8d1a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pxt-core", - "version": "12.3.0", + "version": "12.3.1", "description": "Microsoft MakeCode provides Blocks / JavaScript / Python tools and editors", "keywords": [ "TypeScript", From 3a52f5c5911176892396c85287c3ed19c91950ca Mon Sep 17 00:00:00 2001 From: Richard Knoll Date: Tue, 10 Feb 2026 14:16:58 -0800 Subject: [PATCH 003/241] use stable dist tag when publishing (#11012) (#11099) --- cli/cli.ts | 29 +++++++++++++++++++++++++++-- cli/nodeutil.ts | 10 ++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/cli/cli.ts b/cli/cli.ts index 43007a684c78..30cac4bbb786 100644 --- a/cli/cli.ts +++ b/cli/cli.ts @@ -467,13 +467,38 @@ async function ciAsync(parsed?: commandParser.ParsedCommand) { lintJSONInDirectory(path.resolve(".")); lintJSONInDirectory(path.resolve("docs")); + let pkg = readJson("package.json") - function npmPublishAsync() { + async function npmPublishAsync() { if (!npmPublish) return Promise.resolve(); + + let latest: pxt.semver.Version; + + try { + const version = await nodeutil.npmLatestVersionAsync(pkg["name"]); + latest = pxt.semver.parse(version); + } + catch (e) { + // no latest tag + } + + let distTag: string; + + if (latest) { + const current = pxt.semver.parse(pkg["version"]); + + if (pxt.semver.cmp(current, latest) < 0) { + distTag = `stable${current.major}.${current.minor}`; + } + } + + if (distTag) { + return nodeutil.runNpmAsync("publish", "--tag", distTag); + } + return nodeutil.runNpmAsync("publish"); } - let pkg = readJson("package.json") if (pkg["name"] == "pxt-core") { pxt.log("pxt-core build"); diff --git a/cli/nodeutil.ts b/cli/nodeutil.ts index edc34cf8c2b0..dcc9750c67c4 100644 --- a/cli/nodeutil.ts +++ b/cli/nodeutil.ts @@ -114,6 +114,16 @@ export function runNpmAsync(...args: string[]) { return runNpmAsyncWithCwd(".", ...args); } +export async function npmLatestVersionAsync(packageName: string) { + const output = await spawnWithPipeAsync({ + cmd: addCmd("npm"), + args: ["view", packageName, "dist-tags.latest"], + cwd: ".", + }); + + return output.toString("utf8").trim() +} + export interface NpmRegistry { _id: string; _name: string; From 8e4569c879b31edb78934b30418f1adbad6cd804 Mon Sep 17 00:00:00 2001 From: Richard Knoll Date: Wed, 11 Feb 2026 16:39:56 -0800 Subject: [PATCH 004/241] fix render of youtube links and images in docs pages (#11105) --- .vscode/launch.json | 23 +++++++++++++++++++++++ cli/cli.ts | 2 ++ pxtlib/docsrender.ts | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 251c96f01e7e..12e5263ca057 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -219,6 +219,29 @@ "sourceMaps": false, "outFiles": [] }, + { + "name": "pxt serve (core)", + "type": "node", + "request": "launch", + "program": "${workspaceRoot}/built/pxt.js", + "stopOnEntry": false, + "args": [ + "serve", + "--rebundle", + "--noauth" + ], + "cwd": "${workspaceRoot}", + "runtimeExecutable": null, + "runtimeArgs": [ + "--nolazy" + ], + "env": { + "NODE_ENV": "development" + }, + "console": "integratedTerminal", + "sourceMaps": false, + "outFiles": [] + }, { "name": "pxt serve (bedrock)", "type": "node", diff --git a/cli/cli.ts b/cli/cli.ts index 30cac4bbb786..c16596e9fcb0 100644 --- a/cli/cli.ts +++ b/cli/cli.ts @@ -41,6 +41,7 @@ pxt.docs.requireDOMSanitizer = () => { const sanitizeHtml = require("sanitize-html"); const defaults = sanitizeHtml.defaults || {}; const baseAllowedAttrs = defaults.allowedAttributes || {}; + const allowedTags = defaults.allowedTags || []; const mergeClassAttribute = (tag: string, ...otherAttributes: string[]) => { const existing: string[] = baseAllowedAttrs[tag] || []; @@ -49,6 +50,7 @@ pxt.docs.requireDOMSanitizer = () => { const options = { ...defaults, + allowedTags: [...allowedTags, "img"], allowedAttributes: { ...baseAllowedAttrs, code: mergeClassAttribute("code"), diff --git a/pxtlib/docsrender.ts b/pxtlib/docsrender.ts index c626c36fcc80..83466b98e089 100644 --- a/pxtlib/docsrender.ts +++ b/pxtlib/docsrender.ts @@ -728,7 +728,7 @@ ${opts.repo.name.replace(/^pxt-/, '')}=github:${opts.repo.fullName}#${opts.repo. return r; } - html = html.replace(/]+>\s*([~@])?\s*(.*?)<\/h\d>/g, (full: string, lvl: string, tp: string | undefined, body: string) => { + html = html.replace(/]*>\s*([~@])?\s*(.*?)<\/h\d>/g, (full: string, lvl: string, tp: string | undefined, body: string) => { let m = /^(\w+)\s+(.*)/.exec(body) let cmd = m ? m[1] : body let args = m ? m[2] : "" From 7c016ca7b74f6a2dfb8cfbfa5cc9a6ea8b8d1138 Mon Sep 17 00:00:00 2001 From: Richard Knoll Date: Thu, 12 Feb 2026 15:37:33 -0800 Subject: [PATCH 005/241] don't lose description when opening thumbnail recorder (#11109) --- react-common/components/share/ShareInfo.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/react-common/components/share/ShareInfo.tsx b/react-common/components/share/ShareInfo.tsx index 23b57fd59e36..672d15ae9b85 100644 --- a/react-common/components/share/ShareInfo.tsx +++ b/react-common/components/share/ShareInfo.tsx @@ -386,7 +386,7 @@ export const ShareInfo = (props: ShareInfoProps) => {