devglide 0.1.1
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/LICENSE +21 -0
- package/README.md +338 -0
- package/bin/claude-md-template.js +94 -0
- package/bin/devglide.js +387 -0
- package/package.json +85 -0
- package/pnpm-workspace.yaml +3 -0
- package/src/apps/coder/.turbo/turbo-lint.log +5 -0
- package/src/apps/coder/package.json +16 -0
- package/src/apps/coder/public/favicon.svg +7 -0
- package/src/apps/coder/public/page.css +275 -0
- package/src/apps/coder/public/page.js +528 -0
- package/src/apps/coder/server.js +3 -0
- package/src/apps/documentation/public/page.css +597 -0
- package/src/apps/documentation/public/page.js +609 -0
- package/src/apps/kanban/.turbo/turbo-lint.log +97 -0
- package/src/apps/kanban/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/kanban/package.json +32 -0
- package/src/apps/kanban/public/favicon.svg +7 -0
- package/src/apps/kanban/public/page.css +1010 -0
- package/src/apps/kanban/public/page.js +1730 -0
- package/src/apps/kanban/public/vendor/marked.min.js +6 -0
- package/src/apps/kanban/public/vendor/sortable.min.js +2 -0
- package/src/apps/kanban/src/db.ts +319 -0
- package/src/apps/kanban/src/index.ts +14 -0
- package/src/apps/kanban/src/mcp-helpers.test.ts +88 -0
- package/src/apps/kanban/src/mcp-helpers.ts +60 -0
- package/src/apps/kanban/src/mcp.ts +59 -0
- package/src/apps/kanban/src/routes/attachments.ts +161 -0
- package/src/apps/kanban/src/routes/features.ts +233 -0
- package/src/apps/kanban/src/routes/issues.ts +373 -0
- package/src/apps/kanban/src/tools/feature-tools.ts +164 -0
- package/src/apps/kanban/src/tools/item-tools.ts +307 -0
- package/src/apps/kanban/src/tools/versioned-entry-tools.ts +72 -0
- package/src/apps/kanban/tsconfig.check.json +9 -0
- package/src/apps/kanban/tsconfig.json +9 -0
- package/src/apps/keymap/.turbo/turbo-lint.log +5 -0
- package/src/apps/keymap/package.json +16 -0
- package/src/apps/keymap/public/page.css +275 -0
- package/src/apps/keymap/public/page.js +294 -0
- package/src/apps/keymap/server.js +25 -0
- package/src/apps/log/.turbo/turbo-build.log +5 -0
- package/src/apps/log/.turbo/turbo-lint.log +45 -0
- package/src/apps/log/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/log/node_modules/.bin/tsc +21 -0
- package/src/apps/log/node_modules/.bin/tsserver +21 -0
- package/src/apps/log/node_modules/.bin/tsx +21 -0
- package/src/apps/log/package.json +36 -0
- package/src/apps/log/public/console-sniffer.js +221 -0
- package/src/apps/log/public/favicon.svg +7 -0
- package/src/apps/log/public/page.css +322 -0
- package/src/apps/log/public/page.js +463 -0
- package/src/apps/log/src/index.ts +9 -0
- package/src/apps/log/src/mcp.ts +122 -0
- package/src/apps/log/src/routes/log.ts +333 -0
- package/src/apps/log/src/routes/status.ts +25 -0
- package/src/apps/log/src/server-sniffer.ts +118 -0
- package/src/apps/log/src/services/file-patterns.ts +39 -0
- package/src/apps/log/src/services/file-tailer.ts +228 -0
- package/src/apps/log/src/services/line-parser.ts +94 -0
- package/src/apps/log/src/services/log-writer.ts +39 -0
- package/src/apps/log/tsconfig.json +8 -0
- package/src/apps/prompts/.turbo/turbo-build.log +5 -0
- package/src/apps/prompts/.turbo/turbo-lint.log +24 -0
- package/src/apps/prompts/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/prompts/mcp.ts +175 -0
- package/src/apps/prompts/node_modules/.bin/tsc +21 -0
- package/src/apps/prompts/node_modules/.bin/tsserver +21 -0
- package/src/apps/prompts/node_modules/.bin/tsx +21 -0
- package/src/apps/prompts/package.json +25 -0
- package/src/apps/prompts/public/page.css +315 -0
- package/src/apps/prompts/public/page.js +541 -0
- package/src/apps/prompts/services/prompt-store.ts +212 -0
- package/src/apps/prompts/src/index.ts +9 -0
- package/src/apps/prompts/tsconfig.json +8 -0
- package/src/apps/prompts/types.ts +27 -0
- package/src/apps/shell/.turbo/turbo-build.log +5 -0
- package/src/apps/shell/.turbo/turbo-lint.log +34 -0
- package/src/apps/shell/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/shell/package.json +35 -0
- package/src/apps/shell/public/favicon.svg +7 -0
- package/src/apps/shell/public/page.css +407 -0
- package/src/apps/shell/public/page.js +1577 -0
- package/src/apps/shell/src/index.ts +150 -0
- package/src/apps/shell/src/mcp.ts +398 -0
- package/src/apps/shell/src/shell-types.ts +41 -0
- package/src/apps/shell/tsconfig.json +8 -0
- package/src/apps/test/.turbo/turbo-build.log +5 -0
- package/src/apps/test/.turbo/turbo-lint.log +27 -0
- package/src/apps/test/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/test/node_modules/.bin/tsc +21 -0
- package/src/apps/test/node_modules/.bin/tsserver +21 -0
- package/src/apps/test/node_modules/.bin/tsx +21 -0
- package/src/apps/test/node_modules/.bin/uuid +21 -0
- package/src/apps/test/package.json +35 -0
- package/src/apps/test/public/favicon.svg +7 -0
- package/src/apps/test/public/page.css +499 -0
- package/src/apps/test/public/page.js +417 -0
- package/src/apps/test/public/scenario-runner.js +450 -0
- package/src/apps/test/src/index.ts +9 -0
- package/src/apps/test/src/mcp.ts +192 -0
- package/src/apps/test/src/routes/trigger.ts +285 -0
- package/src/apps/test/src/services/scenario-broadcaster.ts +60 -0
- package/src/apps/test/src/services/scenario-manager.ts +361 -0
- package/src/apps/test/src/services/scenario-store.ts +145 -0
- package/src/apps/test/tsconfig.json +8 -0
- package/src/apps/vocabulary/.turbo/turbo-build.log +5 -0
- package/src/apps/vocabulary/.turbo/turbo-lint.log +25 -0
- package/src/apps/vocabulary/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/vocabulary/mcp.ts +173 -0
- package/src/apps/vocabulary/node_modules/.bin/tsc +21 -0
- package/src/apps/vocabulary/node_modules/.bin/tsserver +21 -0
- package/src/apps/vocabulary/node_modules/.bin/tsx +21 -0
- package/src/apps/vocabulary/package.json +25 -0
- package/src/apps/vocabulary/public/page.css +247 -0
- package/src/apps/vocabulary/public/page.js +444 -0
- package/src/apps/vocabulary/services/vocabulary-store.ts +179 -0
- package/src/apps/vocabulary/src/index.ts +10 -0
- package/src/apps/vocabulary/tsconfig.json +8 -0
- package/src/apps/vocabulary/types.ts +22 -0
- package/src/apps/voice/.turbo/turbo-build.log +5 -0
- package/src/apps/voice/.turbo/turbo-lint.log +43 -0
- package/src/apps/voice/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/voice/node_modules/.bin/openai +21 -0
- package/src/apps/voice/node_modules/.bin/tsc +21 -0
- package/src/apps/voice/node_modules/.bin/tsserver +21 -0
- package/src/apps/voice/node_modules/.bin/tsx +21 -0
- package/src/apps/voice/package.json +35 -0
- package/src/apps/voice/public/favicon.svg +7 -0
- package/src/apps/voice/public/page.css +388 -0
- package/src/apps/voice/public/page.js +718 -0
- package/src/apps/voice/src/index.ts +10 -0
- package/src/apps/voice/src/mcp.ts +70 -0
- package/src/apps/voice/src/providers/index.ts +85 -0
- package/src/apps/voice/src/providers/openai-compatible.ts +94 -0
- package/src/apps/voice/src/providers/types.ts +27 -0
- package/src/apps/voice/src/routes/config.ts +118 -0
- package/src/apps/voice/src/routes/transcribe.ts +90 -0
- package/src/apps/voice/src/services/config-store.ts +129 -0
- package/src/apps/voice/src/services/stats.ts +108 -0
- package/src/apps/voice/src/transcribe.ts +11 -0
- package/src/apps/voice/src/utils/mime.ts +16 -0
- package/src/apps/voice/tsconfig.json +8 -0
- package/src/apps/workflow/.turbo/turbo-build.log +5 -0
- package/src/apps/workflow/.turbo/turbo-lint.log +96 -0
- package/src/apps/workflow/.turbo/turbo-typecheck.log +5 -0
- package/src/apps/workflow/engine/executors/decision-executor.ts +87 -0
- package/src/apps/workflow/engine/executors/file-executor.ts +90 -0
- package/src/apps/workflow/engine/executors/git-executor.ts +137 -0
- package/src/apps/workflow/engine/executors/http-executor.ts +65 -0
- package/src/apps/workflow/engine/executors/index.ts +28 -0
- package/src/apps/workflow/engine/executors/kanban-executor.ts +154 -0
- package/src/apps/workflow/engine/executors/llm-executor.ts +46 -0
- package/src/apps/workflow/engine/executors/log-executor.ts +62 -0
- package/src/apps/workflow/engine/executors/loop-executor.ts +14 -0
- package/src/apps/workflow/engine/executors/shell-executor.ts +107 -0
- package/src/apps/workflow/engine/executors/sub-workflow-executor.ts +61 -0
- package/src/apps/workflow/engine/executors/test-executor.ts +73 -0
- package/src/apps/workflow/engine/executors/trigger-executor.ts +39 -0
- package/src/apps/workflow/engine/expression-evaluator.ts +117 -0
- package/src/apps/workflow/engine/graph-runner.ts +438 -0
- package/src/apps/workflow/engine/node-executor.ts +104 -0
- package/src/apps/workflow/engine/node-registry.ts +15 -0
- package/src/apps/workflow/engine/variable-resolver.ts +109 -0
- package/src/apps/workflow/mcp.ts +223 -0
- package/src/apps/workflow/node_modules/.bin/tsc +21 -0
- package/src/apps/workflow/node_modules/.bin/tsserver +21 -0
- package/src/apps/workflow/node_modules/.bin/tsx +21 -0
- package/src/apps/workflow/package.json +25 -0
- package/src/apps/workflow/public/editor/canvas.js +366 -0
- package/src/apps/workflow/public/editor/drag-manager.js +326 -0
- package/src/apps/workflow/public/editor/edge-renderer.js +235 -0
- package/src/apps/workflow/public/editor/history-manager.js +147 -0
- package/src/apps/workflow/public/editor/layout-engine.js +159 -0
- package/src/apps/workflow/public/editor/node-renderer.js +199 -0
- package/src/apps/workflow/public/editor/selection-manager.js +193 -0
- package/src/apps/workflow/public/favicon.svg +7 -0
- package/src/apps/workflow/public/models/node-types.js +300 -0
- package/src/apps/workflow/public/models/workflow-model.js +257 -0
- package/src/apps/workflow/public/page.css +406 -0
- package/src/apps/workflow/public/page.js +658 -0
- package/src/apps/workflow/public/panels/inspector.js +360 -0
- package/src/apps/workflow/public/panels/palette.js +106 -0
- package/src/apps/workflow/public/panels/run-view.js +275 -0
- package/src/apps/workflow/public/panels/toolbar.js +232 -0
- package/src/apps/workflow/public/panels/workflow-list.js +237 -0
- package/src/apps/workflow/public/state/store.js +47 -0
- package/src/apps/workflow/services/custom-node-loader.ts +48 -0
- package/src/apps/workflow/services/legacy-converter.ts +72 -0
- package/src/apps/workflow/services/run-manager.ts +190 -0
- package/src/apps/workflow/services/workflow-store.ts +424 -0
- package/src/apps/workflow/services/workflow-validator.test.ts +103 -0
- package/src/apps/workflow/services/workflow-validator.ts +98 -0
- package/src/apps/workflow/src/index.ts +10 -0
- package/src/apps/workflow/templates/ci-pipeline.json +18 -0
- package/src/apps/workflow/templates/code-review.json +22 -0
- package/src/apps/workflow/templates/kanban-testing.json +24 -0
- package/src/apps/workflow/tsconfig.json +8 -0
- package/src/apps/workflow/types.ts +268 -0
- package/src/packages/auth-middleware.ts +14 -0
- package/src/packages/design-tokens/.turbo/turbo-build.log +10 -0
- package/src/packages/design-tokens/STYLEGUIDE.md +414 -0
- package/src/packages/design-tokens/build.js +413 -0
- package/src/packages/design-tokens/demo/index.html +1367 -0
- package/src/packages/design-tokens/demo/proposition-a.html +717 -0
- package/src/packages/design-tokens/demo/proposition-b.html +1239 -0
- package/src/packages/design-tokens/demo/proposition-c.html +1049 -0
- package/src/packages/design-tokens/dist/tailwind-preset.js +115 -0
- package/src/packages/design-tokens/dist/tokens.css +345 -0
- package/src/packages/design-tokens/dist/tokens.d.ts +229 -0
- package/src/packages/design-tokens/dist/tokens.js +386 -0
- package/src/packages/design-tokens/package.json +25 -0
- package/src/packages/design-tokens/tokens.json +228 -0
- package/src/packages/devtools-middleware.ts +22 -0
- package/src/packages/eslint-config/index.js +63 -0
- package/src/packages/eslint-config/node_modules/.bin/eslint +21 -0
- package/src/packages/eslint-config/package.json +18 -0
- package/src/packages/json-file-store.ts +232 -0
- package/src/packages/mcp-utils/.turbo/turbo-build.log +5 -0
- package/src/packages/mcp-utils/dist/index.d.ts +33 -0
- package/src/packages/mcp-utils/dist/index.d.ts.map +1 -0
- package/src/packages/mcp-utils/dist/index.js +126 -0
- package/src/packages/mcp-utils/dist/index.js.map +1 -0
- package/src/packages/mcp-utils/node_modules/.bin/tsc +21 -0
- package/src/packages/mcp-utils/node_modules/.bin/tsserver +21 -0
- package/src/packages/mcp-utils/package.json +32 -0
- package/src/packages/mcp-utils/src/index.ts +171 -0
- package/src/packages/mcp-utils/tsconfig.json +9 -0
- package/src/packages/paths.ts +18 -0
- package/src/packages/project-context/index.js +55 -0
- package/src/packages/project-context/package.json +13 -0
- package/src/packages/project-store.ts +127 -0
- package/src/packages/server-sniffer.ts +132 -0
- package/src/packages/shared-assets/favicon.svg +7 -0
- package/src/packages/shared-assets/keymap-registry.js +512 -0
- package/src/packages/shared-assets/logo.svg +6 -0
- package/src/packages/shared-assets/package.json +11 -0
- package/src/packages/shared-assets/ui-utils.js +48 -0
- package/src/packages/shared-assets/voice-widget.d.ts +37 -0
- package/src/packages/shared-assets/voice-widget.js +695 -0
- package/src/packages/shared-types/.turbo/turbo-build.log +5 -0
- package/src/packages/shared-types/dist/index.d.ts +39 -0
- package/src/packages/shared-types/dist/index.d.ts.map +1 -0
- package/src/packages/shared-types/node_modules/.bin/tsc +21 -0
- package/src/packages/shared-types/node_modules/.bin/tsserver +21 -0
- package/src/packages/shared-types/package.json +25 -0
- package/src/packages/shared-types/src/index.ts +41 -0
- package/src/packages/shared-types/tsconfig.json +11 -0
- package/src/packages/tsconfig/base.json +15 -0
- package/src/packages/tsconfig/next.json +14 -0
- package/src/packages/tsconfig/node.json +11 -0
- package/src/packages/tsconfig/package.json +10 -0
- package/turbo.json +25 -0
|
@@ -0,0 +1,609 @@
|
|
|
1
|
+
// ── Documentation App — Product Documentation ───────────────────────
|
|
2
|
+
// Static product docs with multiple views.
|
|
3
|
+
// ES module: mount(container, ctx), unmount(container), onProjectChange(project).
|
|
4
|
+
|
|
5
|
+
let _container = null;
|
|
6
|
+
let _activeView = 'home';
|
|
7
|
+
let _hasProject = false;
|
|
8
|
+
|
|
9
|
+
// ── Onboarding banner (shown when no project is active) ─────────────
|
|
10
|
+
|
|
11
|
+
const ONBOARDING_HTML = `
|
|
12
|
+
<div class="dc-onboarding">
|
|
13
|
+
<div class="dc-onboarding-header">
|
|
14
|
+
<div class="dc-onboarding-icon">\u2192</div>
|
|
15
|
+
<div>
|
|
16
|
+
<h2 class="dc-onboarding-title">Welcome to devglide</h2>
|
|
17
|
+
<p class="dc-onboarding-subtitle">Create a project to get started</p>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
<p class="dc-onboarding-desc">
|
|
21
|
+
Project-scoped apps (Kanban, Shell, Test, Workflow, and more) are disabled
|
|
22
|
+
until you select a project. Click the <strong>project selector</strong> in
|
|
23
|
+
the sidebar to create or activate one.
|
|
24
|
+
</p>
|
|
25
|
+
<div class="dc-onboarding-steps">
|
|
26
|
+
<div class="dc-onboarding-step">
|
|
27
|
+
<span class="dc-onboarding-step-num">1</span>
|
|
28
|
+
<div>
|
|
29
|
+
<strong>Open the project selector</strong>
|
|
30
|
+
<p>Click the dropdown at the top of the sidebar (shows "No project")</p>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
<div class="dc-onboarding-step">
|
|
34
|
+
<span class="dc-onboarding-step-num">2</span>
|
|
35
|
+
<div>
|
|
36
|
+
<strong>Add a project</strong>
|
|
37
|
+
<p>Click "+ Add Project", give it a name, and browse to its folder</p>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
<div class="dc-onboarding-step">
|
|
41
|
+
<span class="dc-onboarding-step-num">3</span>
|
|
42
|
+
<div>
|
|
43
|
+
<strong>Start building</strong>
|
|
44
|
+
<p>All 8 project apps unlock — create tasks, run tests, automate workflows</p>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
`;
|
|
50
|
+
|
|
51
|
+
function updateOnboardingBanner() {
|
|
52
|
+
if (!_container) return;
|
|
53
|
+
const existing = _container.querySelector('.dc-onboarding');
|
|
54
|
+
const content = _container.querySelector('#dc-view-content');
|
|
55
|
+
if (!content) return;
|
|
56
|
+
|
|
57
|
+
if (_hasProject && existing) {
|
|
58
|
+
existing.remove();
|
|
59
|
+
} else if (!_hasProject && !existing) {
|
|
60
|
+
content.insertAdjacentHTML('afterbegin', ONBOARDING_HTML);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// ── View: Home ──────────────────────────────────────────────────────
|
|
65
|
+
|
|
66
|
+
const HOME_HTML = `
|
|
67
|
+
<!-- Hero -->
|
|
68
|
+
<section class="dc-hero">
|
|
69
|
+
<div class="dc-hero-badge">Open Source</div>
|
|
70
|
+
<h1 class="dc-hero-title">devglide</h1>
|
|
71
|
+
<p class="dc-hero-tagline">AI-native development environment for Claude Code</p>
|
|
72
|
+
<p class="dc-hero-desc">
|
|
73
|
+
A modular toolkit that gives your AI coding assistant project management,
|
|
74
|
+
browser testing, workflow automation, and more — all through
|
|
75
|
+
<strong>MCP tools</strong> and a unified dashboard.
|
|
76
|
+
</p>
|
|
77
|
+
<div class="dc-hero-stats">
|
|
78
|
+
<div class="dc-stat"><span class="dc-stat-value">10</span><span class="dc-stat-label">App Modules</span></div>
|
|
79
|
+
<div class="dc-stat"><span class="dc-stat-value">51</span><span class="dc-stat-label">MCP Tools</span></div>
|
|
80
|
+
<div class="dc-stat"><span class="dc-stat-value">8</span><span class="dc-stat-label">MCP Servers</span></div>
|
|
81
|
+
</div>
|
|
82
|
+
</section>
|
|
83
|
+
|
|
84
|
+
<!-- What is devglide -->
|
|
85
|
+
<section class="dc-section">
|
|
86
|
+
<h2 class="dc-section-title">What is devglide?</h2>
|
|
87
|
+
<p class="dc-section-desc">
|
|
88
|
+
Claude Code is powerful on its own, but it operates in a text-only terminal.
|
|
89
|
+
devglide gives it <strong>eyes, hands, and memory</strong> — a browser dashboard
|
|
90
|
+
with visual tools that Claude controls through MCP.
|
|
91
|
+
</p>
|
|
92
|
+
<div class="dc-pillars">
|
|
93
|
+
<div class="dc-pillar">
|
|
94
|
+
<div class="dc-pillar-icon">\u25A6</div>
|
|
95
|
+
<h3>Plan</h3>
|
|
96
|
+
<p>Kanban boards with features, tasks, bugs, work logs, and review feedback. Claude picks up tasks and reports progress.</p>
|
|
97
|
+
</div>
|
|
98
|
+
<div class="dc-pillar">
|
|
99
|
+
<div class="dc-pillar-icon">\u2713</div>
|
|
100
|
+
<h3>Test</h3>
|
|
101
|
+
<p>Browser automation that clicks, types, and asserts against your live UI. Build regression suites that run before every commit.</p>
|
|
102
|
+
</div>
|
|
103
|
+
<div class="dc-pillar">
|
|
104
|
+
<div class="dc-pillar-icon">\u2942</div>
|
|
105
|
+
<h3>Automate</h3>
|
|
106
|
+
<p>Visual DAG workflows with decisions, loops, and integrations. Define processes once, trigger them by prompt or event.</p>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
</section>
|
|
110
|
+
|
|
111
|
+
<!-- Module Grid -->
|
|
112
|
+
<section class="dc-section">
|
|
113
|
+
<h2 class="dc-section-title">10 Integrated Modules</h2>
|
|
114
|
+
<p class="dc-section-desc">Every module exposes MCP tools that Claude Code calls directly. The dashboard shows the same data visually.</p>
|
|
115
|
+
<div class="dc-modules">
|
|
116
|
+
<div class="dc-module"><div class="dc-module-icon">\u25A6</div><h3>Kanban</h3><p>Features, tasks, bugs, columns, work logs, review feedback. 14 MCP tools.</p></div>
|
|
117
|
+
<div class="dc-module"><div class="dc-module-icon">\u2713</div><h3>Test</h3><p>Browser UI automation with saved scenarios and regression suites. 7 MCP tools.</p></div>
|
|
118
|
+
<div class="dc-module"><div class="dc-module-icon">\u2942</div><h3>Workflow</h3><p>Visual DAG builder with 12 node types, prompt matching, compiled instructions. 6 tools.</p></div>
|
|
119
|
+
<div class="dc-module"><div class="dc-module-icon">\u276F</div><h3>Shell</h3><p>Terminal multiplexer with named panes, scrollback capture, command execution. 5 tools.</p></div>
|
|
120
|
+
<div class="dc-module"><div class="dc-module-icon">\u2261</div><h3>Log</h3><p>Real-time browser console capture with JSONL session storage. 4 MCP tools.</p></div>
|
|
121
|
+
<div class="dc-module"><div class="dc-module-icon">\u2039\u203A</div><h3>Coder</h3><p>In-browser code editor with file tree, tabs, and live preview.</p></div>
|
|
122
|
+
<div class="dc-module"><div class="dc-module-icon">\u270E</div><h3>Prompts</h3><p>Reusable prompt templates with variables, categories, and ratings. 7 MCP tools.</p></div>
|
|
123
|
+
<div class="dc-module"><div class="dc-module-icon">\u2338</div><h3>Vocabulary</h3><p>Domain-specific term dictionary with aliases and context injection. 6 MCP tools.</p></div>
|
|
124
|
+
<div class="dc-module"><div class="dc-module-icon">\u25C9</div><h3>Voice</h3><p>Speech-to-text transcription for hands-free interaction. 2 MCP tools.</p></div>
|
|
125
|
+
<div class="dc-module"><div class="dc-module-icon">\u2328</div><h3>Keymap</h3><p>Configurable keyboard shortcuts for dashboard navigation and actions.</p></div>
|
|
126
|
+
</div>
|
|
127
|
+
</section>
|
|
128
|
+
|
|
129
|
+
<!-- How It Works -->
|
|
130
|
+
<section class="dc-section dc-section-alt">
|
|
131
|
+
<h2 class="dc-section-title">How It Works</h2>
|
|
132
|
+
<div class="dc-steps">
|
|
133
|
+
<div class="dc-step">
|
|
134
|
+
<div class="dc-step-num">1</div>
|
|
135
|
+
<h3>Install & Start</h3>
|
|
136
|
+
<p>Install devglide globally or clone the repo. Run <code>devglide start</code> from your project directory.</p>
|
|
137
|
+
</div>
|
|
138
|
+
<div class="dc-step-arrow">\u2192</div>
|
|
139
|
+
<div class="dc-step">
|
|
140
|
+
<div class="dc-step-num">2</div>
|
|
141
|
+
<h3>Connect Claude Code</h3>
|
|
142
|
+
<p>devglide writes a <code>.mcp.json</code> file that Claude Code auto-discovers. All 51 MCP tools become available.</p>
|
|
143
|
+
</div>
|
|
144
|
+
<div class="dc-step-arrow">\u2192</div>
|
|
145
|
+
<div class="dc-step">
|
|
146
|
+
<div class="dc-step-num">3</div>
|
|
147
|
+
<h3>Build Together</h3>
|
|
148
|
+
<p>Claude manages tasks, runs tests, executes commands, and follows workflows — you see everything live.</p>
|
|
149
|
+
</div>
|
|
150
|
+
</div>
|
|
151
|
+
</section>
|
|
152
|
+
|
|
153
|
+
<!-- Footer -->
|
|
154
|
+
<footer class="dc-footer">
|
|
155
|
+
<p>Built with Claude Code · Powered by MCP · Open Source</p>
|
|
156
|
+
</footer>
|
|
157
|
+
`;
|
|
158
|
+
|
|
159
|
+
// ── View: Getting Started ───────────────────────────────────────────
|
|
160
|
+
|
|
161
|
+
const GETTING_STARTED_HTML = `
|
|
162
|
+
<section class="dc-content">
|
|
163
|
+
<h1 class="dc-content-title">Getting Started</h1>
|
|
164
|
+
<p class="dc-content-lead">Get devglide running and connected to Claude Code in under 5 minutes.</p>
|
|
165
|
+
|
|
166
|
+
<div class="dc-card">
|
|
167
|
+
<h2>Prerequisites</h2>
|
|
168
|
+
<ul class="dc-list">
|
|
169
|
+
<li><strong>Node.js</strong> 18 or later</li>
|
|
170
|
+
<li><strong>Claude Code</strong> CLI installed and configured</li>
|
|
171
|
+
<li>A modern browser (Chrome, Firefox, Edge)</li>
|
|
172
|
+
</ul>
|
|
173
|
+
</div>
|
|
174
|
+
|
|
175
|
+
<div class="dc-card">
|
|
176
|
+
<h2>Installation</h2>
|
|
177
|
+
<p>Install globally from npm:</p>
|
|
178
|
+
<div class="dc-codeblock"><code>pnpm install -g devglide</code></div>
|
|
179
|
+
<p>Or clone the repository:</p>
|
|
180
|
+
<div class="dc-codeblock"><code>git clone https://github.com/DannyNs/devglide.git<br>cd devglide<br>pnpm install<br>pnpm build</code></div>
|
|
181
|
+
<p><code>pnpm build</code> is required to compile design tokens and shared packages.</p>
|
|
182
|
+
</div>
|
|
183
|
+
|
|
184
|
+
<div class="dc-card">
|
|
185
|
+
<h2>Starting the Server</h2>
|
|
186
|
+
<p>Launch devglide from your project directory:</p>
|
|
187
|
+
<div class="dc-codeblock"><code>devglide start</code></div>
|
|
188
|
+
<p>This starts the HTTP server on port 3000 and opens the dashboard in your browser.</p>
|
|
189
|
+
</div>
|
|
190
|
+
|
|
191
|
+
<div class="dc-card">
|
|
192
|
+
<h2>Connecting to Claude Code</h2>
|
|
193
|
+
<p>devglide writes a <code>.mcp.json</code> in your project root. Claude Code auto-discovers it and all 51 MCP tools become available immediately. No configuration needed.</p>
|
|
194
|
+
<p>Once connected, Claude Code can:</p>
|
|
195
|
+
<ul class="dc-list">
|
|
196
|
+
<li>Manage tasks and features on the <strong>Kanban</strong> board</li>
|
|
197
|
+
<li>Run <strong>browser automation tests</strong> against your UI</li>
|
|
198
|
+
<li>Execute <strong>shell commands</strong> in managed terminal panes</li>
|
|
199
|
+
<li>Build and run <strong>workflows</strong> (multi-step DAG automations)</li>
|
|
200
|
+
<li>Capture and read <strong>browser console logs</strong></li>
|
|
201
|
+
<li>Use <strong>voice transcription</strong> for hands-free interaction</li>
|
|
202
|
+
<li>Look up <strong>domain vocabulary</strong> for project-specific terminology</li>
|
|
203
|
+
<li>Store and render <strong>reusable prompt templates</strong></li>
|
|
204
|
+
</ul>
|
|
205
|
+
</div>
|
|
206
|
+
|
|
207
|
+
<div class="dc-card">
|
|
208
|
+
<h2>Creating Your First Project</h2>
|
|
209
|
+
<div class="dc-numbered-steps">
|
|
210
|
+
<div class="dc-ns"><span class="dc-ns-num">1</span><p>Open the dashboard at <code>http://localhost:3000</code></p></div>
|
|
211
|
+
<div class="dc-ns"><span class="dc-ns-num">2</span><p>Click the <strong>project selector</strong> in the sidebar header</p></div>
|
|
212
|
+
<div class="dc-ns"><span class="dc-ns-num">3</span><p>Select <strong>New Project</strong> and give it a name</p></div>
|
|
213
|
+
<div class="dc-ns"><span class="dc-ns-num">4</span><p>The sidebar now shows project-scoped apps (Kanban, Log, Test, etc.)</p></div>
|
|
214
|
+
</div>
|
|
215
|
+
</div>
|
|
216
|
+
|
|
217
|
+
<div class="dc-card">
|
|
218
|
+
<h2>Your First Kanban Board</h2>
|
|
219
|
+
<div class="dc-numbered-steps">
|
|
220
|
+
<div class="dc-ns"><span class="dc-ns-num">1</span><p>Click <strong>Kanban</strong> in the sidebar</p></div>
|
|
221
|
+
<div class="dc-ns"><span class="dc-ns-num">2</span><p>Click <strong>+ New Feature</strong> to create a feature board</p></div>
|
|
222
|
+
<div class="dc-ns"><span class="dc-ns-num">3</span><p>Each feature gets columns: Backlog, Todo, In Progress, In Review, Testing, Done</p></div>
|
|
223
|
+
<div class="dc-ns"><span class="dc-ns-num">4</span><p>Add tasks with priorities, labels, and due dates</p></div>
|
|
224
|
+
</div>
|
|
225
|
+
</div>
|
|
226
|
+
|
|
227
|
+
<div class="dc-card">
|
|
228
|
+
<h2>Your First Test Scenario</h2>
|
|
229
|
+
<div class="dc-numbered-steps">
|
|
230
|
+
<div class="dc-ns"><span class="dc-ns-num">1</span><p>Click <strong>Test</strong> in the sidebar</p></div>
|
|
231
|
+
<div class="dc-ns"><span class="dc-ns-num">2</span><p>The test runner connects to your browser via a lightweight devtools script</p></div>
|
|
232
|
+
<div class="dc-ns"><span class="dc-ns-num">3</span><p>Write scenarios with commands: <code>click</code>, <code>waitFor</code>, <code>assertText</code>, <code>assertExists</code></p></div>
|
|
233
|
+
<div class="dc-ns"><span class="dc-ns-num">4</span><p>Save scenarios to build a regression suite that runs before every commit</p></div>
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
</section>
|
|
237
|
+
`;
|
|
238
|
+
|
|
239
|
+
// ── View: Modules ───────────────────────────────────────────────────
|
|
240
|
+
|
|
241
|
+
const MODULES_HTML = `
|
|
242
|
+
<section class="dc-content">
|
|
243
|
+
<h1 class="dc-content-title">Modules</h1>
|
|
244
|
+
<p class="dc-content-lead">Deep dive into each of devglide's 10 integrated modules.</p>
|
|
245
|
+
|
|
246
|
+
<div class="dc-card" id="mod-kanban">
|
|
247
|
+
<div class="dc-card-header"><span class="dc-card-icon">\u25A6</span><h2>Kanban</h2><span class="dc-tool-count">14 tools</span></div>
|
|
248
|
+
<p>Full project management with features, columns, tasks, bugs, work logs, and review feedback.</p>
|
|
249
|
+
<h3>Key Concepts</h3>
|
|
250
|
+
<ul class="dc-list">
|
|
251
|
+
<li><strong>Features</strong> — Top-level containers representing product initiatives. Each gets its own board.</li>
|
|
252
|
+
<li><strong>Items</strong> — Tasks or bugs with priority (LOW/MEDIUM/HIGH/URGENT), labels, and due dates.</li>
|
|
253
|
+
<li><strong>Columns</strong> — Workflow stages: Backlog \u2192 Todo \u2192 In Progress \u2192 In Review \u2192 Testing \u2192 Done.</li>
|
|
254
|
+
<li><strong>Work Log</strong> — Append-only versioned log of what was done on a task.</li>
|
|
255
|
+
<li><strong>Review Feedback</strong> — Append-only versioned notes from reviews.</li>
|
|
256
|
+
</ul>
|
|
257
|
+
<h3>MCP Tools</h3>
|
|
258
|
+
<p class="dc-tools-list">kanban_list_features, kanban_create_feature, kanban_get_feature, kanban_update_feature, kanban_delete_feature, kanban_list_items, kanban_create_item, kanban_get_item, kanban_update_item, kanban_move_item, kanban_delete_item, kanban_append_work_log, kanban_get_work_log, kanban_append_review</p>
|
|
259
|
+
</div>
|
|
260
|
+
|
|
261
|
+
<div class="dc-card" id="mod-test">
|
|
262
|
+
<div class="dc-card-header"><span class="dc-card-icon">\u2713</span><h2>Test</h2><span class="dc-tool-count">7 tools</span></div>
|
|
263
|
+
<p>Browser UI automation test runner with saved scenarios and regression suites.</p>
|
|
264
|
+
<h3>Key Concepts</h3>
|
|
265
|
+
<ul class="dc-list">
|
|
266
|
+
<li><strong>Scenarios</strong> — Named sequences of browser automation steps targeting a specific app.</li>
|
|
267
|
+
<li><strong>Commands</strong> — click, type, waitFor, waitForHidden, assertExists, assertText, navigate, wait, select, dblclick.</li>
|
|
268
|
+
<li><strong>Targets</strong> — Which browser tab runs the scenario (matched by app name or path).</li>
|
|
269
|
+
<li><strong>Results</strong> — Pass/fail status with failed step index, error message, and duration.</li>
|
|
270
|
+
</ul>
|
|
271
|
+
<h3>Writing Effective Scenarios</h3>
|
|
272
|
+
<ul class="dc-list">
|
|
273
|
+
<li>Use <code>waitFor</code> with timeouts before interacting with async-loaded elements.</li>
|
|
274
|
+
<li>Prefer <code>click</code> on real UI elements over <code>navigate</code> for realistic user flow testing.</li>
|
|
275
|
+
<li>Use <code>assertText</code> with <code>contains: true</code> for partial text matching.</li>
|
|
276
|
+
<li>Keep scenarios focused on one feature path — smaller scenarios are easier to debug.</li>
|
|
277
|
+
</ul>
|
|
278
|
+
<h3>MCP Tools</h3>
|
|
279
|
+
<p class="dc-tools-list">test_commands, test_run_scenario, test_save_scenario, test_list_saved, test_run_saved, test_delete_saved, test_get_result</p>
|
|
280
|
+
</div>
|
|
281
|
+
|
|
282
|
+
<div class="dc-card" id="mod-workflow">
|
|
283
|
+
<div class="dc-card-header"><span class="dc-card-icon">\u2942</span><h2>Workflow</h2><span class="dc-tool-count">6 tools</span></div>
|
|
284
|
+
<p>Visual DAG workflow builder for multi-step automations with decisions, loops, and integrations.</p>
|
|
285
|
+
<h3>Node Types</h3>
|
|
286
|
+
<div class="dc-tag-grid">
|
|
287
|
+
<span class="dc-tag">trigger</span><span class="dc-tag">action:shell</span><span class="dc-tag">action:kanban</span>
|
|
288
|
+
<span class="dc-tag">action:git</span><span class="dc-tag">action:test</span><span class="dc-tag">action:log</span>
|
|
289
|
+
<span class="dc-tag">action:file</span><span class="dc-tag">action:llm</span><span class="dc-tag">action:http</span>
|
|
290
|
+
<span class="dc-tag">decision</span><span class="dc-tag">loop</span><span class="dc-tag">sub-workflow</span>
|
|
291
|
+
</div>
|
|
292
|
+
<h3>How Matching Works</h3>
|
|
293
|
+
<p>When Claude Code receives a prompt, it calls <code>workflow_match</code> to check if any enabled workflow applies. Matching workflows return compiled step-by-step instructions that Claude follows.</p>
|
|
294
|
+
<h3>MCP Tools</h3>
|
|
295
|
+
<p class="dc-tools-list">workflow_list, workflow_get, workflow_create, workflow_get_instructions, workflow_match, workflow_toggle</p>
|
|
296
|
+
</div>
|
|
297
|
+
|
|
298
|
+
<div class="dc-card" id="mod-shell">
|
|
299
|
+
<div class="dc-card-header"><span class="dc-card-icon">\u276F</span><h2>Shell</h2><span class="dc-tool-count">5 tools</span></div>
|
|
300
|
+
<p>Terminal multiplexer with named panes, scrollback capture, and MCP command execution.</p>
|
|
301
|
+
<h3>Key Concepts</h3>
|
|
302
|
+
<ul class="dc-list">
|
|
303
|
+
<li><strong>Panes</strong> — Independent terminal sessions, each running a shell process.</li>
|
|
304
|
+
<li><strong>Scrollback</strong> — Captured output buffer that MCP tools can read.</li>
|
|
305
|
+
<li><strong>CWD</strong> — Each pane tracks its current working directory.</li>
|
|
306
|
+
</ul>
|
|
307
|
+
<p>Claude creates panes to start dev servers, run tests, and execute git operations concurrently.</p>
|
|
308
|
+
<h3>MCP Tools</h3>
|
|
309
|
+
<p class="dc-tools-list">shell_list_panes, shell_create_pane, shell_run_command, shell_get_scrollback, shell_close_pane</p>
|
|
310
|
+
</div>
|
|
311
|
+
|
|
312
|
+
<div class="dc-card" id="mod-log">
|
|
313
|
+
<div class="dc-card-header"><span class="dc-card-icon">\u2261</span><h2>Log</h2><span class="dc-tool-count">4 tools</span></div>
|
|
314
|
+
<p>Real-time browser console capture — monitor logs, errors, and network activity.</p>
|
|
315
|
+
<h3>Key Concepts</h3>
|
|
316
|
+
<ul class="dc-list">
|
|
317
|
+
<li><strong>Sessions</strong> — Each browser tab gets its own log session identified by target path.</li>
|
|
318
|
+
<li><strong>JSONL files</strong> — Logs stored as newline-delimited JSON for efficient streaming.</li>
|
|
319
|
+
<li><strong>Console sniffer</strong> — The <code>__devtools.js</code> script captures browser output.</li>
|
|
320
|
+
</ul>
|
|
321
|
+
<h3>MCP Tools</h3>
|
|
322
|
+
<p class="dc-tools-list">log_read, log_write, log_clear, log_clear_all</p>
|
|
323
|
+
</div>
|
|
324
|
+
|
|
325
|
+
<div class="dc-card" id="mod-prompts">
|
|
326
|
+
<div class="dc-card-header"><span class="dc-card-icon">\u270E</span><h2>Prompts</h2><span class="dc-tool-count">7 tools</span></div>
|
|
327
|
+
<p>Reusable prompt template library with variables, categories, and quality ratings.</p>
|
|
328
|
+
<h3>Key Concepts</h3>
|
|
329
|
+
<ul class="dc-list">
|
|
330
|
+
<li><strong>Templates</strong> — Prompt text with <code>{{variableName}}</code> placeholders.</li>
|
|
331
|
+
<li><strong>Variables</strong> — Auto-detected from <code>{{ }}</code> syntax in content.</li>
|
|
332
|
+
<li><strong>Categories</strong> — Group prompts by purpose (code-review, refactor, testing).</li>
|
|
333
|
+
<li><strong>Ratings</strong> — 1–5 star quality ratings for tracking effectiveness.</li>
|
|
334
|
+
</ul>
|
|
335
|
+
<h3>MCP Tools</h3>
|
|
336
|
+
<p class="dc-tools-list">prompts_list, prompts_get, prompts_render, prompts_add, prompts_update, prompts_remove, prompts_context</p>
|
|
337
|
+
</div>
|
|
338
|
+
|
|
339
|
+
<div class="dc-card" id="mod-vocabulary">
|
|
340
|
+
<div class="dc-card-header"><span class="dc-card-icon">\u2338</span><h2>Vocabulary</h2><span class="dc-tool-count">6 tools</span></div>
|
|
341
|
+
<p>Domain-specific term dictionary so your AI assistant speaks your language.</p>
|
|
342
|
+
<h3>Key Concepts</h3>
|
|
343
|
+
<ul class="dc-list">
|
|
344
|
+
<li><strong>Terms</strong> — Named entries with definitions, aliases, and optional categories.</li>
|
|
345
|
+
<li><strong>Aliases</strong> — Alternative names that resolve to the same term.</li>
|
|
346
|
+
<li><strong>Context injection</strong> — All terms compiled to markdown for LLM context.</li>
|
|
347
|
+
</ul>
|
|
348
|
+
<p>Define entries for project acronyms, internal tool names, and domain jargon. <code>vocabulary_lookup</code> is called automatically when Claude encounters unfamiliar terms.</p>
|
|
349
|
+
<h3>MCP Tools</h3>
|
|
350
|
+
<p class="dc-tools-list">vocabulary_list, vocabulary_lookup, vocabulary_add, vocabulary_update, vocabulary_remove, vocabulary_context</p>
|
|
351
|
+
</div>
|
|
352
|
+
|
|
353
|
+
<div class="dc-card" id="mod-coder">
|
|
354
|
+
<div class="dc-card-header"><span class="dc-card-icon">\u2039\u203A</span><h2>Coder</h2></div>
|
|
355
|
+
<p>In-browser code editor with a file tree, tabbed editing, and live preview. Useful for quick manual edits, reviewing generated code, and previewing HTML output.</p>
|
|
356
|
+
</div>
|
|
357
|
+
|
|
358
|
+
<div class="dc-card" id="mod-voice">
|
|
359
|
+
<div class="dc-card-header"><span class="dc-card-icon">\u25C9</span><h2>Voice</h2><span class="dc-tool-count">2 tools</span></div>
|
|
360
|
+
<p>Speech-to-text transcription for hands-free interaction and dictation. Click the microphone widget in the sidebar to record. Audio is sent to the configured STT provider for transcription.</p>
|
|
361
|
+
<h3>MCP Tools</h3>
|
|
362
|
+
<p class="dc-tools-list">voice_transcribe, voice_status</p>
|
|
363
|
+
</div>
|
|
364
|
+
|
|
365
|
+
<div class="dc-card" id="mod-keymap">
|
|
366
|
+
<div class="dc-card-header"><span class="dc-card-icon">\u2328</span><h2>Keymap</h2></div>
|
|
367
|
+
<p>Configurable keyboard shortcuts for dashboard navigation and actions. Customize bindings for switching between apps, triggering actions, and navigating the UI efficiently.</p>
|
|
368
|
+
</div>
|
|
369
|
+
</section>
|
|
370
|
+
`;
|
|
371
|
+
|
|
372
|
+
// ── View: API Reference ─────────────────────────────────────────────
|
|
373
|
+
|
|
374
|
+
const API_HTML = `
|
|
375
|
+
<section class="dc-content">
|
|
376
|
+
<h1 class="dc-content-title">API Reference</h1>
|
|
377
|
+
<p class="dc-content-lead">Complete catalog of all 51 MCP tools across 8 servers.</p>
|
|
378
|
+
<p class="dc-content-note">Each server runs as a stdio process auto-discovered by Claude Code via <code>.mcp.json</code>. Tools are also available as REST endpoints at <code>/api/{module}/</code>.</p>
|
|
379
|
+
|
|
380
|
+
<div class="dc-card">
|
|
381
|
+
<div class="dc-card-header"><h2>devglide-kanban</h2><span class="dc-tool-count">14 tools</span></div>
|
|
382
|
+
<table class="dc-api-table">
|
|
383
|
+
<tbody>
|
|
384
|
+
<tr><td><code>kanban_list_features</code></td><td>List all features in the current project</td></tr>
|
|
385
|
+
<tr><td><code>kanban_create_feature</code></td><td>Create a new feature with default kanban columns</td></tr>
|
|
386
|
+
<tr><td><code>kanban_get_feature</code></td><td>Get full feature details including columns, tasks, and bugs</td></tr>
|
|
387
|
+
<tr><td><code>kanban_update_feature</code></td><td>Update a feature's name, description, or color</td></tr>
|
|
388
|
+
<tr><td><code>kanban_delete_feature</code></td><td>Delete a feature and all its tasks and bugs</td></tr>
|
|
389
|
+
<tr><td><code>kanban_list_items</code></td><td>List tasks/bugs with filtering by feature, column, priority, type</td></tr>
|
|
390
|
+
<tr><td><code>kanban_create_item</code></td><td>Create a new task or bug (defaults to Backlog column)</td></tr>
|
|
391
|
+
<tr><td><code>kanban_get_item</code></td><td>Get full details of a single task or bug</td></tr>
|
|
392
|
+
<tr><td><code>kanban_update_item</code></td><td>Update an existing task or bug</td></tr>
|
|
393
|
+
<tr><td><code>kanban_move_item</code></td><td>Move a task/bug to a different column</td></tr>
|
|
394
|
+
<tr><td><code>kanban_delete_item</code></td><td>Delete a task or bug</td></tr>
|
|
395
|
+
<tr><td><code>kanban_append_work_log</code></td><td>Append a versioned work log entry to a task</td></tr>
|
|
396
|
+
<tr><td><code>kanban_get_work_log</code></td><td>Get the full work log history for a task</td></tr>
|
|
397
|
+
<tr><td><code>kanban_append_review</code></td><td>Append versioned review feedback to a task</td></tr>
|
|
398
|
+
</tbody>
|
|
399
|
+
</table>
|
|
400
|
+
</div>
|
|
401
|
+
|
|
402
|
+
<div class="dc-card">
|
|
403
|
+
<div class="dc-card-header"><h2>devglide-test</h2><span class="dc-tool-count">7 tools</span></div>
|
|
404
|
+
<table class="dc-api-table">
|
|
405
|
+
<tbody>
|
|
406
|
+
<tr><td><code>test_commands</code></td><td>List available browser automation commands</td></tr>
|
|
407
|
+
<tr><td><code>test_run_scenario</code></td><td>Submit a UI automation scenario for browser execution</td></tr>
|
|
408
|
+
<tr><td><code>test_save_scenario</code></td><td>Save a scenario to the library for reuse</td></tr>
|
|
409
|
+
<tr><td><code>test_list_saved</code></td><td>List all saved scenarios</td></tr>
|
|
410
|
+
<tr><td><code>test_run_saved</code></td><td>Run a saved scenario by ID</td></tr>
|
|
411
|
+
<tr><td><code>test_delete_saved</code></td><td>Delete a saved scenario</td></tr>
|
|
412
|
+
<tr><td><code>test_get_result</code></td><td>Get execution result (passed/failed, error, duration)</td></tr>
|
|
413
|
+
</tbody>
|
|
414
|
+
</table>
|
|
415
|
+
</div>
|
|
416
|
+
|
|
417
|
+
<div class="dc-card">
|
|
418
|
+
<div class="dc-card-header"><h2>devglide-workflow</h2><span class="dc-tool-count">6 tools</span></div>
|
|
419
|
+
<table class="dc-api-table">
|
|
420
|
+
<tbody>
|
|
421
|
+
<tr><td><code>workflow_list</code></td><td>List workflows (project-scoped + global)</td></tr>
|
|
422
|
+
<tr><td><code>workflow_get</code></td><td>Get full workflow graph with nodes, edges, variables</td></tr>
|
|
423
|
+
<tr><td><code>workflow_create</code></td><td>Create a new workflow from nodes and edges JSON</td></tr>
|
|
424
|
+
<tr><td><code>workflow_get_instructions</code></td><td>Get compiled instructions as markdown</td></tr>
|
|
425
|
+
<tr><td><code>workflow_match</code></td><td>Match user prompt against enabled workflows</td></tr>
|
|
426
|
+
<tr><td><code>workflow_toggle</code></td><td>Enable or disable a workflow</td></tr>
|
|
427
|
+
</tbody>
|
|
428
|
+
</table>
|
|
429
|
+
</div>
|
|
430
|
+
|
|
431
|
+
<div class="dc-card">
|
|
432
|
+
<div class="dc-card-header"><h2>devglide-shell</h2><span class="dc-tool-count">5 tools</span></div>
|
|
433
|
+
<table class="dc-api-table">
|
|
434
|
+
<tbody>
|
|
435
|
+
<tr><td><code>shell_list_panes</code></td><td>List active terminal panes with CWD</td></tr>
|
|
436
|
+
<tr><td><code>shell_create_pane</code></td><td>Create a new terminal pane</td></tr>
|
|
437
|
+
<tr><td><code>shell_run_command</code></td><td>Send command and capture output after timeout</td></tr>
|
|
438
|
+
<tr><td><code>shell_get_scrollback</code></td><td>Get recent scrollback buffer</td></tr>
|
|
439
|
+
<tr><td><code>shell_close_pane</code></td><td>Close a terminal pane</td></tr>
|
|
440
|
+
</tbody>
|
|
441
|
+
</table>
|
|
442
|
+
</div>
|
|
443
|
+
|
|
444
|
+
<div class="dc-card">
|
|
445
|
+
<div class="dc-card-header"><h2>devglide-prompts</h2><span class="dc-tool-count">7 tools</span></div>
|
|
446
|
+
<table class="dc-api-table">
|
|
447
|
+
<tbody>
|
|
448
|
+
<tr><td><code>prompts_list</code></td><td>List prompts with optional category/tag/search filter</td></tr>
|
|
449
|
+
<tr><td><code>prompts_get</code></td><td>Get full prompt including content and variables</td></tr>
|
|
450
|
+
<tr><td><code>prompts_render</code></td><td>Render template by substituting variables</td></tr>
|
|
451
|
+
<tr><td><code>prompts_add</code></td><td>Save a new prompt template</td></tr>
|
|
452
|
+
<tr><td><code>prompts_update</code></td><td>Modify an existing prompt</td></tr>
|
|
453
|
+
<tr><td><code>prompts_remove</code></td><td>Delete a prompt</td></tr>
|
|
454
|
+
<tr><td><code>prompts_context</code></td><td>Compile all prompts as markdown context</td></tr>
|
|
455
|
+
</tbody>
|
|
456
|
+
</table>
|
|
457
|
+
</div>
|
|
458
|
+
|
|
459
|
+
<div class="dc-card">
|
|
460
|
+
<div class="dc-card-header"><h2>devglide-vocabulary</h2><span class="dc-tool-count">6 tools</span></div>
|
|
461
|
+
<table class="dc-api-table">
|
|
462
|
+
<tbody>
|
|
463
|
+
<tr><td><code>vocabulary_list</code></td><td>List entries, filter by category/tag</td></tr>
|
|
464
|
+
<tr><td><code>vocabulary_lookup</code></td><td>Look up a term by name or alias</td></tr>
|
|
465
|
+
<tr><td><code>vocabulary_add</code></td><td>Define a new domain term</td></tr>
|
|
466
|
+
<tr><td><code>vocabulary_update</code></td><td>Modify an entry</td></tr>
|
|
467
|
+
<tr><td><code>vocabulary_remove</code></td><td>Delete an entry</td></tr>
|
|
468
|
+
<tr><td><code>vocabulary_context</code></td><td>Compile all terms as markdown context</td></tr>
|
|
469
|
+
</tbody>
|
|
470
|
+
</table>
|
|
471
|
+
</div>
|
|
472
|
+
|
|
473
|
+
<div class="dc-card">
|
|
474
|
+
<div class="dc-card-header"><h2>devglide-log</h2><span class="dc-tool-count">4 tools</span></div>
|
|
475
|
+
<table class="dc-api-table">
|
|
476
|
+
<tbody>
|
|
477
|
+
<tr><td><code>log_read</code></td><td>Read recent log entries from a JSONL file</td></tr>
|
|
478
|
+
<tr><td><code>log_write</code></td><td>Append a log entry</td></tr>
|
|
479
|
+
<tr><td><code>log_clear</code></td><td>Truncate a log file</td></tr>
|
|
480
|
+
<tr><td><code>log_clear_all</code></td><td>Truncate all tracked session logs</td></tr>
|
|
481
|
+
</tbody>
|
|
482
|
+
</table>
|
|
483
|
+
</div>
|
|
484
|
+
|
|
485
|
+
<div class="dc-card">
|
|
486
|
+
<div class="dc-card-header"><h2>devglide-voice</h2><span class="dc-tool-count">2 tools</span></div>
|
|
487
|
+
<table class="dc-api-table">
|
|
488
|
+
<tbody>
|
|
489
|
+
<tr><td><code>voice_transcribe</code></td><td>Transcribe base64-encoded audio data</td></tr>
|
|
490
|
+
<tr><td><code>voice_status</code></td><td>Check service status and transcription stats</td></tr>
|
|
491
|
+
</tbody>
|
|
492
|
+
</table>
|
|
493
|
+
</div>
|
|
494
|
+
</section>
|
|
495
|
+
`;
|
|
496
|
+
|
|
497
|
+
// ── View: Changelog ─────────────────────────────────────────────────
|
|
498
|
+
|
|
499
|
+
const CHANGELOG_HTML = `
|
|
500
|
+
<section class="dc-content">
|
|
501
|
+
<h1 class="dc-content-title">Changelog</h1>
|
|
502
|
+
<p class="dc-content-lead">Release history and notable changes.</p>
|
|
503
|
+
|
|
504
|
+
<div class="dc-card dc-changelog-entry">
|
|
505
|
+
<div class="dc-card-header">
|
|
506
|
+
<h2>v0.1.0</h2>
|
|
507
|
+
<span class="dc-release-date">March 2026</span>
|
|
508
|
+
</div>
|
|
509
|
+
<div class="dc-release-badge">Initial Release</div>
|
|
510
|
+
|
|
511
|
+
<h3>New Features</h3>
|
|
512
|
+
<ul class="dc-list">
|
|
513
|
+
<li><strong>Kanban</strong> — Full project management with features, columns, tasks, bugs, work logs, and review feedback. 14 MCP tools.</li>
|
|
514
|
+
<li><strong>Test</strong> — Browser UI automation with saved scenarios, regression suites, and execution results. 7 MCP tools.</li>
|
|
515
|
+
<li><strong>Workflow</strong> — Visual DAG workflow builder with 12 node types, prompt matching, and compiled instructions. 6 MCP tools.</li>
|
|
516
|
+
<li><strong>Shell</strong> — Terminal multiplexer with named panes, scrollback capture, and command execution. 5 MCP tools.</li>
|
|
517
|
+
<li><strong>Log</strong> — Real-time browser console capture with JSONL session storage. 4 MCP tools.</li>
|
|
518
|
+
<li><strong>Voice</strong> — Speech-to-text transcription with pluggable providers. 2 MCP tools.</li>
|
|
519
|
+
<li><strong>Vocabulary</strong> — Domain-specific term dictionary with aliases and context injection. 6 MCP tools.</li>
|
|
520
|
+
<li><strong>Prompts</strong> — Reusable prompt template library with variables, categories, and ratings. 7 MCP tools.</li>
|
|
521
|
+
<li><strong>Coder</strong> — In-browser code editor with file tree and tabs.</li>
|
|
522
|
+
<li><strong>Keymap</strong> — Configurable keyboard shortcuts.</li>
|
|
523
|
+
</ul>
|
|
524
|
+
|
|
525
|
+
<h3>Architecture</h3>
|
|
526
|
+
<ul class="dc-list">
|
|
527
|
+
<li>Unified SPA dashboard with sidebar navigation and project scoping</li>
|
|
528
|
+
<li>8 MCP stdio servers auto-discovered via <code>.mcp.json</code></li>
|
|
529
|
+
<li>JsonFileStore for git-friendly per-entity JSON storage</li>
|
|
530
|
+
<li>SQLite databases for kanban data</li>
|
|
531
|
+
<li>Socket.io for real-time dashboard updates</li>
|
|
532
|
+
<li>Design token system for consistent theming</li>
|
|
533
|
+
</ul>
|
|
534
|
+
|
|
535
|
+
<h3>Infrastructure</h3>
|
|
536
|
+
<ul class="dc-list">
|
|
537
|
+
<li>Dev Task workflow enforcing test-before-commit discipline</li>
|
|
538
|
+
<li>Browser automation regression suite with starter scenarios</li>
|
|
539
|
+
<li>Centralized storage in <code>~/.devglide/</code> home directory</li>
|
|
540
|
+
</ul>
|
|
541
|
+
</div>
|
|
542
|
+
</section>
|
|
543
|
+
`;
|
|
544
|
+
|
|
545
|
+
// ── Views map ───────────────────────────────────────────────────────
|
|
546
|
+
|
|
547
|
+
const VIEWS = {
|
|
548
|
+
home: { label: 'Home', html: HOME_HTML },
|
|
549
|
+
guide: { label: 'Getting Started', html: GETTING_STARTED_HTML },
|
|
550
|
+
modules: { label: 'Modules', html: MODULES_HTML },
|
|
551
|
+
api: { label: 'API Reference', html: API_HTML },
|
|
552
|
+
changelog:{ label: 'Changelog', html: CHANGELOG_HTML },
|
|
553
|
+
};
|
|
554
|
+
|
|
555
|
+
// ── Navigation & rendering ──────────────────────────────────────────
|
|
556
|
+
|
|
557
|
+
function switchView(id) {
|
|
558
|
+
_activeView = id;
|
|
559
|
+
const content = _container?.querySelector('#dc-view-content');
|
|
560
|
+
if (content) {
|
|
561
|
+
content.innerHTML = VIEWS[id]?.html ?? '';
|
|
562
|
+
content.scrollTop = 0;
|
|
563
|
+
}
|
|
564
|
+
// Update active nav link
|
|
565
|
+
_container?.querySelectorAll('.dc-nav-link').forEach(link => {
|
|
566
|
+
link.classList.toggle('active', link.dataset.view === id);
|
|
567
|
+
});
|
|
568
|
+
updateOnboardingBanner();
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
// ── Exports ──────────────────────────────────────────────────────────
|
|
572
|
+
|
|
573
|
+
export function mount(container, ctx) {
|
|
574
|
+
_container = container;
|
|
575
|
+
_activeView = 'home';
|
|
576
|
+
_hasProject = !!ctx?.project;
|
|
577
|
+
container.classList.add('page-documentation');
|
|
578
|
+
|
|
579
|
+
// Build shell: header + nav + scrollable content area
|
|
580
|
+
container.innerHTML = `
|
|
581
|
+
<header>
|
|
582
|
+
<div class="brand">Documentation</div>
|
|
583
|
+
</header>
|
|
584
|
+
<nav class="dc-nav">
|
|
585
|
+
${Object.entries(VIEWS).map(([id, v]) =>
|
|
586
|
+
`<button class="dc-nav-link${id === 'home' ? ' active' : ''}" data-view="${id}">${v.label}</button>`
|
|
587
|
+
).join('')}
|
|
588
|
+
</nav>
|
|
589
|
+
<div class="dc-view-content" id="dc-view-content">${HOME_HTML}</div>
|
|
590
|
+
`;
|
|
591
|
+
|
|
592
|
+
// Bind nav clicks
|
|
593
|
+
container.querySelectorAll('.dc-nav-link').forEach(link => {
|
|
594
|
+
link.addEventListener('click', () => switchView(link.dataset.view));
|
|
595
|
+
});
|
|
596
|
+
|
|
597
|
+
updateOnboardingBanner();
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
export function unmount(container) {
|
|
601
|
+
container.classList.remove('page-documentation');
|
|
602
|
+
container.innerHTML = '';
|
|
603
|
+
_container = null;
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
export function onProjectChange(project) {
|
|
607
|
+
_hasProject = !!project;
|
|
608
|
+
updateOnboardingBanner();
|
|
609
|
+
}
|