Metadata-Version: 2.1
Name: ccdock
Version: 0.1.0
Summary: Pick a Claude Code project and its conda/venv environment from a local dashboard, and launch it in a new Windows Terminal tab or window
Author-email: pashidl-lab <pashidl.lab@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/pashidl-lab/ccdock
Project-URL: Issues, https://github.com/pashidl-lab/ccdock/issues
Keywords: claude-code,conda,venv,launcher,dashboard,windows-terminal
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Utilities
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE

# ccdock

Claude Code로 작업하던 프로젝트와 conda 가상환경을 **한 화면에서 골라 바로 띄우는** 로컬 대시보드입니다.
PC를 재부팅할 때마다 폴더 경로를 더듬고 가상환경 이름을 기억해내는 과정을 없애기 위해 만들었습니다.

- 최근 작업순 프로젝트 목록 — Claude Code 사용 기록에서 자동 수집
- **conda 환경과 프로젝트 폴더의 venv를 모두 인식** (`.venv`, `mvkit-env` 같은 폴더)
- 각 가상환경의 **디스크 사용량 표시** — 배경에서 재고 캐시해 다음부터는 즉시 표시
- 프로젝트별 가상환경을 한 번 지정하면 계속 기억
- 선택 즉시 **Anaconda 프롬프트 새 탭 또는 새 창**이 열리고 환경이 활성화된 상태로 대기
- 창이 여러 개 열려 있으면 **어느 창에 탭을 추가할지 선택**
- 워크스페이스 — 자주 쓰는 3~5개 조합을 저장해두고 부팅 후 한 번에 복원
- 외부 의존성 0 (표준 라이브러리만), 브라우저에서 뜨는 가벼운 대시보드

## 설치

```bat
pip install ccdock
```

로컬 소스에서 바로 쓰려면:

```bat
pip install -e G:\path\to\ccdock
```

> conda `base` 환경에 설치하면 어떤 Anaconda 프롬프트에서도 `ccdock`를 바로 호출할 수 있습니다.

## 사용

```bat
ccdock                    :: 대시보드를 열고 브라우저 실행
ccdock -p 9000            :: 다른 포트로
ccdock -n                 :: 브라우저를 열지 않음
ccdock list               :: 프로젝트 목록을 터미널에 출력
ccdock workspace 오전작업  :: 저장된 워크스페이스를 한 번에 실행
```

### 대시보드

| 조작 | 설명 |
| --- | --- |
| `/` | 검색창으로 이동 |
| 검색 후 `Enter` | 첫 번째 결과 실행 |
| ☆ | 프로젝트 고정 (목록 맨 위로) |
| 환경 드롭다운 | 가상환경 지정 — 즉시 저장됨 |
| `+ 담기` → `워크스페이스 저장` | 여러 프로젝트를 하나의 조합으로 저장 |
| `실행` | 터미널(새 탭/새 창)과 실행할 명령을 고르고 실행 |

실행 모달에서 고르는 항목:

- **가상환경** — conda 환경과 venv가 그룹으로 나뉘어 표시됩니다. 프로젝트 폴더 안에 venv가
  있거나 `environment.yml` / `.ccdock-env`가 있으면 후보로 먼저 제안합니다
- **터미널** — *기존 창에 새 탭* (열린 Windows Terminal 창이 있을 때) / *새 창으로 열기*
- **어느 창에 탭을 추가할까요?** — 창이 2개 이상이면 창 제목으로 골라서 지정합니다
- **실행할 명령** — `claude` / `claude --continue` / `claude --resume` / 프롬프트만

### 가상환경 인식 범위

| 종류 | 인식 방법 | 활성화 |
| --- | --- | --- |
| conda | `~/.conda/environments.txt` | `activate.bat <이름>` |
| venv | 프로젝트 폴더와 그 상위 폴더 바로 아래의 `pyvenv.cfg` 보유 폴더 | `<경로>\Scripts\activate.bat` |

프로젝트 폴더 안에 만들어 둔 `.venv`, `mvkit-env` 같은 가상환경이 자동으로 목록에 올라옵니다.

### 디스크 사용량

목록의 각 환경에 `claude312 — 792.4 MB` 처럼 크기가 함께 표시됩니다. 환경 하나를 훑는 데
0.4~1초가 걸리므로 화면을 막지 않고 배경 스레드가 순서대로 재며, 결과는 `~/.ccdock/sizes.json`에
남아 다음 실행부터는 즉시 나옵니다(7일 후 자동 재측정). 헤더의 합계 배지를 누르면 다시 잽니다.

`base`는 `envs/`와 `pkgs/`를 빼고 계산합니다. 그러지 않으면 다른 환경과 패키지 캐시가
전부 포함돼 실제보다 훨씬 크게 나옵니다.

## 동작 방식

| 정보 | 출처 |
| --- | --- |
| 프로젝트 경로 | `~/.claude.json` 의 `projects` 키 |
| 마지막 작업 시각 | `~/.claude/projects/<슬러그>/*.jsonl` 파일 mtime |
| 가상환경 목록 | `~/.conda/environments.txt` (없으면 conda 설치 폴더 스캔) |
| 사용자 설정 | `~/.ccdock/config.json` |

실행 시 임시 배치 파일을 만들어 `wt -w 0 new-tab`(새 탭) 또는 `wt -w new`(새 창)로 띄웁니다.
`wt -w 0`은 "가장 최근에 사용한 창"을 뜻하므로, 특정 창을 지정하면 Win32 API로 그 창을 먼저
앞으로 가져온 뒤 탭을 붙입니다. Windows Terminal이 없으면 `start cmd`로 대체합니다. 새 창에는 부모 프로세스의
`VIRTUAL_ENV` / `CONDA_PREFIX` 흔적을 제거한 깨끗한 환경이 전달되므로, ccdock 자체를
어떤 가상환경에서 실행하든 선택한 환경이 정확히 활성화됩니다.

## 보안

서버는 `127.0.0.1`에만 바인딩되며, 모든 API는 실행할 때마다 새로 만들어지는 토큰을 요구합니다.
브라우저는 토큰이 포함된 URL로 자동으로 열립니다.

## 요구 사항

- Windows (Windows Terminal이 있으면 탭 기능 사용 가능)
- Python 3.8+
- Anaconda 또는 Miniconda

## 라이선스

MIT
