Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -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. Original pstack by Lauren Tan (poteto).",
"version": "0.9.73"
"version": "0.9.74"
}
]
}
18 changes: 18 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,24 @@

This file is the release changelog, with one `## <version> - <title>` entry per release, newest first. The Cursor-to-Claude rewrite rules live in [`tools/substitutions.json`](tools/substitutions.json), and the [sync boundary](CONTRIBUTING.md#the-sync-boundary) in `CONTRIBUTING.md` defines how a change to upstream's skill content is declared.

## 0.9.74 - fix the code review's findings and bound Autopilot's verify rounds

`watch-pr` no longer reports a PR ready, or stopped at a merge gate, from a reading GitHub has not settled. A no-checks reading becomes `ci-none` only when the same head has shown no checks for 60 seconds, whatever `--interval` is, so a fresh PR whose checks have not registered waits as `checks-unreported` and a repository with no CI reaches READY a minute later. Unknown mergeability waits as `mergeability-unknown` and is never READY. The watcher reads the PR facts again after the checks and retries when one changed. A branch behind its base stops at the new `behind-base` gate, ahead of a required review. A check rollup cursor that does not advance is a query failure, a missing `gh` exits 7 with a JSON verdict, and a PR whose head is the default branch is in no stack.

`orch` lets only one writer replace a dead store lock, forced or not, and recovers when a writer is killed while replacing it. It returns ids and branches that start with a spreadsheet formula character or a quote unchanged, and it kills a `gt` call that runs past 60 seconds.

Pi: `/loop stop` now ends a self-paced loop while an iteration runs. A print-mode `/loop` whose prompt starts no run exits with code 1 and prints the reason instead of waiting. A restored agent whose process is gone is marked stopped even when its recorded parent pid is alive. A resumed agent keeps each run's overflow file, and its system prompt file is written again when it is missing.

worktree-audit holds a worktree with untracked files (`hold-untracked`, with `untracked:N` counting every file) or a git lock (`hold-locked`, with the reason in a new `LOCKED` column) instead of calling it safe. A worktree with tracked edits and untracked files prints both counts. Submodule work stays visible under `diff.ignoreSubmodules`, and the audit counts a status listing longer than 1 MiB. It matches every link in a worktree's ancestor directories by device and inode, so macOS keeps every last-chat fact under bun, and node finds a worktree named through a link whose target it misnames. A link that `stat` cannot follow puts the worktrees below it in `review` with a warning. The transcript scan ends a path at `?` and `!`. The cleanup playbook pauses on both holds and names the commands that show held work, submodule work included. A macOS CI job runs the audit's tests.

`tools/sync.mjs` rejects any argument other than its two positionals and `--dry-run`, and names it. It passes `--no-diff3` to `git merge-file`, so a conflict never carries a `|||||||` base section, and the generator's marker scan names such a line anyway. A sync fails before any write when a path it would write meets a port file where it needs a directory, a port directory where it needs a file, or a port entry spelled another way that the filesystem treats as the same name. It compares file modes as git records them, and a write grants no permission that the file's own bits or the umask withhold. A run at the pinned SHA fails when the port lacks an upstream file.

The generator's release gate now requires the first version-led heading in `CHANGES.md` to be the `VERSION` heading and rejects a version that heads two entries, so an entry without a bump fails CI instead of shipping an inert release. A heading quoted in fenced code does not count. The validators also catch a bare agent dispatch in more spellings, a model ID that puts version numbers before a listed family, a hook path that resolves outside the plugin, a `models.json` missing a tier the stamped regions read, an agent whose frontmatter name differs from its file name, and a duplicated or misplaced lead line. `tools/typecheck-pi.mjs` reports why `bunx` could not start.

Five checks no longer pass when their input is missing or malformed. The CI fork check fails when `jq` cannot read `tools/upstream.json` or it lists no component. The security workflow drops `--include-git-root`, which made the checkout count as a scanned package, so a scan that finds no lockfile now exits 128 and fails the step. `log.sh` appends each row in one write when perl works, so parallel writers no longer interleave long rows, and it reports a write that stops short. `check-playbooks.mjs` rejects a root that is not a directory and an `extends` stem that leaves the playbooks directory, and says when a repository has no project playbooks. `resume.mjs` treats a Windows drive-letter link as a local file.

Autopilot-full sends an owner only the findings its diff causes, runs the full swarm in the first round only, stops a PR at two fix-forwards, and states the program's size before the first owner starts.

## 0.9.73 - run pstack on GitHub Copilot

pstack now installs on the GitHub Copilot CLI and the GitHub Copilot app. `copilot plugin marketplace add michael-denyer/pstack-claude` and `copilot plugin install pstack@pstack-claude` read the existing Claude Code marketplace. The CLI and the app share `~/.copilot`, so one install serves both. Skills load by bare name through Copilot's `skill` tool, a user types `/pstack:<skill>` in the CLI, and the agents load as `pstack:poteto-agent` and `pstack:comment-sicko`.
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.9.73
0.9.74
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "pstack",
"private": true,
"version": "0.9.73",
"version": "0.9.74",
"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. Pi package of the Claude Code plugin; skills are shared, tool names resolve via skills/poteto-mode/references/pi-tools.md. Original pstack by Lauren Tan (poteto).",
"author": {
"name": "Michael Denyer",
Expand Down
2 changes: 1 addition & 1 deletion plugins/pstack/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "pstack",
"displayName": "pstack (Claude Code port)",
"version": "0.9.73",
"version": "0.9.74",
"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. Ported from cursor/plugins/pstack to Claude Code. Original pstack by Lauren Tan (poteto).",
"author": {
"name": "Michael Denyer",
Expand Down
2 changes: 1 addition & 1 deletion plugins/pstack/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "pstack",
"version": "0.9.73",
"version": "0.9.74",
"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. Codex port of the Claude Code plugin; skills are shared, tool names resolve via skills/poteto-mode/references/codex-tools.md. Original pstack by Lauren Tan (poteto).",
"author": {
"name": "Michael Denyer",
Expand Down
2 changes: 1 addition & 1 deletion plugins/pstack/.github/plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "pstack",
"displayName": "pstack (GitHub Copilot port)",
"version": "0.9.73",
"version": "0.9.74",
"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. Ported from cursor/plugins/pstack to GitHub Copilot CLI and app. Original pstack by Lauren Tan (poteto).",
"author": {
"name": "Michael Denyer",
Expand Down
Loading