@programinglive/dev-workflow-mcp-server 1.4.4 β†’ 1.4.5

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,13 @@
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.4.5](https://github.com/programinglive/dev-workflow-mcp-server/compare/v1.4.4...v1.4.5) (2025-11-27)
6
+
7
+
8
+ ### πŸ› Bug Fixes
9
+
10
+ * display dynamic version in web dashboard from /api/version ([69f561d](https://github.com/programinglive/dev-workflow-mcp-server/commit/69f561d369fa8347399fafe5dcdb3a2dbb485064))
11
+
5
12
  ### [1.4.4](https://github.com/programinglive/dev-workflow-mcp-server/compare/v1.4.1...v1.4.4) (2025-11-27)
6
13
 
7
14
 
package/README.md CHANGED
@@ -205,6 +205,7 @@ npm run web
205
205
  - **Environment overrides:** Honors `PORT` (common on hosts like Plesk/Render) or `DEV_WORKFLOW_WEB_PORT` before falling back to auto-selection.
206
206
  - **Query parameter:** `?user=<id>` lets you inspect another user’s history (defaults to `default`).
207
207
  - **API endpoints:**
208
+ - `GET /api/version` β†’ current package version from `package.json` (used by dashboard to display version dynamically).
208
209
  - `GET /api/summary?user=<id>` β†’ overall stats for the user.
209
210
  - `GET /api/history?user=<id>&page=1&pageSize=20&startDate=YYYY-MM-DD&endDate=YYYY-MM-DD` β†’ paginated task history.
210
211
  - `GET /api/history-summary?user=<id>&frequency=daily|monthly|yearly` β†’ aggregated counts over time.
@@ -35,6 +35,7 @@ Developers need structured guidance to maintain disciplined workflows across pro
35
35
  - Offer aggregated project summaries (JSON artifacts, SQLite sync, optional web dashboard).
36
36
  - Guard release commands to ensure prerequisites are satisfied.
37
37
  - Support `run_full_workflow` for scripted execution of all steps with validation.
38
+ - Web dashboard displays version dynamically from `package.json` via `/api/version` endpoint to stay in sync after releases.
38
39
 
39
40
  ## 8. Technical Considerations
40
41
  - Node.js (ESM) codebase leveraging `@modelcontextprotocol/sdk`.
@@ -4,6 +4,25 @@ Authoritative history of user-visible changes for the Development Workflow MCP S
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 1.4.4 β€” 2025-11-27 β€” ♻️ Refactors
8
+ - consolidate workflow state to root .state folder only (3d69a14)
9
+ - ensure release guard uses freshest workflow state (e07eb42)
10
+ - remove invalid turbopack experimental config from next.config.ts (af0a7ea)
11
+ - **web:** configure next.js root to silence warnings (22ed002)
12
+ - **web:** improve mobile layout for hero section (53b26bf)
13
+ - add Plesk deployment guide (de35675)
14
+ - add 1.4.3 release notes (8b165f7)
15
+ - fix release state detection (ed5dfd1)
16
+ - prepare for release (a6ea2d0)
17
+ - **release:** 1.4.2 (fac8999)
18
+ - **release:** 1.4.2 πŸš€ (01b0b3c)
19
+ - **release:** 1.4.3 πŸš€ (04d8c3b)
20
+ - update task list (35663dd)
21
+ - **web:** fix next.js lockfile warning (05ffce0)
22
+ - add core doc types (PRD/README/RELEASE_NOTES) and fix CI build (8ed0567)
23
+ - update hero text and meta description to emphasize Indonesian programmer community (681547b)
24
+ - update program tracks and fix fast refresh warning (aa5bc9c)
25
+
7
26
  ## 1.4.3 β€” 2025-11-27 β€” 🧹 Chores
8
27
  - **release:** 1.4.2 (fac8999)
9
28
  - remove invalid turbopack experimental config from next.config.ts (af0a7ea)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@programinglive/dev-workflow-mcp-server",
3
- "version": "1.4.4",
3
+ "version": "1.4.5",
4
4
  "description": "MCP server to enforce development workflow discipline",
5
5
  "homepage": "https://devworkflow.programinglive.com/",
6
6
  "type": "module",
@@ -46,3 +46,16 @@ test('build script exists in package.json', async () => {
46
46
  assert.strictEqual(typeof pkg.scripts['build:server'], 'string');
47
47
  assert(pkg.scripts['build:server'].includes('vite build'));
48
48
  });
49
+
50
+ test('Hero component fetches version dynamically', async () => {
51
+ const heroPath = path.join(process.cwd(), 'web', 'components', 'Hero.tsx');
52
+ const heroContent = await readFile(heroPath, 'utf-8');
53
+
54
+ // Verify no hardcoded version strings
55
+ assert(!heroContent.includes('v1.3.12'), 'Hero should not have hardcoded v1.3.12');
56
+ assert(!heroContent.includes('"1.3.12"'), 'Hero should not have hardcoded "1.3.12"');
57
+
58
+ // Verify it fetches from /api/version
59
+ assert(heroContent.includes('fetch("/api/version")'), 'Hero should fetch version from API');
60
+ assert(heroContent.includes('useState<string | null>(null)'), 'Hero should have version state');
61
+ });
@@ -7,12 +7,18 @@ import { useEffect, useState } from "react";
7
7
 
8
8
  export default function Hero() {
9
9
  const [downloads, setDownloads] = useState<number | null>(null);
10
+ const [version, setVersion] = useState<string | null>(null);
10
11
 
11
12
  useEffect(() => {
12
13
  fetch("/api/npm-downloads")
13
14
  .then(res => res.json())
14
15
  .then(data => setDownloads(data.downloads))
15
16
  .catch(() => setDownloads(null));
17
+
18
+ fetch("/api/version")
19
+ .then(res => res.json())
20
+ .then(data => setVersion(data.version))
21
+ .catch(() => setVersion(null));
16
22
  }, []);
17
23
 
18
24
  const formatDownloads = (num: number) => {
@@ -30,7 +36,7 @@ export default function Hero() {
30
36
  <div className="animate-fade-in-up" style={{ animationDelay: "0.1s" }}>
31
37
  <div className="inline-flex items-center gap-2 px-3 py-1.5 rounded-full bg-emerald-500/10 border border-emerald-500/20 text-emerald-400 text-sm mb-8">
32
38
  <span className="w-1.5 h-1.5 rounded-full bg-emerald-500 animate-pulse"></span>
33
- <span>v1.3.12 - Active</span>
39
+ <span>v{version ?? "..."} - Active</span>
34
40
  </div>
35
41
  </div>
36
42
 
@@ -51,7 +57,7 @@ export default function Hero() {
51
57
  </div>
52
58
  <div className="flex flex-wrap gap-6 sm:gap-8 text-sm animate-fade-in-up" style={{ animationDelay: "0.5s" }}>
53
59
  <div>
54
- <div className="text-2xl font-bold">1.3.12</div>
60
+ <div className="text-2xl font-bold">{version ?? "..."}</div>
55
61
  <div className="text-gray-500">Latest Version</div>
56
62
  </div>
57
63
  <div>