@programinglive/dev-workflow-mcp-server 1.3.10 → 1.3.12

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 CHANGED
@@ -2,6 +2,21 @@
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.3.12](https://github.com/programinglive/dev-workflow-mcp-server/compare/v1.3.11...v1.3.12) (2025-11-22)
6
+
7
+
8
+ ### 🐛 Bug Fixes
9
+
10
+ * **scripts:** update release notes script and backfill versions ([808791e](https://github.com/programinglive/dev-workflow-mcp-server/commit/808791ec4a988fe557fa82be21fb92f6a34d792c))
11
+ * **scripts:** update release notes script to support header format and backfill versions ([e4a5055](https://github.com/programinglive/dev-workflow-mcp-server/commit/e4a5055633ba4d83d43c85ee8b475cd761685519))
12
+
13
+ ### [1.3.11](https://github.com/programinglive/dev-workflow-mcp-server/compare/v1.3.10...v1.3.11) (2025-11-22)
14
+
15
+
16
+ ### ♻️ Refactors
17
+
18
+ * **web:** move static files to public/ subdirectory for Plesk security ([3e5c321](https://github.com/programinglive/dev-workflow-mcp-server/commit/3e5c321d569e3594d9f29c8762513b95df8dbd84))
19
+
5
20
  ### [1.3.10](https://github.com/programinglive/dev-workflow-mcp-server/compare/v1.3.9...v1.3.10) (2025-11-22)
6
21
 
7
22
 
@@ -1,6 +1,24 @@
1
1
  <h1>Release Notes</h1>
2
2
  <p>Authoritative history of user-visible changes for the Development Workflow MCP Server. Each entry highlights the improvements that shipped with the tagged version.</p>
3
3
  <h2>Unreleased</h2>
4
+ <h2>1.3.11 — 2025-11-23</h2>
5
+ <ul>
6
+ <li>Re-applied Plesk security fix (moved static files to <code>web/public/</code>).</li>
7
+ <li>Updated build configuration and server paths.</li>
8
+ </ul>
9
+ <h2>1.3.10 — 2025-11-23</h2>
10
+ <ul>
11
+ <li>Fixed workflow state synchronization issue that caused forced releases.</li>
12
+ <li>Added <code>docs/WORKFLOW-BEST-PRACTICES.md</code>.</li>
13
+ </ul>
14
+ <h2>1.3.9 — 2025-11-23</h2>
15
+ <ul>
16
+ <li>Improved documentation modal layout and readability.</li>
17
+ </ul>
18
+ <h2>1.3.8 — 2025-11-23</h2>
19
+ <ul>
20
+ <li>Fixed documentation loading in production by tracking <code>dist/docs</code> in git.</li>
21
+ </ul>
4
22
  <h2>1.3.0 — 2025-11-22</h2>
5
23
  <ul>
6
24
  <li>Added comprehensive Antigravity integration documentation and examples.</li>
@@ -4,6 +4,20 @@ Authoritative history of user-visible changes for the Development Workflow MCP S
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 1.3.11 — 2025-11-23
8
+ - Re-applied Plesk security fix (moved static files to `web/public/`).
9
+ - Updated build configuration and server paths.
10
+
11
+ ## 1.3.10 — 2025-11-23
12
+ - Fixed workflow state synchronization issue that caused forced releases.
13
+ - Added `docs/WORKFLOW-BEST-PRACTICES.md`.
14
+
15
+ ## 1.3.9 — 2025-11-23
16
+ - Improved documentation modal layout and readability.
17
+
18
+ ## 1.3.8 — 2025-11-23
19
+ - Fixed documentation loading in production by tracking `dist/docs` in git.
20
+
7
21
  ## 1.3.0 — 2025-11-22
8
22
  - Added comprehensive Antigravity integration documentation and examples.
9
23
  - Fixed Windows shell escaping for commit messages.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@programinglive/dev-workflow-mcp-server",
3
- "version": "1.3.10",
3
+ "version": "1.3.12",
4
4
  "description": "MCP server to enforce development workflow discipline",
5
5
  "homepage": "https://devworkflow.programinglive.com/",
6
6
  "type": "module",
@@ -10,8 +10,8 @@
10
10
  },
11
11
  "scripts": {
12
12
  "build": "vite build",
13
- "build:web": "npx tailwindcss -i ./web/input.css -o ./web/output.css --minify",
14
- "watch:web": "npx tailwindcss -i ./web/input.css -o ./web/output.css --watch",
13
+ "build:web": "npx tailwindcss -i ./web/public/input.css -o ./web/public/output.css --minify",
14
+ "watch:web": "npx tailwindcss -i ./web/public/input.css -o ./web/public/output.css --watch",
15
15
  "postbuild": "npm run build:web && node scripts/build-docs.js",
16
16
  "dev": "node --watch index.js",
17
17
  "start": "node index.js",
@@ -67,33 +67,29 @@ function updateReleaseNotes({
67
67
 
68
68
  function insertReleaseNotesEntry({ content, version, releaseDate, highlight, sectionHeading, detailBullets }) {
69
69
  const lines = content.split('\n');
70
- const headerSeparatorIndex = lines.findIndex((line) => line.trim().startsWith('|---------'));
71
- if (headerSeparatorIndex === -1) {
72
- throw new Error('Unable to locate release notes table header.');
73
- }
74
70
 
75
- const newRow = `| ${version} | ${releaseDate} | ${escapePipes(highlight)} |`;
76
- lines.splice(headerSeparatorIndex + 1, 0, newRow);
71
+ // Find the "## Unreleased" section
72
+ const unreleasedIndex = lines.findIndex((line) => line.trim().startsWith('## Unreleased'));
73
+ if (unreleasedIndex === -1) {
74
+ throw new Error('Unable to locate "## Unreleased" section in release notes.');
75
+ }
77
76
 
78
77
  const sectionLines = [];
79
78
  sectionLines.push('');
80
79
  const trimmedHeading = typeof sectionHeading === 'string' ? sectionHeading.trim() : '';
81
- const headingSuffix = trimmedHeading ? ` – ${trimmedHeading}` : '';
82
- sectionLines.push(`## ${version}${headingSuffix}`);
83
- sectionLines.push('');
84
- sectionLines.push(`Released on **${releaseDate}**.`);
85
- sectionLines.push('');
80
+ const headingSuffix = trimmedHeading ? ` — ${trimmedHeading}` : '';
81
+
82
+ // Format: ## [Version] — [Date]
83
+ sectionLines.push(`## ${version} — ${releaseDate}${headingSuffix}`);
84
+
86
85
  for (const bullet of detailBullets) {
87
86
  sectionLines.push(`- ${bullet}`);
88
87
  }
89
- sectionLines.push('');
90
88
 
91
- const firstSectionIndex = lines.findIndex((line, idx) => idx > headerSeparatorIndex && line.startsWith('## '));
92
- if (firstSectionIndex === -1) {
93
- lines.push(...sectionLines);
94
- } else {
95
- lines.splice(firstSectionIndex, 0, ...sectionLines);
96
- }
89
+ // Insert after the Unreleased header (and potentially some blank lines)
90
+ // We want to keep "## Unreleased" empty and add the new version below it.
91
+ // So we insert after the Unreleased line.
92
+ lines.splice(unreleasedIndex + 1, 0, ...sectionLines);
97
93
 
98
94
  return lines.join('\n');
99
95
  }
@@ -1,8 +1,6 @@
1
1
  /** @type {import('tailwindcss').Config} */
2
- export default {
3
- content: [
4
- "./web/**/*.{html,js}",
5
- ],
2
+ module.exports = {
3
+ content: ["./web/public/**/*.{html,js}"],
6
4
  theme: {
7
5
  extend: {},
8
6
  },
package/web/server.js CHANGED
@@ -83,11 +83,11 @@ async function start() {
83
83
  const userId = url.searchParams.get("user") || "default";
84
84
 
85
85
  if (req.method === "GET" && url.pathname === "/output.css") {
86
- const css = await readFile(join(__dirname, "output.css"), "utf-8");
86
+ const css = await readFile(join(__dirname, "public", "output.css"), "utf-8");
87
87
  res.writeHead(200, { "Content-Type": "text/css" });
88
88
  res.end(css);
89
89
  } else if (req.method === "GET" && url.pathname === "/") {
90
- const html = await readFile(join(__dirname, "index.html"), "utf-8");
90
+ const html = await readFile(join(__dirname, "public", "index.html"), "utf-8");
91
91
  res.writeHead(200, { "Content-Type": "text/html" });
92
92
  res.end(html);
93
93
  } else if (req.method === "GET" && url.pathname === "/api/summary") {
File without changes
File without changes
File without changes