Repository navigation
Releases: Yeeef/pm
Release list
pm 0.16.3
A question skipped with "Chat about this" or in the Claude app no longer stays under "Sessions ask you".
Upgrade guide
- On each machine, install the release:
curl -fsSL https://github.com/Yeeef/pm/releases/download/pm-v0.16.3/install.sh | sh. - In the repo, run
pm upgrade --to 0.16.3, then commit what it changes and merge it, as an ordinary PR.
Fixed
- A Claude Code question the owner skips, with the dialog's "Chat about this" or in the Claude app (Remote Control), closes as dismissed when the session's turn ends. Before, Claude Code told no pm hook about the skip, and the question stayed open on the site until the session's process exited, in one case 18 hours later. Claude Code's Stop hook now runs
pm hook askas well, whichpm upgradeadds to.claude/settings.json.
pm 0.16.2
A project's site page shows what waits on the owner, as a sprint's page does.
Upgrade guide
- On each machine, install the release:
curl -fsSL https://github.com/Yeeef/pm/releases/download/pm-v0.16.2/install.sh | sh. - In the repo, run
pm upgrade --to 0.16.2, then commit what it changes and merge it, as an ordinary PR.
Added
- A project's page shows the open questions, decision needs and action needs (PR reviews included) of the project and of every sprint and task under it, each with its reply form, above the project's Decisions.
pm 0.16.1
A project can be renamed, and pm check names a project whose record title has drifted from the work store.
Upgrade guide
- On each machine, install the release:
curl -fsSL https://github.com/Yeeef/pm/releases/download/pm-v0.16.1/install.sh | sh. - In the repo, run
pm upgrade --to 0.16.1, then commit what it changes and merge it, as an ordinary PR.
Added
pm project edit <name> --title "…", with the reason as its body, renames a project, open or closed: its work-store title and its record's title header, in one records commit that records the rename as a project decision (source=owner with--confirmed). Its name, record path and links stay as they are.pm checklists each project whose recordtitle:differs from its work-store title, with thepm project editthat fixes it. It is a report: neitherpm checknorpm commitfails on it.
pm 0.16.0
The site can serve a company network without Cloudflare: where it listens (listen), the link pm prints (site_url) and how a request from beyond this machine gets in (access) are now three settings.
Upgrade guide
- On each machine, install the release:
curl -fsSL https://github.com/Yeeef/pm/releases/download/pm-v0.16.0/install.sh | sh. - In the repo, run
pm upgrade --to 0.16.0, then commit what it changes and merge it, as an ordinary PR. - Commit
.pm/config.tomloncepm upgrade(orpm init) has addedaccess = "cloudflare"to a config that setsaccess_team. A config withsite_urland noaccess_teamgets no access: set one withpm init --access cloudflareorpm init --access none, or the pm service does not start.
Added
pm init --listen ADDRsetslisten, the IP the site binds (127.0.0.1 when unset;0.0.0.0for every interface), andpm init --access cloudflare|nonesetsaccess. Withaccess = "none"the network is the gate: colleagues read the site atsite_urlwith no login, but replies are taken only from this machine; their pages show the rule in place of each reply form.pm whereand the service log state a non-loopbacklisten.
Changed
accessis required oncelistenis not loopback orsite_urlis set: the pm service does not start without it, andpm doctornames it.
Security
- A request is local only when its TCP peer is loopback, its
Hostnames this machine and Cloudflare's edge did not forward it; theHostheader alone no longer grants local trust, so a client on the network sendingHost: localhostis refused.
pm 0.15.9
A pm repo can now review, close and stamp a pull request of another GitHub repo, so one pm project can track work merged in the repos it manages, its own remote on GitHub or not.
Upgrade guide
- On each machine, install the release:
curl -fsSL https://github.com/Yeeef/pm/releases/download/pm-v0.15.9/install.sh | sh. - In the repo, run
pm upgrade --to 0.15.9, then commit what it changes and merge it, as an ordinary PR.
Added
pm action need --pr URLtakes another GitHub repo's PR: one whose OWNER/REPO the remote's URL does not name, or any GitHub PR when the remote is not on GitHub. The PR must target that repo's default branch, and the design-page check does not run on it, since the pages' covers are this repo's paths.pm need close <review> --reason "merged as <sha>", at the close or at a restamp, checks another repo's PR's<sha>against the merge commit gh gives for it into that repo's default branch, instead of this repo's main.pm sprint closestamps another repo's PR asOWNER/REPO#Nin the Outcome, and--merged SHA --pr URLtakes another repo's PR the same way.- The pm service sees another repo's PR merged into that repo's default branch and tells the session to close its review, without asking it to pull this repo's main.
pm 0.15.8
The site's overview lists the open projects first and closed ones in a collapsed section at the bottom.
Upgrade guide
- On each machine, install the release:
curl -fsSL https://github.com/Yeeef/pm/releases/download/pm-v0.15.8/install.sh | sh. - In the repo, run
pm upgrade --to 0.15.8, then commit what it changes and merge it, as an ordinary PR.
Changed
- The overview page lists every open project first, then folds the closed ones into one "Closed projects (N)" section at the bottom, collapsed until opened. Before, closed projects sat among the open ones in name order.
pm 0.15.7
A closed project or sprint can be reopened, keeping its history in one record.
Upgrade guide
- On each machine, install the release:
curl -fsSL https://github.com/Yeeef/pm/releases/download/pm-v0.15.7/install.sh | sh. - In the repo, run
pm upgrade --to 0.15.7, then commit what it changes and merge it, as an ordinary PR.
Added
pm project reopen <name>andpm sprint reopen <id>set a closed project or sprint open again. Each takes the reason as its body, on two lines or more, and records it, with the close reason it had, as a decision in the reopened record (--confirmedmarks it source=owner). The record's Outcome, or the sprint's delivery report, goes back to "Not closed yet.", so the next close needs a fresh one; the old text stays in git history. A sprint of a closed project is refused untilpm project reopenreopens the project.
pm 0.15.6
Every command names its scope with --sprint, --task or --project, and one verb, pm need close, closes a need that sets no rule.
Upgrade guide
- On each machine, install the release:
curl -fsSL https://github.com/Yeeef/pm/releases/download/pm-v0.15.6/install.sh | sh. - In the repo, run
pm upgrade --to 0.15.6, then commit what it changes and merge it, as an ordinary PR.
Breaking changes
- A need names its sprint or task with
--sprint IDor--task ID, in place of--parent, and a decision's level is the scope flag alone. Migration:pm decision need --parent ID …→pm decision need --sprint ID …(or--task ID);pm action need --parent ID …→pm action need --sprint ID …(or--task ID);pm decision add --level project --project NAME …→pm decision add --project NAME …;pm decision add --level sprint --sprint ID …→pm decision add --sprint ID …;pm task add --parent TASK …→pm task add --task TASK …. pm need close ID --reason "…"closes a decision need whose answer sets no rule (with the answer as its body), an action, a PR review and a question;--droppedcloses any open need as dismissed. Migration:pm decision close ID --reason "…" --text-file -→pm need close ID --reason "…" --text-file -;pm action done ID --reason "merged as <sha>"→pm need close ID --reason "merged as <sha>";pm need dismiss ID --reason "…"→pm need close ID --dropped --reason "…".- Each removed flag and verb is refused, naming the form that replaced it; none is kept as an alias.
Changed
- The positional argument of
pm project openandpm project closeis namedprojectin their help, as the naming grammar names it.
pm 0.15.5
pm sets Codex's auto mode in the repo's .codex/config.toml, and pm doctor names a Linux host where Codex's sandbox cannot start.
Upgrade guide
- On each machine, install the release:
curl -fsSL https://github.com/Yeeef/pm/releases/download/pm-v0.15.5/install.sh | sh. - In the repo, run
pm upgrade --to 0.15.5, then commit what it changes and merge it, as an ordinary PR.
Added
pm initandpm upgradewrite Codex's auto mode into the repo's tracked.codex/config.toml:approval_policy = "on-request",approvals_reviewer = "auto_review"andsandbox_mode = "workspace-write", so a Codex session in a repo it trusts runs commands in the workspace-write sandbox and the automatic reviewer decides each approval request. Your other keys in the file stay, and so does a value you give one of these three keys:pm doctornames only a missing key,pm upgradeadds only that, andpm uninstallremoves only pm's block, its comment and the keys under it that hold pm's values, giving your file back as it was. Your own~/.codex/config.tomlis left as it was.- On Linux, where Codex is installed and has run,
pm doctorrunscodex sandbox -- trueand fails when bubblewrap cannot make its namespaces, the case in which every command Codex runs sandboxed,apply_patchincluded, fails. Under Ubuntu 24.04's AppArmor restriction on unprivileged user namespaces, its line gives the AppArmor profile for bwrap to add, or the sysctl to lift; pm doctor changes neither itself.
pm 0.15.4
An agent starting work now sees the design pages of its area: pm sprint open and a session's first pm task claim in a sprint list them.
Upgrade guide
- On each machine, install the release:
curl -fsSL https://github.com/Yeeef/pm/releases/download/pm-v0.15.4/install.sh | sh. - In the repo, run
pm upgrade --to 0.15.4, then commit what it changes and merge it, as an ordinary PR.
Added
pm sprint openprints the design pages its project's record lists, one line each: slug, title and link.pm task claimprints, on the session's first claim in the task's sprint, the design pages the sprint's record and then the project's list, without repeats; a task directly under a project gets the project's. A slug that names no design page shows asmissing.prime.mdsays to read the pages the task touches before changing their code.