@programinglive/dev-workflow-mcp-server 1.5.2 → 1.5.4

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.
Files changed (78) hide show
  1. package/.agent/workflows/dev-workflow-bugfix.md +250 -250
  2. package/.agent/workflows/dev-workflow-feature.md +201 -201
  3. package/.agent/workflows/dev-workflow-full-cycle.md +400 -400
  4. package/.agent/workflows/dev-workflow-refactor.md +238 -238
  5. package/.github/ISSUE_TEMPLATE/bug_report.md +34 -34
  6. package/.github/ISSUE_TEMPLATE/feature_request.md +25 -25
  7. package/.github/pull_request_template.md +22 -22
  8. package/.github/workflows/github-release.yml +56 -0
  9. package/.github/workflows/npm-publish.yml +50 -50
  10. package/.husky/commit-msg +0 -0
  11. package/CHANGELOG.md +759 -741
  12. package/CODE_OF_CONDUCT.md +79 -79
  13. package/CONTRIBUTING.md +60 -60
  14. package/LICENSE +21 -21
  15. package/README.md +632 -632
  16. package/SECURITY.md +20 -20
  17. package/db/index.js +204 -204
  18. package/docs/NETLIFY_DEPLOYMENT.md +125 -125
  19. package/docs/PLESK_DEPLOYMENT.md +170 -170
  20. package/docs/WORKFLOW-BEST-PRACTICES.md +58 -58
  21. package/docs/antigravity/EXAMPLES.md +535 -535
  22. package/docs/antigravity/GETTING-STARTED.md +292 -292
  23. package/docs/antigravity/TROUBLESHOOTING.md +742 -742
  24. package/docs/antigravity/WALKTHROUGH.md +25 -25
  25. package/docs/antigravity/WORKFLOW-TEMPLATES.md +670 -670
  26. package/docs/product/PRD.md +67 -67
  27. package/docs/release-notes/RELEASE_NOTES.md +233 -226
  28. package/docs/web-dashboard.md +175 -175
  29. package/exec.js +49 -49
  30. package/index.js +279 -279
  31. package/install.js +73 -73
  32. package/package.json +4 -4
  33. package/release-wrapper.js +192 -192
  34. package/scripts/build-docs.js +63 -63
  35. package/scripts/extract-release-notes.cjs +78 -0
  36. package/scripts/hello-world.js +1 -1
  37. package/scripts/release.cjs +252 -252
  38. package/scripts/release.js +252 -0
  39. package/scripts/update-release-notes.cjs +178 -178
  40. package/scripts/update-release-notes.js +182 -0
  41. package/server.json +23 -23
  42. package/tailwind.config.js +8 -8
  43. package/tests/build.test.js +83 -83
  44. package/tests/exec.test.js +35 -35
  45. package/tests/handlers.test.js +1058 -1058
  46. package/tests/hello-world.test.js +13 -13
  47. package/tests/mcpRegistry.test.js +65 -65
  48. package/tests/patch-release.test.js +7 -0
  49. package/tests/release-wrapper.test.js +107 -107
  50. package/tests/workflowState.test.js +505 -505
  51. package/tools/definitions.js +332 -332
  52. package/tools/handlers.js +1019 -1019
  53. package/vite.config.js +43 -43
  54. package/vite.web.config.js +23 -23
  55. package/web/README.md +36 -36
  56. package/web/app/docs/page.tsx +202 -202
  57. package/web/app/globals.css +90 -90
  58. package/web/app/layout.tsx +36 -36
  59. package/web/app/page.tsx +15 -15
  60. package/web/components/ApiReference.tsx +20 -20
  61. package/web/components/Features.tsx +61 -61
  62. package/web/components/Footer.tsx +9 -9
  63. package/web/components/Hero.tsx +96 -96
  64. package/web/components/History.tsx +143 -143
  65. package/web/components/Navbar.tsx +64 -64
  66. package/web/components/Terminal.tsx +114 -114
  67. package/web/eslint.config.mjs +18 -18
  68. package/web/lib/db.js +131 -131
  69. package/web/lib/docs.js +73 -73
  70. package/web/netlify.toml +3 -3
  71. package/web/next.config.ts +12 -12
  72. package/web/package-lock.json +6560 -6560
  73. package/web/package.json +28 -28
  74. package/web/postcss.config.mjs +9 -9
  75. package/web/server.js +31 -31
  76. package/web/tailwind.config.ts +19 -19
  77. package/web/tsconfig.json +42 -42
  78. package/workflow-state.js +612 -612
@@ -1,91 +1,91 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
4
-
5
- :root {
6
- --background: #0a0a0f;
7
- --foreground: #ffffff;
8
- }
9
-
10
- body {
11
- color: var(--foreground);
12
- background: var(--background);
13
- font-family: Arial, Helvetica, sans-serif;
14
- }
15
-
16
- @layer utilities {
17
- @keyframes fadeInUp {
18
- 0% {
19
- opacity: 0;
20
- transform: translateY(20px);
21
- }
22
-
23
- 100% {
24
- opacity: 1;
25
- transform: translateY(0px);
26
- }
27
- }
28
-
29
- @keyframes fadeInRight {
30
- 0% {
31
- opacity: 0;
32
- transform: translateY(-50%) translateX(40px);
33
- }
34
-
35
- 100% {
36
- opacity: 1;
37
- transform: translateY(-50%) translateX(0px);
38
- }
39
- }
40
-
41
- @keyframes fadeIn {
42
- 0% {
43
- opacity: 0;
44
- transform: translateX(-10px);
45
- }
46
-
47
- 100% {
48
- opacity: 1;
49
- transform: translateX(0px);
50
- }
51
- }
52
-
53
- .animate-fade-in-up {
54
- animation: fadeInUp 0.8s ease-out forwards;
55
- opacity: 0;
56
- }
57
-
58
- .animate-fade-in-right {
59
- animation: fadeInRight 0.8s ease-out forwards;
60
- opacity: 0;
61
- }
62
-
63
- .terminal-line {
64
- opacity: 0;
65
- display: flex;
66
- }
67
-
68
- .terminal-line.visible {
69
- opacity: 1;
70
- transition: opacity 0.1s;
71
- }
72
-
73
- .typing-cursor::after {
74
- content: '▋';
75
- animation: blink 1s step-end infinite;
76
- margin-left: 4px;
77
- color: #a855f7;
78
- }
79
-
80
- @keyframes blink {
81
-
82
- 0%,
83
- 100% {
84
- opacity: 1;
85
- }
86
-
87
- 50% {
88
- opacity: 0;
89
- }
90
- }
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ :root {
6
+ --background: #0a0a0f;
7
+ --foreground: #ffffff;
8
+ }
9
+
10
+ body {
11
+ color: var(--foreground);
12
+ background: var(--background);
13
+ font-family: Arial, Helvetica, sans-serif;
14
+ }
15
+
16
+ @layer utilities {
17
+ @keyframes fadeInUp {
18
+ 0% {
19
+ opacity: 0;
20
+ transform: translateY(20px);
21
+ }
22
+
23
+ 100% {
24
+ opacity: 1;
25
+ transform: translateY(0px);
26
+ }
27
+ }
28
+
29
+ @keyframes fadeInRight {
30
+ 0% {
31
+ opacity: 0;
32
+ transform: translateY(-50%) translateX(40px);
33
+ }
34
+
35
+ 100% {
36
+ opacity: 1;
37
+ transform: translateY(-50%) translateX(0px);
38
+ }
39
+ }
40
+
41
+ @keyframes fadeIn {
42
+ 0% {
43
+ opacity: 0;
44
+ transform: translateX(-10px);
45
+ }
46
+
47
+ 100% {
48
+ opacity: 1;
49
+ transform: translateX(0px);
50
+ }
51
+ }
52
+
53
+ .animate-fade-in-up {
54
+ animation: fadeInUp 0.8s ease-out forwards;
55
+ opacity: 0;
56
+ }
57
+
58
+ .animate-fade-in-right {
59
+ animation: fadeInRight 0.8s ease-out forwards;
60
+ opacity: 0;
61
+ }
62
+
63
+ .terminal-line {
64
+ opacity: 0;
65
+ display: flex;
66
+ }
67
+
68
+ .terminal-line.visible {
69
+ opacity: 1;
70
+ transition: opacity 0.1s;
71
+ }
72
+
73
+ .typing-cursor::after {
74
+ content: '▋';
75
+ animation: blink 1s step-end infinite;
76
+ margin-left: 4px;
77
+ color: #a855f7;
78
+ }
79
+
80
+ @keyframes blink {
81
+
82
+ 0%,
83
+ 100% {
84
+ opacity: 1;
85
+ }
86
+
87
+ 50% {
88
+ opacity: 0;
89
+ }
90
+ }
91
91
  }
@@ -1,36 +1,36 @@
1
- import type { Metadata } from "next";
2
- import "./globals.css";
3
- import Navbar from "@/components/Navbar";
4
- import Footer from "@/components/Footer";
5
-
6
- export const metadata: Metadata = {
7
- title: "Dev Workflow Dashboard",
8
- description: "Enforce development discipline and best practices",
9
- icons: {
10
- icon: [
11
- { url: "/assets/favicon-16x16.png", sizes: "16x16", type: "image/png" },
12
- { url: "/assets/favicon-32x32.png", sizes: "32x32", type: "image/png" },
13
- { url: "/assets/favicon.ico" },
14
- ],
15
- apple: [
16
- { url: "/assets/apple-touch-icon.png", sizes: "180x180", type: "image/png" },
17
- ],
18
- },
19
- manifest: "/assets/site.webmanifest",
20
- };
21
-
22
- export default function RootLayout({
23
- children,
24
- }: Readonly<{
25
- children: React.ReactNode;
26
- }>) {
27
- return (
28
- <html lang="en" className="scroll-smooth">
29
- <body className="antialiased bg-[#0a0a0f] text-white">
30
- <Navbar />
31
- {children}
32
- <Footer />
33
- </body>
34
- </html>
35
- );
36
- }
1
+ import type { Metadata } from "next";
2
+ import "./globals.css";
3
+ import Navbar from "@/components/Navbar";
4
+ import Footer from "@/components/Footer";
5
+
6
+ export const metadata: Metadata = {
7
+ title: "Dev Workflow Dashboard",
8
+ description: "Enforce development discipline and best practices",
9
+ icons: {
10
+ icon: [
11
+ { url: "/assets/favicon-16x16.png", sizes: "16x16", type: "image/png" },
12
+ { url: "/assets/favicon-32x32.png", sizes: "32x32", type: "image/png" },
13
+ { url: "/assets/favicon.ico" },
14
+ ],
15
+ apple: [
16
+ { url: "/assets/apple-touch-icon.png", sizes: "180x180", type: "image/png" },
17
+ ],
18
+ },
19
+ manifest: "/assets/site.webmanifest",
20
+ };
21
+
22
+ export default function RootLayout({
23
+ children,
24
+ }: Readonly<{
25
+ children: React.ReactNode;
26
+ }>) {
27
+ return (
28
+ <html lang="en" className="scroll-smooth">
29
+ <body className="antialiased bg-[#0a0a0f] text-white">
30
+ <Navbar />
31
+ {children}
32
+ <Footer />
33
+ </body>
34
+ </html>
35
+ );
36
+ }
package/web/app/page.tsx CHANGED
@@ -1,15 +1,15 @@
1
- import Hero from "@/components/Hero";
2
- import Features from "@/components/Features";
3
- import History from "@/components/History";
4
- import ApiReference from "@/components/ApiReference";
5
-
6
- export default function Home() {
7
- return (
8
- <main>
9
- <Hero />
10
- <Features />
11
- <History />
12
- <ApiReference />
13
- </main>
14
- );
15
- }
1
+ import Hero from "@/components/Hero";
2
+ import Features from "@/components/Features";
3
+ import History from "@/components/History";
4
+ import ApiReference from "@/components/ApiReference";
5
+
6
+ export default function Home() {
7
+ return (
8
+ <main>
9
+ <Hero />
10
+ <Features />
11
+ <History />
12
+ <ApiReference />
13
+ </main>
14
+ );
15
+ }
@@ -1,20 +1,20 @@
1
- export default function ApiReference() {
2
- return (
3
- <section id="api" className="py-20 px-4">
4
- <div className="max-w-7xl mx-auto">
5
- <h2 className="text-3xl md:text-4xl font-bold mb-8">API Reference</h2>
6
- <p className="text-gray-400 mb-12">Query workflow data programmatically with our JSON API.</p>
7
- <div className="grid md:grid-cols-2 gap-6">
8
- <div className="p-6 rounded-xl bg-white/5 border border-white/10">
9
- <code className="text-indigo-400 font-mono text-sm">GET /api/history</code>
10
- <p className="text-gray-400 mt-2">Retrieve paginated task history entries.</p>
11
- </div>
12
- <div className="p-6 rounded-xl bg-white/5 border border-white/10">
13
- <code className="text-indigo-400 font-mono text-sm">GET /api/summary</code>
14
- <p className="text-gray-400 mt-2">Get project health stats and recent tasks.</p>
15
- </div>
16
- </div>
17
- </div>
18
- </section>
19
- );
20
- }
1
+ export default function ApiReference() {
2
+ return (
3
+ <section id="api" className="py-20 px-4">
4
+ <div className="max-w-7xl mx-auto">
5
+ <h2 className="text-3xl md:text-4xl font-bold mb-8">API Reference</h2>
6
+ <p className="text-gray-400 mb-12">Query workflow data programmatically with our JSON API.</p>
7
+ <div className="grid md:grid-cols-2 gap-6">
8
+ <div className="p-6 rounded-xl bg-white/5 border border-white/10">
9
+ <code className="text-indigo-400 font-mono text-sm">GET /api/history</code>
10
+ <p className="text-gray-400 mt-2">Retrieve paginated task history entries.</p>
11
+ </div>
12
+ <div className="p-6 rounded-xl bg-white/5 border border-white/10">
13
+ <code className="text-indigo-400 font-mono text-sm">GET /api/summary</code>
14
+ <p className="text-gray-400 mt-2">Get project health stats and recent tasks.</p>
15
+ </div>
16
+ </div>
17
+ </div>
18
+ </section>
19
+ );
20
+ }
@@ -1,61 +1,61 @@
1
- import { ShieldCheck, TestTube, FileText, GitBranch, History, Zap } from "lucide-react";
2
-
3
- export default function Features() {
4
- return (
5
- <section id="features" className="py-20 px-4">
6
- <div className="max-w-7xl mx-auto">
7
- <h2 className="text-3xl md:text-4xl font-bold text-center mb-16">Your Coding Conscience</h2>
8
- <div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
9
- <FeatureCard
10
- icon={<ShieldCheck className="w-6 h-6 text-indigo-400" />}
11
- title="Enforced Discipline"
12
- description="Won't let you skip important steps. Follows a strict, proven development workflow."
13
- bg="bg-indigo-500/20"
14
- />
15
- <FeatureCard
16
- icon={<TestTube className="w-6 h-6 text-purple-400" />}
17
- title="Test-Driven"
18
- description="Blocks commits if tests fail. Encourages writing tests before marking tasks complete."
19
- bg="bg-purple-500/20"
20
- />
21
- <FeatureCard
22
- icon={<FileText className="w-6 h-6 text-emerald-400" />}
23
- title="Documentation"
24
- description="Reminds you to update documentation (README, docs, changelog) for every change."
25
- bg="bg-emerald-500/20"
26
- />
27
- <FeatureCard
28
- icon={<GitBranch className="w-6 h-6 text-orange-400" />}
29
- title="State Tracking"
30
- description="Remembers exactly where you are in the workflow, even across sessions."
31
- bg="bg-orange-500/20"
32
- />
33
- <FeatureCard
34
- icon={<History className="w-6 h-6 text-blue-400" />}
35
- title="Task History"
36
- description="Keeps a detailed log of all completed tasks, commits, and releases."
37
- bg="bg-blue-500/20"
38
- />
39
- <FeatureCard
40
- icon={<Zap className="w-6 h-6 text-pink-400" />}
41
- title="Smart Prompts"
42
- description="Provides quick reminders and guidance on best practices as you work."
43
- bg="bg-pink-500/20"
44
- />
45
- </div>
46
- </div>
47
- </section>
48
- );
49
- }
50
-
51
- function FeatureCard({ icon, title, description, bg }: { icon: React.ReactNode, title: string, description: string, bg: string }) {
52
- return (
53
- <div className="p-6 rounded-xl bg-white/5 border border-white/10 hover:bg-white/10 transition">
54
- <div className={`w-12 h-12 rounded-lg ${bg} flex items-center justify-center mb-4`}>
55
- {icon}
56
- </div>
57
- <h3 className="text-xl font-semibold mb-2">{title}</h3>
58
- <p className="text-gray-400">{description}</p>
59
- </div>
60
- );
61
- }
1
+ import { ShieldCheck, TestTube, FileText, GitBranch, History, Zap } from "lucide-react";
2
+
3
+ export default function Features() {
4
+ return (
5
+ <section id="features" className="py-20 px-4">
6
+ <div className="max-w-7xl mx-auto">
7
+ <h2 className="text-3xl md:text-4xl font-bold text-center mb-16">Your Coding Conscience</h2>
8
+ <div className="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
9
+ <FeatureCard
10
+ icon={<ShieldCheck className="w-6 h-6 text-indigo-400" />}
11
+ title="Enforced Discipline"
12
+ description="Won't let you skip important steps. Follows a strict, proven development workflow."
13
+ bg="bg-indigo-500/20"
14
+ />
15
+ <FeatureCard
16
+ icon={<TestTube className="w-6 h-6 text-purple-400" />}
17
+ title="Test-Driven"
18
+ description="Blocks commits if tests fail. Encourages writing tests before marking tasks complete."
19
+ bg="bg-purple-500/20"
20
+ />
21
+ <FeatureCard
22
+ icon={<FileText className="w-6 h-6 text-emerald-400" />}
23
+ title="Documentation"
24
+ description="Reminds you to update documentation (README, docs, changelog) for every change."
25
+ bg="bg-emerald-500/20"
26
+ />
27
+ <FeatureCard
28
+ icon={<GitBranch className="w-6 h-6 text-orange-400" />}
29
+ title="State Tracking"
30
+ description="Remembers exactly where you are in the workflow, even across sessions."
31
+ bg="bg-orange-500/20"
32
+ />
33
+ <FeatureCard
34
+ icon={<History className="w-6 h-6 text-blue-400" />}
35
+ title="Task History"
36
+ description="Keeps a detailed log of all completed tasks, commits, and releases."
37
+ bg="bg-blue-500/20"
38
+ />
39
+ <FeatureCard
40
+ icon={<Zap className="w-6 h-6 text-pink-400" />}
41
+ title="Smart Prompts"
42
+ description="Provides quick reminders and guidance on best practices as you work."
43
+ bg="bg-pink-500/20"
44
+ />
45
+ </div>
46
+ </div>
47
+ </section>
48
+ );
49
+ }
50
+
51
+ function FeatureCard({ icon, title, description, bg }: { icon: React.ReactNode, title: string, description: string, bg: string }) {
52
+ return (
53
+ <div className="p-6 rounded-xl bg-white/5 border border-white/10 hover:bg-white/10 transition">
54
+ <div className={`w-12 h-12 rounded-lg ${bg} flex items-center justify-center mb-4`}>
55
+ {icon}
56
+ </div>
57
+ <h3 className="text-xl font-semibold mb-2">{title}</h3>
58
+ <p className="text-gray-400">{description}</p>
59
+ </div>
60
+ );
61
+ }
@@ -1,9 +1,9 @@
1
- export default function Footer() {
2
- return (
3
- <footer className="py-12 px-4 border-t border-white/10">
4
- <div className="max-w-7xl mx-auto text-center text-gray-400">
5
- <p>Built with ❤️ for developers who care about quality</p>
6
- </div>
7
- </footer>
8
- );
9
- }
1
+ export default function Footer() {
2
+ return (
3
+ <footer className="py-12 px-4 border-t border-white/10">
4
+ <div className="max-w-7xl mx-auto text-center text-gray-400">
5
+ <p>Built with ❤️ for developers who care about quality</p>
6
+ </div>
7
+ </footer>
8
+ );
9
+ }