## CI Pipeline (.github/workflows/ci.yml)
- Multi-Python version testing (3.10, 3.11, 3.12, 3.13)
- Cross-platform compatibility testing
- Code coverage reporting with Codecov integration
- Security scanning with Bandit
- Package build verification
- Docker containerization testing
## CD Pipeline (.github/workflows/publish.yml)
- Automatic PyPI publishing on version bumps to main branch
- Version existence checking to prevent duplicate publishes
- Test PyPI validation before production publish
- Automatic GitHub release creation with assets
- Manual release workflow support
## Version Management (.github/workflows/version-bump.yml)
- Manual version bump workflow with patch/minor/major options
- Custom version specification support
- Automatic changelog generation
- Pull request creation for version bumps
## Dependencies & Maintenance
- Dependabot configuration for automated dependency updates
- Grouped dependency updates for better PR management
- Monthly GitHub Actions updates
## Documentation & Setup
- Comprehensive CI/CD setup guide (.github/SETUP_CICD.md)
- PyPI API token configuration instructions
- GitHub secrets setup documentation
- Troubleshooting guide and best practices
## Additional Features
- Pull request template improvements
- Enhanced linting configuration with venv exclusions
- CHANGELOG.md initialization with current version history
- Local CI/CD testing script for validation
This implementation provides a complete CI/CD pipeline for:
- ✅ Automated testing on every PR
- ✅ Automated PyPI publishing on version bumps
- ✅ Security scanning and code quality checks
- ✅ Cross-platform and multi-Python version support
- ✅ Dependency management automation
- ✅ Release management with GitHub releases
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add CloudFlareError and PenpotAPIError exception classes to penpot_api.py
- Implement _is_cloudflare_error() method to detect CloudFlare protection blocks
- Add _create_cloudflare_error_message() to provide helpful user instructions
- Update _make_authenticated_request() to catch and handle CloudFlare errors
- Add _handle_api_error() method to MCP server for consistent error formatting
- Update all MCP tool methods to use enhanced error handling
- Provide clear instructions for resolving CloudFlare verification challenges
- Include error_type field for better error categorization in MCP responses
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Changed the formatting of the environment variable section in CLAUDE.md to use code block syntax for better readability.
- Added a CloudFlare protection notice in README.md to inform users about potential API request blocks and provide steps for resolution.
- Added a "Memories" section to document the retention of the current transport format for API requests.
- Enhanced project documentation for better clarity on API behavior.
- Updated the `login_for_export` method to extract the profile ID directly during the login process, eliminating the need for a separate `get_profile` call.
- Enhanced error handling for profile ID extraction from both the login response and the `auth-data` cookie.
- Adjusted comments for clarity and improved debugging output related to profile ID availability.
- Introduced a new script, `test_credentials.py`, to verify Penpot API credentials and list associated projects.
- The script loads environment variables, checks for required credentials, and attempts to authenticate with the Penpot API.
- Added functionality to fetch and display project details and files, including error handling for authentication and project retrieval.
- Updated `PenpotAPI` class to include a User-Agent header and improved error handling during profile retrieval.
- Minor adjustments in import order across various modules for consistency.
- Introduced CLAUDE.md to provide comprehensive guidance on the Penpot MCP Server, including project overview, key commands, architecture, and common workflows.
- Enhanced the `get_object_subtree_with_fields` function to track visited nodes and handle circular references, ensuring robust tree structure retrieval.
- Added tests for circular reference handling in `test_penpot_tree.py` to validate new functionality.