Skip to content

Commit 5859abd

Browse files
authored
Merge branch 'main' into fix/release-pipeline-robustness
2 parents 179ab0b + 86a4f9a commit 5859abd

14 files changed

Lines changed: 29 additions & 24 deletions
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@pymodel/pythinker-code": patch
3+
---
4+
5+
Change the VS Code extension Marketplace ID to `pymodel.pythinker`. Existing users must install the extension again under the new ID because Microsoft permanently retired the previous ID.

.github/workflows/release.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ jobs:
169169
# Packages all six platform targets and runs the VSIX audit on each one.
170170
# A failure here must stop the job before anything reaches a registry.
171171
- name: Package and verify VSIX targets
172-
run: pnpm --filter pythinker-code run package:platform
172+
run: pnpm --filter pythinker run package:platform
173173

174174
- name: Publish to the Visual Studio Marketplace
175175
env:
@@ -179,7 +179,7 @@ jobs:
179179
echo "::warning::VSCE_PAT secret not set — skipping Marketplace publish."
180180
exit 0
181181
fi
182-
pnpm --filter pythinker-code run publish:vsix
182+
pnpm --filter pythinker run publish:vsix
183183
184184
# Open VSX serves Cursor / VSCodium / Windsurf. A failure here must not
185185
# undo an already-successful Marketplace publish, so it only warns.
@@ -192,7 +192,7 @@ jobs:
192192
echo "::warning::OVSX_PAT secret not set — skipping Open VSX publish."
193193
exit 0
194194
fi
195-
pnpm --filter pythinker-code run publish:ovsx
195+
pnpm --filter pythinker run publish:ovsx
196196
197197
- name: Upload VSIX artifacts
198198
if: always()

apps/site/src/App.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ const terminalDemos = [
5757
},
5858
];
5959
60-
const vscodeInstallCommand = 'code --install-extension pymodel.pythinker-code';
60+
const vscodeInstallCommand = 'code --install-extension pymodel.pythinker';
6161
6262
const copiedCommand = ref('');
6363
const mobileMenu = ref(null);
@@ -307,12 +307,12 @@ onUnmounted(() => {
307307
<li><strong>Thinking controls.</strong> Toggle reasoning or pick a model-supported thinking effort per task.</li>
308308
</ul>
309309
<div class="vscode-actions">
310-
<a class="button button-primary" href="https://marketplace.visualstudio.com/items?itemName=pymodel.pythinker-code" target="_blank" rel="noopener">
310+
<a class="button button-primary" href="https://marketplace.visualstudio.com/items?itemName=pymodel.pythinker" target="_blank" rel="noopener">
311311
<img src="/brand/visualstudiocode.svg" alt="" width="16" height="16" />
312312
Get the extension
313313
</a>
314314
<div class="vscode-command">
315-
<code>code --install-extension pymodel.pythinker-code</code>
315+
<code>code --install-extension pymodel.pythinker</code>
316316
<button class="row-copy" type="button" aria-label="Copy VS Code install command" @click="copyText(vscodeInstallCommand)">
317317
<svg v-if="copiedCommand === vscodeInstallCommand" aria-hidden="true" viewBox="0 0 20 20"><path d="m4 10 4 4 8-9" /></svg>
318318
<svg v-else aria-hidden="true" viewBox="0 0 20 20"><rect x="7" y="3" width="10" height="11" rx="2" /><rect x="3" y="7" width="10" height="10" rx="2" /></svg>

apps/vscode/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ AI coding assistant for VS Code, built for long-context workflows and complex co
1515

1616
Pythinker Code requires VS Code 1.100.0 or later.
1717

18-
1. Install from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=pymodel.pythinker-code)
18+
1. Install from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=pymodel.pythinker)
1919
2. Open a folder in VS Code
2020
3. Click the Pythinker icon in the Activity Bar
2121
4. Sign in, or use a provider already configured in the shared `config.toml`

apps/vscode/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "pythinker-code",
2+
"name": "pythinker",
33
"publisher": "pymodel",
44
"displayName": "Pythinker Code",
55
"description": "Pythinker Code extension for VS Code",

apps/vscode/scripts/release-extension.mjs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
// Tag and publish the VS Code extension in one pass:
33
// preflight -> bump -> commit -> build -> package+verify -> publish -> tag -> push.
44
//
5-
// pnpm --filter pythinker-code run release 0.8.3
6-
// pnpm --filter pythinker-code run release 0.8.3 --dry-run
5+
// pnpm --filter pythinker run release 0.8.3
6+
// pnpm --filter pythinker run release 0.8.3 --dry-run
77
//
88
// The Marketplace token is read from the macOS keychain, so it never reaches a
99
// shell history or a file. Store it once with:
@@ -70,7 +70,7 @@ async function assertUnpublished(version) {
7070
const response = await fetch('https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery', {
7171
method: 'POST',
7272
headers: { 'Content-Type': 'application/json', Accept: 'application/json;api-version=7.1-preview.1' },
73-
body: JSON.stringify({ filters: [{ criteria: [{ filterType: 7, value: 'pymodel.pythinker-code' }] }], flags: 914 }),
73+
body: JSON.stringify({ filters: [{ criteria: [{ filterType: 7, value: 'pymodel.pythinker' }] }], flags: 914 }),
7474
});
7575
if (!response.ok) {
7676
console.warn(`Could not reach the Marketplace to check for ${version}; continuing.`);
@@ -119,7 +119,7 @@ async function main() {
119119
// failed build — otherwise the next real run trips its own clean-tree check.
120120
try {
121121
run('pnpm', ['build']);
122-
run('pnpm', ['--filter', 'pythinker-code', 'run', 'package:platform']);
122+
run('pnpm', ['--filter', 'pythinker', 'run', 'package:platform']);
123123
console.log(`\nDry run: built and verified ${version}. Nothing published, nothing tagged.`);
124124
} finally {
125125
writeFileSync(MANIFEST, originalManifest);
@@ -128,23 +128,23 @@ async function main() {
128128
}
129129

130130
run('pnpm', ['build']);
131-
run('pnpm', ['--filter', 'pythinker-code', 'run', 'package:platform']);
131+
run('pnpm', ['--filter', 'pythinker', 'run', 'package:platform']);
132132

133133
// Commit before publishing so the shipped bits always correspond to a commit,
134134
// and tag only once the Marketplace has actually accepted them.
135135
run('git', ['add', 'apps/vscode/package.json']);
136136
run('git', ['commit', '-m', `chore(vscode): release ${version}`]);
137137

138138
try {
139-
run('pnpm', ['--filter', 'pythinker-code', 'run', 'publish:vsix'], { env: { ...process.env, VSCE_PAT: vscePat } });
139+
run('pnpm', ['--filter', 'pythinker', 'run', 'publish:vsix'], { env: { ...process.env, VSCE_PAT: vscePat } });
140140
} catch (error) {
141141
// The version bump is already committed and some targets may already be
142142
// live, so say exactly how to finish rather than leaving it to be worked out.
143143
throw new Error(
144144
`${error instanceof Error ? error.message : String(error)}\n\n` +
145145
`${version} is partly published and NOT tagged. The publish summary above lists which\n` +
146146
`targets are live; published ones are skipped on a re-run. Finish with:\n` +
147-
` pnpm --filter pythinker-code run publish:vsix\n` +
147+
` pnpm --filter pythinker run publish:vsix\n` +
148148
` git tag -a ${tag} -m "Pythinker Code VS Code extension ${version}"\n` +
149149
`Do not bump the version again — ${version} is already consumed.`,
150150
);
@@ -155,7 +155,7 @@ async function main() {
155155
// Open VSX serves Cursor / VSCodium / Windsurf, but it must never undo a
156156
// successful Marketplace publish.
157157
try {
158-
run('pnpm', ['--filter', 'pythinker-code', 'run', 'publish:ovsx'], { env: { ...process.env, OVSX_PAT: ovsxPat } });
158+
run('pnpm', ['--filter', 'pythinker', 'run', 'publish:ovsx'], { env: { ...process.env, OVSX_PAT: ovsxPat } });
159159
} catch (error) {
160160
console.warn(`Open VSX publish failed, Marketplace is live: ${error instanceof Error ? error.message : String(error)}`);
161161
}

apps/vscode/test/baseline.manager.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Scenario: VSCode-owned file baselines for new and forked sessions.
33
* Responsibilities: capture originals, show changes, keep/undo, and reject unsafe paths.
44
* Wiring: real temporary workspace/global-storage files; no stubbed collaborators.
5-
* Run: pnpm --filter pythinker-code test -- baseline.manager.test.ts
5+
* Run: pnpm --filter pythinker test -- baseline.manager.test.ts
66
*/
77
import { existsSync, writeFileSync } from 'node:fs';
88
import { chmod, mkdir, mkdtemp, readFile, rm, symlink, unlink, writeFile } from 'node:fs/promises';

apps/vscode/test/bridge-handler.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Scenario: untrusted Webview RPC messages cross into the VS Code extension host.
33
* Responsibilities: validate requests, preserve public model metadata, omit private paths, and recover visibly from persisted state errors.
44
* Wiring: the real BridgeHandler and handlers; VS Code and the public Node SDK harness boundary are replaced.
5-
* Run: pnpm --filter pythinker-code exec vitest run --config vitest.config.ts test/bridge-handler.test.ts
5+
* Run: pnpm --filter pythinker exec vitest run --config vitest.config.ts test/bridge-handler.test.ts
66
*/
77
import { mkdtemp, readdir, rm, writeFile } from "node:fs/promises";
88
import { tmpdir } from "node:os";

apps/vscode/test/extension-host-smoke.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Host cannot discover the developer's real home directory.
55
* Wiring: real smoke orchestration and filesystem; @vscode/test-electron is the
66
* external process/download boundary.
7-
* Run: pnpm --filter pythinker-code exec vitest run --config vitest.config.ts test/extension-host-smoke.test.ts
7+
* Run: pnpm --filter pythinker exec vitest run --config vitest.config.ts test/extension-host-smoke.test.ts
88
*/
99
import { mkdtemp, mkdir, rm, writeFile } from 'node:fs/promises';
1010
import { tmpdir } from 'node:os';

apps/vscode/test/extension-host/index.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const os = require("node:os");
44
const path = require("node:path");
55
const vscode = require("vscode");
66

7-
const EXTENSION_ID = "pymodel.pythinker-code";
7+
const EXTENSION_ID = "pymodel.pythinker";
88
const EXPECTED_COMMANDS = [
99
"pythinker.clearAllState",
1010
"pythinker.focusInput",

0 commit comments

Comments
 (0)