project-auto-wizard 0.16.0 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ Everything it installs is plain GitHub Actions in your own repository. No API ke
|
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
23
|
<!-- AUTO-VERSION-SECTION: DO NOT EDIT MANUALLY -->
|
|
24
|
-
## Latest Version : v0.16.
|
|
24
|
+
## Latest Version : v0.16.1 (2026-10-01)
|
|
25
25
|
|
|
26
26
|
[Full release history](CHANGELOG.md)
|
|
27
27
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "project-auto-wizard",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.1",
|
|
4
4
|
"description": "One command DevOps: npx wizard that installs GitHub-native Release Automation (optional GitHub Copilot AI summaries) into any project",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -1314,8 +1314,10 @@ EN = {
|
|
|
1314
1314
|
"wf_changelog.automerge_enabled": "automerge enabled: {subject}",
|
|
1315
1315
|
"wf_changelog.automerge_unavailable": "automerge unavailable — merged directly: {subject}",
|
|
1316
1316
|
"wf_changelog.automerge_off": "release_automerge is off — PR renamed to \"{subject}\"; merge it yourself",
|
|
1317
|
+
"wf_changelog.automerge_off_list_failed": "Could not read the comments of PR #{pr_number}; skipped the merge guidance comment to avoid a duplicate",
|
|
1318
|
+
"wf_changelog.automerge_off_rename_hint": "The PR title could not be updated automatically. Before merging, set the merge commit message (or the PR title) to `{subject}` so the release is published.",
|
|
1317
1319
|
"wf_changelog.automerge_rename_failed": "Could not update PR #{pr_number} (title or guidance comment); the release still needs \"chore(release):\" in the merge commit message",
|
|
1318
|
-
"wf_changelog.automerge_off_comment": "**Automatic merge is off** (`release_automerge: false` in `version.yml`).
|
|
1320
|
+
"wf_changelog.automerge_off_comment": "**Automatic merge is off** (`release_automerge: false` in `version.yml`). Wait until this workflow run has finished (it confirms the version and renames the PR), then merge this PR yourself when you are ready to release, using **Create a merge commit**. Do not use *Squash and merge* or *Rebase and merge*: the release gate reads `chore(release):` from the resulting commit message, and squashing or rebasing also rewrites the history that the next release notes are built from.",
|
|
1319
1321
|
"wf_changelog.merge_retry": "merge attempt {attempt}/{max_attempts} failed — retrying in {wait}s",
|
|
1320
1322
|
"wf_changelog.merge_gave_up": "PR merge failed after {max_attempts} attempts (allow_merge_commit={allow_merge_commit}) — check branch protection rules, required checks, and token permissions",
|
|
1321
1323
|
# --- wf_readme ---
|
|
@@ -2587,8 +2589,10 @@ KO = {
|
|
|
2587
2589
|
"wf_changelog.automerge_enabled": "automerge 활성화: {subject}",
|
|
2588
2590
|
"wf_changelog.automerge_unavailable": "automerge를 쓸 수 없어 직접 병합했습니다: {subject}",
|
|
2589
2591
|
"wf_changelog.automerge_off": "release_automerge가 꺼져 있어 PR 제목을 \"{subject}\"로 바꿨습니다. 직접 머지하세요",
|
|
2592
|
+
"wf_changelog.automerge_off_list_failed": "PR #{pr_number}의 댓글을 읽지 못해 중복을 피하려고 머지 안내 댓글을 건너뛰었습니다",
|
|
2593
|
+
"wf_changelog.automerge_off_rename_hint": "PR 제목을 자동으로 바꾸지 못했습니다. 릴리스가 발행되도록 머지하기 전에 머지 커밋 메시지(또는 PR 제목)를 `{subject}`로 지정하세요.",
|
|
2590
2594
|
"wf_changelog.automerge_rename_failed": "PR #{pr_number}의 제목 또는 안내 댓글을 갱신하지 못했습니다. 릴리스가 되려면 머지 커밋 메시지에 \"chore(release):\"가 있어야 합니다",
|
|
2591
|
-
"wf_changelog.automerge_off_comment": "**자동 머지가 꺼져 있습니다** (`version.yml`의 `release_automerge: false`). 릴리스할 준비가 되면 **Create a merge commit**으로 직접 머지하세요. *Squash and merge*와 *Rebase and merge*는 쓰지 마세요. 릴리스 게이트가 결과 커밋 메시지의 `chore(release):`를 읽고, squash나 rebase는 다음 릴리스 노트가 기대는 커밋 이력까지 바꿉니다.",
|
|
2595
|
+
"wf_changelog.automerge_off_comment": "**자동 머지가 꺼져 있습니다** (`version.yml`의 `release_automerge: false`). 이 워크플로우 실행이 끝난 뒤(버전 확정과 PR 제목 변경이 끝난 뒤) 릴리스할 준비가 되면 **Create a merge commit**으로 직접 머지하세요. *Squash and merge*와 *Rebase and merge*는 쓰지 마세요. 릴리스 게이트가 결과 커밋 메시지의 `chore(release):`를 읽고, squash나 rebase는 다음 릴리스 노트가 기대는 커밋 이력까지 바꿉니다.",
|
|
2592
2596
|
"wf_changelog.merge_retry": "병합 시도 {attempt}/{max_attempts} 실패 — {wait}초 후 다시 시도합니다",
|
|
2593
2597
|
"wf_changelog.merge_gave_up": "PR 병합이 {max_attempts}회 시도 후에도 실패했습니다 (allow_merge_commit={allow_merge_commit}) — 브랜치 보호 규칙, 필수 체크, 토큰 권한을 확인하세요",
|
|
2594
2598
|
# --- wf_readme ---
|
|
@@ -460,19 +460,30 @@ jobs:
|
|
|
460
460
|
# The PR title carries the release-confirm pattern, so a human merge commit (its message includes the PR title)
|
|
461
461
|
# still passes the RELEASE-PUBLISH gate. A failed rename only warns: the run must not fail here.
|
|
462
462
|
SUBJECT="chore(release): v${VERSION} (PR #${PR_NUMBER})"
|
|
463
|
-
|
|
463
|
+
# The REST endpoint is used instead of `gh pr edit`, which goes through GraphQL and can fail on token scopes.
|
|
464
|
+
RENAMED=true
|
|
465
|
+
if gh api -X PATCH "repos/${GITHUB_REPOSITORY}/pulls/${PR_NUMBER}" -f title="$SUBJECT" > /dev/null; then
|
|
464
466
|
echo "$(m wf_changelog.automerge_off subject="$SUBJECT")"
|
|
465
467
|
else
|
|
468
|
+
RENAMED=false
|
|
466
469
|
echo "::warning::$(m wf_changelog.automerge_rename_failed pr_number="$PR_NUMBER")"
|
|
467
470
|
fi
|
|
468
471
|
|
|
469
472
|
# One guidance comment per PR: re-runs (synchronize) find it by its marker and leave it alone.
|
|
473
|
+
# If the comment list cannot be read we cannot tell whether it exists, so skip rather than post a duplicate.
|
|
470
474
|
MARKER='<!-- release-automerge-off -->'
|
|
471
|
-
|
|
472
|
-
--jq ".[] | select(.body | contains(\"$MARKER\")) | .id"
|
|
473
|
-
|
|
475
|
+
if ! COMMENT_IDS=$(gh api --paginate "repos/${GITHUB_REPOSITORY}/issues/${PR_NUMBER}/comments" \
|
|
476
|
+
--jq ".[] | select(.body | contains(\"$MARKER\")) | .id"); then
|
|
477
|
+
echo "::warning::$(m wf_changelog.automerge_off_list_failed pr_number="$PR_NUMBER")"
|
|
478
|
+
elif [ -z "$COMMENT_IDS" ]; then
|
|
474
479
|
BODY="$MARKER
|
|
475
480
|
$(m wf_changelog.automerge_off_comment)"
|
|
481
|
+
# A failed rename means the merge message will not carry the release marker unless the maintainer sets it.
|
|
482
|
+
if [ "$RENAMED" = false ]; then
|
|
483
|
+
BODY="$BODY
|
|
484
|
+
|
|
485
|
+
$(m wf_changelog.automerge_off_rename_hint subject="$SUBJECT")"
|
|
486
|
+
fi
|
|
476
487
|
gh pr comment "$PR_NUMBER" --body "$BODY" \
|
|
477
488
|
|| echo "::warning::$(m wf_changelog.automerge_rename_failed pr_number="$PR_NUMBER")"
|
|
478
489
|
fi
|
package/src/commands/doctor.js
CHANGED
|
@@ -172,7 +172,9 @@ export function runDoctor(cwd = process.cwd(), { exec = defaultExec } = {}) {
|
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
// Show the actual setting: telling a user who turned it on that it is off would misrepresent the current state.
|
|
175
|
-
|
|
175
|
+
// version.yml is read once; both option notes below use it.
|
|
176
|
+
const savedOptions = installed ? parseExisting(readFileSync(join(cwd, "version.yml"), "utf8")).options : null;
|
|
177
|
+
const copilotAi = savedOptions ? savedOptions.copilotAi : null;
|
|
176
178
|
const copilotState = copilotAi === true
|
|
177
179
|
? t("cmd.doctor.copilot.on")
|
|
178
180
|
: copilotAi === false
|
|
@@ -188,13 +190,15 @@ export function runDoctor(cwd = process.cwd(), { exec = defaultExec } = {}) {
|
|
|
188
190
|
});
|
|
189
191
|
|
|
190
192
|
// release_automerge is on unless version.yml says false (a missing key also means on), so only an explicit false is reported as off.
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
193
|
+
// Without an install there is no saved setting to report, so the item is left out.
|
|
194
|
+
if (savedOptions) {
|
|
195
|
+
add({
|
|
196
|
+
name: t("cmd.doctor.automerge.name"), label: t("cmd.doctor.automerge.name"), purpose: t("cmd.doctor.automerge.purpose"), status: "INFO",
|
|
197
|
+
note: savedOptions.releaseAutomerge === false
|
|
198
|
+
? [t("cmd.doctor.automerge.off"), t("cmd.doctor.automerge.offHow")]
|
|
199
|
+
: [t("cmd.doctor.automerge.on"), t("cmd.doctor.automerge.onHow")],
|
|
200
|
+
});
|
|
201
|
+
}
|
|
198
202
|
|
|
199
203
|
return results;
|
|
200
204
|
}
|