Commit Graph

697 Commits

Author SHA1 Message Date
catlog22
ffe79d28e2 refactor(spec): update folder structure and dimensions
- Change folder from .workflow/ to .ccw/
- Reduce dimensions from 4 to 2: specs, personal
- Remove changelog and roadmap dimensions
- Update help text and examples

Folder structure:
- .ccw/specs/ - Project rules and conventions
- .ccw/personal/ - Personal preferences (supports global ~/.ccw/personal/)
- .ccw/.spec-index/ - Index cache

Keyword categories for workflow stages:
- exploration - Code exploration, analysis, debugging
- planning - Task planning, requirements
- execution - Implementation, testing, deployment
2026-02-26 23:13:00 +08:00
catlog22
151b81ee4a feat: Enhance spec management with new hooks and settings features
- Updated test cycle execution steps to streamline agent execution.
- Improved HookDialog component with enhanced validation messages and localization.
- Introduced SpecDialog component for better spec management.
- Added new hooks for fetching and updating specs list and frontmatter.
- Implemented API functions for specs list retrieval and index rebuilding.
- Added localization support for new specs settings and hooks.
- Enhanced SpecsSettingsPage to manage project and personal specs effectively.
- Updated CLI commands to support keyword-based spec loading.
- Improved spec index builder to categorize specs by workflow stages.
2026-02-26 22:52:33 +08:00
catlog22
6155fcc7b8 feat: add SpecDialog component for editing spec frontmatter
- Implement SpecDialog for managing spec details including title, read mode, priority, and keywords.
- Add validation and keyword management functionality.
- Integrate SpecDialog into SpecsSettingsPage for editing specs.

feat: create index file for specs components

- Export SpecCard, SpecDialog, and related types from a new index file for better organization.

feat: implement SpecsSettingsPage for managing specs and hooks

- Create main settings page with tabs for Project Specs, Personal Specs, Hooks, Injection, and Settings.
- Integrate SpecDialog and HookDialog for editing specs and hooks.
- Add search functionality and mock data for specs and hooks.

feat: add spec management API routes

- Implement API endpoints for listing specs, getting spec details, updating frontmatter, rebuilding indices, and initializing the spec system.
- Handle errors and responses appropriately for each endpoint.
2026-02-26 22:03:13 +08:00
catlog22
653ad10475 feat(analysis): enhance AnalysisPage with filters, grid layout and fullscreen mode
- Add status filter tabs (all/in_progress/completed)
- Add date filter tabs (all/today/week/month)
- Add date quick filter bubbles with session counts
- Change layout from list to 4-column grid (16 items per page)
- Add fullscreen/immersive mode toggle
- Make cards compact with smaller font and more content
- Add clickable status badges for quick filtering
- Reduce padding for consistency with other pages
- Show session ID, status, date and conclusions indicator on cards
2026-02-26 16:05:48 +08:00
catlog22
2487a8330c feat: 更新分析会话 API,支持分页和并发处理 2026-02-26 14:31:30 +08:00
catlog22
f10351ee50 Merge branch 'main' of https://github.com/catlog22/Claude-Code-Workflow 2026-02-26 14:05:40 +08:00
AXC00
12be252e8e feat(analysis): 添加分析查看器页面 (#122)
- 新增 AnalysisPage 页面查看 /workflow:analyze-with-file 分析结果
- 支持 Tab 分组展示:讨论记录、结论、代码探索、视角分析
- Markdown 内容富文本渲染,JSON 数据结构化卡片展示
- 添加后端 API 路由 /api/analysis
- 添加侧边栏导航入口和中英文翻译

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-26 14:04:41 +08:00
catlog22
4ad05f8217 feat: add templates for architecture documents, epics, product briefs, and requirements PRD
- Introduced architecture document template for Phase 4, including structure and individual ADR records.
- Added epics & stories template for Phase 5, detailing epic breakdown and dependencies.
- Created product brief template for Phase 2, summarizing product vision, problem statement, and target users.
- Developed requirements PRD template for Phase 3, outlining functional and non-functional requirements with traceability.
- Implemented spec command for project spec management with subcommands for loading, listing, rebuilding, and initializing specs.
2026-02-26 13:59:47 +08:00
catlog22
2b5c334bc4 feat: Implement recursive core-memory database discovery and project listing
- Added `findAllCoreMemoryDatabases` function to recursively locate core-memory databases in nested project structures.
- Updated `listAllProjects` to utilize the new recursive function for improved project listing.
- Enhanced `getMemoriesFromProject` and `findMemoryAcrossProjects` to support nested project structures.

feat: Introduce spec context injection in hooks configuration

- Added a new hook configuration for "Spec Context Injection" to load project specs based on prompt keywords.

chore: Add gray-matter dependency for YAML frontmatter parsing

- Included `gray-matter` package in `package.json` for parsing YAML frontmatter in markdown files.

feat: Create Spec Index Builder tool for managing project specs

- Implemented `spec-index-builder.ts` to scan markdown files, extract YAML frontmatter, and generate index cache files for different spec dimensions.

feat: Develop Spec Init tool for initializing spec directories and seed documents

- Created `spec-init.ts` to set up the directory structure and seed documents for the spec system.

feat: Build Spec Keyword Extractor for keyword extraction from prompts

- Added `spec-keyword-extractor.ts` to extract keywords from user prompts, supporting both English and Chinese text.

feat: Implement Spec Loader for loading and filtering specs based on keywords

- Developed `spec-loader.ts` to handle loading of specs, filtering by read mode and keyword matches, and formatting output for CLI or hooks.
2026-02-26 12:51:29 +08:00
catlog22
bf02f653ca fix(types): add runtime validation for GitHub API response in skill-hub-routes
- Replace GitHubTreeEntry with GitHubContentEntry matching actual API response
- Add runtime array validation to prevent unexpected response formats
- Normalize GitHub API types ('file'/'dir') to internal types ('blob'/'tree')
- Validate required fields (name, path, type) for each entry

This fixes potential runtime errors when GitHub API response structure
differs from expected type definition.
2026-02-26 10:28:33 +08:00
catlog22
b6f4864530 refactor: remove 'executions' case from IssueHubPage rendering logic 2026-02-26 10:15:45 +08:00
catlog22
2623b5a633 refactor: remove 'executions' tab and related components from Issue Hub 2026-02-26 10:02:53 +08:00
catlog22
21e3647331 feat(security): implement path validation to prevent traversal attacks in session handling 2026-02-26 09:56:35 +08:00
catlog22
519efe9783 feat(hooks): add hook management and session timeline features
- Add hook quick templates component with configurable templates
- Refactor NativeSessionPanel to use new SessionTimeline component
- Add OpenCode session parser for parsing OpenCode CLI sessions
- Enhance API with session-related endpoints
- Add locale translations for hooks and native session features
- Update hook commands and routes for better hook management
2026-02-25 23:21:35 +08:00
catlog22
b4d3426e6a feat: add CLI config preview API for Codex and Gemini
- Implemented `fetchCodexConfigPreview` and `fetchGeminiConfigPreview` functions in the API layer to retrieve masked configuration files.
- Added new interfaces `CodexConfigPreviewResponse` and `GeminiConfigPreviewResponse` to define the structure of the API responses.
- Created utility functions to read and mask sensitive values from `config.toml` and `auth.json` for Codex, and `settings.json` for Gemini.
- Updated CLI settings routes to handle new preview endpoints.
- Enhanced session content parser to support Claude JSONL format.
- Updated UI components to reflect changes in history page and navigation, including new tabs for observability.
- Localized changes for English and Chinese languages to reflect "CLI History" terminology.
2026-02-25 22:37:30 +08:00
catlog22
c92754505a fix(clean): correct project-tech field references and add sync vs clean disambiguation
- Fix Step 4.3: project.features → project.development_index,
  project.statistics → project._metadata
- Add project-guidelines.json learnings cleanup on session deletion
- Add sync vs clean disambiguation table explaining write vs reclaim
2026-02-25 22:34:15 +08:00
catlog22
b2b8688d26 feat: add CLI settings export/import functionality
- Implemented exportSettings and importSettings APIs for CLI settings.
- Added hooks useExportSettings and useImportSettings for managing export/import operations in the frontend.
- Updated SettingsPage to include buttons for exporting and importing CLI settings.
- Enhanced backend to handle export and import requests, including validation and conflict resolution.
- Introduced new data structures for exported settings and import options.
- Updated localization files to support new export/import features.
- Refactored CLI tool configurations to remove hardcoded model defaults, allowing dynamic model retrieval.
2026-02-25 21:40:24 +08:00
catlog22
eb9a62e085 feat: enhance project context loading and feature flag support in dashboard components 2026-02-25 18:59:49 +08:00
catlog22
d6acbaf30f feat(cli-settings): support multi-provider settings for Claude, Codex, and Gemini
Decouple CLI settings architecture from Claude-only to support multiple
providers. Each provider has independent settings UI and backend handling.

- Add CliProvider type discriminator ('claude' | 'codex' | 'gemini')
- Add CodexCliSettings (profile, authJson, configToml) and GeminiCliSettings types
- Update EndpointSettings with provider field (defaults 'claude' for backward compat)
- Refactor CliSettingsModal with provider selector and provider-specific forms
- Remove includeCoAuthoredBy field across all layers
- Extend CliConfigModal to show Config Profile for all tools (not just claude)
- Add provider-aware argument injection in cli-session-manager (--settings/--profile/env)
- Rename addClaudeCustomEndpoint to addCustomEndpoint (old name kept as deprecated alias)
- Replace providerBasedCount/directCount with per-provider counts in useCliSettings hook
- Update CliSettingsList with provider badges and per-provider stat cards
- Add Codex and Gemini test cases for validateSettings and createDefaultSettings
2026-02-25 17:40:43 +08:00
catlog22
7ebe674b62 feat(issue-panel): add multi-select functionality and send to terminal feature
feat(config-store): add dashboard feature flags to initial state
fix(skill-hub-routes): update skill index path for GitHub configuration
2026-02-25 10:38:47 +08:00
catlog22
e315e2315c Remove temporary verbose JSON file and cleanup script for VSCode bridge 2026-02-25 10:30:19 +08:00
catlog22
092b8e20dc feat(cleanup): remove ccw-vscode-bridge and related files 2026-02-25 10:22:55 +08:00
catlog22
45c61186c4 feat(server): add regression test for handling empty request bodies
feat(terminal): focus terminal on click
fix(vite): update API proxy path to avoid frontend route conflicts
2026-02-25 09:59:54 +08:00
catlog22
dadcc1af5e feat(ccw-litellm): enhance status checks and add file preview functionality 2026-02-24 21:46:25 +08:00
catlog22
33e12a31ac feat(skills): add skill deletion and improve UI/UX
- Add skill deletion functionality with confirmation dialog
- Protect builtin skills from deletion
- Optimize skill card layout (badge and enable button near menu)
- Change enable button to icon-only with theme color
- Improve card selection and hover states
- Fix skill hub installation state tracking (per-skill)
- Add proper i18n for delete feature (en/zh)
- Add loading states to delete confirmation dialog
- Remove manual refetch calls (use query invalidation)
2026-02-24 21:06:34 +08:00
catlog22
6c9ad9a9f3 refactor(req-plan): streamline codebase exploration and decomposition guidelines 2026-02-24 20:31:52 +08:00
catlog22
80ab955f8b fix(skills): respect tab=hub URL parameter in SkillsManagerPage
- Read URL tab parameter using useSearchParams
- Initialize locationFilter to 'hub' when tab=hub is present
- Allows /skill-hub route to correctly display hub content
2026-02-24 19:12:45 +08:00
catlog22
6cd24d03e6 feat(skill-hub): add refresh parameter to bypass cache in remote skills endpoint 2026-02-24 16:20:03 +08:00
catlog22
790832b0f9 fix(skill-hub): correct index.json path and support full directory download
- Fixed GITHUB_CONFIG.skillIndexPath from 'index.json' to 'skill-hub/index.json'
- Added RemoteSkillEntry.path field for directory-based skills
- Added buildDownloadUrlFromPath() helper function
- Added GitHub API-based directory download with downloadSkillDirectory()
- Added installSkillFromRemotePath() for full skill directory installation
- Modified install route to support both downloadUrl and path-based installation
2026-02-24 13:58:00 +08:00
catlog22
61e313a0c1 chore: move ccw-skill-hub to standalone repository
Migrated ccw-skill-hub to D:/ccw-skill-hub as independent git project.
Removed nested git repos (ccw/frontend/ccw-skill-hub, skill-hub-repo, skill-hub-temp).
2026-02-24 11:57:26 +08:00
catlog22
b2c1288dab fix(cli-viewer): resolve duplicate CLI output and sticky scroll button issues
- Create centralized useCliStreamWebSocket hook with module-level
  message tracking to ensure each WebSocket message is processed only once globally
- Replace position:absolute with position:sticky + flexbox wrapper
  for scroll-to-bottom buttons to fix viewport positioning
- Remove duplicate WebSocket handling from CliViewerPage, CliStreamMonitorLegacy,
  and CliStreamMonitorNew components

Fixes:
- CLI output no longer duplicated when multiple components subscribe
  to the same WebSocket feed
- Scroll-to-bottom button now stays fixed at bottom-right corner
  of viewport instead of scrolling with content
2026-02-24 09:40:43 +08:00
catlog22
2e32ab8f72 feat(hooks): add 7 hook templates with full install pipeline and extended trigger types
Extend HookTriggerType from 5 to 12 official events (Notification, SubagentStart,
SubagentStop, PreCompact, SessionEnd, PostToolUseFailure, PermissionRequest).
Add templates: stop-notify, auto-format-on-write, auto-lint-on-write,
block-sensitive-files, git-auto-stage, post-edit-index, session-end-summary
across notification/automation/indexing categories. Fix install pipeline to
use correct nested settings.json format with _templateId metadata for precise
detection. Redesign templates UI as responsive card grid with per-template icons.
2026-02-24 00:06:48 +08:00
catlog22
07b9d06cad fix(memorycore): preserve tags in importMemories and guard division by zero
- Add tags: memory.tags to importMemories upsertMemory call to prevent
  tag loss during cross-project import
- Guard buildCompressionMetadata against division by zero when
  originalSize is 0
2026-02-23 23:10:47 +08:00
catlog22
5cae3cb3c8 feat(memorycore): add tags system, session summaries, hook injection, tag filtering, and solidify compress mode
Implement 5 interconnected memorycore enhancements:

1. Tags backend: add tags TEXT column to memories table with migration,
   JSON array storage, full CRUD support via upsertMemory/getMemory/getMemories
2. LLM auto-tag extraction: extend extraction prompt to produce tags,
   parse and validate in pipeline, create CMEM from extraction results
3. Session summary API: expose rollout_summary via new REST endpoints
   GET /api/core-memory/sessions/summaries and sessions/:id/summary
4. Hook injection: increase SESSION_START_LIMIT to 1500, add Component 5
   (Recent Sessions) to UnifiedContextBuilder with 300-char budget
5. Tag filtering: add getMemoriesByTags() with json_each() for safe
   SQL matching, wire through MCP tool, CLI --tags flag, REST ?tags= param
6. Solidify compress mode: add --type compress to solidify.md with
   getRecentMemories(), archiveMemories(), buildCompressionMetadata()

Security fixes: safeParseTags() for corrupt DB data, json_each() instead
of LIKE injection, ESCAPE clause for searchSessionsByKeyword, singleton
store in unified-context-builder.
2026-02-23 22:56:25 +08:00
catlog22
ab0e25895c fix(cli): add conflict detection for codex review prompt + target flags
When both prompt and target flags (--uncommitted/--base/--commit) are
provided together for codex review mode, warn user and drop the prompt
to avoid CLI argument conflict error.
2026-02-23 22:54:41 +08:00
catlog22
02a203c6b2 fix(pending-question): silence log when no pending questions
Only log "Loaded X pending questions" when X > 0 to reduce noise
in CLI output. The message was appearing on every ccw command due to
module import chain, but is only meaningful for ccw view startup.
2026-02-22 19:36:55 +08:00
catlog22
367fb94718 feat: add Skill Hub feature for managing community skills
- Implemented Skill Hub page with tabs for remote, local, and installed skills.
- Added localization support for Chinese in skill-hub.json.
- Created API routes for fetching remote skills, listing local skills, and managing installed skills.
- Developed functionality for installing and uninstalling skills from both remote and local sources.
- Introduced caching mechanism for remote skills and handling updates for installed skills.
2026-02-22 19:02:57 +08:00
catlog22
87634740a3 fix(orchestrator): complete remaining high/medium priority fixes
Backend (orchestrator-routes.ts):
- Added broadcastExecutionStatusMessage helper for specific message types
- Added EXECUTION_PAUSED, EXECUTION_RESUMED, EXECUTION_STOPPED broadcasts
- Added CLI_SESSION_UNLOCKED broadcast on execution completion/failure
- Added sessionKey to ExecutionState interface for tracking
- Added totalSteps to EXECUTION_STARTED WebSocket message

Frontend (executionMonitorStore.ts):
- Added EXECUTION_FAILED message type handling
- Added totalSteps extraction from EXECUTION_STARTED payload
- Implemented pauseExecution, resumeExecution, stopExecution API calls
- Replaced TODO console.log with actual fetch API calls

Frontend (useWebSocket.ts):
- Added import for executionMonitorStore
- Added EXECUTION_* message routing to executionMonitorStore
2026-02-20 22:25:00 +08:00
catlog22
ca1a3fca83 fix(orchestrator): resolve high-priority issues from code review
1. Race condition fix: Removed frontend direct lockSession call in
   useOrchestratorExecution.ts - session locking now handled purely
   via backend WebSocket broadcast (CLI_SESSION_LOCKED)

2. WebSocket handlers: Added handleSessionLockedMessage and
   handleSessionUnlockedMessage to sessionManagerStore.ts

3. useWebSocket integration: Added case handlers for
   CLI_SESSION_LOCKED and CLI_SESSION_UNLOCKED messages

4. API input validation: Added validation for sessionConfig,
   stepTimeout, and errorStrategy in execute-in-session endpoint

5. Fixed wsBroadcast reference: Changed to broadcastToClients
   from context
2026-02-20 22:08:29 +08:00
catlog22
b2c1d32c86 refactor(terminal-dashboard): move agent list to execution monitor panel
- Remove AgentList component from left sidebar
- Integrate orchestration plans display into ExecutionMonitorPanel
- Execution Monitor now shows both workflow executions and orchestration plans
- Cleaner sidebar with only session tree
2026-02-20 22:06:21 +08:00
catlog22
7e5d47fe8d feat(terminal-dashboard): add session name (tag) field for grouping
- Add tag/name input field to CliConfigModal with auto-generation
- Auto-generate format: {tool}-{HHmmss} (e.g., gemini-143052)
- Add regenerate button for quick name changes
- Add i18n keys for new fields (en/zh)

Sessions are now grouped by tag in the sidebar for better organization.
2026-02-20 21:56:47 +08:00
catlog22
f8ff9eaa7f feat(orchestrator): redesign orchestrator page as template editor with terminal execution
Phase 1: Orchestrator Simplification
- Remove ExecutionMonitor from OrchestratorPage
- Replace "Run Workflow" button with "Send to Terminal" button
- Update i18n texts for template editor context

Phase 2: Session Lock Mechanism
- Add 'locked' status to TerminalStatus type
- Extend TerminalMeta with isLocked, lockReason, lockedByExecutionId, lockedAt
- Implement lockSession/unlockSession in sessionManagerStore
- Create SessionLockConfirmDialog component for input interception

Phase 3: Execution Monitor Panel
- Create executionMonitorStore for execution state management
- Create ExecutionMonitorPanel component with step progress display
- Add execution panel to DashboardToolbar and TerminalDashboardPage
- Support WebSocket message handling for execution updates

Phase 4: Execution Bridge
- Add POST /api/orchestrator/flows/:id/execute-in-session endpoint
- Create useExecuteFlowInSession hook for frontend API calls
- Broadcast EXECUTION_STARTED and CLI_SESSION_LOCKED WebSocket messages
- Lock session when execution starts, unlock on completion
2026-02-20 21:49:05 +08:00
catlog22
b38750f0cf refactor(terminal-dashboard): simplify CLI launch to dialog-only mode
- Replace dropdown menu with direct dialog button
- Remove unused state variables (selectedTool, launchMode, selectedShell)
- Update button icon to Plus and label to "New Session"
- Clean up i18n keys (remove unused tool/mode/shell options)
2026-02-20 21:31:21 +08:00
catlog22
1de283751b feat(terminal-dashboard): improve UX for pane/session management
- Add confirmation dialog when closing pane with active session
- Add explicit "Close Session" button to terminate backend PTY
- Handle "session not found" scenario with user-friendly message
- Add i18n keys for new UI elements (en/zh)
2026-02-20 21:21:02 +08:00
catlog22
aa9f23782a feat: 添加会话关闭功能及确认对话框,更新相关国际化文本 2026-02-20 20:48:24 +08:00
catlog22
d6bf941113 feat: 增加对 Windows CLI 工具的支持,允许使用 cmd 作为首选 shell,并改进错误处理 2026-02-20 11:14:22 +08:00
catlog22
46d4b4edfd Add comprehensive tests for keyword detection, session state management, and user abort detection
- Implement tests for KeywordDetector including keyword detection, sanitization, and priority handling.
- Add tests for SessionStateService covering session validation, loading, saving, and state updates.
- Create tests for UserAbortDetector to validate user abort detection logic and pattern matching.
2026-02-18 21:48:56 +08:00
catlog22
65762af254 feat: Add explorer and synthesizer roles with commands for codebase exploration and synthesis
- Implemented `explorer` role for parallel codebase exploration using `cli-explore-agent`.
- Created `explore.md` command documentation detailing exploration strategy and execution steps.
- Established `synthesizer` role for integrating insights from explorations, analyses, and discussions.
- Developed `synthesize.md` command documentation outlining synthesis strategy and output format.
- Configured team settings in `team-config.json` to support new roles and pipeline modes.
- Added regression test for CodexLens bootstrap fallback to ensure robustness in error handling.
2026-02-18 18:40:12 +08:00
catlog22
d2a8a13ae1 feat(codexlens): enhance bootstrapVenv with warning handling for UV and pip fallback 2026-02-18 18:06:05 +08:00
catlog22
951ac41ecc fix: resolve 3 TypeScript build errors
- Add instructionType and skillName optional props to PromptTemplateNodeData
- Fix effort type assertion in cli-executor-core
2026-02-18 17:59:36 +08:00