From e8e15aa48c05311fdb2da7cf5da55a8c3f88b940 Mon Sep 17 00:00:00 2001 From: hackernotfound <46266726+hackernotfound@users.noreply.github.com> Date: Thu, 1 Oct 2026 23:57:22 +0200 Subject: [PATCH] chore: release 1.0.0 --- .github/plugin/marketplace.json | 2 +- README.md | 6 ++++-- VERSION | 1 + docs/maintaining.md | 2 +- plugins/pstack/plugin.json | 2 +- tools/build.mjs | 3 ++- tools/check.mjs | 4 +++- upstream.json | 3 +-- 8 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 VERSION diff --git a/.github/plugin/marketplace.json b/.github/plugin/marketplace.json index 5bb7b5e..fbdf9ac 100644 --- a/.github/plugin/marketplace.json +++ b/.github/plugin/marketplace.json @@ -10,7 +10,7 @@ "name": "pstack", "source": "./plugins/pstack", "description": "if you want to go fast, go deep first. pstack helps you write less, but higher quality code. rigorous agent workflows you can parallelize with confidence. GitHub Copilot port of pstack-claude 0.9.57. Original pstack by Lauren Tan (poteto); Claude Code port by Michael Denyer.", - "version": "0.9.57-copilot.3" + "version": "1.0.0" } ] } diff --git a/README.md b/README.md index 56856af..86e4da4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # pstack for GitHub Copilot -[![check](https://github.com/hackernotfound/pstack-vscode/actions/workflows/check.yml/badge.svg)](https://github.com/hackernotfound/pstack-vscode/actions/workflows/check.yml) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![version](https://img.shields.io/badge/version-0.9.57--copilot.3-7C3AED.svg)](https://github.com/hackernotfound/pstack-vscode/releases/tag/v0.9.57-copilot.3) +[![check](https://github.com/hackernotfound/pstack-vscode/actions/workflows/check.yml/badge.svg)](https://github.com/hackernotfound/pstack-vscode/actions/workflows/check.yml) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![version](https://img.shields.io/badge/version-1.0.0-7C3AED.svg)](https://github.com/hackernotfound/pstack-vscode/releases/tag/v1.0.0) **Run [pstack](https://github.com/cursor/plugins/tree/main/pstack) in the VS Code agents window with GitHub Copilot.** @@ -61,12 +61,14 @@ architect the new sync engine before writing code how does auth work in this repo? ``` +> **First read in a session.** pstack keeps its playbooks inside the plugin folder, outside your workspace. The first time a session reads one, VS Code asks **Allow reading file outside of workspace?** and shows the plugin path. Choose **Allow in this Session**. Reads of pstack's other files in that session then go through without asking. +
Options: turn off the startup hook, pick models, pin a version - **Turn off the startup hook.** Add `session hook: off` to `~/.copilot/pstack-models.md`. pstack then runs only when you ask for it. - **Pick models.** By default Copilot chooses each subagent's model, because which models you can use depends on your plan. To pin models per role, run `setup-pstack`. It writes `~/.copilot/pstack-models.md` with model names your account accepts, such as `claude-opus-5.5`. -- **Pin a version.** Marketplace installs follow `main`. To stay on one release, clone this repo, check out its tag (for example `v0.9.57-copilot.2`), and in VS Code set `"chat.pluginLocations": { "/absolute/path/to/pstack-vscode/plugins/pstack": true }` instead of the marketplace line. +- **Pin a version.** Marketplace installs follow `main`. To stay on one release, clone this repo, check out its tag (for example `v1.0.0`), and in VS Code set `"chat.pluginLocations": { "/absolute/path/to/pstack-vscode/plugins/pstack": true }` instead of the marketplace line.
diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..3eefcb9 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +1.0.0 diff --git a/docs/maintaining.md b/docs/maintaining.md index af15b6d..c6910e1 100644 --- a/docs/maintaining.md +++ b/docs/maintaining.md @@ -4,7 +4,7 @@ ## Update to a newer pstack-claude -1. Set `sha` and `version` in [`upstream.json`](../upstream.json) to the new pstack-claude commit. Reset `portRevision` to 1. +1. Set `sha` and `version` in [`upstream.json`](../upstream.json) to the new pstack-claude commit, and bump [`VERSION`](../VERSION). Use a patch bump for fixes, a minor bump for a new upstream sync, and a major bump when installs or behavior change incompatibly. 2. Run `node tools/build.mjs`. Each edit must match its anchor text exactly once. If upstream reworded an anchor, the build stops and names the file. 3. Run `node tools/check.mjs` for the static checks. 4. Run `tools/eval.sh` and `node tools/eval-vscode.mjs` for the live checks. diff --git a/plugins/pstack/plugin.json b/plugins/pstack/plugin.json index a91c044..f1644c3 100644 --- a/plugins/pstack/plugin.json +++ b/plugins/pstack/plugin.json @@ -1,7 +1,7 @@ { "name": "pstack", "displayName": "pstack (GitHub Copilot port)", - "version": "0.9.57-copilot.3", + "version": "1.0.0", "description": "if you want to go fast, go deep first. pstack helps you write less, but higher quality code. rigorous agent workflows you can parallelize with confidence. GitHub Copilot port of pstack-claude 0.9.57. Original pstack by Lauren Tan (poteto); Claude Code port by Michael Denyer.", "author": { "name": "hackernotfound", diff --git a/tools/build.mjs b/tools/build.mjs index 3b96e11..24cb389 100755 --- a/tools/build.mjs +++ b/tools/build.mjs @@ -6,7 +6,8 @@ import { fileURLToPath } from 'node:url'; const root = join(dirname(fileURLToPath(import.meta.url)), '..'); const upstream = JSON.parse(readFileSync(join(root, 'upstream.json'), 'utf8')); -const version = `${upstream.version}-copilot.${upstream.portRevision}`; +const version = readFileSync(join(root, 'VERSION'), 'utf8').trim(); +if (!/^\d+\.\d+\.\d+$/.test(version)) throw new Error(`VERSION must be MAJOR.MINOR.PATCH, got ${JSON.stringify(version)}`); const out = join(root, 'plugins/pstack'); function fetchSource() { diff --git a/tools/check.mjs b/tools/check.mjs index 9e4f13d..d86dd54 100755 --- a/tools/check.mjs +++ b/tools/check.mjs @@ -21,7 +21,9 @@ check('build is idempotent (rebuild leaves no diff)', dirty === ''); const plugin = JSON.parse(read('plugin.json')); const upstream = JSON.parse(readFileSync(join(root, 'upstream.json'), 'utf8')); check('plugin.json name is pstack', plugin.name === 'pstack'); -check('plugin.json version tracks upstream', plugin.version === `${upstream.version}-copilot.${upstream.portRevision}`); +const version = readFileSync(join(root, 'VERSION'), 'utf8').trim(); +check('plugin.json version matches VERSION and is MAJOR.MINOR.PATCH', /^\d+\.\d+\.\d+$/.test(version) && plugin.version === version); +check('plugin.json names the pinned upstream version', plugin.description.includes(`pstack-claude ${upstream.version}`)); check('no .claude-plugin manifest (VS Code would parse it as Claude format)', !existsSync(join(out, '.claude-plugin'))); check('plugin ships no agents (the VS Code agents window lists each plugin agent twice)', !('agents' in plugin) && !existsSync(join(out, 'agents')) && !readdirSync(out, { recursive: true }).some((rel) => /(^|\/)agents\/[^/]+\.md$/.test(rel) && !rel.startsWith('skills/'))); check('hooks file exists', existsSync(join(out, plugin.hooks))); diff --git a/upstream.json b/upstream.json index d1ea780..43b6615 100644 --- a/upstream.json +++ b/upstream.json @@ -1,6 +1,5 @@ { "repo": "https://github.com/michael-denyer/pstack-claude.git", "sha": "d709ffc96ca080da762f3527d49bfcf5e493cbc5", - "version": "0.9.57", - "portRevision": 3 + "version": "0.9.57" }