Speed Insights for static HTML uses /_vercel/speed-insights/script.js,
not the npm module via CDN. Also wrap localStorage.setItem in try/catch
to handle QuotaExceededError when search data exceeds 5MB limit.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Static site (docs/js/):
- Add escapeHTML() utility to utils.js for sanitizing dynamic content
- Apply escapeHTML to component names, descriptions, categories, and
install commands in card generation (search-functionality.js,
index-events.js)
- Replace innerHTML with DOM methods for search category tags
Dashboard:
- Create shared TypeIcon component using DOMParser for safe SVG
rendering (rejects malformed SVG via parsererror check)
- Remove all dangerouslySetInnerHTML usage from SearchModal,
ComponentGrid, TrendingView, and MyComponentsView
- Clean up unused ICONS imports
Resolves CLA-23
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Create 3 Neon tables: installation_outcomes, website_events, api_health_logs
- Add API endpoints: track-installation-outcome, track-website-events, health-check
- Track CLI installation success/failure with timing and error classification
- Add website event tracker (search, cart, component views) with batched sendBeacon
- Add health-check cron every 15min with Discord alerts on failure
- Integrate tracking in all 6 installIndividual* functions with batchId support
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add tabbed layout (Overview/Code) with sidebar, integrate Giscus for
GitHub Discussions-based commenting, and move validation section into
the Overview tab for better content organization.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Remove debug console.log statements across 9 files while preserving
all console.error in catch blocks and console.warn for missing data.
Add agent-teams-guide blog cover image.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Move featured projects section above search bar with compact horizontal design
- Make Skills the default filter (first position, active by default)
- Add redirect from / to /skills in vercel.json
- Fix search keywords bug when keywords is an array instead of string
- Update all JS files to default to 'skills' filter
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat: Add Featured Projects carousel with BrainGrid
- Added Featured section carousel below category filters in index.html
- Created docs/featured/braingrid/ with blog-style page design
- Implemented BrainGrid featured project page with product information
- Added CSS styles for featured carousel with responsive design
- Extended carousel.js with FeaturedCarousel class and scroll functionality
- Created SVG cover image for BrainGrid project
- Featured section includes card with image, description, and tags
* refactor: Make Featured carousel more compact with square cards
- Simplified Featured section title without command-block styling
- Changed featured cards to compact square design (280x280px)
- Replaced preview images with BrainGrid logo
- Added BrainGrid logo to article page
- Reduced card content to logo, name, minimal description, and arrow
- Updated carousel scroll amount for new card size
- Improved responsive breakpoints for mobile devices
---------
Co-authored-by: Claude <noreply@anthropic.com>
- Added 'skills' to validFilters in getFilterFromURL()
- Added 'skills' to component categories for search indexing
- Added skills icon 🎨 to category icons and typeConfig
- Enables proper /skills URL routing and search functionality
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
## Changes Made:
### 1. Modal Text Display Improvements
- Increased error/warning message font size from 14px to 16px for better readability
- Improved line height from 1.5 to 1.6 for better spacing
- Increased margin-bottom from 4px to 8px for better visual separation
### 2. Code Preview Text Wrapping
- Removed horizontal scroll (`overflow-x: auto`) from code previews
- Added `white-space: normal` to prevent excessive whitespace at line start
- Added `word-wrap: break-word` and `overflow-wrap: break-word` for proper text wrapping
- Applied to all code preview sections:
- Error line text previews
- Warning line text previews
- Example line text in errors
- Example line text in warnings
### 3. Line Number Scroll Synchronization
- Added `position: relative` to `.code-body` for better layout control
- Added `overflow: hidden` and `max-height: 600px` to `.code-line-numbers`
- Added `max-height: 600px` to `.code-content`
- Implemented JavaScript scroll sync between line numbers and code content
- Line numbers now scroll perfectly in sync with code content
### 4. Clickable Error Line Numbers
- Added `cursor: pointer` to error/warning line numbers
- Added "Click to see details" tooltip on error/warning lines
- Implemented click event listeners on all error/warning lines
- Click handler searches through validators to find matching error
- Opens validation modal with correct validator details when clicked
- Added hover effects with `transform: translateX(-2px)` and `cursor: help`
## User Experience Improvements:
- ✅ Error messages are now larger and easier to read (16px)
- ✅ Code snippets wrap naturally without horizontal scroll
- ✅ No excessive whitespace at the beginning of code lines
- ✅ Line numbers stay synchronized during scroll
- ✅ Error line numbers are interactive and open detailed validation modals
- ✅ Better visual hierarchy with improved spacing and sizing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude <noreply@anthropic.com>
- Add plugin dashboard server with WebSocket support
- Create modern web interface for plugin management
- Implement real-time plugin state detection
- Add install/enable/disable/uninstall commands
- Support status-based sorting (enabled first)
- Add auto-refresh every 30 seconds
- Update docs to showcase plugin dashboard feature
- Add smooth scroll to plugins section on banner click
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add plugin marketplace system with 10 curated plugins
- Create plugin detail pages with installation instructions
- Add component installation modal with copy functionality
- Update Python script to extract plugin data with category/folder paths
- Add category filters that load correctly based on URL
- Update footer across all pages for consistency
- Fix install commands to use folder/name format
Features:
- Plugin cards with View Details button
- Individual component installation with proper paths
- Related plugins based on shared keywords
- Dynamic category loading for all filter types
- URL-based filter detection and category display
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Remove all local environment detection logic and focus 100% on production.
Changes:
- Use static absolute paths for all resources (/css/, /js/, /favicon.ico)
- Remove complex environment detection and dynamic script loading
- Simplify DataLoader to always use absolute paths (/components.json)
- Clean up debugging logs and navigation links
- Static script tags for reliable loading order
This eliminates complexity and ensures robust production functionality.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
The DataLoader was using relative paths like 'components.json' which
resolved incorrectly from SEO-friendly URLs (/component/agent/name).
Changes:
- Add environment detection to DataLoader constructor
- Add getDataPath() method for environment-aware resource paths
- Use relative paths for local development (components.json)
- Use absolute paths for production (/components.json)
- Add debug logging to trace loading issues
This should fix the "Loading component..." issue in production
by ensuring components.json loads from the correct path.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changes:
- E2B launcher now downloads files to ./ (project root) instead of ./e2b-outputs/
- Updated confirmation dialog to show "Files will be downloaded to project root directory"
- Updated modal feature text to "Files downloaded to project root"
- Removed timestamp folder organization for simpler file management
This ensures generated files are immediately available in the project root
where users expect them, without needing to navigate to subfolders.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Corrections:
- Modal: Changed --agent=${componentPath} to correctly show folder/agent-name
- Index.html: Updated from --agent=frontend-developer to --agent=development-team/frontend-developer
- Steps section: Added missing agent specification in Cloud Sandbox step
- Tools section: Corrected E2B sandbox command format
This aligns with the CLI requirement where agents must be specified as:
--agent=folder/agent-name (e.g., development-team/frontend-developer)
The componentPath already contains the correct folder/name structure,
so this ensures the modal commands work correctly when copied.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Changes:
- E2B Sandbox section now only appears for agent components
- Commands, MCPs, settings, hooks, and templates no longer show E2B option
- This aligns with the CLI implementation where --sandbox only works with --agent
- Keeps modal clean and relevant for each component type
Reasoning:
E2B sandbox execution is specifically designed for agent workflows since
agents provide the AI decision-making needed for complex cloud operations.
Other component types (commands, settings, etc.) are configuration-based
and don't require isolated execution environments.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Modal Structure:
✅ Basic Installation - Install component locally with brief description
✅ Global Agent (Claude Code SDK) - For agents only, with usage and features
✅ Run in E2B Sandbox (Cloud Execution) NEW - Cloud execution with simplified setup
E2B Sandbox Improvements:
- Added NEW badge to highlight the feature
- Simplified API key setup section with .env example
- Cleaner command structure without multiple methods
- Improved API key links styling with hover effects
- Better responsive design for mobile devices
Visual Enhancements:
- Clear section dividers and consistent spacing
- Improved typography and color hierarchy
- Better organized content flow matching the screenshot
- Enhanced readability with proper descriptions
This matches the exact structure requested based on the modal screenshot.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Modal Improvements:
- Added detailed API key setup section with two methods
- Method 1: Environment variables (.env file) - recommended
- Method 2: Command line parameters - for testing
- Enhanced visual structure with separate sections for each method
- Added responsive design for mobile devices
Main Page Layout:
- E2B sandbox tool card now spans full width (3 columns)
- Improved internal layout with side-by-side .env setup
- Better spacing and organization for the expanded card
- Responsive breakpoints for mobile and tablet
Users now have clear, easy-to-follow instructions for both modal
components and main page examples with API key management.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added E2B sandbox section to all component modal details
- Includes cloud execution command with component-specific parameters
- Features: isolated environment, extended timeouts, file downloads, monitoring
- Added requirements section with E2B and Anthropic API key links
- Styled E2B section with blue gradient background and warning styling
- Handles templates vs other component types correctly in command generation
- Updated components.json with latest component scan (2 sandbox components)
Users can now see E2B sandbox instructions for every component in the modal.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
🌍 Major new feature: Global AI Agents powered by Claude Code SDK
## New Features
- **Global Agent Creation**: `--create-agent <agent-name>`
- **Agent Management**: `--list-agents`, `--update-agent`, `--remove-agent`
- **Zero Configuration**: Agents install to /usr/local/bin (immediately available)
- **Auto Context Detection**: Smart project type detection and file context
- **Universal Access**: Works from any directory, in scripts, CI/CD, npm tasks
## Technical Implementation
- New global-agent-manager.js module with complete agent lifecycle
- Automatic PATH management across shell environments
- Executable script generation with Claude Code SDK integration
- Real-time loading indicators during AI processing
- Robust error handling and fallback mechanisms
## Frontend Integration
- Enhanced agent modals with Global Agent installation options
- New CSS styles for global agent sections
- Copy-to-clipboard functionality for all commands
- Usage examples and feature highlights
## User Experience
Before: Traditional project-based agent installation
After: `cct --create-agent security-auditor` → `security-auditor "prompt"` (anywhere)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added .vscode to .gitignore to prevent IDE settings from being tracked.
- Changed CodeGPT API key from "Ollama" to "OpenAI" in settings.json.
- Modified CSS styles for various components to enhance the terminal interface, including adjustments to padding, margins, and grid layouts.
- Introduced new terminal-style search functionality in index.html with improved search input handling and results display.
- Enhanced JavaScript event handling for category filters and search functionality, including debouncing and dynamic category display.
- Updated search results formatting to reflect terminal-style aesthetics.
- Updated descriptions for RPG status bar and virtual code garden to include display details.
- Modified component documentation to reflect new features and descriptions for various statuslines.
- Removed max-height restrictions in CSS for better component visibility.
- Adjusted modal helper to show full component descriptions instead of truncated versions.
- Move search button to first position in filter-buttons row
- Remove display:none from search button to make it visible
- Add category-filter-btn class to all category filter buttons
- Update toggleSearch() function to hide/show category filters:
- When search is active: hide all category-filter-btn and category-filter-label elements
- When search is inactive: restore normal display of category filters
- Improved UX: clean interface switching between search mode and filter mode
User experience:
1. Click 🔍 Search button (first in row)
2. Category filters disappear, search bar appears
3. Click 🔍 Search button again to return to normal filter view
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
## Search System ✨
- ✅ Real-time search across all components (agents, commands, settings, hooks, MCPs)
- ✅ Intelligent scoring algorithm with multi-field matching
- ✅ Search result cards with full flip functionality and compact design
- ✅ Proper integration with global event handlers
- ✅ Hover effects and copy button functionality matching normal cards
- ✅ Keyboard shortcuts (Escape, Enter) and responsive design
## Cart Manager Fixes 🛒
- ✅ Added support for settings and hooks categories (5 total categories)
- ✅ Updated cart initialization, UI, and command generation
- ✅ Fixed JavaScript errors when adding settings/hooks to cart
- ✅ Added proper cart sections and icons for all component types
## Technical Improvements 🔧
- ✅ Fixed showComponentDetails function calls with correct parameters
- ✅ Matching HTML structure with normal cards (command-display, command-code-container)
- ✅ Proper CSS styling with debug helpers for troubleshooting
- ✅ Compact card design optimized for available space
- ✅ Search button temporarily hidden per user request
## Additional Features 📋
- ✅ Added comprehensive ASCII roadmap for future development phases
- ✅ Enhanced component path handling and category conversions
- ✅ Improved error handling and component loading
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added search button to filter buttons section with toggle functionality
- Implemented real-time search across all component categories (except templates)
- Search triggers after 3+ characters with 300ms debouncing for performance
- Searches through component names, descriptions, categories, tags, and keywords
- Added comprehensive search UI with input field, clear button, and results info
- Display search results grouped by category with match scoring
- Shows "No results" with helpful search suggestions when no matches found
- Integrated with existing cart functionality and component installation commands
- Added keyboard shortcuts (Escape to close, Enter to focus first result)
- Responsive design with mobile-optimized search interface
- Search data loaded from main components.json with fallback mechanisms
Features:
✅ Search across agents, commands, settings, hooks, and MCPs
✅ Real-time results with intelligent scoring algorithm
✅ Category-based result grouping and filtering
✅ Keyboard navigation support
✅ Mobile-responsive search interface
✅ Integration with existing cart and installation workflows
✅ Performance optimized with debouncing and caching
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update index-events.js to handle settings and hooks component types
- Add settings and hooks to availableCategories and data processing
- Update filter counts to include settings and hooks totals
- Add proper icons and colors for settings (⚙️ purple) and hooks (🪝 orange)
- Update contribution modal to support settings and hooks with JSON format
- Fix data-loader.js getTotalCounts method to include all component types
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Implemented CompanyCarousel class to manage carousel behavior for company stacks.
- Added auto-scroll, button controls, and touch/swipe support for mobile.
- Included global functions for scrolling the carousel and reinitializing on content changes.
feat: introduce StackRouter for handling stack pages
- Created StackRouter class to manage routing for company and technology stack pages.
- Implemented methods to load company and technology stacks, including data fetching and rendering.
- Added functionality for navigating back to the main page and loading all companies.
- Enhanced SEO with dynamic meta tag updates for stack pages.