From 66e605eb0357b30046e74907ae73f7b21a332d1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20TEKTA=C5=9E?= Date: Fri, 21 Aug 2026 13:55:33 +0300 Subject: [PATCH 1/4] chore: stage 0.5.33 release preparation --- .github/workflows/prepare-0.5.33.yml | 66 ++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .github/workflows/prepare-0.5.33.yml diff --git a/.github/workflows/prepare-0.5.33.yml b/.github/workflows/prepare-0.5.33.yml new file mode 100644 index 00000000..702eeffb --- /dev/null +++ b/.github/workflows/prepare-0.5.33.yml @@ -0,0 +1,66 @@ +name: Prepare 0.5.33 release metadata + +on: + push: + branches: + - "release/prepare-v0.5.33" + +permissions: + contents: write + +jobs: + prepare: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + with: + ref: ${{ github.ref_name }} + fetch-depth: 0 + + - uses: actions/setup-node@v6 + with: + node-version: "24" + package-manager-cache: false + + - name: Update release metadata + shell: bash + run: | + npm version 0.5.33 --no-git-tag-version + node <<'NODE' + const fs = require('node:fs') + + const changelogPath = 'CHANGELOG.md' + let changelog = fs.readFileSync(changelogPath, 'utf8') + const marker = '# Changelog\n\n' + if (!changelog.startsWith(marker)) throw new Error('unexpected changelog header') + if (changelog.includes('\n## 0.5.33\n')) throw new Error('0.5.33 changelog already exists') + const section = [ + '## 0.5.33', + '', + '- Complete the post-0.5.32 stable V1 source decomposition by extracting action dispatch, run admission, and post-turn finalization from the executor into focused runtime modules while preserving scheduler behavior and dependency-injection compatibility.', + '- Split experimental Loop Goal prompt rendering, report writing, and evidence/progress decision helpers into dedicated modules while preserving the existing source facade and runtime state schema.', + '- Regenerate the committed single-file stable plugin from the modular source tree and keep Linux/Windows real-host, compatibility, generated-bundle, and lifecycle gates green throughout the refactor.', + '- Add direct regression coverage for the extracted admission/finalization paths; this release is intended to be behavior-preserving with no user-visible command changes.', + '', + ].join('\n') + fs.writeFileSync(changelogPath, marker + section + changelog.slice(marker.length), 'utf8') + + const readmePath = 'README.md' + let readme = fs.readFileSync(readmePath, 'utf8') + const before = '**Current release: `0.5.32`.**' + const after = '**Current release: `0.5.33`.**' + if (!readme.includes(before)) throw new Error('current release marker not found in README') + readme = readme.replace(before, after) + fs.writeFileSync(readmePath, readme, 'utf8') + NODE + + - name: Commit prepared release + shell: bash + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git rm .github/workflows/prepare-0.5.33.yml + git add package.json package-lock.json CHANGELOG.md README.md + git diff --cached --check + git commit -m "chore: prepare 0.5.33 release metadata" + git push origin HEAD:release/prepare-v0.5.33 From e653ce88a98f2850688607c2ca65c5acd50cd184 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 10:55:46 +0000 Subject: [PATCH 2/4] chore: prepare 0.5.33 release metadata --- .github/workflows/prepare-0.5.33.yml | 66 ---------------------------- CHANGELOG.md | 6 +++ README.md | 2 +- package-lock.json | 4 +- package.json | 2 +- 5 files changed, 10 insertions(+), 70 deletions(-) delete mode 100644 .github/workflows/prepare-0.5.33.yml diff --git a/.github/workflows/prepare-0.5.33.yml b/.github/workflows/prepare-0.5.33.yml deleted file mode 100644 index 702eeffb..00000000 --- a/.github/workflows/prepare-0.5.33.yml +++ /dev/null @@ -1,66 +0,0 @@ -name: Prepare 0.5.33 release metadata - -on: - push: - branches: - - "release/prepare-v0.5.33" - -permissions: - contents: write - -jobs: - prepare: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - with: - ref: ${{ github.ref_name }} - fetch-depth: 0 - - - uses: actions/setup-node@v6 - with: - node-version: "24" - package-manager-cache: false - - - name: Update release metadata - shell: bash - run: | - npm version 0.5.33 --no-git-tag-version - node <<'NODE' - const fs = require('node:fs') - - const changelogPath = 'CHANGELOG.md' - let changelog = fs.readFileSync(changelogPath, 'utf8') - const marker = '# Changelog\n\n' - if (!changelog.startsWith(marker)) throw new Error('unexpected changelog header') - if (changelog.includes('\n## 0.5.33\n')) throw new Error('0.5.33 changelog already exists') - const section = [ - '## 0.5.33', - '', - '- Complete the post-0.5.32 stable V1 source decomposition by extracting action dispatch, run admission, and post-turn finalization from the executor into focused runtime modules while preserving scheduler behavior and dependency-injection compatibility.', - '- Split experimental Loop Goal prompt rendering, report writing, and evidence/progress decision helpers into dedicated modules while preserving the existing source facade and runtime state schema.', - '- Regenerate the committed single-file stable plugin from the modular source tree and keep Linux/Windows real-host, compatibility, generated-bundle, and lifecycle gates green throughout the refactor.', - '- Add direct regression coverage for the extracted admission/finalization paths; this release is intended to be behavior-preserving with no user-visible command changes.', - '', - ].join('\n') - fs.writeFileSync(changelogPath, marker + section + changelog.slice(marker.length), 'utf8') - - const readmePath = 'README.md' - let readme = fs.readFileSync(readmePath, 'utf8') - const before = '**Current release: `0.5.32`.**' - const after = '**Current release: `0.5.33`.**' - if (!readme.includes(before)) throw new Error('current release marker not found in README') - readme = readme.replace(before, after) - fs.writeFileSync(readmePath, readme, 'utf8') - NODE - - - name: Commit prepared release - shell: bash - run: | - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git rm .github/workflows/prepare-0.5.33.yml - git add package.json package-lock.json CHANGELOG.md README.md - git diff --cached --check - git commit -m "chore: prepare 0.5.33 release metadata" - git push origin HEAD:release/prepare-v0.5.33 diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c021bf9..19649933 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.5.33 + +- Complete the post-0.5.32 stable V1 source decomposition by extracting action dispatch, run admission, and post-turn finalization from the executor into focused runtime modules while preserving scheduler behavior and dependency-injection compatibility. +- Split experimental Loop Goal prompt rendering, report writing, and evidence/progress decision helpers into dedicated modules while preserving the existing source facade and runtime state schema. +- Regenerate the committed single-file stable plugin from the modular source tree and keep Linux/Windows real-host, compatibility, generated-bundle, and lifecycle gates green throughout the refactor. +- Add direct regression coverage for the extracted admission/finalization paths; this release is intended to be behavior-preserving with no user-visible command changes. ## 0.5.32 - Hide the tool-denied `opencode-loop-local` acknowledgement agent from the normal primary-agent cycle by installing it as a hidden subagent while keeping Loop slash commands explicitly bound to it. diff --git a/README.md b/README.md index 83780bd0..6d2eac26 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ OpenCode Loop adds `/loop`, scheduled prompt/command/shell jobs, compact scheduling, safe long-running continuation helpers, and the `opencode-loopd` background daemon. -> **Current release: `0.5.32`.** Loop also contains an older experimental `/loop-goal` mode, but for strong persistent Goal contracts and host-verified completion, use the separate **OpenCode Goals** plugin described below. +> **Current release: `0.5.33`.** Loop also contains an older experimental `/loop-goal` mode, but for strong persistent Goal contracts and host-verified completion, use the separate **OpenCode Goals** plugin described below. ## Install or update diff --git a/package-lock.json b/package-lock.json index 236f82fb..117829c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@bybrawe/opencode-loop", - "version": "0.5.32", + "version": "0.5.33", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@bybrawe/opencode-loop", - "version": "0.5.32", + "version": "0.5.33", "license": "MIT", "bin": { "opencode-loop": "scripts/install-with-goals.mjs", diff --git a/package.json b/package.json index b33f6ffe..4a3b82fa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bybrawe/opencode-loop", - "version": "0.5.32", + "version": "0.5.33", "description": "Claude Code/Codex style /loop and experimental goal mode for OpenCode: heartbeat scheduler, idle-safe loops, scheduled commands, compact scheduling, verification, checkpoints, and persistent coding goals.", "type": "module", "main": "src/index.js", From b881642be6732e8d8d9b123a53de3397a20c05e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20TEKTA=C5=9E?= Date: Fri, 21 Aug 2026 13:56:24 +0300 Subject: [PATCH 3/4] chore: normalize 0.5.33 changelog spacing --- .github/workflows/fix-0.5.33-changelog.yml | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 .github/workflows/fix-0.5.33-changelog.yml diff --git a/.github/workflows/fix-0.5.33-changelog.yml b/.github/workflows/fix-0.5.33-changelog.yml new file mode 100644 index 00000000..6a32b219 --- /dev/null +++ b/.github/workflows/fix-0.5.33-changelog.yml @@ -0,0 +1,39 @@ +name: Normalize 0.5.33 changelog spacing + +on: + push: + branches: + - "release/prepare-v0.5.33" + +permissions: + contents: write + +jobs: + fix: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + with: + ref: ${{ github.ref_name }} + fetch-depth: 0 + + - name: Fix spacing and self-remove + shell: bash + run: | + node <<'NODE' + const fs = require('node:fs') + const path = 'CHANGELOG.md' + let text = fs.readFileSync(path, 'utf8') + const before = 'this release is intended to be behavior-preserving with no user-visible command changes.\n## 0.5.32' + const after = 'this release is intended to be behavior-preserving with no user-visible command changes.\n\n## 0.5.32' + if (!text.includes(before)) throw new Error('expected changelog boundary not found') + text = text.replace(before, after) + fs.writeFileSync(path, text, 'utf8') + NODE + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git rm .github/workflows/fix-0.5.33-changelog.yml + git add CHANGELOG.md + git diff --cached --check + git commit -m "chore: normalize 0.5.33 changelog spacing" + git push origin HEAD:release/prepare-v0.5.33 From 80119d8777b479004464a885658cf943951bdd51 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 10:56:33 +0000 Subject: [PATCH 4/4] chore: normalize 0.5.33 changelog spacing --- .github/workflows/fix-0.5.33-changelog.yml | 39 ---------------------- CHANGELOG.md | 1 + 2 files changed, 1 insertion(+), 39 deletions(-) delete mode 100644 .github/workflows/fix-0.5.33-changelog.yml diff --git a/.github/workflows/fix-0.5.33-changelog.yml b/.github/workflows/fix-0.5.33-changelog.yml deleted file mode 100644 index 6a32b219..00000000 --- a/.github/workflows/fix-0.5.33-changelog.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: Normalize 0.5.33 changelog spacing - -on: - push: - branches: - - "release/prepare-v0.5.33" - -permissions: - contents: write - -jobs: - fix: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - with: - ref: ${{ github.ref_name }} - fetch-depth: 0 - - - name: Fix spacing and self-remove - shell: bash - run: | - node <<'NODE' - const fs = require('node:fs') - const path = 'CHANGELOG.md' - let text = fs.readFileSync(path, 'utf8') - const before = 'this release is intended to be behavior-preserving with no user-visible command changes.\n## 0.5.32' - const after = 'this release is intended to be behavior-preserving with no user-visible command changes.\n\n## 0.5.32' - if (!text.includes(before)) throw new Error('expected changelog boundary not found') - text = text.replace(before, after) - fs.writeFileSync(path, text, 'utf8') - NODE - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git rm .github/workflows/fix-0.5.33-changelog.yml - git add CHANGELOG.md - git diff --cached --check - git commit -m "chore: normalize 0.5.33 changelog spacing" - git push origin HEAD:release/prepare-v0.5.33 diff --git a/CHANGELOG.md b/CHANGELOG.md index 19649933..2ce89404 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Split experimental Loop Goal prompt rendering, report writing, and evidence/progress decision helpers into dedicated modules while preserving the existing source facade and runtime state schema. - Regenerate the committed single-file stable plugin from the modular source tree and keep Linux/Windows real-host, compatibility, generated-bundle, and lifecycle gates green throughout the refactor. - Add direct regression coverage for the extracted admission/finalization paths; this release is intended to be behavior-preserving with no user-visible command changes. + ## 0.5.32 - Hide the tool-denied `opencode-loop-local` acknowledgement agent from the normal primary-agent cycle by installing it as a hidden subagent while keeping Loop slash commands explicitly bound to it.