claude-launcher 0.1.0__tar.gz → 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. claude_launcher-0.1.1/PKG-INFO +108 -0
  2. claude_launcher-0.1.1/README.md +67 -0
  3. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/pyproject.toml +1 -1
  4. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/ui/_preview_helper.py +3 -3
  5. claude_launcher-0.1.1/src/claude_launcher.egg-info/PKG-INFO +108 -0
  6. claude_launcher-0.1.0/PKG-INFO +0 -332
  7. claude_launcher-0.1.0/README.md +0 -291
  8. claude_launcher-0.1.0/src/claude_launcher.egg-info/PKG-INFO +0 -332
  9. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/LICENSE +0 -0
  10. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/setup.cfg +0 -0
  11. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/__init__.py +0 -0
  12. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/__main__.py +0 -0
  13. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/cli.py +0 -0
  14. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/core/__init__.py +0 -0
  15. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/core/config.py +0 -0
  16. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/core/discovery.py +0 -0
  17. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/core/models.py +0 -0
  18. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/core/storage.py +0 -0
  19. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/ui/__init__.py +0 -0
  20. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/ui/browser.py +0 -0
  21. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/ui/preview.py +0 -0
  22. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/ui/selector.py +0 -0
  23. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/utils/__init__.py +0 -0
  24. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/utils/git.py +0 -0
  25. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/utils/logging.py +0 -0
  26. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher/utils/paths.py +0 -0
  27. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher.egg-info/SOURCES.txt +0 -0
  28. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher.egg-info/dependency_links.txt +0 -0
  29. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher.egg-info/entry_points.txt +0 -0
  30. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher.egg-info/requires.txt +0 -0
  31. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/src/claude_launcher.egg-info/top_level.txt +0 -0
  32. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/tests/test_browser.py +0 -0
  33. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/tests/test_cli.py +0 -0
  34. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/tests/test_config.py +0 -0
  35. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/tests/test_discovery.py +0 -0
  36. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/tests/test_git.py +0 -0
  37. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/tests/test_integration.py +0 -0
  38. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/tests/test_logging.py +0 -0
  39. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/tests/test_paths.py +0 -0
  40. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/tests/test_preview.py +0 -0
  41. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/tests/test_selector.py +0 -0
  42. {claude_launcher-0.1.0 → claude_launcher-0.1.1}/tests/test_storage.py +0 -0
@@ -0,0 +1,108 @@
1
+ Metadata-Version: 2.4
2
+ Name: claude-launcher
3
+ Version: 0.1.1
4
+ Summary: Fast context switching for Claude Code in multi-project environments
5
+ Author: Solent Labs™
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/solentlabs/claude-launcher
8
+ Project-URL: Repository, https://github.com/solentlabs/claude-launcher
9
+ Project-URL: Issues, https://github.com/solentlabs/claude-launcher/issues
10
+ Keywords: claude,launcher,project-switcher,productivity,cli
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.8
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Operating System :: OS Independent
21
+ Classifier: Topic :: Software Development
22
+ Classifier: Topic :: Utilities
23
+ Requires-Python: >=3.8
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: iterfzf>=1.4.0
27
+ Requires-Dist: typer>=0.12.0
28
+ Requires-Dist: platformdirs>=4.0.0
29
+ Requires-Dist: tomli>=2.0.0; python_version < "3.11"
30
+ Requires-Dist: tomli-w>=1.0.0
31
+ Provides-Extra: dev
32
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
33
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
34
+ Requires-Dist: black>=23.0.0; extra == "dev"
35
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
36
+ Requires-Dist: flake8>=6.0.0; extra == "dev"
37
+ Requires-Dist: isort>=5.12.0; extra == "dev"
38
+ Requires-Dist: pre-commit>=3.0.0; extra == "dev"
39
+ Requires-Dist: pytest-mock>=3.10.0; extra == "dev"
40
+ Dynamic: license-file
41
+
42
+ # Claude Launcher
43
+
44
+ Fast project switching for Claude Code. Select from your projects with fuzzy search and jump right in.
45
+
46
+ [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
47
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
48
+ [![PyPI](https://img.shields.io/pypi/v/claude-launcher)](https://pypi.org/project/claude-launcher/)
49
+
50
+ > **Community Project** - Independent tool, not affiliated with Anthropic.
51
+
52
+ ## Install
53
+
54
+ **One command:**
55
+ ```bash
56
+ curl -sSL https://raw.githubusercontent.com/solentlabs/claude-launcher/master/install.sh | bash
57
+ ```
58
+
59
+ **Or with pipx:**
60
+ ```bash
61
+ pipx install claude-launcher
62
+ ```
63
+
64
+ ## Use
65
+
66
+ ```bash
67
+ claude-launcher ~/projects
68
+ ```
69
+
70
+ That's it. Pick a project, Claude Code opens.
71
+
72
+ ## Features
73
+
74
+ - 🔍 **Fuzzy search** - Type to filter projects instantly
75
+ - 📁 **Tree navigation** - See your project structure at a glance
76
+ - 📋 **Preview pane** - Git status, CLAUDE.md, directory contents
77
+ - ⚡ **Last opened** - Cursor starts on your most recent project
78
+ - ➕ **Manual projects** - Add non-git directories
79
+ - 🔗 **Symlink support** - Works with linked directories
80
+
81
+ ## Requirements
82
+
83
+ - Python 3.8+
84
+ - fzf (install script handles this)
85
+ - Claude Code CLI
86
+
87
+ ## Configuration
88
+
89
+ First run creates `~/.config/claude-launcher/config.toml`:
90
+
91
+ ```toml
92
+ [scan]
93
+ paths = ["~/projects", "~/work"]
94
+ max_depth = 5
95
+ ```
96
+
97
+ [Full configuration docs →](docs/configuration.md)
98
+
99
+ ## Documentation
100
+
101
+ - [Installation Guide](docs/installation.md)
102
+ - [Configuration](docs/configuration.md)
103
+ - [Windows Terminal Setup](docs/windows-terminal.md)
104
+ - [Troubleshooting](docs/troubleshooting.md)
105
+
106
+ ## License
107
+
108
+ MIT - see [LICENSE](LICENSE)
@@ -0,0 +1,67 @@
1
+ # Claude Launcher
2
+
3
+ Fast project switching for Claude Code. Select from your projects with fuzzy search and jump right in.
4
+
5
+ [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+ [![PyPI](https://img.shields.io/pypi/v/claude-launcher)](https://pypi.org/project/claude-launcher/)
8
+
9
+ > **Community Project** - Independent tool, not affiliated with Anthropic.
10
+
11
+ ## Install
12
+
13
+ **One command:**
14
+ ```bash
15
+ curl -sSL https://raw.githubusercontent.com/solentlabs/claude-launcher/master/install.sh | bash
16
+ ```
17
+
18
+ **Or with pipx:**
19
+ ```bash
20
+ pipx install claude-launcher
21
+ ```
22
+
23
+ ## Use
24
+
25
+ ```bash
26
+ claude-launcher ~/projects
27
+ ```
28
+
29
+ That's it. Pick a project, Claude Code opens.
30
+
31
+ ## Features
32
+
33
+ - 🔍 **Fuzzy search** - Type to filter projects instantly
34
+ - 📁 **Tree navigation** - See your project structure at a glance
35
+ - 📋 **Preview pane** - Git status, CLAUDE.md, directory contents
36
+ - ⚡ **Last opened** - Cursor starts on your most recent project
37
+ - ➕ **Manual projects** - Add non-git directories
38
+ - 🔗 **Symlink support** - Works with linked directories
39
+
40
+ ## Requirements
41
+
42
+ - Python 3.8+
43
+ - fzf (install script handles this)
44
+ - Claude Code CLI
45
+
46
+ ## Configuration
47
+
48
+ First run creates `~/.config/claude-launcher/config.toml`:
49
+
50
+ ```toml
51
+ [scan]
52
+ paths = ["~/projects", "~/work"]
53
+ max_depth = 5
54
+ ```
55
+
56
+ [Full configuration docs →](docs/configuration.md)
57
+
58
+ ## Documentation
59
+
60
+ - [Installation Guide](docs/installation.md)
61
+ - [Configuration](docs/configuration.md)
62
+ - [Windows Terminal Setup](docs/windows-terminal.md)
63
+ - [Troubleshooting](docs/troubleshooting.md)
64
+
65
+ ## License
66
+
67
+ MIT - see [LICENSE](LICENSE)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "claude-launcher"
7
- version = "0.1.0"
7
+ version = "0.1.1"
8
8
  description = "Fast context switching for Claude Code in multi-project environments"
9
9
  authors = [
10
10
  { name = "Solent Labs™" }
@@ -17,14 +17,14 @@ def main() -> None:
17
17
 
18
18
  # Extract path from formatted line
19
19
  # Format is: "absolute_path\t\ttree_display" or special markers
20
- # Special marker: __SPACE__ (spacing line)
20
+ # Special markers: __SPACE__ (spacing line), __ACTION__ (action menu items)
21
21
  parts = line.split("\t\t", 1)
22
22
 
23
- if len(parts) == 2 and parts[0] != "__SPACE__":
23
+ if len(parts) == 2 and parts[0] not in ("__SPACE__", "__ACTION__"):
24
24
  # Normal line - first field is absolute path (project or directory)
25
25
  path_str = parts[0]
26
26
  else:
27
- # Spacing line or malformed - show nothing
27
+ # Spacing line, action menu, or malformed - show nothing
28
28
  return
29
29
 
30
30
  try:
@@ -0,0 +1,108 @@
1
+ Metadata-Version: 2.4
2
+ Name: claude-launcher
3
+ Version: 0.1.1
4
+ Summary: Fast context switching for Claude Code in multi-project environments
5
+ Author: Solent Labs™
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/solentlabs/claude-launcher
8
+ Project-URL: Repository, https://github.com/solentlabs/claude-launcher
9
+ Project-URL: Issues, https://github.com/solentlabs/claude-launcher/issues
10
+ Keywords: claude,launcher,project-switcher,productivity,cli
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.8
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Operating System :: OS Independent
21
+ Classifier: Topic :: Software Development
22
+ Classifier: Topic :: Utilities
23
+ Requires-Python: >=3.8
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: iterfzf>=1.4.0
27
+ Requires-Dist: typer>=0.12.0
28
+ Requires-Dist: platformdirs>=4.0.0
29
+ Requires-Dist: tomli>=2.0.0; python_version < "3.11"
30
+ Requires-Dist: tomli-w>=1.0.0
31
+ Provides-Extra: dev
32
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
33
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
34
+ Requires-Dist: black>=23.0.0; extra == "dev"
35
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
36
+ Requires-Dist: flake8>=6.0.0; extra == "dev"
37
+ Requires-Dist: isort>=5.12.0; extra == "dev"
38
+ Requires-Dist: pre-commit>=3.0.0; extra == "dev"
39
+ Requires-Dist: pytest-mock>=3.10.0; extra == "dev"
40
+ Dynamic: license-file
41
+
42
+ # Claude Launcher
43
+
44
+ Fast project switching for Claude Code. Select from your projects with fuzzy search and jump right in.
45
+
46
+ [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
47
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
48
+ [![PyPI](https://img.shields.io/pypi/v/claude-launcher)](https://pypi.org/project/claude-launcher/)
49
+
50
+ > **Community Project** - Independent tool, not affiliated with Anthropic.
51
+
52
+ ## Install
53
+
54
+ **One command:**
55
+ ```bash
56
+ curl -sSL https://raw.githubusercontent.com/solentlabs/claude-launcher/master/install.sh | bash
57
+ ```
58
+
59
+ **Or with pipx:**
60
+ ```bash
61
+ pipx install claude-launcher
62
+ ```
63
+
64
+ ## Use
65
+
66
+ ```bash
67
+ claude-launcher ~/projects
68
+ ```
69
+
70
+ That's it. Pick a project, Claude Code opens.
71
+
72
+ ## Features
73
+
74
+ - 🔍 **Fuzzy search** - Type to filter projects instantly
75
+ - 📁 **Tree navigation** - See your project structure at a glance
76
+ - 📋 **Preview pane** - Git status, CLAUDE.md, directory contents
77
+ - ⚡ **Last opened** - Cursor starts on your most recent project
78
+ - ➕ **Manual projects** - Add non-git directories
79
+ - 🔗 **Symlink support** - Works with linked directories
80
+
81
+ ## Requirements
82
+
83
+ - Python 3.8+
84
+ - fzf (install script handles this)
85
+ - Claude Code CLI
86
+
87
+ ## Configuration
88
+
89
+ First run creates `~/.config/claude-launcher/config.toml`:
90
+
91
+ ```toml
92
+ [scan]
93
+ paths = ["~/projects", "~/work"]
94
+ max_depth = 5
95
+ ```
96
+
97
+ [Full configuration docs →](docs/configuration.md)
98
+
99
+ ## Documentation
100
+
101
+ - [Installation Guide](docs/installation.md)
102
+ - [Configuration](docs/configuration.md)
103
+ - [Windows Terminal Setup](docs/windows-terminal.md)
104
+ - [Troubleshooting](docs/troubleshooting.md)
105
+
106
+ ## License
107
+
108
+ MIT - see [LICENSE](LICENSE)
@@ -1,332 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: claude-launcher
3
- Version: 0.1.0
4
- Summary: Fast context switching for Claude Code in multi-project environments
5
- Author: Solent Labs™
6
- License: MIT
7
- Project-URL: Homepage, https://github.com/solentlabs/claude-launcher
8
- Project-URL: Repository, https://github.com/solentlabs/claude-launcher
9
- Project-URL: Issues, https://github.com/solentlabs/claude-launcher/issues
10
- Keywords: claude,launcher,project-switcher,productivity,cli
11
- Classifier: Development Status :: 3 - Alpha
12
- Classifier: Intended Audience :: Developers
13
- Classifier: License :: OSI Approved :: MIT License
14
- Classifier: Programming Language :: Python :: 3
15
- Classifier: Programming Language :: Python :: 3.8
16
- Classifier: Programming Language :: Python :: 3.9
17
- Classifier: Programming Language :: Python :: 3.10
18
- Classifier: Programming Language :: Python :: 3.11
19
- Classifier: Programming Language :: Python :: 3.12
20
- Classifier: Operating System :: OS Independent
21
- Classifier: Topic :: Software Development
22
- Classifier: Topic :: Utilities
23
- Requires-Python: >=3.8
24
- Description-Content-Type: text/markdown
25
- License-File: LICENSE
26
- Requires-Dist: iterfzf>=1.4.0
27
- Requires-Dist: typer>=0.12.0
28
- Requires-Dist: platformdirs>=4.0.0
29
- Requires-Dist: tomli>=2.0.0; python_version < "3.11"
30
- Requires-Dist: tomli-w>=1.0.0
31
- Provides-Extra: dev
32
- Requires-Dist: pytest>=7.0.0; extra == "dev"
33
- Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
34
- Requires-Dist: black>=23.0.0; extra == "dev"
35
- Requires-Dist: mypy>=1.0.0; extra == "dev"
36
- Requires-Dist: flake8>=6.0.0; extra == "dev"
37
- Requires-Dist: isort>=5.12.0; extra == "dev"
38
- Requires-Dist: pre-commit>=3.0.0; extra == "dev"
39
- Requires-Dist: pytest-mock>=3.10.0; extra == "dev"
40
- Dynamic: license-file
41
-
42
- # Claude Launcher
43
-
44
- Fast context switching for Claude Code in multi-project environments.
45
-
46
- [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/)
47
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
48
-
49
- > **Community Project** - This is an independent tool built by the community, not affiliated with Anthropic.
50
-
51
- ## Overview
52
-
53
- Claude Launcher is a productivity tool for developers working with multiple Claude Code projects. It provides fast project discovery, tree-structured navigation, and intelligent context switching with an interactive fuzzy-search interface powered by fzf.
54
-
55
- ## Features
56
-
57
- - 🔍 **Auto-discovery** - Automatically finds git repositories in configured directories
58
- - 📋 **Alphabetical organization** - Projects sorted by path for easy navigation
59
- - ⚡ **Smart defaults** - Cursor starts on your last opened project
60
- - 🔎 **Fuzzy search** - Interactive project selection powered by fzf
61
- - 📄 **Rich previews** - Shows CLAUDE.md, git status, and directory contents
62
- - 🎯 **Manual paths** - Add non-git projects manually
63
- - 🔄 **Git clone integration** - Clone and launch repositories directly
64
- - 🛡️ **Error recovery** - Automatic database corruption recovery
65
- - 🖥️ **Cross-platform** - Works on Linux, macOS, and Windows
66
-
67
- ## Installation
68
-
69
- ### From PyPI (Recommended)
70
- ```bash
71
- pip install claude-launcher
72
- ```
73
-
74
- ### From Source (Development)
75
- ```bash
76
- git clone https://github.com/solentlabs/claude-launcher.git
77
- cd claude-launcher
78
- pip install -e .
79
- ```
80
-
81
- ### With Development Dependencies
82
- ```bash
83
- pip install -e ".[dev]"
84
- ```
85
-
86
- ## Quick Start
87
-
88
- ### Initial Setup
89
- Run the first-time setup wizard to configure scan directories:
90
-
91
- ```bash
92
- claude-launcher --setup
93
- ```
94
-
95
- You'll be prompted to enter directories to scan for projects (e.g., `~/projects`, `~/work`).
96
-
97
- ### Basic Usage
98
-
99
- ```bash
100
- # Launch interactive project selector
101
- claude-launcher
102
-
103
- # Jump directly to last opened project
104
- claude-launcher --recent
105
-
106
- # List all discovered projects
107
- claude-launcher --list
108
- ```
109
-
110
- ### Managing Projects
111
-
112
- ```bash
113
- # Add a manual project path
114
- claude-launcher --add
115
-
116
- # Remove a manual path
117
- claude-launcher --remove
118
-
119
- # Clone a git repository
120
- claude-launcher --clone
121
- ```
122
-
123
- ## Commands
124
-
125
- | Command | Description |
126
- |---------|-------------|
127
- | `claude-launcher` | Launch interactive project selector |
128
- | `claude-launcher --setup` | Run first-time setup or reconfigure |
129
- | `claude-launcher --add` | Add a manual project path via directory browser |
130
- | `claude-launcher --remove` | Remove a manual path |
131
- | `claude-launcher --list` | List all discovered projects |
132
- | `claude-launcher --recent` | Jump to last opened project |
133
- | `claude-launcher --clone` | Clone a git repository |
134
-
135
- ## Configuration
136
-
137
- Configuration files are stored in platform-specific locations:
138
-
139
- - **Linux/WSL:** `~/.config/claude-launcher/config.toml`
140
- - **macOS:** `~/Library/Application Support/claude-launcher/config.toml`
141
- - **Windows:** `%LOCALAPPDATA%\claude-launcher\config.toml`
142
-
143
- ### Configuration Options
144
-
145
- ```toml
146
- [scan]
147
- # Directories to scan for git repositories
148
- paths = [
149
- "~/projects",
150
- "~/work",
151
- "/mnt/c/Users/username/dev", # WSL example
152
- ]
153
-
154
- # Maximum directory depth to scan
155
- max_depth = 5
156
-
157
- # Directories to skip during scanning
158
- prune_dirs = [
159
- "node_modules",
160
- ".cache",
161
- "venv",
162
- "__pycache__",
163
- ".git",
164
- ]
165
-
166
- [ui]
167
- # Preview pane width (characters)
168
- preview_width = 70
169
-
170
- # Show git status in preview
171
- show_git_status = true
172
-
173
- [history]
174
- # Maximum access history entries to keep
175
- max_entries = 50
176
- ```
177
-
178
- ### Path Expansion
179
-
180
- Paths in configuration support:
181
- - Tilde expansion: `~/projects` → `/home/user/projects`
182
- - Environment variables: `$HOME/projects` → `/home/user/projects`
183
-
184
- ## Data Storage
185
-
186
- Project data (manual paths, history) is stored in SQLite:
187
-
188
- - **Linux/WSL:** `~/.local/share/claude-launcher/projects.db`
189
- - **macOS:** `~/Library/Application Support/claude-launcher/projects.db`
190
- - **Windows:** `%LOCALAPPDATA%\claude-launcher\projects.db`
191
-
192
- ## How It Works
193
-
194
- 1. **Discovery**: Scans configured directories for `.git` folders
195
- 2. **Manual Paths**: Combines discovered repos with manually added paths
196
- 3. **Sorting**: Sorts all projects alphabetically by path
197
- 4. **Selection**: Shows fuzzy-searchable list with preview pane
198
- 5. **Default Cursor**: Positions cursor on last opened project
199
- 6. **Launch**: Changes to selected directory and executes `claude` command
200
- 7. **Tracking**: Records selection for next session
201
-
202
- ## Preview Pane
203
-
204
- The preview pane shows:
205
-
206
- 1. **CLAUDE.md** (first 20 lines) - Project-specific Claude Code instructions
207
- 2. **Git Status** - Current working tree status (if git repo)
208
- 3. **Directory Listing** - Top-level files and folders
209
-
210
- ## Windows Terminal Integration
211
-
212
- Add to your Windows Terminal `settings.json`:
213
-
214
- ```json
215
- {
216
- "name": "Claude Launcher",
217
- "commandline": "wsl.exe -d Ubuntu -- bash -lic claude-launcher",
218
- "icon": "📂"
219
- }
220
- ```
221
-
222
- ## Error Handling
223
-
224
- Claude Launcher includes robust error recovery:
225
-
226
- - **Database corruption**: Automatically backs up and recreates
227
- - **Missing manual paths**: Auto-removes from database
228
- - **Invalid config**: Falls back to sensible defaults
229
- - **Git failures**: Gracefully degrades (shows project without status)
230
- - **Permission errors**: Logs and continues scanning
231
-
232
- ## Development
233
-
234
- ### Running Tests
235
-
236
- ```bash
237
- # Run all tests
238
- pytest
239
-
240
- # Run with coverage
241
- pytest --cov=claude_launcher --cov-report=term-missing
242
-
243
- # Run specific test file
244
- pytest tests/test_discovery.py
245
-
246
- # Run with verbose output
247
- pytest -v
248
- ```
249
-
250
- ### Code Quality
251
-
252
- ```bash
253
- # Format code
254
- black src/ tests/
255
-
256
- # Type checking
257
- mypy src/
258
-
259
- # Lint
260
- flake8 src/ tests/
261
- ```
262
-
263
- ### Project Structure
264
-
265
- ```
266
- claude-workflow/
267
- ├── src/claude_launcher/
268
- │ ├── core/ # Core functionality
269
- │ │ ├── models.py # Data models
270
- │ │ ├── config.py # Configuration management
271
- │ │ ├── discovery.py # Project discovery
272
- │ │ └── storage.py # SQLite storage
273
- │ ├── ui/ # User interface
274
- │ │ ├── selector.py # Main TUI
275
- │ │ ├── preview.py # Preview generation
276
- │ │ └── browser.py # Directory browser
277
- │ ├── utils/ # Utilities
278
- │ │ └── git.py # Git operations
279
- │ └── cli.py # CLI entry point
280
- └── tests/ # Test suite
281
- ```
282
-
283
- ## Requirements
284
-
285
- - **Python**: 3.8 or higher
286
- - **fzf**: Interactive fuzzy finder ([installation guide](https://github.com/junegunn/fzf#installation))
287
- - Ubuntu/Debian: `sudo apt install fzf`
288
- - macOS: `brew install fzf`
289
- - Windows: `choco install fzf`
290
- - **Git**: For repository discovery and status
291
- - **Claude Code CLI**: Must be installed and in PATH
292
-
293
- ## Troubleshooting
294
-
295
- ### "claude command not found"
296
- Ensure Claude Code CLI is installed and accessible in your PATH.
297
-
298
- ### No projects found
299
- 1. Run `claude-launcher --setup` to configure scan paths
300
- 2. Verify paths exist and contain git repositories
301
- 3. Check permissions on directories
302
-
303
- ### Database errors
304
- The database auto-recovers from corruption. Check for `.db.backup.*` files if you need to restore data.
305
-
306
- ### Permission denied during scan
307
- Some directories may not be readable. These are automatically skipped with a warning.
308
-
309
- ## Contributing
310
-
311
- Contributions are welcome! Please:
312
-
313
- 1. Fork the repository
314
- 2. Create a feature branch
315
- 3. Add tests for new functionality
316
- 4. Ensure all tests pass
317
- 5. Submit a pull request
318
-
319
- ## License
320
-
321
- MIT License - see [LICENSE](LICENSE) file for details.
322
-
323
- ## Changelog
324
-
325
- ### 0.1.0 (Initial Release)
326
- - Project discovery with git repository scanning
327
- - Alphabetical sorting with last-opened default
328
- - Interactive fuzzy search with preview pane
329
- - Manual path management
330
- - Git clone integration
331
- - Error recovery
332
- - Cross-platform support