Skip to content

Commit 8454ae4

Browse files
author
catlog22
committed
feat: add quick install templates and index status to CLI hooks and home locales
feat: enhance MCP manager with interactive question feature and update locales feat: implement tags and available models management in settings page fix: improve process termination logic in stop command for React frontend fix: update view command to default to 'js' frontend feat: add Recommended MCP Wizard component for dynamic server configuration
1 parent 3413313 commit 8454ae4

24 files changed

Lines changed: 1174 additions & 715 deletions

ccw/docs-site/.docusaurus/registry.js

Lines changed: 37 additions & 45 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ccw/docs-site/.docusaurus/routes.js

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,6 @@ import React from 'react';
22
import ComponentCreator from '@docusaurus/ComponentCreator';
33

44
export default [
5-
{
6-
path: '/docs/__docusaurus/debug',
7-
component: ComponentCreator('/docs/__docusaurus/debug', 'e58'),
8-
exact: true
9-
},
10-
{
11-
path: '/docs/__docusaurus/debug/config',
12-
component: ComponentCreator('/docs/__docusaurus/debug/config', '2ce'),
13-
exact: true
14-
},
15-
{
16-
path: '/docs/__docusaurus/debug/content',
17-
component: ComponentCreator('/docs/__docusaurus/debug/content', '11b'),
18-
exact: true
19-
},
20-
{
21-
path: '/docs/__docusaurus/debug/globalData',
22-
component: ComponentCreator('/docs/__docusaurus/debug/globalData', 'f13'),
23-
exact: true
24-
},
25-
{
26-
path: '/docs/__docusaurus/debug/metadata',
27-
component: ComponentCreator('/docs/__docusaurus/debug/metadata', 'bff'),
28-
exact: true
29-
},
30-
{
31-
path: '/docs/__docusaurus/debug/registry',
32-
component: ComponentCreator('/docs/__docusaurus/debug/registry', '830'),
33-
exact: true
34-
},
35-
{
36-
path: '/docs/__docusaurus/debug/routes',
37-
component: ComponentCreator('/docs/__docusaurus/debug/routes', '13e'),
38-
exact: true
39-
},
405
{
416
path: '/docs/docs',
427
component: ComponentCreator('/docs/docs', '942'),
Lines changed: 67 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -1,182 +1,139 @@
11
{
2-
"/docs/__docusaurus/debug-e58": {
3-
"__comp": "__comp---theme-debug-config-23-a-2ff",
4-
"__context": {
5-
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
6-
}
7-
},
8-
"/docs/__docusaurus/debug/config-2ce": {
9-
"__comp": "__comp---theme-debug-config-23-a-2ff",
10-
"__context": {
11-
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
12-
}
13-
},
14-
"/docs/__docusaurus/debug/content-11b": {
15-
"__comp": "__comp---theme-debug-contentba-8-ce7",
16-
"__context": {
17-
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
18-
},
19-
"__props": "__props---docs-docusaurus-debug-content-344-8d5"
20-
},
21-
"/docs/__docusaurus/debug/globalData-f13": {
22-
"__comp": "__comp---theme-debug-global-dataede-0fa",
23-
"__context": {
24-
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
25-
}
26-
},
27-
"/docs/__docusaurus/debug/metadata-bff": {
28-
"__comp": "__comp---theme-debug-site-metadata-68-e-3d4",
29-
"__context": {
30-
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
31-
}
32-
},
33-
"/docs/__docusaurus/debug/registry-830": {
34-
"__comp": "__comp---theme-debug-registry-679-501",
35-
"__context": {
36-
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
37-
}
38-
},
39-
"/docs/__docusaurus/debug/routes-13e": {
40-
"__comp": "__comp---theme-debug-routes-946-699",
41-
"__context": {
42-
"plugin": "plugin---docs-docusaurus-debugb-38-c84"
43-
}
44-
},
452
"/docs/docs-942": {
46-
"__comp": "__comp---theme-docs-root-5-e-9-0b6",
3+
"__comp": "5e95c892",
474
"__context": {
48-
"plugin": "plugin---docs-docsaba-31e"
5+
"plugin": "aba21aa0"
496
}
507
},
518
"/docs/docs-a90": {
52-
"__comp": "__comp---theme-doc-version-roota-7-b-5de",
53-
"__props": "__props---docs-docsa-20-f19"
9+
"__comp": "a7bd4aaa",
10+
"__props": "a2065270"
5411
},
5512
"/docs/docs-c2e": {
56-
"__comp": "__comp---theme-doc-roota-94-67a"
13+
"__comp": "a94703ab"
5714
},
5815
"/docs/docs/commands/cli/cli-init-c74": {
59-
"__comp": "__comp---theme-doc-item-178-a40",
60-
"content": "content---docs-docs-commands-cli-cli-init-056-2d3"
16+
"__comp": "17896441",
17+
"content": "0566a0a8"
6118
},
6219
"/docs/docs/commands/cli/codex-review-937": {
63-
"__comp": "__comp---theme-doc-item-178-a40",
64-
"content": "content---docs-docs-commands-cli-codex-reviewf-1-b-532"
20+
"__comp": "17896441",
21+
"content": "f1bf82ec"
6522
},
6623
"/docs/docs/commands/general/ccw-3fb": {
67-
"__comp": "__comp---theme-doc-item-178-a40",
68-
"content": "content---docs-docs-commands-general-ccwf-48-4f9"
24+
"__comp": "17896441",
25+
"content": "f4817052"
6926
},
7027
"/docs/docs/commands/general/ccw-coordinator-a90": {
71-
"__comp": "__comp---theme-doc-item-178-a40",
72-
"content": "content---docs-docs-commands-general-ccw-coordinatord-55-a04"
28+
"__comp": "17896441",
29+
"content": "d550a629"
7330
},
7431
"/docs/docs/commands/general/ccw-debug-663": {
75-
"__comp": "__comp---theme-doc-item-178-a40",
76-
"content": "content---docs-docs-commands-general-ccw-debug-97-c-2c8"
32+
"__comp": "17896441",
33+
"content": "97c6e66a"
7734
},
7835
"/docs/docs/commands/general/ccw-plan-40b": {
79-
"__comp": "__comp---theme-doc-item-178-a40",
80-
"content": "content---docs-docs-commands-general-ccw-plan-04-d-aa3"
36+
"__comp": "17896441",
37+
"content": "04db0a2e"
8138
},
8239
"/docs/docs/commands/general/ccw-test-99d": {
83-
"__comp": "__comp---theme-doc-item-178-a40",
84-
"content": "content---docs-docs-commands-general-ccw-testcce-a5d"
40+
"__comp": "17896441",
41+
"content": "ccef5d0f"
8542
},
8643
"/docs/docs/commands/general/codex-coordinator-996": {
87-
"__comp": "__comp---theme-doc-item-178-a40",
88-
"content": "content---docs-docs-commands-general-codex-coordinatorf-92-965"
44+
"__comp": "17896441",
45+
"content": "f9222419"
8946
},
9047
"/docs/docs/commands/general/flow-create-d91": {
91-
"__comp": "__comp---theme-doc-item-178-a40",
92-
"content": "content---docs-docs-commands-general-flow-createfab-5a7"
48+
"__comp": "17896441",
49+
"content": "fabaf1c8"
9350
},
9451
"/docs/docs/commands/issue/issue-convert-to-plan-d90": {
95-
"__comp": "__comp---theme-doc-item-178-a40",
96-
"content": "content---docs-docs-commands-issue-issue-convert-to-plan-5-c-7-428"
52+
"__comp": "17896441",
53+
"content": "5c7b2278"
9754
},
9855
"/docs/docs/commands/issue/issue-discover-2a1": {
99-
"__comp": "__comp---theme-doc-item-178-a40",
100-
"content": "content---docs-docs-commands-issue-issue-discover-1-e-3-61d"
56+
"__comp": "17896441",
57+
"content": "1e3006f3"
10158
},
10259
"/docs/docs/commands/issue/issue-execute-abb": {
103-
"__comp": "__comp---theme-doc-item-178-a40",
104-
"content": "content---docs-docs-commands-issue-issue-executefe-8-121"
60+
"__comp": "17896441",
61+
"content": "fe8e3dcf"
10562
},
10663
"/docs/docs/commands/issue/issue-from-brainstorm-72b": {
107-
"__comp": "__comp---theme-doc-item-178-a40",
108-
"content": "content---docs-docs-commands-issue-issue-from-brainstorm-2-ec-ca5"
64+
"__comp": "17896441",
65+
"content": "2ecf8b4a"
10966
},
11067
"/docs/docs/commands/issue/issue-new-c58": {
111-
"__comp": "__comp---theme-doc-item-178-a40",
112-
"content": "content---docs-docs-commands-issue-issue-new-4-ad-afb"
68+
"__comp": "17896441",
69+
"content": "4ad7db0f"
11370
},
11471
"/docs/docs/commands/issue/issue-plan-fd2": {
115-
"__comp": "__comp---theme-doc-item-178-a40",
116-
"content": "content---docs-docs-commands-issue-issue-plana-6-c-1b0"
72+
"__comp": "17896441",
73+
"content": "a6c3df16"
11774
},
11875
"/docs/docs/commands/issue/issue-queue-1ce": {
119-
"__comp": "__comp---theme-doc-item-178-a40",
120-
"content": "content---docs-docs-commands-issue-issue-queue-1-ba-06f"
76+
"__comp": "17896441",
77+
"content": "1bac9067"
12178
},
12279
"/docs/docs/commands/memory/memory-compact-74c": {
123-
"__comp": "__comp---theme-doc-item-178-a40",
124-
"content": "content---docs-docs-commands-memory-memory-compact-7-a-1-f85"
80+
"__comp": "17896441",
81+
"content": "7a1ee27c"
12582
},
12683
"/docs/docs/commands/memory/memory-docs-full-cli-7a4": {
127-
"__comp": "__comp---theme-doc-item-178-a40",
128-
"content": "content---docs-docs-commands-memory-memory-docs-full-cli-4-cc-b15"
84+
"__comp": "17896441",
85+
"content": "4cc74730"
12986
},
13087
"/docs/docs/commands/memory/memory-docs-related-cli-fb4": {
131-
"__comp": "__comp---theme-doc-item-178-a40",
132-
"content": "content---docs-docs-commands-memory-memory-docs-related-cli-60-e-28a"
88+
"__comp": "17896441",
89+
"content": "60eef997"
13390
},
13491
"/docs/docs/commands/memory/memory-load-c66": {
135-
"__comp": "__comp---theme-doc-item-178-a40",
136-
"content": "content---docs-docs-commands-memory-memory-load-157-920"
92+
"__comp": "17896441",
93+
"content": "157db180"
13794
},
13895
"/docs/docs/commands/memory/memory-update-full-b80": {
139-
"__comp": "__comp---theme-doc-item-178-a40",
140-
"content": "content---docs-docs-commands-memory-memory-update-full-666-28e"
96+
"__comp": "17896441",
97+
"content": "666bb1bf"
14198
},
14299
"/docs/docs/commands/memory/memory-update-related-f0d": {
143-
"__comp": "__comp---theme-doc-item-178-a40",
144-
"content": "content---docs-docs-commands-memory-memory-update-related-611-f0a"
100+
"__comp": "17896441",
101+
"content": "611877e1"
145102
},
146103
"/docs/docs/faq-4b2": {
147-
"__comp": "__comp---theme-doc-item-178-a40",
148-
"content": "content---docs-docs-faqea-3-29f"
104+
"__comp": "17896441",
105+
"content": "ea313555"
149106
},
150107
"/docs/docs/overview-7df": {
151-
"__comp": "__comp---theme-doc-item-178-a40",
152-
"content": "content---docs-docs-overview-188-8fe"
108+
"__comp": "17896441",
109+
"content": "18891827"
153110
},
154111
"/docs/docs/workflows/faq-f47": {
155-
"__comp": "__comp---theme-doc-item-178-a40",
156-
"content": "content---docs-docs-workflows-faqbcf-a47"
112+
"__comp": "17896441",
113+
"content": "bcf6b37c"
157114
},
158115
"/docs/docs/workflows/introduction-4cb": {
159-
"__comp": "__comp---theme-doc-item-178-a40",
160-
"content": "content---docs-docs-workflows-introduction-9-f-4-dba"
116+
"__comp": "17896441",
117+
"content": "9f4ca91e"
161118
},
162119
"/docs/docs/workflows/level-1-ultra-lightweight-5c4": {
163-
"__comp": "__comp---theme-doc-item-178-a40",
164-
"content": "content---docs-docs-workflows-level-1-ultra-lightweightc-5-a-692"
120+
"__comp": "17896441",
121+
"content": "c5a82d8d"
165122
},
166123
"/docs/docs/workflows/level-2-rapid-ad8": {
167-
"__comp": "__comp---theme-doc-item-178-a40",
168-
"content": "content---docs-docs-workflows-level-2-rapid-19-b-a2f"
124+
"__comp": "17896441",
125+
"content": "19b64556"
169126
},
170127
"/docs/docs/workflows/level-3-standard-3ea": {
171-
"__comp": "__comp---theme-doc-item-178-a40",
172-
"content": "content---docs-docs-workflows-level-3-standardbdb-19a"
128+
"__comp": "17896441",
129+
"content": "bdb2b105"
173130
},
174131
"/docs/docs/workflows/level-4-brainstorm-f4f": {
175-
"__comp": "__comp---theme-doc-item-178-a40",
176-
"content": "content---docs-docs-workflows-level-4-brainstormd-04-69a"
132+
"__comp": "17896441",
133+
"content": "d045285b"
177134
},
178135
"/docs/docs/workflows/level-5-intelligent-84a": {
179-
"__comp": "__comp---theme-doc-item-178-a40",
180-
"content": "content---docs-docs-workflows-level-5-intelligent-186-435"
136+
"__comp": "17896441",
137+
"content": "186dcf4e"
181138
}
182139
}

ccw/docs-site/.docusaurus/site-metadata.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
"name": "@docusaurus/plugin-content-pages",
1313
"version": "3.9.2"
1414
},
15-
"docusaurus-plugin-debug": {
15+
"docusaurus-plugin-sitemap": {
1616
"type": "package",
17-
"name": "@docusaurus/plugin-debug",
17+
"name": "@docusaurus/plugin-sitemap",
1818
"version": "3.9.2"
1919
},
2020
"docusaurus-plugin-svgr": {

ccw/frontend/src/components/dashboard/widgets/WorkflowTaskWidget.tsx

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { Sparkline } from '@/components/charts/Sparkline';
1313
import { useWorkflowStatusCounts, generateMockWorkflowStatusCounts } from '@/hooks/useWorkflowStatusCounts';
1414
import { useDashboardStats } from '@/hooks/useDashboardStats';
1515
import { useProjectOverview } from '@/hooks/useProjectOverview';
16+
import { useIndexStatus } from '@/hooks/useIndex';
1617
import { cn } from '@/lib/utils';
1718
import {
1819
ListChecks,
@@ -37,6 +38,7 @@ import {
3738
Sparkles,
3839
BarChart3,
3940
PieChart as PieChartIcon,
41+
Database,
4042
} from 'lucide-react';
4143

4244
export interface WorkflowTaskWidgetProps {
@@ -210,6 +212,7 @@ function WorkflowTaskWidgetComponent({ className }: WorkflowTaskWidgetProps) {
210212
const { data, isLoading } = useWorkflowStatusCounts();
211213
const { stats, isLoading: statsLoading } = useDashboardStats({ refetchInterval: 60000 });
212214
const { projectOverview, isLoading: projectLoading } = useProjectOverview();
215+
const { status: indexStatus } = useIndexStatus({ refetchInterval: 30000 });
213216

214217
const chartData = data || generateMockWorkflowStatusCounts();
215218
const total = chartData.reduce((sum, item) => sum + item.count, 0);
@@ -320,6 +323,35 @@ function WorkflowTaskWidgetComponent({ className }: WorkflowTaskWidgetProps) {
320323
<span className="font-semibold">{projectOverview?.developmentIndex?.enhancement?.length || 0}</span>
321324
<span className="text-muted-foreground">{formatMessage({ id: 'projectOverview.devIndex.category.enhancements' })}</span>
322325
</div>
326+
327+
{/* Index Status Indicator */}
328+
<div className="flex items-center gap-2">
329+
<div className="relative">
330+
<Database className={cn(
331+
"h-3.5 w-3.5",
332+
indexStatus?.status === 'building' && "text-blue-600 animate-pulse",
333+
indexStatus?.status === 'completed' && "text-emerald-600",
334+
indexStatus?.status === 'idle' && "text-slate-500",
335+
indexStatus?.status === 'failed' && "text-red-600"
336+
)} />
337+
{indexStatus?.status === 'building' && (
338+
<span className="absolute -top-0.5 -right-0.5 flex h-2 w-2">
339+
<span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-blue-400 opacity-75"></span>
340+
<span className="relative inline-flex rounded-full h-2 w-2 bg-blue-500"></span>
341+
</span>
342+
)}
343+
</div>
344+
<span className={cn(
345+
"font-semibold",
346+
indexStatus?.status === 'building' && "text-blue-600",
347+
indexStatus?.status === 'completed' && "text-emerald-600",
348+
indexStatus?.status === 'idle' && "text-slate-500",
349+
indexStatus?.status === 'failed' && "text-red-600"
350+
)}>
351+
{indexStatus?.totalFiles || 0}
352+
</span>
353+
<span className="text-muted-foreground">{formatMessage({ id: 'home.indexStatus.label' })}</span>
354+
</div>
323355
</div>
324356

325357
{/* Date + Expand Button */}

0 commit comments

Comments
 (0)