@programinglive/dev-workflow-mcp-server 1.2.5 â 1.2.6
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/CHANGELOG.md +17 -0
- package/docs/RELEASE-NOTES.md +3 -0
- package/index.js +3 -0
- package/package.json +1 -1
- package/release-wrapper.js +22 -6
- package/tests/release-wrapper.test.js +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [1.2.6](https://github.com/programinglive/dev-workflow-mcp-server/compare/v1.2.5...v1.2.6) (2025-11-11)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### đī¸ Build System
|
|
9
|
+
|
|
10
|
+
* **release:** delegate to commiter ([e174d8d](https://github.com/programinglive/dev-workflow-mcp-server/commit/e174d8dca300e4822f67681a39dc5f4d9f56232a))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### đ Bug Fixes
|
|
14
|
+
|
|
15
|
+
* **cli:** expose primary branch helper ([a3fb9c8](https://github.com/programinglive/dev-workflow-mcp-server/commit/a3fb9c881df67298eba4a8446ba9a14473f54e0a))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### đ Documentation
|
|
19
|
+
|
|
20
|
+
* **changelog:** note commiter delegation ([6352aa2](https://github.com/programinglive/dev-workflow-mcp-server/commit/6352aa2f561e9d7f7d8a4f26d9c930e108bbe81b))
|
|
21
|
+
|
|
5
22
|
### [1.2.4](https://github.com/programinglive/dev-workflow-mcp-server/compare/v1.2.3...v1.2.4) (2025-11-11)
|
|
6
23
|
|
|
7
24
|
|
package/docs/RELEASE-NOTES.md
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Authoritative history of user-visible changes for the Development Workflow MCP Server. Each entry highlights the improvements that shipped with the tagged version.
|
|
4
4
|
|
|
5
|
+
## Unreleased
|
|
6
|
+
- Release guard now delegates to `@programinglive/commiter` and verifies the package is installed before running.
|
|
7
|
+
|
|
5
8
|
> **Notice:** Versions 1.2.2 through 1.2.5 were published briefly for packaging experiments and have been withdrawn. The current latest version is **1.2.1**.
|
|
6
9
|
|
|
7
10
|
## 1.2.1 â 2025-11-03
|
package/index.js
CHANGED
|
@@ -14,6 +14,7 @@ import { normalizeRequestArgs, shellEscape } from "./utils.js";
|
|
|
14
14
|
import {
|
|
15
15
|
getCurrentBranch,
|
|
16
16
|
getLastCommitMessage,
|
|
17
|
+
getPrimaryBranch,
|
|
17
18
|
getStagedChanges,
|
|
18
19
|
hasStagedChanges,
|
|
19
20
|
hasTestChanges,
|
|
@@ -72,6 +73,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
72
73
|
hasStagedChanges,
|
|
73
74
|
getStagedChanges,
|
|
74
75
|
getCurrentBranch,
|
|
76
|
+
getPrimaryBranch,
|
|
75
77
|
getLastCommitMessage,
|
|
76
78
|
workingTreeSummary,
|
|
77
79
|
},
|
|
@@ -246,6 +248,7 @@ async function cliMain(argv) {
|
|
|
246
248
|
hasStagedChanges,
|
|
247
249
|
getStagedChanges,
|
|
248
250
|
getCurrentBranch,
|
|
251
|
+
getPrimaryBranch,
|
|
249
252
|
getLastCommitMessage,
|
|
250
253
|
workingTreeSummary,
|
|
251
254
|
},
|
package/package.json
CHANGED
package/release-wrapper.js
CHANGED
|
@@ -9,6 +9,7 @@ const RELEASE_TYPES = new Set(['major', 'minor', 'patch']);
|
|
|
9
9
|
async function main() {
|
|
10
10
|
const releaseTypeArg = (process.argv[2] || '').toLowerCase();
|
|
11
11
|
const forceFlag = process.argv.includes('--force') || process.env.DEV_WORKFLOW_FORCE_RELEASE === '1';
|
|
12
|
+
const additionalArgs = process.argv.slice(3).filter((arg) => arg !== '--force');
|
|
12
13
|
|
|
13
14
|
if (!RELEASE_TYPES.has(releaseTypeArg)) {
|
|
14
15
|
console.error(
|
|
@@ -17,11 +18,13 @@ async function main() {
|
|
|
17
18
|
process.exit(1);
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
const
|
|
21
|
-
|
|
21
|
+
const repoRoot = process.cwd();
|
|
22
|
+
const projectRootCandidate = process.env.INIT_CWD || repoRoot;
|
|
23
|
+
if (projectRootCandidate.includes(`node_modules${path.sep}`)) {
|
|
22
24
|
console.error('â Release guard: refusing to run inside node_modules.');
|
|
23
25
|
process.exit(1);
|
|
24
26
|
}
|
|
27
|
+
const projectRoot = projectRootCandidate;
|
|
25
28
|
|
|
26
29
|
// Prefer state under INIT_CWD to support per-project runs and tests.
|
|
27
30
|
// If DEV_WORKFLOW_USER_ID is set and a user-scoped file exists, use it; otherwise fall back to legacy path.
|
|
@@ -95,6 +98,17 @@ async function main() {
|
|
|
95
98
|
}
|
|
96
99
|
}
|
|
97
100
|
|
|
101
|
+
const commiterReleaseScript = path.join(repoRoot, 'node_modules', '@programinglive', 'commiter', 'scripts', 'release.js');
|
|
102
|
+
|
|
103
|
+
try {
|
|
104
|
+
await fs.access(commiterReleaseScript);
|
|
105
|
+
} catch {
|
|
106
|
+
console.error('â Release guard: @programinglive/commiter release script not found.');
|
|
107
|
+
console.error(' Ensure @programinglive/commiter is installed as a dev dependency.');
|
|
108
|
+
console.error(' Try: npm install --save-dev @programinglive/commiter');
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
|
|
98
112
|
const runRelease = async () => {
|
|
99
113
|
if (process.env.DEV_WORKFLOW_SKIP_RELEASE === '1') {
|
|
100
114
|
console.log('âšī¸ DEV_WORKFLOW_SKIP_RELEASE=1 detected. Skipping actual release command.');
|
|
@@ -103,9 +117,9 @@ async function main() {
|
|
|
103
117
|
|
|
104
118
|
return await new Promise((resolve, reject) => {
|
|
105
119
|
const child = spawn(
|
|
106
|
-
|
|
107
|
-
[
|
|
108
|
-
{ stdio: 'inherit',
|
|
120
|
+
process.execPath,
|
|
121
|
+
[commiterReleaseScript, releaseTypeArg, ...additionalArgs],
|
|
122
|
+
{ stdio: 'inherit', cwd: repoRoot }
|
|
109
123
|
);
|
|
110
124
|
|
|
111
125
|
child.on('error', (error) => reject(error));
|
|
@@ -124,8 +138,10 @@ async function main() {
|
|
|
124
138
|
process.exit(1);
|
|
125
139
|
}
|
|
126
140
|
|
|
141
|
+
const recordedReleaseCommand = `node node_modules/@programinglive/commiter/scripts/release.js ${releaseTypeArg}`;
|
|
142
|
+
|
|
127
143
|
state.released = true;
|
|
128
|
-
state.releaseCommand =
|
|
144
|
+
state.releaseCommand = recordedReleaseCommand;
|
|
129
145
|
state.currentPhase = 'ready_to_complete';
|
|
130
146
|
|
|
131
147
|
try {
|
|
@@ -98,5 +98,8 @@ test("release-wrapper marks release after validation passes", async () => {
|
|
|
98
98
|
assert.ok(result.stdout.includes("Release recorded"));
|
|
99
99
|
assert.equal(result.updatedState.released, true);
|
|
100
100
|
assert.equal(result.updatedState.currentPhase, "ready_to_complete");
|
|
101
|
-
assert.equal(
|
|
101
|
+
assert.equal(
|
|
102
|
+
result.updatedState.releaseCommand,
|
|
103
|
+
"node node_modules/@programinglive/commiter/scripts/release.js patch"
|
|
104
|
+
);
|
|
102
105
|
});
|