- Remove redundant serverless function files from /docs/api
- Update README to clarify two-directory architecture
- /api/ for serverless functions (Vercel requirement)
- /docs/api/ for static JSON files only
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This reverts commit b082254. Vercel requires serverless functions in /api/
regardless of outputDirectory. Both directories are needed:
- /api/ for serverless functions (Vercel auto-detects here)
- /docs/api/ can be removed as it's redundant
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Eliminated duplicate /api directory (not used by Vercel)
- Updated /docs/api/README.md to reflect single source of truth
- /docs/api/track-download-supabase.js already includes 'skill' type support
- Simplified maintenance workflow (no more file syncing needed)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added 'skill' to validTypes array in track-download-supabase.js
- Ensures download analytics properly track skill installations
- Completes skills integration for web interface and backend
- 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>
The download tracking was failing because Vercel serves from /docs/ as
the outputDirectory. Serverless functions must be inside this directory
to be detected and deployed correctly.
Changes:
- Copy track-download-supabase.js to docs/api/
- Copy package.json with dependencies to docs/api/
- Add comprehensive README.md explaining API structure
- Create sync-api.sh script for easy maintenance
- Keep /api/ as source of truth, /docs/api/ for deployment
This fixes the 404 error on:
https://www.aitmpl.com/api/track-download-supabase
Technical details:
- vercel.json has "outputDirectory": "docs"
- Vercel only detects functions inside the output directory
- Both static files (agents.json) and serverless functions now coexist
- Environment variables (SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY) required
Testing:
After Vercel deployment, test with:
curl -X POST https://www.aitmpl.com/api/track-download-supabase \
-H "Content-Type: application/json" \
-d '{"type":"agent","name":"test","path":"test","category":"test"}'
🤖 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>
JavaScript files were loading with relative paths (js/data-loader.js)
which resolved incorrectly from SEO-friendly URLs like
/component/agent/name to /component/agent/js/data-loader.js.
Changes:
- Replace static script tags with dynamic environment-aware loading
- Use relative paths (js/) for local development
- Use absolute paths (/js/) for production
- Maintain script execution order with async=false
- Add debugging logs for troubleshooting
This resolves MIME type errors and ensures JavaScript functionality
works correctly on production component pages.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>