SuperClaude/setup/utils/environment.py

513 lines
18 KiB
Python
Raw Normal View History

"""
Environment variable management for SuperClaude
Cross-platform utilities for setting up persistent environment variables
"""
import os
import sys
import subprocess
2025-08-15 14:39:27 +02:00
import json
from pathlib import Path
from typing import Dict, Optional
2025-08-15 14:39:27 +02:00
from datetime import datetime
from .ui import display_info, display_success, display_warning, Colors
from .logger import get_logger
Fixes and improvement (#378) * Fix: Install only selected MCP servers and ensure valid empty backups This commit addresses two separate issues: 1. **MCP Installation:** The `install` command was installing all MCP servers instead of only the ones selected by the user. The `_install` method in `setup/components/mcp.py` was iterating through all available servers, not the user's selection. This has been fixed to respect the `selected_mcp_servers` configuration. A new test has been added to verify this fix. 2. **Backup Creation:** The `create_backup` method in `setup/core/installer.py` created an invalid `.tar.gz` file when the backup source was empty. This has been fixed to ensure that a valid, empty tar archive is always created. A test was added for this as well. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * Fix: Correct installer validation for MCP and MCP Docs components This commit fixes a validation issue in the installer where it would incorrectly fail after a partial installation of MCP servers. The `MCPComponent` validation logic was checking for all "required" servers, regardless of whether they were selected by the user. This has been corrected to only validate the servers that were actually installed, by checking against the list of installed servers stored in the metadata. The metadata storage has also been fixed to only record the installed servers. The `MCPDocsComponent` was failing validation because it was not being registered in the metadata if no documentation files were installed. This has been fixed by ensuring the post-installation hook runs even when no files are copied. New tests have been added for both components to verify the corrected logic. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * Fix: Allow re-installation of components and correct validation logic This commit fixes a bug that prevented new MCP servers from being installed on subsequent runs of the installer. It also fixes the validation logic that was causing failures after a partial installation. The key changes are: 1. A new `is_reinstallable` method has been added to the base `Component` class. This allows certain components (like the `mcp` component) to be re-run even if they are already marked as installed. 2. The installer logic has been updated to respect this new method. 3. The `MCPComponent` now correctly stores only the installed servers in the metadata. 4. The validation logic for `MCPComponent` and `MCPDocsComponent` has been corrected to prevent incorrect failures. New tests have been added to verify all aspects of the new logic. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * feat: Display authors in UI header and update author info This commit implements the user's request to display author names and emails in the UI header of the installer. The key changes are: 1. The `__email__` field in `SuperClaude/__init__.py` has been updated to include both authors' emails. 2. The `display_header` function in `setup/utils/ui.py` has been modified to read the author and email information and display it. 3. A new test has been added to `tests/test_ui.py` to verify the new UI output. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * feat: Version bump to 4.1.0 and various fixes This commit prepares the project for the v4.1.0 release. It includes a version bump across all relevant files and incorporates several bug fixes and feature enhancements from recent tasks. Key changes in this release: - **Version Bump**: The project version has been updated from 4.0.9 to 4.1.0 in all configuration files, documentation, and source code. - **Installer Fixes**: - Components can now be marked as `reinstallable`, allowing them to be re-run on subsequent installations. This fixes a bug where new MCP servers could not be added. - The validation logic for `mcp` and `mcp_docs` components has been corrected to avoid incorrect failures. - A bug in the backup creation process that created invalid empty archives has been fixed. - **UI Enhancements**: - Author names and emails are now displayed in the installer UI header. - **Metadata Updates**: - Mithun Gowda B has been added as an author. - **New Tests**: - Comprehensive tests have been added for the installer logic, MCP components, and UI changes to ensure correctness and prevent regressions. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * fix: Resolve dependencies for partial installs and other fixes This commit addresses several issues, the main one being a dependency resolution failure during partial installations. Key changes: - **Dependency Resolution**: The installer now correctly resolves the full dependency tree when a user requests to install a subset of components. This fixes the "Unknown component: core" error. - **Component Re-installation**: A new `is_reinstallable` flag allows components like `mcp` to be re-run on subsequent installs, enabling the addition of new servers. - **Validation Logic**: The validation for `mcp` and `mcp_docs` has been corrected to avoid spurious failures. - **UI and Metadata**: Author information has been added to the UI header and source files. - **Version Bump**: The project version has been updated to 4.1.0. - **Tests**: New tests have been added to cover all the above changes. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * fix: Installer fixes and version bump to 4.1.0 This commit includes a collection of fixes for the installer logic, UI enhancements, and a version bump to 4.1.0. Key changes: - **Dependency Resolution**: The installer now correctly resolves the full dependency tree for partial installations, fixing the "Unknown component: core" error. - **Component Re-installation**: A new `is_reinstallable` flag allows components like `mcp` to be re-run to add new servers. - **MCP Installation**: The non-interactive installation of the `mcp` component now correctly prompts the user to select servers. - **Validation Logic**: The post-installation validation logic has been corrected to only validate components from the current session and to use the correct list of installed servers. - **UI & Metadata**: Author information has been added to the UI and source files. - **Version Bump**: The project version has been updated from 4.0.9 to 4.1.0 across all files. - **Tests**: New tests have been added to cover all the bug fixes. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * feat: Add --authors flag and multiple installer fixes This commit introduces the `--authors` flag to display author information and includes a collection of fixes for the installer logic. Key changes: - **New Feature**: Added an `--authors` flag that displays the names, emails, and GitHub usernames of the project authors. - **Dependency Resolution**: Fixed a critical bug where partial installations would fail due to unresolved dependencies. - **Component Re-installation**: Added a mechanism to allow components to be "reinstallable", fixing an issue that prevented adding new MCP servers on subsequent runs. - **MCP Installation**: The non-interactive installation of the `mcp` component now correctly prompts for server selection. - **Validation Logic**: Corrected the post-installation validation to prevent spurious errors. - **Version Bump**: The project version has been updated to 4.1.0. - **Metadata**: Author and GitHub information has been added to the source files. - **UI**: The installer header now displays author information. - **Tests**: Added new tests for all new features and bug fixes. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * Add Docker support and framework enhancements - Add serena-docker.json MCP configuration - Update MCP configs and installer components - Enhance CLI commands with new functionality - Add symbols utility for framework operations - Improve UI and logging components 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Bump version from 4.1.1 to 4.1.2 - Update version across all package files - Update documentation and README files - Update Python module version strings - Update feature configuration files 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Bump version from 4.1.2 to 4.1.3 - Update version across all package files - Update documentation and README files - Update Python module version strings - Update feature configuration files 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Fix home directory detection for immutable distros - Add get_home_directory() function to handle /var/home/$USER paths - Support Fedora Silverblue, Universal Blue, and other immutable distros - Replace all Path.home() calls throughout the setup system - Add fallback methods for edge cases and compatibility - Create test script for immutable distro validation Fixes: - Incorrect home path detection on immutable Linux distributions - Installation failures on Fedora Silverblue/Universal Blue - Issues with Claude Code configuration paths Technical changes: - New get_home_directory() in utils/environment.py - Updated all CLI commands, validators, and core components - Maintains backward compatibility with standard systems - Robust fallback chain for edge cases 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Fix circular import and complete immutable distro support - Move get_home_directory() to separate paths.py module - Resolve circular import between environment.py and logger.py - Update all import statements across the setup system - Verify functionality with comprehensive testing Technical changes: - Created setup/utils/paths.py for path utilities - Updated imports in all affected modules - Maintains full backward compatibility - Fixes installation on immutable distros Testing completed: - ✅ Basic home directory detection works - ✅ Installation system integration works - ✅ Environment utilities integration works - ✅ Immutable distro logic validated 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Fix mcp_docs installation bugs - Fix mcp_docs component incorrectly marking as installed when no MCP servers selected - Add MCP server selection prompt when mcp_docs component is explicitly requested - Return False instead of calling _post_install() when no servers selected or files found - Add user-friendly warning when mcp_docs requested without server selection - Remove mcp_docs from installation when no servers are available 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix MCP server name mapping for documentation files - Add mapping for sequential-thinking -> MCP_Sequential.md - Add mapping for morphllm-fast-apply -> MCP_Morphllm.md - Ensures mcp_docs installation works with all MCP server naming conventions 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Enable mcp_docs component reinstallation - Add is_reinstallable() method returning True to allow repeat installations - Fixes issue where mcp_docs was skipped on subsequent installation attempts - Enables users to change MCP server selections and update documentation 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix repeat installation issues for mcp_docs - Ensure mcp component is auto-added when mcp_docs is selected with servers - Fix component_files tracking to only include successfully copied files - Ensures CLAUDE.md gets properly updated with MCP documentation imports - Fixes issue where MCP servers weren't installed on repeat attempts 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix MCP component metadata tracking and debug logging - Fix servers_count to track actually installed servers instead of total available - Add installed_servers list to metadata for better tracking - Add debug logging to trace component auto-addition - Ensures MCP component appears properly in metadata when servers are installed 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix pyproject.toml license format and add missing classifier - Fix license format from string to {text = "MIT"} format - Add missing "License :: OSI Approved :: MIT License" classifier - Fix indentation consistency in classifiers section - Resolves setup.py installation errors and PEP 621 compliance 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix MCP incremental installation and auto-detection system PROBLEM FIXED: - MCP component only registered servers selected during current session - mcp_docs component only installed docs for newly selected servers - Users had to reinstall everything when adding new MCP servers - Installation failed if no servers selected but servers existed SOLUTION IMPLEMENTED: - Add auto-detection of existing MCP servers from config files (.claude.json, claude_desktop_config.json) - Add CLI detection via 'claude mcp list' output parsing - Add smart server merging (existing + selected + previously installed) - Add server name normalization for common variations - Fix CLI logic to allow mcp_docs installation without server selection - Add graceful error handling for corrupted configs KEY FEATURES: ✅ Auto-detects existing MCP servers from multiple config locations ✅ Supports incremental installation (add new servers without breaking existing) ✅ Works with or without --install-dir argument ✅ Handles server name variations (sequential vs sequential-thinking, etc.) ✅ Maintains metadata persistence across installation sessions ✅ Graceful fallback when config files are corrupted ✅ Compatible with both interactive and non-interactive modes TESTED SCENARIOS: - Fresh installation with no MCP servers ✅ - Auto-detection with existing servers ✅ - Incremental server additions ✅ - Mixed mode (new + existing servers) ✅ - Error handling with corrupted configs ✅ - Default vs custom installation directories ✅ - Interactive vs command-line modes ✅ Files changed: - setup/cli/commands/install.py: Allow mcp_docs auto-detection mode - setup/components/mcp.py: Add comprehensive auto-detection logic - setup/components/mcp_docs.py: Add auto-detection for documentation 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Integrate SuperClaude framework flags into help command ENHANCEMENT: - Add comprehensive flag documentation to /sc:help command - Include all 25 SuperClaude framework flags with descriptions - Organize flags into logical categories (Mode, MCP, Analysis, Execution, Output) - Add practical usage examples showing flag combinations - Include flag priority rules and precedence hierarchy NEW SECTIONS ADDED: ✅ Mode Activation Flags (5 flags): --brainstorm, --introspect, --task-manage, --orchestrate, --token-efficient ✅ MCP Server Flags (8 flags): --c7, --seq, --magic, --morph, --serena, --play, --all-mcp, --no-mcp ✅ Analysis Depth Flags (3 flags): --think, --think-hard, --ultrathink ✅ Execution Control Flags (6 flags): --delegate, --concurrency, --loop, --iterations, --validate, --safe-mode ✅ Output Optimization Flags (3 flags): --uc, --scope, --focus ✅ Flag Priority Rules: Clear hierarchy and precedence guidelines ✅ Usage Examples: 4 practical examples showing real-world flag combinations IMPACT: - Users can now discover all SuperClaude capabilities from /sc:help - Single source of truth for commands AND flags - Improved discoverability of advanced features - Clear guidance on flag usage and combinations - Help content nearly doubled (68 → 148 lines) with valuable reference information Files changed: - SuperClaude/Commands/help.md: Integrate FLAGS.md content with structured tables and examples 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Remove non-existent commands from modes.md documentation PROBLEM FIXED: - Documentation contained references to fake/non-existent commands - Commands like sc:fix, sc:simple-pix, sc:update, sc:develop, sc:modernize, sc:simple-fix don't exist in CLI - Confusing users who try to use these commands and get errors - Inconsistency between documentation and actual SuperClaude command availability COMMANDS REMOVED/REPLACED: ❌ /sc:simple-fix → ✅ /sc:troubleshoot (real command) ❌ /sc:develop → ✅ /sc:implement (real command) ❌ /sc:modernize → ✅ /sc:improve (real command) AFFECTED FILES: - Docs/User-Guide/modes.md: Fixed all non-existent command references - Docs/User-Guide-jp/modes.md: Fixed Japanese translation with same issues - Docs/User-Guide-zh/modes.md: Fixed Chinese translation with same issues VERIFICATION: ✅ All remaining /sc: commands verified to exist in SuperClaude/Commands/ ✅ No more references to fake commands in any language version ✅ Examples now use only real, working SuperClaude commands ✅ User experience improved - no more confusion from non-working commands REAL COMMANDS REFERENCED: - /sc:analyze, /sc:brainstorm, /sc:help, /sc:implement - /sc:improve, /sc:reflect, /sc:troubleshoot - All verified to exist in CLI implementation 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Version bump to 4.1.4 CHANGELOG: ✅ Added comprehensive flag documentation to /sc:help command ✅ Fixed MCP incremental installation and auto-detection system ✅ Cleaned up documentation by removing non-existent commands ✅ Enhanced user experience with complete capability reference VERSION UPDATES: - Updated VERSION file: 4.1.3 → 4.1.4 - Updated pyproject.toml: 4.1.3 → 4.1.4 - Updated package.json: 4.1.3 → 4.1.4 - Updated all Python __init__.py fallback versions - Updated all documentation references across all languages - Updated setup/data/features.json component versions - Updated CHANGELOG.md with comprehensive 4.1.4 release notes SCOPE OF CHANGES: 📦 Core files: VERSION, pyproject.toml, package.json, __init__.py files 📚 Documentation: All .md files across English, Japanese, Chinese 🔧 Setup files: features.json, base.py version references 📝 Project files: README files, CHANGELOG, SECURITY, CONTRIBUTING VERIFICATION: ✅ No remaining 4.1.3 references found ✅ 29 files now properly reference 4.1.4 ✅ All language versions consistently updated ✅ Package metadata properly versioned for distribution 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Happy <yesreply@happy.engineering>
2025-09-20 10:38:42 +02:00
from .paths import get_home_directory
2025-08-15 14:39:27 +02:00
def _get_env_tracking_file() -> Path:
"""Get path to environment variable tracking file"""
from .. import DEFAULT_INSTALL_DIR
Fixes and improvement (#378) * Fix: Install only selected MCP servers and ensure valid empty backups This commit addresses two separate issues: 1. **MCP Installation:** The `install` command was installing all MCP servers instead of only the ones selected by the user. The `_install` method in `setup/components/mcp.py` was iterating through all available servers, not the user's selection. This has been fixed to respect the `selected_mcp_servers` configuration. A new test has been added to verify this fix. 2. **Backup Creation:** The `create_backup` method in `setup/core/installer.py` created an invalid `.tar.gz` file when the backup source was empty. This has been fixed to ensure that a valid, empty tar archive is always created. A test was added for this as well. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * Fix: Correct installer validation for MCP and MCP Docs components This commit fixes a validation issue in the installer where it would incorrectly fail after a partial installation of MCP servers. The `MCPComponent` validation logic was checking for all "required" servers, regardless of whether they were selected by the user. This has been corrected to only validate the servers that were actually installed, by checking against the list of installed servers stored in the metadata. The metadata storage has also been fixed to only record the installed servers. The `MCPDocsComponent` was failing validation because it was not being registered in the metadata if no documentation files were installed. This has been fixed by ensuring the post-installation hook runs even when no files are copied. New tests have been added for both components to verify the corrected logic. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * Fix: Allow re-installation of components and correct validation logic This commit fixes a bug that prevented new MCP servers from being installed on subsequent runs of the installer. It also fixes the validation logic that was causing failures after a partial installation. The key changes are: 1. A new `is_reinstallable` method has been added to the base `Component` class. This allows certain components (like the `mcp` component) to be re-run even if they are already marked as installed. 2. The installer logic has been updated to respect this new method. 3. The `MCPComponent` now correctly stores only the installed servers in the metadata. 4. The validation logic for `MCPComponent` and `MCPDocsComponent` has been corrected to prevent incorrect failures. New tests have been added to verify all aspects of the new logic. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * feat: Display authors in UI header and update author info This commit implements the user's request to display author names and emails in the UI header of the installer. The key changes are: 1. The `__email__` field in `SuperClaude/__init__.py` has been updated to include both authors' emails. 2. The `display_header` function in `setup/utils/ui.py` has been modified to read the author and email information and display it. 3. A new test has been added to `tests/test_ui.py` to verify the new UI output. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * feat: Version bump to 4.1.0 and various fixes This commit prepares the project for the v4.1.0 release. It includes a version bump across all relevant files and incorporates several bug fixes and feature enhancements from recent tasks. Key changes in this release: - **Version Bump**: The project version has been updated from 4.0.9 to 4.1.0 in all configuration files, documentation, and source code. - **Installer Fixes**: - Components can now be marked as `reinstallable`, allowing them to be re-run on subsequent installations. This fixes a bug where new MCP servers could not be added. - The validation logic for `mcp` and `mcp_docs` components has been corrected to avoid incorrect failures. - A bug in the backup creation process that created invalid empty archives has been fixed. - **UI Enhancements**: - Author names and emails are now displayed in the installer UI header. - **Metadata Updates**: - Mithun Gowda B has been added as an author. - **New Tests**: - Comprehensive tests have been added for the installer logic, MCP components, and UI changes to ensure correctness and prevent regressions. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * fix: Resolve dependencies for partial installs and other fixes This commit addresses several issues, the main one being a dependency resolution failure during partial installations. Key changes: - **Dependency Resolution**: The installer now correctly resolves the full dependency tree when a user requests to install a subset of components. This fixes the "Unknown component: core" error. - **Component Re-installation**: A new `is_reinstallable` flag allows components like `mcp` to be re-run on subsequent installs, enabling the addition of new servers. - **Validation Logic**: The validation for `mcp` and `mcp_docs` has been corrected to avoid spurious failures. - **UI and Metadata**: Author information has been added to the UI header and source files. - **Version Bump**: The project version has been updated to 4.1.0. - **Tests**: New tests have been added to cover all the above changes. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * fix: Installer fixes and version bump to 4.1.0 This commit includes a collection of fixes for the installer logic, UI enhancements, and a version bump to 4.1.0. Key changes: - **Dependency Resolution**: The installer now correctly resolves the full dependency tree for partial installations, fixing the "Unknown component: core" error. - **Component Re-installation**: A new `is_reinstallable` flag allows components like `mcp` to be re-run to add new servers. - **MCP Installation**: The non-interactive installation of the `mcp` component now correctly prompts the user to select servers. - **Validation Logic**: The post-installation validation logic has been corrected to only validate components from the current session and to use the correct list of installed servers. - **UI & Metadata**: Author information has been added to the UI and source files. - **Version Bump**: The project version has been updated from 4.0.9 to 4.1.0 across all files. - **Tests**: New tests have been added to cover all the bug fixes. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * feat: Add --authors flag and multiple installer fixes This commit introduces the `--authors` flag to display author information and includes a collection of fixes for the installer logic. Key changes: - **New Feature**: Added an `--authors` flag that displays the names, emails, and GitHub usernames of the project authors. - **Dependency Resolution**: Fixed a critical bug where partial installations would fail due to unresolved dependencies. - **Component Re-installation**: Added a mechanism to allow components to be "reinstallable", fixing an issue that prevented adding new MCP servers on subsequent runs. - **MCP Installation**: The non-interactive installation of the `mcp` component now correctly prompts for server selection. - **Validation Logic**: Corrected the post-installation validation to prevent spurious errors. - **Version Bump**: The project version has been updated to 4.1.0. - **Metadata**: Author and GitHub information has been added to the source files. - **UI**: The installer header now displays author information. - **Tests**: Added new tests for all new features and bug fixes. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * Add Docker support and framework enhancements - Add serena-docker.json MCP configuration - Update MCP configs and installer components - Enhance CLI commands with new functionality - Add symbols utility for framework operations - Improve UI and logging components 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Bump version from 4.1.1 to 4.1.2 - Update version across all package files - Update documentation and README files - Update Python module version strings - Update feature configuration files 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Bump version from 4.1.2 to 4.1.3 - Update version across all package files - Update documentation and README files - Update Python module version strings - Update feature configuration files 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Fix home directory detection for immutable distros - Add get_home_directory() function to handle /var/home/$USER paths - Support Fedora Silverblue, Universal Blue, and other immutable distros - Replace all Path.home() calls throughout the setup system - Add fallback methods for edge cases and compatibility - Create test script for immutable distro validation Fixes: - Incorrect home path detection on immutable Linux distributions - Installation failures on Fedora Silverblue/Universal Blue - Issues with Claude Code configuration paths Technical changes: - New get_home_directory() in utils/environment.py - Updated all CLI commands, validators, and core components - Maintains backward compatibility with standard systems - Robust fallback chain for edge cases 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Fix circular import and complete immutable distro support - Move get_home_directory() to separate paths.py module - Resolve circular import between environment.py and logger.py - Update all import statements across the setup system - Verify functionality with comprehensive testing Technical changes: - Created setup/utils/paths.py for path utilities - Updated imports in all affected modules - Maintains full backward compatibility - Fixes installation on immutable distros Testing completed: - ✅ Basic home directory detection works - ✅ Installation system integration works - ✅ Environment utilities integration works - ✅ Immutable distro logic validated 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Fix mcp_docs installation bugs - Fix mcp_docs component incorrectly marking as installed when no MCP servers selected - Add MCP server selection prompt when mcp_docs component is explicitly requested - Return False instead of calling _post_install() when no servers selected or files found - Add user-friendly warning when mcp_docs requested without server selection - Remove mcp_docs from installation when no servers are available 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix MCP server name mapping for documentation files - Add mapping for sequential-thinking -> MCP_Sequential.md - Add mapping for morphllm-fast-apply -> MCP_Morphllm.md - Ensures mcp_docs installation works with all MCP server naming conventions 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Enable mcp_docs component reinstallation - Add is_reinstallable() method returning True to allow repeat installations - Fixes issue where mcp_docs was skipped on subsequent installation attempts - Enables users to change MCP server selections and update documentation 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix repeat installation issues for mcp_docs - Ensure mcp component is auto-added when mcp_docs is selected with servers - Fix component_files tracking to only include successfully copied files - Ensures CLAUDE.md gets properly updated with MCP documentation imports - Fixes issue where MCP servers weren't installed on repeat attempts 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix MCP component metadata tracking and debug logging - Fix servers_count to track actually installed servers instead of total available - Add installed_servers list to metadata for better tracking - Add debug logging to trace component auto-addition - Ensures MCP component appears properly in metadata when servers are installed 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix pyproject.toml license format and add missing classifier - Fix license format from string to {text = "MIT"} format - Add missing "License :: OSI Approved :: MIT License" classifier - Fix indentation consistency in classifiers section - Resolves setup.py installation errors and PEP 621 compliance 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix MCP incremental installation and auto-detection system PROBLEM FIXED: - MCP component only registered servers selected during current session - mcp_docs component only installed docs for newly selected servers - Users had to reinstall everything when adding new MCP servers - Installation failed if no servers selected but servers existed SOLUTION IMPLEMENTED: - Add auto-detection of existing MCP servers from config files (.claude.json, claude_desktop_config.json) - Add CLI detection via 'claude mcp list' output parsing - Add smart server merging (existing + selected + previously installed) - Add server name normalization for common variations - Fix CLI logic to allow mcp_docs installation without server selection - Add graceful error handling for corrupted configs KEY FEATURES: ✅ Auto-detects existing MCP servers from multiple config locations ✅ Supports incremental installation (add new servers without breaking existing) ✅ Works with or without --install-dir argument ✅ Handles server name variations (sequential vs sequential-thinking, etc.) ✅ Maintains metadata persistence across installation sessions ✅ Graceful fallback when config files are corrupted ✅ Compatible with both interactive and non-interactive modes TESTED SCENARIOS: - Fresh installation with no MCP servers ✅ - Auto-detection with existing servers ✅ - Incremental server additions ✅ - Mixed mode (new + existing servers) ✅ - Error handling with corrupted configs ✅ - Default vs custom installation directories ✅ - Interactive vs command-line modes ✅ Files changed: - setup/cli/commands/install.py: Allow mcp_docs auto-detection mode - setup/components/mcp.py: Add comprehensive auto-detection logic - setup/components/mcp_docs.py: Add auto-detection for documentation 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Integrate SuperClaude framework flags into help command ENHANCEMENT: - Add comprehensive flag documentation to /sc:help command - Include all 25 SuperClaude framework flags with descriptions - Organize flags into logical categories (Mode, MCP, Analysis, Execution, Output) - Add practical usage examples showing flag combinations - Include flag priority rules and precedence hierarchy NEW SECTIONS ADDED: ✅ Mode Activation Flags (5 flags): --brainstorm, --introspect, --task-manage, --orchestrate, --token-efficient ✅ MCP Server Flags (8 flags): --c7, --seq, --magic, --morph, --serena, --play, --all-mcp, --no-mcp ✅ Analysis Depth Flags (3 flags): --think, --think-hard, --ultrathink ✅ Execution Control Flags (6 flags): --delegate, --concurrency, --loop, --iterations, --validate, --safe-mode ✅ Output Optimization Flags (3 flags): --uc, --scope, --focus ✅ Flag Priority Rules: Clear hierarchy and precedence guidelines ✅ Usage Examples: 4 practical examples showing real-world flag combinations IMPACT: - Users can now discover all SuperClaude capabilities from /sc:help - Single source of truth for commands AND flags - Improved discoverability of advanced features - Clear guidance on flag usage and combinations - Help content nearly doubled (68 → 148 lines) with valuable reference information Files changed: - SuperClaude/Commands/help.md: Integrate FLAGS.md content with structured tables and examples 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Remove non-existent commands from modes.md documentation PROBLEM FIXED: - Documentation contained references to fake/non-existent commands - Commands like sc:fix, sc:simple-pix, sc:update, sc:develop, sc:modernize, sc:simple-fix don't exist in CLI - Confusing users who try to use these commands and get errors - Inconsistency between documentation and actual SuperClaude command availability COMMANDS REMOVED/REPLACED: ❌ /sc:simple-fix → ✅ /sc:troubleshoot (real command) ❌ /sc:develop → ✅ /sc:implement (real command) ❌ /sc:modernize → ✅ /sc:improve (real command) AFFECTED FILES: - Docs/User-Guide/modes.md: Fixed all non-existent command references - Docs/User-Guide-jp/modes.md: Fixed Japanese translation with same issues - Docs/User-Guide-zh/modes.md: Fixed Chinese translation with same issues VERIFICATION: ✅ All remaining /sc: commands verified to exist in SuperClaude/Commands/ ✅ No more references to fake commands in any language version ✅ Examples now use only real, working SuperClaude commands ✅ User experience improved - no more confusion from non-working commands REAL COMMANDS REFERENCED: - /sc:analyze, /sc:brainstorm, /sc:help, /sc:implement - /sc:improve, /sc:reflect, /sc:troubleshoot - All verified to exist in CLI implementation 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Version bump to 4.1.4 CHANGELOG: ✅ Added comprehensive flag documentation to /sc:help command ✅ Fixed MCP incremental installation and auto-detection system ✅ Cleaned up documentation by removing non-existent commands ✅ Enhanced user experience with complete capability reference VERSION UPDATES: - Updated VERSION file: 4.1.3 → 4.1.4 - Updated pyproject.toml: 4.1.3 → 4.1.4 - Updated package.json: 4.1.3 → 4.1.4 - Updated all Python __init__.py fallback versions - Updated all documentation references across all languages - Updated setup/data/features.json component versions - Updated CHANGELOG.md with comprehensive 4.1.4 release notes SCOPE OF CHANGES: 📦 Core files: VERSION, pyproject.toml, package.json, __init__.py files 📚 Documentation: All .md files across English, Japanese, Chinese 🔧 Setup files: features.json, base.py version references 📝 Project files: README files, CHANGELOG, SECURITY, CONTRIBUTING VERIFICATION: ✅ No remaining 4.1.3 references found ✅ 29 files now properly reference 4.1.4 ✅ All language versions consistently updated ✅ Package metadata properly versioned for distribution 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Happy <yesreply@happy.engineering>
2025-09-20 10:38:42 +02:00
install_dir = get_home_directory() / ".claude"
2025-08-15 14:39:27 +02:00
install_dir.mkdir(exist_ok=True)
return install_dir / "superclaude_env_vars.json"
def _load_env_tracking() -> Dict[str, Dict[str, str]]:
"""Load environment variable tracking data"""
tracking_file = _get_env_tracking_file()
try:
if tracking_file.exists():
with open(tracking_file, 'r') as f:
return json.load(f)
except Exception as e:
get_logger().warning(f"Could not load environment tracking: {e}")
return {}
def _save_env_tracking(tracking_data: Dict[str, Dict[str, str]]) -> bool:
"""Save environment variable tracking data"""
tracking_file = _get_env_tracking_file()
try:
with open(tracking_file, 'w') as f:
json.dump(tracking_data, f, indent=2)
return True
except Exception as e:
get_logger().error(f"Could not save environment tracking: {e}")
return False
def _add_env_tracking(env_vars: Dict[str, str]) -> None:
"""Add environment variables to tracking"""
if not env_vars:
return
tracking_data = _load_env_tracking()
timestamp = datetime.now().isoformat()
for env_var, value in env_vars.items():
tracking_data[env_var] = {
"set_by": "superclaude",
"timestamp": timestamp,
"value_hash": str(hash(value)) # Store hash, not actual value for security
}
_save_env_tracking(tracking_data)
get_logger().info(f"Added {len(env_vars)} environment variables to tracking")
def _remove_env_tracking(env_vars: list) -> None:
"""Remove environment variables from tracking"""
if not env_vars:
return
tracking_data = _load_env_tracking()
for env_var in env_vars:
if env_var in tracking_data:
del tracking_data[env_var]
_save_env_tracking(tracking_data)
get_logger().info(f"Removed {len(env_vars)} environment variables from tracking")
def detect_shell_config() -> Optional[Path]:
"""
Detect user's shell configuration file
Returns:
Path to the shell configuration file, or None if not found
"""
Fixes and improvement (#378) * Fix: Install only selected MCP servers and ensure valid empty backups This commit addresses two separate issues: 1. **MCP Installation:** The `install` command was installing all MCP servers instead of only the ones selected by the user. The `_install` method in `setup/components/mcp.py` was iterating through all available servers, not the user's selection. This has been fixed to respect the `selected_mcp_servers` configuration. A new test has been added to verify this fix. 2. **Backup Creation:** The `create_backup` method in `setup/core/installer.py` created an invalid `.tar.gz` file when the backup source was empty. This has been fixed to ensure that a valid, empty tar archive is always created. A test was added for this as well. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * Fix: Correct installer validation for MCP and MCP Docs components This commit fixes a validation issue in the installer where it would incorrectly fail after a partial installation of MCP servers. The `MCPComponent` validation logic was checking for all "required" servers, regardless of whether they were selected by the user. This has been corrected to only validate the servers that were actually installed, by checking against the list of installed servers stored in the metadata. The metadata storage has also been fixed to only record the installed servers. The `MCPDocsComponent` was failing validation because it was not being registered in the metadata if no documentation files were installed. This has been fixed by ensuring the post-installation hook runs even when no files are copied. New tests have been added for both components to verify the corrected logic. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * Fix: Allow re-installation of components and correct validation logic This commit fixes a bug that prevented new MCP servers from being installed on subsequent runs of the installer. It also fixes the validation logic that was causing failures after a partial installation. The key changes are: 1. A new `is_reinstallable` method has been added to the base `Component` class. This allows certain components (like the `mcp` component) to be re-run even if they are already marked as installed. 2. The installer logic has been updated to respect this new method. 3. The `MCPComponent` now correctly stores only the installed servers in the metadata. 4. The validation logic for `MCPComponent` and `MCPDocsComponent` has been corrected to prevent incorrect failures. New tests have been added to verify all aspects of the new logic. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * feat: Display authors in UI header and update author info This commit implements the user's request to display author names and emails in the UI header of the installer. The key changes are: 1. The `__email__` field in `SuperClaude/__init__.py` has been updated to include both authors' emails. 2. The `display_header` function in `setup/utils/ui.py` has been modified to read the author and email information and display it. 3. A new test has been added to `tests/test_ui.py` to verify the new UI output. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * feat: Version bump to 4.1.0 and various fixes This commit prepares the project for the v4.1.0 release. It includes a version bump across all relevant files and incorporates several bug fixes and feature enhancements from recent tasks. Key changes in this release: - **Version Bump**: The project version has been updated from 4.0.9 to 4.1.0 in all configuration files, documentation, and source code. - **Installer Fixes**: - Components can now be marked as `reinstallable`, allowing them to be re-run on subsequent installations. This fixes a bug where new MCP servers could not be added. - The validation logic for `mcp` and `mcp_docs` components has been corrected to avoid incorrect failures. - A bug in the backup creation process that created invalid empty archives has been fixed. - **UI Enhancements**: - Author names and emails are now displayed in the installer UI header. - **Metadata Updates**: - Mithun Gowda B has been added as an author. - **New Tests**: - Comprehensive tests have been added for the installer logic, MCP components, and UI changes to ensure correctness and prevent regressions. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * fix: Resolve dependencies for partial installs and other fixes This commit addresses several issues, the main one being a dependency resolution failure during partial installations. Key changes: - **Dependency Resolution**: The installer now correctly resolves the full dependency tree when a user requests to install a subset of components. This fixes the "Unknown component: core" error. - **Component Re-installation**: A new `is_reinstallable` flag allows components like `mcp` to be re-run on subsequent installs, enabling the addition of new servers. - **Validation Logic**: The validation for `mcp` and `mcp_docs` has been corrected to avoid spurious failures. - **UI and Metadata**: Author information has been added to the UI header and source files. - **Version Bump**: The project version has been updated to 4.1.0. - **Tests**: New tests have been added to cover all the above changes. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * fix: Installer fixes and version bump to 4.1.0 This commit includes a collection of fixes for the installer logic, UI enhancements, and a version bump to 4.1.0. Key changes: - **Dependency Resolution**: The installer now correctly resolves the full dependency tree for partial installations, fixing the "Unknown component: core" error. - **Component Re-installation**: A new `is_reinstallable` flag allows components like `mcp` to be re-run to add new servers. - **MCP Installation**: The non-interactive installation of the `mcp` component now correctly prompts the user to select servers. - **Validation Logic**: The post-installation validation logic has been corrected to only validate components from the current session and to use the correct list of installed servers. - **UI & Metadata**: Author information has been added to the UI and source files. - **Version Bump**: The project version has been updated from 4.0.9 to 4.1.0 across all files. - **Tests**: New tests have been added to cover all the bug fixes. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * feat: Add --authors flag and multiple installer fixes This commit introduces the `--authors` flag to display author information and includes a collection of fixes for the installer logic. Key changes: - **New Feature**: Added an `--authors` flag that displays the names, emails, and GitHub usernames of the project authors. - **Dependency Resolution**: Fixed a critical bug where partial installations would fail due to unresolved dependencies. - **Component Re-installation**: Added a mechanism to allow components to be "reinstallable", fixing an issue that prevented adding new MCP servers on subsequent runs. - **MCP Installation**: The non-interactive installation of the `mcp` component now correctly prompts for server selection. - **Validation Logic**: Corrected the post-installation validation to prevent spurious errors. - **Version Bump**: The project version has been updated to 4.1.0. - **Metadata**: Author and GitHub information has been added to the source files. - **UI**: The installer header now displays author information. - **Tests**: Added new tests for all new features and bug fixes. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * Add Docker support and framework enhancements - Add serena-docker.json MCP configuration - Update MCP configs and installer components - Enhance CLI commands with new functionality - Add symbols utility for framework operations - Improve UI and logging components 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Bump version from 4.1.1 to 4.1.2 - Update version across all package files - Update documentation and README files - Update Python module version strings - Update feature configuration files 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Bump version from 4.1.2 to 4.1.3 - Update version across all package files - Update documentation and README files - Update Python module version strings - Update feature configuration files 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Fix home directory detection for immutable distros - Add get_home_directory() function to handle /var/home/$USER paths - Support Fedora Silverblue, Universal Blue, and other immutable distros - Replace all Path.home() calls throughout the setup system - Add fallback methods for edge cases and compatibility - Create test script for immutable distro validation Fixes: - Incorrect home path detection on immutable Linux distributions - Installation failures on Fedora Silverblue/Universal Blue - Issues with Claude Code configuration paths Technical changes: - New get_home_directory() in utils/environment.py - Updated all CLI commands, validators, and core components - Maintains backward compatibility with standard systems - Robust fallback chain for edge cases 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Fix circular import and complete immutable distro support - Move get_home_directory() to separate paths.py module - Resolve circular import between environment.py and logger.py - Update all import statements across the setup system - Verify functionality with comprehensive testing Technical changes: - Created setup/utils/paths.py for path utilities - Updated imports in all affected modules - Maintains full backward compatibility - Fixes installation on immutable distros Testing completed: - ✅ Basic home directory detection works - ✅ Installation system integration works - ✅ Environment utilities integration works - ✅ Immutable distro logic validated 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Fix mcp_docs installation bugs - Fix mcp_docs component incorrectly marking as installed when no MCP servers selected - Add MCP server selection prompt when mcp_docs component is explicitly requested - Return False instead of calling _post_install() when no servers selected or files found - Add user-friendly warning when mcp_docs requested without server selection - Remove mcp_docs from installation when no servers are available 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix MCP server name mapping for documentation files - Add mapping for sequential-thinking -> MCP_Sequential.md - Add mapping for morphllm-fast-apply -> MCP_Morphllm.md - Ensures mcp_docs installation works with all MCP server naming conventions 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Enable mcp_docs component reinstallation - Add is_reinstallable() method returning True to allow repeat installations - Fixes issue where mcp_docs was skipped on subsequent installation attempts - Enables users to change MCP server selections and update documentation 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix repeat installation issues for mcp_docs - Ensure mcp component is auto-added when mcp_docs is selected with servers - Fix component_files tracking to only include successfully copied files - Ensures CLAUDE.md gets properly updated with MCP documentation imports - Fixes issue where MCP servers weren't installed on repeat attempts 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix MCP component metadata tracking and debug logging - Fix servers_count to track actually installed servers instead of total available - Add installed_servers list to metadata for better tracking - Add debug logging to trace component auto-addition - Ensures MCP component appears properly in metadata when servers are installed 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix pyproject.toml license format and add missing classifier - Fix license format from string to {text = "MIT"} format - Add missing "License :: OSI Approved :: MIT License" classifier - Fix indentation consistency in classifiers section - Resolves setup.py installation errors and PEP 621 compliance 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix MCP incremental installation and auto-detection system PROBLEM FIXED: - MCP component only registered servers selected during current session - mcp_docs component only installed docs for newly selected servers - Users had to reinstall everything when adding new MCP servers - Installation failed if no servers selected but servers existed SOLUTION IMPLEMENTED: - Add auto-detection of existing MCP servers from config files (.claude.json, claude_desktop_config.json) - Add CLI detection via 'claude mcp list' output parsing - Add smart server merging (existing + selected + previously installed) - Add server name normalization for common variations - Fix CLI logic to allow mcp_docs installation without server selection - Add graceful error handling for corrupted configs KEY FEATURES: ✅ Auto-detects existing MCP servers from multiple config locations ✅ Supports incremental installation (add new servers without breaking existing) ✅ Works with or without --install-dir argument ✅ Handles server name variations (sequential vs sequential-thinking, etc.) ✅ Maintains metadata persistence across installation sessions ✅ Graceful fallback when config files are corrupted ✅ Compatible with both interactive and non-interactive modes TESTED SCENARIOS: - Fresh installation with no MCP servers ✅ - Auto-detection with existing servers ✅ - Incremental server additions ✅ - Mixed mode (new + existing servers) ✅ - Error handling with corrupted configs ✅ - Default vs custom installation directories ✅ - Interactive vs command-line modes ✅ Files changed: - setup/cli/commands/install.py: Allow mcp_docs auto-detection mode - setup/components/mcp.py: Add comprehensive auto-detection logic - setup/components/mcp_docs.py: Add auto-detection for documentation 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Integrate SuperClaude framework flags into help command ENHANCEMENT: - Add comprehensive flag documentation to /sc:help command - Include all 25 SuperClaude framework flags with descriptions - Organize flags into logical categories (Mode, MCP, Analysis, Execution, Output) - Add practical usage examples showing flag combinations - Include flag priority rules and precedence hierarchy NEW SECTIONS ADDED: ✅ Mode Activation Flags (5 flags): --brainstorm, --introspect, --task-manage, --orchestrate, --token-efficient ✅ MCP Server Flags (8 flags): --c7, --seq, --magic, --morph, --serena, --play, --all-mcp, --no-mcp ✅ Analysis Depth Flags (3 flags): --think, --think-hard, --ultrathink ✅ Execution Control Flags (6 flags): --delegate, --concurrency, --loop, --iterations, --validate, --safe-mode ✅ Output Optimization Flags (3 flags): --uc, --scope, --focus ✅ Flag Priority Rules: Clear hierarchy and precedence guidelines ✅ Usage Examples: 4 practical examples showing real-world flag combinations IMPACT: - Users can now discover all SuperClaude capabilities from /sc:help - Single source of truth for commands AND flags - Improved discoverability of advanced features - Clear guidance on flag usage and combinations - Help content nearly doubled (68 → 148 lines) with valuable reference information Files changed: - SuperClaude/Commands/help.md: Integrate FLAGS.md content with structured tables and examples 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Remove non-existent commands from modes.md documentation PROBLEM FIXED: - Documentation contained references to fake/non-existent commands - Commands like sc:fix, sc:simple-pix, sc:update, sc:develop, sc:modernize, sc:simple-fix don't exist in CLI - Confusing users who try to use these commands and get errors - Inconsistency between documentation and actual SuperClaude command availability COMMANDS REMOVED/REPLACED: ❌ /sc:simple-fix → ✅ /sc:troubleshoot (real command) ❌ /sc:develop → ✅ /sc:implement (real command) ❌ /sc:modernize → ✅ /sc:improve (real command) AFFECTED FILES: - Docs/User-Guide/modes.md: Fixed all non-existent command references - Docs/User-Guide-jp/modes.md: Fixed Japanese translation with same issues - Docs/User-Guide-zh/modes.md: Fixed Chinese translation with same issues VERIFICATION: ✅ All remaining /sc: commands verified to exist in SuperClaude/Commands/ ✅ No more references to fake commands in any language version ✅ Examples now use only real, working SuperClaude commands ✅ User experience improved - no more confusion from non-working commands REAL COMMANDS REFERENCED: - /sc:analyze, /sc:brainstorm, /sc:help, /sc:implement - /sc:improve, /sc:reflect, /sc:troubleshoot - All verified to exist in CLI implementation 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Version bump to 4.1.4 CHANGELOG: ✅ Added comprehensive flag documentation to /sc:help command ✅ Fixed MCP incremental installation and auto-detection system ✅ Cleaned up documentation by removing non-existent commands ✅ Enhanced user experience with complete capability reference VERSION UPDATES: - Updated VERSION file: 4.1.3 → 4.1.4 - Updated pyproject.toml: 4.1.3 → 4.1.4 - Updated package.json: 4.1.3 → 4.1.4 - Updated all Python __init__.py fallback versions - Updated all documentation references across all languages - Updated setup/data/features.json component versions - Updated CHANGELOG.md with comprehensive 4.1.4 release notes SCOPE OF CHANGES: 📦 Core files: VERSION, pyproject.toml, package.json, __init__.py files 📚 Documentation: All .md files across English, Japanese, Chinese 🔧 Setup files: features.json, base.py version references 📝 Project files: README files, CHANGELOG, SECURITY, CONTRIBUTING VERIFICATION: ✅ No remaining 4.1.3 references found ✅ 29 files now properly reference 4.1.4 ✅ All language versions consistently updated ✅ Package metadata properly versioned for distribution 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Happy <yesreply@happy.engineering>
2025-09-20 10:38:42 +02:00
home = get_home_directory()
# Check in order of preference
configs = [
home / ".zshrc", # Zsh (Mac default)
home / ".bashrc", # Bash
home / ".profile", # Generic shell profile
home / ".bash_profile" # Mac Bash profile
]
for config in configs:
if config.exists():
return config
# Default to .bashrc if none exist (will be created)
return home / ".bashrc"
def setup_environment_variables(api_keys: Dict[str, str]) -> bool:
"""
Set up environment variables across platforms
Args:
api_keys: Dictionary of environment variable names to values
Returns:
True if all variables were set successfully, False otherwise
"""
logger = get_logger()
success = True
if not api_keys:
return True
print(f"\n{Colors.BLUE}[INFO] Setting up environment variables...{Colors.RESET}")
for env_var, value in api_keys.items():
try:
# Set for current session
os.environ[env_var] = value
if os.name == 'nt': # Windows
# Use setx for persistent user variable
result = subprocess.run(
['setx', env_var, value],
capture_output=True,
text=True
)
if result.returncode != 0:
display_warning(f"Could not set {env_var} persistently: {result.stderr.strip()}")
success = False
else:
logger.info(f"Windows environment variable {env_var} set persistently")
else: # Unix-like systems
shell_config = detect_shell_config()
# Check if the export already exists
export_line = f'export {env_var}="{value}"'
try:
with open(shell_config, 'r') as f:
content = f.read()
# Check if this environment variable is already set
if f'export {env_var}=' in content:
# Variable exists - don't duplicate
logger.info(f"Environment variable {env_var} already exists in {shell_config.name}")
else:
# Append export to shell config
with open(shell_config, 'a') as f:
f.write(f'\n# SuperClaude API Key\n{export_line}\n')
display_info(f"Added {env_var} to {shell_config.name}")
logger.info(f"Added {env_var} to {shell_config}")
except Exception as e:
display_warning(f"Could not update {shell_config.name}: {e}")
success = False
logger.info(f"Environment variable {env_var} configured for current session")
except Exception as e:
logger.error(f"Failed to set {env_var}: {e}")
display_warning(f"Failed to set {env_var}: {e}")
success = False
if success:
2025-08-15 14:39:27 +02:00
# Add to tracking
_add_env_tracking(api_keys)
display_success("Environment variables configured successfully")
if os.name != 'nt':
display_info("Restart your terminal or run 'source ~/.bashrc' to apply changes")
else:
display_info("New environment variables will be available in new terminal sessions")
else:
display_warning("Some environment variables could not be set persistently")
display_info("You can set them manually or check the logs for details")
return success
def validate_environment_setup(env_vars: Dict[str, str]) -> bool:
"""
Validate that environment variables are properly set
Args:
env_vars: Dictionary of environment variable names to expected values
Returns:
True if all variables are set correctly, False otherwise
"""
logger = get_logger()
all_valid = True
for env_var, expected_value in env_vars.items():
current_value = os.environ.get(env_var)
if current_value is None:
logger.warning(f"Environment variable {env_var} is not set")
all_valid = False
elif current_value != expected_value:
logger.warning(f"Environment variable {env_var} has unexpected value")
all_valid = False
else:
logger.info(f"Environment variable {env_var} is set correctly")
return all_valid
def get_shell_name() -> str:
"""
Get the name of the current shell
Returns:
Name of the shell (e.g., 'bash', 'zsh', 'fish')
"""
shell_path = os.environ.get('SHELL', '')
if shell_path:
return Path(shell_path).name
return 'unknown'
2025-08-15 14:39:27 +02:00
def get_superclaude_environment_variables() -> Dict[str, str]:
"""
Get environment variables that were set by SuperClaude
Returns:
Dictionary of environment variable names to their current values
"""
# Load tracking data to get SuperClaude-managed variables
tracking_data = _load_env_tracking()
found_vars = {}
for env_var, metadata in tracking_data.items():
if metadata.get("set_by") == "superclaude":
value = os.environ.get(env_var)
if value:
found_vars[env_var] = value
# Fallback: check known SuperClaude API key environment variables
# (for backwards compatibility with existing installations)
known_superclaude_env_vars = [
"TWENTYFIRST_API_KEY", # Magic server
"MORPH_API_KEY" # Morphllm server
]
for env_var in known_superclaude_env_vars:
if env_var not in found_vars:
value = os.environ.get(env_var)
if value:
found_vars[env_var] = value
return found_vars
def cleanup_environment_variables(env_vars_to_remove: Dict[str, str], create_restore_script: bool = True) -> bool:
"""
Safely remove environment variables with backup and restore options
Args:
env_vars_to_remove: Dictionary of environment variable names to remove
create_restore_script: Whether to create a script to restore the variables
Returns:
True if cleanup was successful, False otherwise
"""
logger = get_logger()
success = True
if not env_vars_to_remove:
return True
# Create restore script if requested
if create_restore_script:
restore_script_path = _create_restore_script(env_vars_to_remove)
if restore_script_path:
display_info(f"Created restore script: {restore_script_path}")
else:
display_warning("Could not create restore script")
print(f"\n{Colors.BLUE}[INFO] Removing environment variables...{Colors.RESET}")
for env_var, value in env_vars_to_remove.items():
try:
# Remove from current session
if env_var in os.environ:
del os.environ[env_var]
logger.info(f"Removed {env_var} from current session")
if os.name == 'nt': # Windows
# Remove persistent user variable using reg command
result = subprocess.run(
['reg', 'delete', 'HKCU\\Environment', '/v', env_var, '/f'],
capture_output=True,
text=True
)
if result.returncode != 0:
# Variable might not exist in registry, which is fine
logger.debug(f"Registry deletion for {env_var}: {result.stderr.strip()}")
else:
logger.info(f"Removed {env_var} from Windows registry")
else: # Unix-like systems
shell_config = detect_shell_config()
if shell_config and shell_config.exists():
_remove_env_var_from_shell_config(shell_config, env_var)
except Exception as e:
logger.error(f"Failed to remove {env_var}: {e}")
display_warning(f"Could not remove {env_var}: {e}")
success = False
if success:
# Remove from tracking
_remove_env_tracking(list(env_vars_to_remove.keys()))
display_success("Environment variables removed successfully")
if os.name != 'nt':
display_info("Restart your terminal or source your shell config to apply changes")
else:
display_info("Changes will take effect in new terminal sessions")
else:
display_warning("Some environment variables could not be removed")
return success
def _create_restore_script(env_vars: Dict[str, str]) -> Optional[Path]:
"""Create a script to restore environment variables"""
try:
Fixes and improvement (#378) * Fix: Install only selected MCP servers and ensure valid empty backups This commit addresses two separate issues: 1. **MCP Installation:** The `install` command was installing all MCP servers instead of only the ones selected by the user. The `_install` method in `setup/components/mcp.py` was iterating through all available servers, not the user's selection. This has been fixed to respect the `selected_mcp_servers` configuration. A new test has been added to verify this fix. 2. **Backup Creation:** The `create_backup` method in `setup/core/installer.py` created an invalid `.tar.gz` file when the backup source was empty. This has been fixed to ensure that a valid, empty tar archive is always created. A test was added for this as well. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * Fix: Correct installer validation for MCP and MCP Docs components This commit fixes a validation issue in the installer where it would incorrectly fail after a partial installation of MCP servers. The `MCPComponent` validation logic was checking for all "required" servers, regardless of whether they were selected by the user. This has been corrected to only validate the servers that were actually installed, by checking against the list of installed servers stored in the metadata. The metadata storage has also been fixed to only record the installed servers. The `MCPDocsComponent` was failing validation because it was not being registered in the metadata if no documentation files were installed. This has been fixed by ensuring the post-installation hook runs even when no files are copied. New tests have been added for both components to verify the corrected logic. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * Fix: Allow re-installation of components and correct validation logic This commit fixes a bug that prevented new MCP servers from being installed on subsequent runs of the installer. It also fixes the validation logic that was causing failures after a partial installation. The key changes are: 1. A new `is_reinstallable` method has been added to the base `Component` class. This allows certain components (like the `mcp` component) to be re-run even if they are already marked as installed. 2. The installer logic has been updated to respect this new method. 3. The `MCPComponent` now correctly stores only the installed servers in the metadata. 4. The validation logic for `MCPComponent` and `MCPDocsComponent` has been corrected to prevent incorrect failures. New tests have been added to verify all aspects of the new logic. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * feat: Display authors in UI header and update author info This commit implements the user's request to display author names and emails in the UI header of the installer. The key changes are: 1. The `__email__` field in `SuperClaude/__init__.py` has been updated to include both authors' emails. 2. The `display_header` function in `setup/utils/ui.py` has been modified to read the author and email information and display it. 3. A new test has been added to `tests/test_ui.py` to verify the new UI output. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * feat: Version bump to 4.1.0 and various fixes This commit prepares the project for the v4.1.0 release. It includes a version bump across all relevant files and incorporates several bug fixes and feature enhancements from recent tasks. Key changes in this release: - **Version Bump**: The project version has been updated from 4.0.9 to 4.1.0 in all configuration files, documentation, and source code. - **Installer Fixes**: - Components can now be marked as `reinstallable`, allowing them to be re-run on subsequent installations. This fixes a bug where new MCP servers could not be added. - The validation logic for `mcp` and `mcp_docs` components has been corrected to avoid incorrect failures. - A bug in the backup creation process that created invalid empty archives has been fixed. - **UI Enhancements**: - Author names and emails are now displayed in the installer UI header. - **Metadata Updates**: - Mithun Gowda B has been added as an author. - **New Tests**: - Comprehensive tests have been added for the installer logic, MCP components, and UI changes to ensure correctness and prevent regressions. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * fix: Resolve dependencies for partial installs and other fixes This commit addresses several issues, the main one being a dependency resolution failure during partial installations. Key changes: - **Dependency Resolution**: The installer now correctly resolves the full dependency tree when a user requests to install a subset of components. This fixes the "Unknown component: core" error. - **Component Re-installation**: A new `is_reinstallable` flag allows components like `mcp` to be re-run on subsequent installs, enabling the addition of new servers. - **Validation Logic**: The validation for `mcp` and `mcp_docs` has been corrected to avoid spurious failures. - **UI and Metadata**: Author information has been added to the UI header and source files. - **Version Bump**: The project version has been updated to 4.1.0. - **Tests**: New tests have been added to cover all the above changes. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * fix: Installer fixes and version bump to 4.1.0 This commit includes a collection of fixes for the installer logic, UI enhancements, and a version bump to 4.1.0. Key changes: - **Dependency Resolution**: The installer now correctly resolves the full dependency tree for partial installations, fixing the "Unknown component: core" error. - **Component Re-installation**: A new `is_reinstallable` flag allows components like `mcp` to be re-run to add new servers. - **MCP Installation**: The non-interactive installation of the `mcp` component now correctly prompts the user to select servers. - **Validation Logic**: The post-installation validation logic has been corrected to only validate components from the current session and to use the correct list of installed servers. - **UI & Metadata**: Author information has been added to the UI and source files. - **Version Bump**: The project version has been updated from 4.0.9 to 4.1.0 across all files. - **Tests**: New tests have been added to cover all the bug fixes. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * feat: Add --authors flag and multiple installer fixes This commit introduces the `--authors` flag to display author information and includes a collection of fixes for the installer logic. Key changes: - **New Feature**: Added an `--authors` flag that displays the names, emails, and GitHub usernames of the project authors. - **Dependency Resolution**: Fixed a critical bug where partial installations would fail due to unresolved dependencies. - **Component Re-installation**: Added a mechanism to allow components to be "reinstallable", fixing an issue that prevented adding new MCP servers on subsequent runs. - **MCP Installation**: The non-interactive installation of the `mcp` component now correctly prompts for server selection. - **Validation Logic**: Corrected the post-installation validation to prevent spurious errors. - **Version Bump**: The project version has been updated to 4.1.0. - **Metadata**: Author and GitHub information has been added to the source files. - **UI**: The installer header now displays author information. - **Tests**: Added new tests for all new features and bug fixes. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * Add Docker support and framework enhancements - Add serena-docker.json MCP configuration - Update MCP configs and installer components - Enhance CLI commands with new functionality - Add symbols utility for framework operations - Improve UI and logging components 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Bump version from 4.1.1 to 4.1.2 - Update version across all package files - Update documentation and README files - Update Python module version strings - Update feature configuration files 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Bump version from 4.1.2 to 4.1.3 - Update version across all package files - Update documentation and README files - Update Python module version strings - Update feature configuration files 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Fix home directory detection for immutable distros - Add get_home_directory() function to handle /var/home/$USER paths - Support Fedora Silverblue, Universal Blue, and other immutable distros - Replace all Path.home() calls throughout the setup system - Add fallback methods for edge cases and compatibility - Create test script for immutable distro validation Fixes: - Incorrect home path detection on immutable Linux distributions - Installation failures on Fedora Silverblue/Universal Blue - Issues with Claude Code configuration paths Technical changes: - New get_home_directory() in utils/environment.py - Updated all CLI commands, validators, and core components - Maintains backward compatibility with standard systems - Robust fallback chain for edge cases 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Fix circular import and complete immutable distro support - Move get_home_directory() to separate paths.py module - Resolve circular import between environment.py and logger.py - Update all import statements across the setup system - Verify functionality with comprehensive testing Technical changes: - Created setup/utils/paths.py for path utilities - Updated imports in all affected modules - Maintains full backward compatibility - Fixes installation on immutable distros Testing completed: - ✅ Basic home directory detection works - ✅ Installation system integration works - ✅ Environment utilities integration works - ✅ Immutable distro logic validated 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Fix mcp_docs installation bugs - Fix mcp_docs component incorrectly marking as installed when no MCP servers selected - Add MCP server selection prompt when mcp_docs component is explicitly requested - Return False instead of calling _post_install() when no servers selected or files found - Add user-friendly warning when mcp_docs requested without server selection - Remove mcp_docs from installation when no servers are available 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix MCP server name mapping for documentation files - Add mapping for sequential-thinking -> MCP_Sequential.md - Add mapping for morphllm-fast-apply -> MCP_Morphllm.md - Ensures mcp_docs installation works with all MCP server naming conventions 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Enable mcp_docs component reinstallation - Add is_reinstallable() method returning True to allow repeat installations - Fixes issue where mcp_docs was skipped on subsequent installation attempts - Enables users to change MCP server selections and update documentation 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix repeat installation issues for mcp_docs - Ensure mcp component is auto-added when mcp_docs is selected with servers - Fix component_files tracking to only include successfully copied files - Ensures CLAUDE.md gets properly updated with MCP documentation imports - Fixes issue where MCP servers weren't installed on repeat attempts 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix MCP component metadata tracking and debug logging - Fix servers_count to track actually installed servers instead of total available - Add installed_servers list to metadata for better tracking - Add debug logging to trace component auto-addition - Ensures MCP component appears properly in metadata when servers are installed 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix pyproject.toml license format and add missing classifier - Fix license format from string to {text = "MIT"} format - Add missing "License :: OSI Approved :: MIT License" classifier - Fix indentation consistency in classifiers section - Resolves setup.py installation errors and PEP 621 compliance 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix MCP incremental installation and auto-detection system PROBLEM FIXED: - MCP component only registered servers selected during current session - mcp_docs component only installed docs for newly selected servers - Users had to reinstall everything when adding new MCP servers - Installation failed if no servers selected but servers existed SOLUTION IMPLEMENTED: - Add auto-detection of existing MCP servers from config files (.claude.json, claude_desktop_config.json) - Add CLI detection via 'claude mcp list' output parsing - Add smart server merging (existing + selected + previously installed) - Add server name normalization for common variations - Fix CLI logic to allow mcp_docs installation without server selection - Add graceful error handling for corrupted configs KEY FEATURES: ✅ Auto-detects existing MCP servers from multiple config locations ✅ Supports incremental installation (add new servers without breaking existing) ✅ Works with or without --install-dir argument ✅ Handles server name variations (sequential vs sequential-thinking, etc.) ✅ Maintains metadata persistence across installation sessions ✅ Graceful fallback when config files are corrupted ✅ Compatible with both interactive and non-interactive modes TESTED SCENARIOS: - Fresh installation with no MCP servers ✅ - Auto-detection with existing servers ✅ - Incremental server additions ✅ - Mixed mode (new + existing servers) ✅ - Error handling with corrupted configs ✅ - Default vs custom installation directories ✅ - Interactive vs command-line modes ✅ Files changed: - setup/cli/commands/install.py: Allow mcp_docs auto-detection mode - setup/components/mcp.py: Add comprehensive auto-detection logic - setup/components/mcp_docs.py: Add auto-detection for documentation 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Integrate SuperClaude framework flags into help command ENHANCEMENT: - Add comprehensive flag documentation to /sc:help command - Include all 25 SuperClaude framework flags with descriptions - Organize flags into logical categories (Mode, MCP, Analysis, Execution, Output) - Add practical usage examples showing flag combinations - Include flag priority rules and precedence hierarchy NEW SECTIONS ADDED: ✅ Mode Activation Flags (5 flags): --brainstorm, --introspect, --task-manage, --orchestrate, --token-efficient ✅ MCP Server Flags (8 flags): --c7, --seq, --magic, --morph, --serena, --play, --all-mcp, --no-mcp ✅ Analysis Depth Flags (3 flags): --think, --think-hard, --ultrathink ✅ Execution Control Flags (6 flags): --delegate, --concurrency, --loop, --iterations, --validate, --safe-mode ✅ Output Optimization Flags (3 flags): --uc, --scope, --focus ✅ Flag Priority Rules: Clear hierarchy and precedence guidelines ✅ Usage Examples: 4 practical examples showing real-world flag combinations IMPACT: - Users can now discover all SuperClaude capabilities from /sc:help - Single source of truth for commands AND flags - Improved discoverability of advanced features - Clear guidance on flag usage and combinations - Help content nearly doubled (68 → 148 lines) with valuable reference information Files changed: - SuperClaude/Commands/help.md: Integrate FLAGS.md content with structured tables and examples 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Remove non-existent commands from modes.md documentation PROBLEM FIXED: - Documentation contained references to fake/non-existent commands - Commands like sc:fix, sc:simple-pix, sc:update, sc:develop, sc:modernize, sc:simple-fix don't exist in CLI - Confusing users who try to use these commands and get errors - Inconsistency between documentation and actual SuperClaude command availability COMMANDS REMOVED/REPLACED: ❌ /sc:simple-fix → ✅ /sc:troubleshoot (real command) ❌ /sc:develop → ✅ /sc:implement (real command) ❌ /sc:modernize → ✅ /sc:improve (real command) AFFECTED FILES: - Docs/User-Guide/modes.md: Fixed all non-existent command references - Docs/User-Guide-jp/modes.md: Fixed Japanese translation with same issues - Docs/User-Guide-zh/modes.md: Fixed Chinese translation with same issues VERIFICATION: ✅ All remaining /sc: commands verified to exist in SuperClaude/Commands/ ✅ No more references to fake commands in any language version ✅ Examples now use only real, working SuperClaude commands ✅ User experience improved - no more confusion from non-working commands REAL COMMANDS REFERENCED: - /sc:analyze, /sc:brainstorm, /sc:help, /sc:implement - /sc:improve, /sc:reflect, /sc:troubleshoot - All verified to exist in CLI implementation 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Version bump to 4.1.4 CHANGELOG: ✅ Added comprehensive flag documentation to /sc:help command ✅ Fixed MCP incremental installation and auto-detection system ✅ Cleaned up documentation by removing non-existent commands ✅ Enhanced user experience with complete capability reference VERSION UPDATES: - Updated VERSION file: 4.1.3 → 4.1.4 - Updated pyproject.toml: 4.1.3 → 4.1.4 - Updated package.json: 4.1.3 → 4.1.4 - Updated all Python __init__.py fallback versions - Updated all documentation references across all languages - Updated setup/data/features.json component versions - Updated CHANGELOG.md with comprehensive 4.1.4 release notes SCOPE OF CHANGES: 📦 Core files: VERSION, pyproject.toml, package.json, __init__.py files 📚 Documentation: All .md files across English, Japanese, Chinese 🔧 Setup files: features.json, base.py version references 📝 Project files: README files, CHANGELOG, SECURITY, CONTRIBUTING VERIFICATION: ✅ No remaining 4.1.3 references found ✅ 29 files now properly reference 4.1.4 ✅ All language versions consistently updated ✅ Package metadata properly versioned for distribution 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Happy <yesreply@happy.engineering>
2025-09-20 10:38:42 +02:00
home = get_home_directory()
2025-08-15 14:39:27 +02:00
if os.name == 'nt': # Windows
script_path = home / "restore_superclaude_env.bat"
with open(script_path, 'w') as f:
f.write("@echo off\n")
f.write("REM SuperClaude Environment Variable Restore Script\n")
f.write("REM Generated during uninstall\n\n")
for env_var, value in env_vars.items():
f.write(f'setx {env_var} "{value}"\n')
f.write("\necho Environment variables restored\n")
f.write("pause\n")
else: # Unix-like
script_path = home / "restore_superclaude_env.sh"
with open(script_path, 'w') as f:
f.write("#!/bin/bash\n")
f.write("# SuperClaude Environment Variable Restore Script\n")
f.write("# Generated during uninstall\n\n")
shell_config = detect_shell_config()
for env_var, value in env_vars.items():
f.write(f'export {env_var}="{value}"\n')
if shell_config:
f.write(f'echo \'export {env_var}="{value}"\' >> {shell_config}\n')
f.write("\necho 'Environment variables restored'\n")
# Make script executable
script_path.chmod(0o755)
return script_path
except Exception as e:
get_logger().error(f"Failed to create restore script: {e}")
return None
def _remove_env_var_from_shell_config(shell_config: Path, env_var: str) -> bool:
"""Remove environment variable export from shell configuration file"""
try:
# Read current content
with open(shell_config, 'r') as f:
lines = f.readlines()
# Filter out lines that export this variable
filtered_lines = []
skip_next_blank = False
for line in lines:
# Check if this line exports our variable
if f'export {env_var}=' in line or line.strip() == f'# SuperClaude API Key':
skip_next_blank = True
continue
# Skip blank line after removed export
if skip_next_blank and line.strip() == '':
skip_next_blank = False
continue
skip_next_blank = False
filtered_lines.append(line)
# Write back the filtered content
with open(shell_config, 'w') as f:
f.writelines(filtered_lines)
get_logger().info(f"Removed {env_var} export from {shell_config.name}")
return True
except Exception as e:
get_logger().error(f"Failed to remove {env_var} from {shell_config}: {e}")
return False
def create_env_file(api_keys: Dict[str, str], env_file_path: Optional[Path] = None) -> bool:
"""
Create a .env file with the API keys (alternative to shell config)
Args:
api_keys: Dictionary of environment variable names to values
env_file_path: Path to the .env file (defaults to home directory)
Returns:
True if .env file was created successfully, False otherwise
"""
if env_file_path is None:
Fixes and improvement (#378) * Fix: Install only selected MCP servers and ensure valid empty backups This commit addresses two separate issues: 1. **MCP Installation:** The `install` command was installing all MCP servers instead of only the ones selected by the user. The `_install` method in `setup/components/mcp.py` was iterating through all available servers, not the user's selection. This has been fixed to respect the `selected_mcp_servers` configuration. A new test has been added to verify this fix. 2. **Backup Creation:** The `create_backup` method in `setup/core/installer.py` created an invalid `.tar.gz` file when the backup source was empty. This has been fixed to ensure that a valid, empty tar archive is always created. A test was added for this as well. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * Fix: Correct installer validation for MCP and MCP Docs components This commit fixes a validation issue in the installer where it would incorrectly fail after a partial installation of MCP servers. The `MCPComponent` validation logic was checking for all "required" servers, regardless of whether they were selected by the user. This has been corrected to only validate the servers that were actually installed, by checking against the list of installed servers stored in the metadata. The metadata storage has also been fixed to only record the installed servers. The `MCPDocsComponent` was failing validation because it was not being registered in the metadata if no documentation files were installed. This has been fixed by ensuring the post-installation hook runs even when no files are copied. New tests have been added for both components to verify the corrected logic. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * Fix: Allow re-installation of components and correct validation logic This commit fixes a bug that prevented new MCP servers from being installed on subsequent runs of the installer. It also fixes the validation logic that was causing failures after a partial installation. The key changes are: 1. A new `is_reinstallable` method has been added to the base `Component` class. This allows certain components (like the `mcp` component) to be re-run even if they are already marked as installed. 2. The installer logic has been updated to respect this new method. 3. The `MCPComponent` now correctly stores only the installed servers in the metadata. 4. The validation logic for `MCPComponent` and `MCPDocsComponent` has been corrected to prevent incorrect failures. New tests have been added to verify all aspects of the new logic. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * feat: Display authors in UI header and update author info This commit implements the user's request to display author names and emails in the UI header of the installer. The key changes are: 1. The `__email__` field in `SuperClaude/__init__.py` has been updated to include both authors' emails. 2. The `display_header` function in `setup/utils/ui.py` has been modified to read the author and email information and display it. 3. A new test has been added to `tests/test_ui.py` to verify the new UI output. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * feat: Version bump to 4.1.0 and various fixes This commit prepares the project for the v4.1.0 release. It includes a version bump across all relevant files and incorporates several bug fixes and feature enhancements from recent tasks. Key changes in this release: - **Version Bump**: The project version has been updated from 4.0.9 to 4.1.0 in all configuration files, documentation, and source code. - **Installer Fixes**: - Components can now be marked as `reinstallable`, allowing them to be re-run on subsequent installations. This fixes a bug where new MCP servers could not be added. - The validation logic for `mcp` and `mcp_docs` components has been corrected to avoid incorrect failures. - A bug in the backup creation process that created invalid empty archives has been fixed. - **UI Enhancements**: - Author names and emails are now displayed in the installer UI header. - **Metadata Updates**: - Mithun Gowda B has been added as an author. - **New Tests**: - Comprehensive tests have been added for the installer logic, MCP components, and UI changes to ensure correctness and prevent regressions. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * fix: Resolve dependencies for partial installs and other fixes This commit addresses several issues, the main one being a dependency resolution failure during partial installations. Key changes: - **Dependency Resolution**: The installer now correctly resolves the full dependency tree when a user requests to install a subset of components. This fixes the "Unknown component: core" error. - **Component Re-installation**: A new `is_reinstallable` flag allows components like `mcp` to be re-run on subsequent installs, enabling the addition of new servers. - **Validation Logic**: The validation for `mcp` and `mcp_docs` has been corrected to avoid spurious failures. - **UI and Metadata**: Author information has been added to the UI header and source files. - **Version Bump**: The project version has been updated to 4.1.0. - **Tests**: New tests have been added to cover all the above changes. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * fix: Installer fixes and version bump to 4.1.0 This commit includes a collection of fixes for the installer logic, UI enhancements, and a version bump to 4.1.0. Key changes: - **Dependency Resolution**: The installer now correctly resolves the full dependency tree for partial installations, fixing the "Unknown component: core" error. - **Component Re-installation**: A new `is_reinstallable` flag allows components like `mcp` to be re-run to add new servers. - **MCP Installation**: The non-interactive installation of the `mcp` component now correctly prompts the user to select servers. - **Validation Logic**: The post-installation validation logic has been corrected to only validate components from the current session and to use the correct list of installed servers. - **UI & Metadata**: Author information has been added to the UI and source files. - **Version Bump**: The project version has been updated from 4.0.9 to 4.1.0 across all files. - **Tests**: New tests have been added to cover all the bug fixes. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * feat: Add --authors flag and multiple installer fixes This commit introduces the `--authors` flag to display author information and includes a collection of fixes for the installer logic. Key changes: - **New Feature**: Added an `--authors` flag that displays the names, emails, and GitHub usernames of the project authors. - **Dependency Resolution**: Fixed a critical bug where partial installations would fail due to unresolved dependencies. - **Component Re-installation**: Added a mechanism to allow components to be "reinstallable", fixing an issue that prevented adding new MCP servers on subsequent runs. - **MCP Installation**: The non-interactive installation of the `mcp` component now correctly prompts for server selection. - **Validation Logic**: Corrected the post-installation validation to prevent spurious errors. - **Version Bump**: The project version has been updated to 4.1.0. - **Metadata**: Author and GitHub information has been added to the source files. - **UI**: The installer header now displays author information. - **Tests**: Added new tests for all new features and bug fixes. Co-authored-by: Mithun Gowda B <mithungowda.b7411@gmail.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> * Add Docker support and framework enhancements - Add serena-docker.json MCP configuration - Update MCP configs and installer components - Enhance CLI commands with new functionality - Add symbols utility for framework operations - Improve UI and logging components 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Bump version from 4.1.1 to 4.1.2 - Update version across all package files - Update documentation and README files - Update Python module version strings - Update feature configuration files 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Bump version from 4.1.2 to 4.1.3 - Update version across all package files - Update documentation and README files - Update Python module version strings - Update feature configuration files 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Fix home directory detection for immutable distros - Add get_home_directory() function to handle /var/home/$USER paths - Support Fedora Silverblue, Universal Blue, and other immutable distros - Replace all Path.home() calls throughout the setup system - Add fallback methods for edge cases and compatibility - Create test script for immutable distro validation Fixes: - Incorrect home path detection on immutable Linux distributions - Installation failures on Fedora Silverblue/Universal Blue - Issues with Claude Code configuration paths Technical changes: - New get_home_directory() in utils/environment.py - Updated all CLI commands, validators, and core components - Maintains backward compatibility with standard systems - Robust fallback chain for edge cases 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Fix circular import and complete immutable distro support - Move get_home_directory() to separate paths.py module - Resolve circular import between environment.py and logger.py - Update all import statements across the setup system - Verify functionality with comprehensive testing Technical changes: - Created setup/utils/paths.py for path utilities - Updated imports in all affected modules - Maintains full backward compatibility - Fixes installation on immutable distros Testing completed: - ✅ Basic home directory detection works - ✅ Installation system integration works - ✅ Environment utilities integration works - ✅ Immutable distro logic validated 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> Co-Authored-By: Mithun Gowda B <mithungowda.b7411@gmail.com> * Fix mcp_docs installation bugs - Fix mcp_docs component incorrectly marking as installed when no MCP servers selected - Add MCP server selection prompt when mcp_docs component is explicitly requested - Return False instead of calling _post_install() when no servers selected or files found - Add user-friendly warning when mcp_docs requested without server selection - Remove mcp_docs from installation when no servers are available 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix MCP server name mapping for documentation files - Add mapping for sequential-thinking -> MCP_Sequential.md - Add mapping for morphllm-fast-apply -> MCP_Morphllm.md - Ensures mcp_docs installation works with all MCP server naming conventions 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Enable mcp_docs component reinstallation - Add is_reinstallable() method returning True to allow repeat installations - Fixes issue where mcp_docs was skipped on subsequent installation attempts - Enables users to change MCP server selections and update documentation 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix repeat installation issues for mcp_docs - Ensure mcp component is auto-added when mcp_docs is selected with servers - Fix component_files tracking to only include successfully copied files - Ensures CLAUDE.md gets properly updated with MCP documentation imports - Fixes issue where MCP servers weren't installed on repeat attempts 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix MCP component metadata tracking and debug logging - Fix servers_count to track actually installed servers instead of total available - Add installed_servers list to metadata for better tracking - Add debug logging to trace component auto-addition - Ensures MCP component appears properly in metadata when servers are installed 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix pyproject.toml license format and add missing classifier - Fix license format from string to {text = "MIT"} format - Add missing "License :: OSI Approved :: MIT License" classifier - Fix indentation consistency in classifiers section - Resolves setup.py installation errors and PEP 621 compliance 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Fix MCP incremental installation and auto-detection system PROBLEM FIXED: - MCP component only registered servers selected during current session - mcp_docs component only installed docs for newly selected servers - Users had to reinstall everything when adding new MCP servers - Installation failed if no servers selected but servers existed SOLUTION IMPLEMENTED: - Add auto-detection of existing MCP servers from config files (.claude.json, claude_desktop_config.json) - Add CLI detection via 'claude mcp list' output parsing - Add smart server merging (existing + selected + previously installed) - Add server name normalization for common variations - Fix CLI logic to allow mcp_docs installation without server selection - Add graceful error handling for corrupted configs KEY FEATURES: ✅ Auto-detects existing MCP servers from multiple config locations ✅ Supports incremental installation (add new servers without breaking existing) ✅ Works with or without --install-dir argument ✅ Handles server name variations (sequential vs sequential-thinking, etc.) ✅ Maintains metadata persistence across installation sessions ✅ Graceful fallback when config files are corrupted ✅ Compatible with both interactive and non-interactive modes TESTED SCENARIOS: - Fresh installation with no MCP servers ✅ - Auto-detection with existing servers ✅ - Incremental server additions ✅ - Mixed mode (new + existing servers) ✅ - Error handling with corrupted configs ✅ - Default vs custom installation directories ✅ - Interactive vs command-line modes ✅ Files changed: - setup/cli/commands/install.py: Allow mcp_docs auto-detection mode - setup/components/mcp.py: Add comprehensive auto-detection logic - setup/components/mcp_docs.py: Add auto-detection for documentation 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Integrate SuperClaude framework flags into help command ENHANCEMENT: - Add comprehensive flag documentation to /sc:help command - Include all 25 SuperClaude framework flags with descriptions - Organize flags into logical categories (Mode, MCP, Analysis, Execution, Output) - Add practical usage examples showing flag combinations - Include flag priority rules and precedence hierarchy NEW SECTIONS ADDED: ✅ Mode Activation Flags (5 flags): --brainstorm, --introspect, --task-manage, --orchestrate, --token-efficient ✅ MCP Server Flags (8 flags): --c7, --seq, --magic, --morph, --serena, --play, --all-mcp, --no-mcp ✅ Analysis Depth Flags (3 flags): --think, --think-hard, --ultrathink ✅ Execution Control Flags (6 flags): --delegate, --concurrency, --loop, --iterations, --validate, --safe-mode ✅ Output Optimization Flags (3 flags): --uc, --scope, --focus ✅ Flag Priority Rules: Clear hierarchy and precedence guidelines ✅ Usage Examples: 4 practical examples showing real-world flag combinations IMPACT: - Users can now discover all SuperClaude capabilities from /sc:help - Single source of truth for commands AND flags - Improved discoverability of advanced features - Clear guidance on flag usage and combinations - Help content nearly doubled (68 → 148 lines) with valuable reference information Files changed: - SuperClaude/Commands/help.md: Integrate FLAGS.md content with structured tables and examples 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Remove non-existent commands from modes.md documentation PROBLEM FIXED: - Documentation contained references to fake/non-existent commands - Commands like sc:fix, sc:simple-pix, sc:update, sc:develop, sc:modernize, sc:simple-fix don't exist in CLI - Confusing users who try to use these commands and get errors - Inconsistency between documentation and actual SuperClaude command availability COMMANDS REMOVED/REPLACED: ❌ /sc:simple-fix → ✅ /sc:troubleshoot (real command) ❌ /sc:develop → ✅ /sc:implement (real command) ❌ /sc:modernize → ✅ /sc:improve (real command) AFFECTED FILES: - Docs/User-Guide/modes.md: Fixed all non-existent command references - Docs/User-Guide-jp/modes.md: Fixed Japanese translation with same issues - Docs/User-Guide-zh/modes.md: Fixed Chinese translation with same issues VERIFICATION: ✅ All remaining /sc: commands verified to exist in SuperClaude/Commands/ ✅ No more references to fake commands in any language version ✅ Examples now use only real, working SuperClaude commands ✅ User experience improved - no more confusion from non-working commands REAL COMMANDS REFERENCED: - /sc:analyze, /sc:brainstorm, /sc:help, /sc:implement - /sc:improve, /sc:reflect, /sc:troubleshoot - All verified to exist in CLI implementation 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * Version bump to 4.1.4 CHANGELOG: ✅ Added comprehensive flag documentation to /sc:help command ✅ Fixed MCP incremental installation and auto-detection system ✅ Cleaned up documentation by removing non-existent commands ✅ Enhanced user experience with complete capability reference VERSION UPDATES: - Updated VERSION file: 4.1.3 → 4.1.4 - Updated pyproject.toml: 4.1.3 → 4.1.4 - Updated package.json: 4.1.3 → 4.1.4 - Updated all Python __init__.py fallback versions - Updated all documentation references across all languages - Updated setup/data/features.json component versions - Updated CHANGELOG.md with comprehensive 4.1.4 release notes SCOPE OF CHANGES: 📦 Core files: VERSION, pyproject.toml, package.json, __init__.py files 📚 Documentation: All .md files across English, Japanese, Chinese 🔧 Setup files: features.json, base.py version references 📝 Project files: README files, CHANGELOG, SECURITY, CONTRIBUTING VERIFICATION: ✅ No remaining 4.1.3 references found ✅ 29 files now properly reference 4.1.4 ✅ All language versions consistently updated ✅ Package metadata properly versioned for distribution 🤖 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> --------- Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com> Co-authored-by: Jules <jules-ai-assistant@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Happy <yesreply@happy.engineering>
2025-09-20 10:38:42 +02:00
env_file_path = get_home_directory() / ".env"
logger = get_logger()
try:
# Read existing .env file if it exists
existing_content = ""
if env_file_path.exists():
with open(env_file_path, 'r') as f:
existing_content = f.read()
# Prepare new content
new_lines = []
for env_var, value in api_keys.items():
line = f'{env_var}="{value}"'
# Check if this variable already exists
if f'{env_var}=' in existing_content:
logger.info(f"Variable {env_var} already exists in .env file")
else:
new_lines.append(line)
# Append new lines if any
if new_lines:
with open(env_file_path, 'a') as f:
if existing_content and not existing_content.endswith('\n'):
f.write('\n')
f.write('# SuperClaude API Keys\n')
for line in new_lines:
f.write(line + '\n')
# Set file permissions (readable only by owner)
env_file_path.chmod(0o600)
display_success(f"Created .env file at {env_file_path}")
logger.info(f"Created .env file with {len(new_lines)} new variables")
return True
except Exception as e:
logger.error(f"Failed to create .env file: {e}")
display_warning(f"Could not create .env file: {e}")
feat: Add Deep Research System v4.2.0 (#380) feat: Add Deep Research System v4.2.0 - Autonomous web research capabilities ## Overview Comprehensive implementation of Deep Research framework aligned with DR Agent architecture, enabling autonomous, adaptive, and intelligent web research capabilities. ## Key Features ### 🔬 Deep Research Agent - 15th specialized agent for comprehensive research orchestration - Adaptive planning strategies: Planning-Only, Intent-Planning, Unified Intent-Planning - Multi-hop reasoning with genealogy tracking (up to 5 hops) - Self-reflective mechanisms with confidence scoring (0.0-1.0) - Case-based learning for cross-session intelligence ### 🎯 New /sc:research Command - Intelligent web research with depth control (quick/standard/deep/exhaustive) - Parallel-first execution for optimal performance - Domain filtering and time-based search options - Automatic report generation in claudedocs/ ### 🔍 Tavily MCP Integration - 7th MCP server for real-time web search - News search with time filtering - Content extraction from search results - Multi-round searching with iterative refinement - Free tier available with optional API key ### 🎨 MODE_DeepResearch - 7th behavioral mode for systematic investigation - 6-phase workflow: Understand → Plan → TodoWrite → Execute → Track → Validate - Evidence-based reasoning with citation management - Parallel operation defaults for efficiency ## Technical Changes ### Framework Updates - Updated agent count: 14 → 15 agents - Updated mode count: 6 → 7 modes - Updated MCP server count: 6 → 7 servers - Updated command count: 24 → 25 commands ### Configuration - Added RESEARCH_CONFIG.md for research settings - Added deep_research_workflows.md with examples - Standardized file naming conventions (UPPERCASE for Core) - Removed multi-source investigation features for simplification ### Integration Points - Enhanced MCP component with remote server support - Added check_research_prerequisites() in environment.py - Created verify_research_integration.sh script - Updated all documentation guides ## Requirements - TAVILY_API_KEY environment variable (free tier available) - Node.js and npm for Tavily MCP execution ## Documentation - Complete user guide integration - Workflow examples and best practices - API configuration instructions - Depth level explanations 🤖 Generated with Claude Code Co-authored-by: moshe_anconina <moshe_a@ituran.com> Co-authored-by: Claude <noreply@anthropic.com>
2025-09-21 04:54:42 +03:00
return False
def check_research_prerequisites() -> tuple[bool, list[str]]:
"""
Check if deep research prerequisites are met
Returns:
Tuple of (success: bool, warnings: List[str])
"""
warnings = []
logger = get_logger()
# Check Tavily API key
if not os.environ.get("TAVILY_API_KEY"):
warnings.append(
"TAVILY_API_KEY not set - Deep research web search will not work\n"
"Get your key from: https://app.tavily.com"
)
logger.warning("TAVILY_API_KEY not found in environment")
else:
logger.info("Found TAVILY_API_KEY in environment")
# Check Node.js for MCP
import shutil
if not shutil.which("node"):
warnings.append(
"Node.js not found - Required for Tavily MCP\n"
"Install from: https://nodejs.org"
)
logger.warning("Node.js not found - required for Tavily MCP")
else:
logger.info("Node.js found")
# Check npm
if not shutil.which("npm"):
warnings.append(
"npm not found - Required for MCP server installation\n"
"Usually installed with Node.js"
)
logger.warning("npm not found - required for MCP installation")
else:
logger.info("npm found")
return len(warnings) == 0, warnings