Compare commits

..

2 Commits

Author SHA1 Message Date
Colin McDonnell bbcf91a06e fix publish workflow: add build step, use OIDC trusted publishing, bump 0.0.196
publish was missing a build step so the npm tarball had no dist/.
switch from NPM_TOKEN to OIDC trusted publishing — explicitly unset
NODE_AUTH_TOKEN so setup-node's .npmrc doesn't override the OIDC flow.
bump version since v0.0.195 tag exists from the failed publish attempt.

Made-with: Cursor
2026-04-12 19:02:32 +00:00
Colin McDonnell 8a6696dd1d fix lint errors, consolidate husky hooks into root .husky
action/.husky prepare script was overriding root husky config, so the
pre-push hook (lint + typecheck + test) never ran. merged the lockfile
sync pre-commit into root .husky/pre-commit and removed action/.husky.
also auto-fixed biome format/import-sort errors from last commit.

Made-with: Cursor
2026-04-12 18:57:48 +00:00
5 changed files with 16 additions and 17 deletions
+4 -3
View File
@@ -34,6 +34,9 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: pnpm install --frozen-lockfile run: pnpm install --frozen-lockfile
- name: Build
run: pnpm build
- name: Get package version - name: Get package version
id: version id: version
run: | run: |
@@ -98,9 +101,7 @@ jobs:
- name: Publish to npm - name: Publish to npm
if: steps.check_tag.outputs.exists == 'false' if: steps.check_tag.outputs.exists == 'false'
run: npm publish --provenance --access public run: NODE_AUTH_TOKEN="" npm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Summary - name: Summary
if: always() if: always()
-8
View File
@@ -1,8 +0,0 @@
# sync action lockfile when action/package.json changes
if git diff --cached --name-only | grep -q "^action/package.json$"; then
echo "🔒 syncing action/pnpm-lock.yaml..."
# note: pnpm -C action install will *not* treat "action" as a monorepo root if run from repo root;
# to install with action/ as the workspace root (and search upwards), cd into action first:
(cd action && pnpm install --no-frozen-lockfile)
git add action/pnpm-lock.yaml
fi
+9 -3
View File
@@ -384,7 +384,9 @@ async function ensureInstallation(ctx: {
isOrg: initial.isOrg, isOrg: initial.isOrg,
}); });
activeSpin!.stop(`pullfrog is installed on selected repos, but ${repoRef} is not included.`); activeSpin!.stop(`pullfrog is installed on selected repos, but ${repoRef} is not included.`);
p.log.info(`add it under "Repository access" on the installation config page.\n ${pc.dim(configUrl)}`); p.log.info(
`add it under "Repository access" on the installation config page.\n ${pc.dim(configUrl)}`
);
const openIt = await p.confirm({ message: "open browser?", active: "yes", inactive: "no" }); const openIt = await p.confirm({ message: "open browser?", active: "yes", inactive: "no" });
handleCancel(openIt); handleCancel(openIt);
if (openIt) openBrowser(configUrl); if (openIt) openBrowser(configUrl);
@@ -742,7 +744,9 @@ async function promptTestRun(ctx: { token: string; owner: string; repo: string }
activeSpin!.stop("dispatched test run"); activeSpin!.stop("dispatched test run");
if (result.data.url) { if (result.data.url) {
process.stdout.write(`${pc.gray(p.S_BAR)} ${link(pc.dim(result.data.url), result.data.url)}\n`); process.stdout.write(
`${pc.gray(p.S_BAR)} ${link(pc.dim(result.data.url), result.data.url)}\n`
);
openBrowser(result.data.url); openBrowser(result.data.url);
} }
} }
@@ -867,7 +871,9 @@ async function main() {
if (!merged) skipTestRun = true; if (!merged) skipTestRun = true;
} else { } else {
const short = result.data.hash?.slice(0, 7); const short = result.data.hash?.slice(0, 7);
spin.stop(short ? `committed pullfrog.yml to repo ${pc.dim(short)}` : "committed pullfrog.yml to repo"); spin.stop(
short ? `committed pullfrog.yml to repo ${pc.dim(short)}` : "committed pullfrog.yml to repo"
);
} }
if (!skipTestRun && !secrets.hasRuns) { if (!skipTestRun && !secrets.hasRuns) {
+1 -1
View File
@@ -1,6 +1,6 @@
import { type } from "arktype"; import { type } from "arktype";
import { formatMcpToolRef } from "../external.ts"; import { formatMcpToolRef } from "../external.ts";
import { PR_SUMMARY_FORMAT, type Mode } from "../modes.ts"; import { type Mode, PR_SUMMARY_FORMAT } from "../modes.ts";
import { apiFetch } from "../utils/apiFetch.ts"; import { apiFetch } from "../utils/apiFetch.ts";
import { log } from "../utils/log.ts"; import { log } from "../utils/log.ts";
import type { ToolContext } from "./server.ts"; import type { ToolContext } from "./server.ts";
+2 -2
View File
@@ -1,6 +1,6 @@
{ {
"name": "pullfrog", "name": "pullfrog",
"version": "0.0.195", "version": "0.0.196",
"type": "module", "type": "module",
"bin": { "bin": {
"pullfrog": "dist/cli.mjs", "pullfrog": "dist/cli.mjs",
@@ -20,7 +20,7 @@
"scratch": "node scratch.ts", "scratch": "node scratch.ts",
"upDeps": "pnpm up --latest", "upDeps": "pnpm up --latest",
"lock": "pnpm install --no-frozen-lockfile", "lock": "pnpm install --no-frozen-lockfile",
"prepare": "cd .. && husky action/.husky" "prepare": "cd .. && husky"
}, },
"devDependencies": { "devDependencies": {
"@actions/core": "^1.11.1", "@actions/core": "^1.11.1",