{"id":31209594,"url":"https://github.com/khanhromvn/projectswitcher","last_synced_at":"2025-09-21T02:24:10.231Z","repository":{"id":314535718,"uuid":"1055879701","full_name":"KhanhRomVN/ProjectSwitcher","owner":"KhanhRomVN","description":"ProjectSwitcher – Switch projects seamlessly with isolated tabs and explorer views ⚡","archived":false,"fork":false,"pushed_at":"2025-09-13T02:58:22.000Z","size":285,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-13T04:19:16.854Z","etag":null,"topics":["context-switch","developer-tools","explore","khanhromvn","multi-project","productivity","project-switcher","tab-management","vscode-extension","workspace"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KhanhRomVN.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-13T00:56:52.000Z","updated_at":"2025-09-13T02:58:25.000Z","dependencies_parsed_at":"2025-09-13T04:19:18.137Z","dependency_job_id":"9057d015-6745-4f9a-8391-a0f2989a369e","html_url":"https://github.com/KhanhRomVN/ProjectSwitcher","commit_stats":null,"previous_names":["khanhromvn/projectswitcher"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/KhanhRomVN/ProjectSwitcher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KhanhRomVN%2FProjectSwitcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KhanhRomVN%2FProjectSwitcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KhanhRomVN%2FProjectSwitcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KhanhRomVN%2FProjectSwitcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KhanhRomVN","download_url":"https://codeload.github.com/KhanhRomVN/ProjectSwitcher/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KhanhRomVN%2FProjectSwitcher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276183918,"owners_count":25599242,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-21T02:00:07.055Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["context-switch","developer-tools","explore","khanhromvn","multi-project","productivity","project-switcher","tab-management","vscode-extension","workspace"],"created_at":"2025-09-21T02:24:08.633Z","updated_at":"2025-09-21T02:24:10.220Z","avatar_url":"https://github.com/KhanhRomVN.png","language":"TypeScript","readme":"# Project Switcher\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Version](https://img.shields.io/badge/version-1.0.3-blue.svg)](https://github.com/KhanhRomVN/ProjectSwitcher)\n[![GitHub issues](https://img.shields.io/github/issues/KhanhRomVN/ProjectSwitcher)](https://github.com/KhanhRomVN/ProjectSwitcher/issues)\n[![GitHub stars](https://img.shields.io/github/stars/KhanhRomVN/ProjectSwitcher)](https://github.com/KhanhRomVN/ProjectSwitcher/stargazers)\n\nA powerful Visual Studio Code extension that enables seamless switching between project folders while preserving your tabs, sessions, and workspace state. Perfect for developers working with multiple projects in a single workspace or managing monorepos with multiple sub-projects.\n\n![Project Switcher Demo](https://raw.githubusercontent.com/KhanhRomVN/ProjectSwitcher/main/images/demo.gif)\n\n## Features\n\n### Smart Project Management\n\n- **Auto-detection**: Automatically detects parent directory workspaces with multiple sub-projects\n- **Instant switching**: Switch between projects with preserved context and state\n- **Project ordering**: Organize projects with customizable order (1-9 for keyboard shortcuts)\n- **Enable/disable projects**: Hide projects from quick switching while keeping their configuration\n\n### Intelligent Session Management\n\n- **Tab preservation**: Save and restore open tabs with cursor positions and selections\n- **Project-specific sessions**: Each project maintains its own tab state\n- **Automatic saving**: Sessions are saved automatically when switching projects\n- **Manual control**: Save or clear sessions manually for any project\n- **Smart filtering**: Only saves tabs belonging to the current project directory\n\n### Workspace Filtering\n\n- **Focus mode**: Show only the active project folder in the explorer\n- **Auto-filtering**: Automatically enables when switching projects\n- **Quick toggle**: Toggle filtering on/off with keyboard shortcut\n- **Original preservation**: Maintains original workspace configuration when disabled\n\n### Productivity Features\n\n- **Keyboard shortcuts**: Quick project switching with `Ctrl+Alt+1-9`\n- **Status bar integration**: Current project display with filtering indicator\n- **Project menu**: Quick access via `Ctrl+Alt+M`\n- **Visual indicators**: Clear status indicators for active projects and sessions\n\n## Installation\n\n### From VS Code Marketplace\n\n1. Open VS Code\n2. Go to Extensions view (`Ctrl+Shift+X`)\n3. Search for \"Project Switcher\"\n4. Click **Install**\n\n### Manual Installation\n\n1. Download the latest `.vsix` file from [Releases](https://github.com/KhanhRomVN/ProjectSwitcher/releases)\n2. Open VS Code\n3. Run command `Extensions: Install from VSIX...`\n4. Select the downloaded file\n\n## Quick Start\n\n### 1. Set Up Your Workspace\n\nOpen a folder containing multiple project directories:\n\n```\nmy-workspace/\n├── frontend-app/     # Your React/Vue/Angular app\n├── backend-api/      # Your Node.js/Python API\n├── mobile-app/       # Your React Native/Flutter app\n├── shared-lib/       # Shared utilities\n└── documentation/    # Project documentation\n```\n\n### 2. Enable Project Switcher\n\nWhen you open a multi-project workspace, Project Switcher will automatically detect it and ask if you want to enable it. You can also:\n\n- Click the **Enable Project Switcher** button in the sidebar\n- Use Command Palette: `Project Switcher: Toggle Project Switcher`\n\n### 3. Start Switching\n\n- **Keyboard**: `Ctrl+Alt+1` through `Ctrl+Alt+9`\n- **Menu**: `Ctrl+Alt+M` for quick project menu\n- **Sidebar**: Click any project in the Project Switcher panel\n- **Status Bar**: Click the current project name\n\n## Usage Guide\n\n### Project Management\n\n#### Enabling/Disabling Projects\n\n- **Enable**: Click the green checkmark icon next to a disabled project\n- **Disable**: Click the red circle icon next to an enabled project\n- **Impact**: Disabled projects are hidden from quick switching but retain their configuration\n\n#### Reordering Projects\n\n- Use the up/down arrow buttons to change project order\n- Order determines keyboard shortcuts (`Ctrl+Alt+1` = order 1, etc.)\n\n### Session Management\n\n#### Automatic Sessions\n\n- Sessions are automatically saved when switching between projects\n- Only tabs belonging to the current project are saved\n- Cursor positions, selections, and tab states are preserved\n\n#### Manual Session Control\n\n- **Save session**: Right-click project → \"Save Session\"\n- **Clear session**: Right-click project → \"Clear Session\"\n- **Disable sessions**: Turn off session management per project\n\n### Workspace Filtering\n\n#### How It Works\n\n- Shows only the active project folder in VS Code's Explorer\n- Hides other project folders to reduce clutter\n- Automatically enables when switching projects\n\n#### Toggle Filtering\n\n- **Status bar**: Click the filter indicator\n- **Command**: `Project Switcher: Toggle Project Filtering`\n- **Manual**: Use the toggle button in project menu\n\n## Keyboard Shortcuts\n\n| Shortcut              | Action                        |\n| --------------------- | ----------------------------- |\n| `Ctrl+Alt+1-9`        | Switch to project by order    |\n| `Ctrl+Alt+M`          | Open project switch menu      |\n| Various context menus | Additional actions in sidebar |\n\n_Note: On Mac, use `Cmd` instead of `Ctrl`_\n\n## Configuration\n\n### Extension Settings\n\n```json\n{\n  \"projectSwitcher.preserveTabs\": true,\n  \"projectSwitcher.autoSaveTabs\": true,\n  \"projectSwitcher.sessionManagementDefault\": true,\n  \"projectSwitcher.enableFiltering\": true,\n  \"projectSwitcher.enableKeyboardShortcuts\": true,\n  \"projectSwitcher.autoEnableOnStartup\": false,\n  \"projectSwitcher.logLevel\": \"info\"\n}\n```\n\n| Setting                    | Default  | Description                                           |\n| -------------------------- | -------- | ----------------------------------------------------- |\n| `preserveTabs`             | `true`   | Preserve open tabs when switching projects            |\n| `autoSaveTabs`             | `true`   | Automatically save tab state when switching           |\n| `sessionManagementDefault` | `true`   | Enable session management by default for new projects |\n| `enableFiltering`          | `true`   | Enable project filtering by default                   |\n| `enableKeyboardShortcuts`  | `true`   | Enable keyboard shortcuts (Ctrl+Alt+1-9)              |\n| `autoEnableOnStartup`      | `false`  | Automatically enable for parent directory workspaces  |\n| `logLevel`                 | `\"info\"` | Logging level: debug, info, warn, error               |\n\n### Workspace Requirements\n\nProject Switcher works best with:\n\n- **Multi-folder workspaces**: 2 or more subdirectories\n- **Project-based structure**: Each folder represents a distinct project\n- **Active development**: Folders containing source code (not just documentation)\n\n## Use Cases\n\n### Monorepo Management\n\nPerfect for monorepos with multiple applications:\n\n```\nmy-monorepo/\n├── web-app/          # React/Vue frontend\n├── mobile-app/       # React Native/Flutter\n├── api-server/       # Backend API\n├── shared-lib/       # Shared utilities\n└── docs/            # Documentation\n```\n\n### Multi-Project Workflows\n\nIdeal for related projects:\n\n```\nclient-work/\n├── main-website/     # Primary website\n├── admin-panel/      # Management interface\n├── mobile-app/       # Mobile application\n└── shared-assets/    # Common resources\n```\n\n### Learning and Development\n\nGreat for tutorials and practice:\n\n```\nlearning-path/\n├── basic-concepts/\n├── intermediate-projects/\n├── advanced-techniques/\n└── final-capstone/\n```\n\n## Troubleshooting\n\n### Common Issues\n\n**Extension not activating**\n\n- Ensure workspace has 2+ subdirectories with actual files\n- Reload window: `Developer: Reload Window`\n- Check Output panel: View → Output → Project Switcher\n\n**Sessions not saving**\n\n- Verify session management is enabled for the project\n- Ensure files are within the project directory\n- Check if tabs belong to external files\n\n**Filtering not working**\n\n- Verify filtering is enabled in settings\n- Try disabling and re-enabling Project Switcher\n- Check if original configuration was properly stored\n\n### Debug Information\n\nEnable detailed logging:\n\n```json\n{\n  \"projectSwitcher.logLevel\": \"debug\"\n}\n```\n\nView logs: `View → Output → Project Switcher`\n\n### Getting Help\n\n1. Check [existing issues](https://github.com/KhanhRomVN/ProjectSwitcher/issues)\n2. Enable debug logging and check Output panel\n3. Create a new issue with:\n   - VS Code version and OS\n   - Extension version\n   - Workspace structure\n   - Steps to reproduce\n   - Error logs/screenshots\n\n## Advanced Features\n\n### Session Details\n\n- **Tab filtering**: Only saves tabs within current project\n- **State preservation**: Cursor positions, selections, dirty status\n- **File validation**: Checks file existence before restoring\n- **Graceful handling**: Skips missing files without errors\n\n### Workspace Intelligence\n\n- **Smart detection**: Identifies parent vs single project workspaces\n- **Configuration backup**: Preserves original VS Code settings\n- **Selective filtering**: Shows/hides folders without affecting settings\n- **Restoration**: Completely restores original state when disabled\n\n### Performance Optimization\n\n- **Lazy loading**: Projects load only when needed\n- **Efficient filtering**: Minimal performance impact\n- **Smart caching**: Reduces repeated file system operations\n- **Memory management**: Cleans up unused sessions\n\n## Roadmap\n\n### Upcoming Features\n\n- **Custom project icons**: Visual customization\n- **Project templates**: Quick project setup\n- **Git integration**: Branch-aware switching\n- **Remote workspace support**: Dev containers and codespaces\n- **Project-specific settings**: Environment variables and configurations\n\n### Version History\n\n#### v1.0.3 (Current)\n\n- Enhanced project disable/enable functionality\n- Improved workspace filtering reliability\n- Better session management with project-specific filtering\n- Comprehensive error handling and logging\n\n#### v1.0.0\n\n- Initial stable release\n- Core project switching functionality\n- Session management and workspace filtering\n- Keyboard shortcuts and UI integration\n\n## Contributing\n\nWe welcome contributions! Here's how to get involved:\n\n### Bug Reports\n\n- Use the [issue template](https://github.com/KhanhRomVN/ProjectSwitcher/issues/new)\n- Include reproduction steps and system information\n- Attach relevant logs from Output panel\n\n### Feature Requests\n\n- Search existing issues first\n- Describe the use case and expected behavior\n- Consider providing mockups or examples\n\n### Code Contributions\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/amazing-feature`\n3. Follow TypeScript best practices\n4. Add tests for new functionality\n5. Update documentation\n6. Submit a pull request\n\n### Development Setup\n\n```bash\ngit clone https://github.com/KhanhRomVN/ProjectSwitcher.git\ncd ProjectSwitcher\nnpm install\nnpm run watch    # Development mode\nnpm run build    # Production build\nnpm test         # Run tests\n```\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## Support\n\n- **GitHub Issues**: [Report bugs or request features](https://github.com/KhanhRomVN/ProjectSwitcher/issues)\n- **Email**: [khanhromvn@gmail.com](mailto:khanhromvn@gmail.com)\n- **Documentation**: [Wiki](https://github.com/KhanhRomVN/ProjectSwitcher/wiki)\n\n## Author\n\n**KhanhRomVN**\n\n- GitHub: [@KhanhRomVN](https://github.com/KhanhRomVN)\n- Email: [khanhromvn@gmail.com](mailto:khanhromvn@gmail.com)\n\n---\n\n**Boost your productivity with seamless project switching in VS Code!**\n\nMade with care by KhanhRomVN\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhanhromvn%2Fprojectswitcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhanhromvn%2Fprojectswitcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhanhromvn%2Fprojectswitcher/lists"}