tlc-claude-code 0.9.0 → 0.9.2
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.
- package/README.md +2 -3
- package/bin/init.js +41 -8
- package/docker-compose.dev.yml +16 -0
- package/package.json +2 -1
- package/start-dev.sh +91 -0
package/README.md
CHANGED
|
@@ -145,7 +145,8 @@ Launch a mini-Replit for your team with Docker:
|
|
|
145
145
|
# Add launcher to your project (one-time)
|
|
146
146
|
tlc init
|
|
147
147
|
|
|
148
|
-
#
|
|
148
|
+
# Windows: double-click tlc-start.bat
|
|
149
|
+
# Mac/Linux: ./tlc-start.sh
|
|
149
150
|
```
|
|
150
151
|
|
|
151
152
|
**What you get:**
|
|
@@ -172,8 +173,6 @@ tlc rebuild # After package.json changes or to get a clean slate
|
|
|
172
173
|
|
|
173
174
|
**Requirements:** [Docker Desktop](https://www.docker.com/products/docker-desktop)
|
|
174
175
|
|
|
175
|
-
> **Note:** Windows only for now. macOS/Linux support coming soon.
|
|
176
|
-
|
|
177
176
|
---
|
|
178
177
|
|
|
179
178
|
## Test Quality
|
package/bin/init.js
CHANGED
|
@@ -57,7 +57,7 @@ powershell -ExecutionPolicy Bypass -File "%TLC_DIR%\\start-dev.ps1" -ProjectPath
|
|
|
57
57
|
pause
|
|
58
58
|
`;
|
|
59
59
|
|
|
60
|
-
// macOS/Linux shell script
|
|
60
|
+
// macOS/Linux shell script
|
|
61
61
|
const shContent = `#!/bin/bash
|
|
62
62
|
# ========================================
|
|
63
63
|
# TLC Dev Server Launcher
|
|
@@ -68,15 +68,48 @@ const shContent = `#!/bin/bash
|
|
|
68
68
|
# Database: localhost:5433
|
|
69
69
|
# ========================================
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
71
|
+
set -e
|
|
72
|
+
|
|
73
|
+
# Find TLC installation
|
|
74
|
+
TLC_DIR=""
|
|
75
|
+
LOCATIONS=(
|
|
76
|
+
"$HOME/.nvm/versions/node/*/lib/node_modules/tlc-claude-code"
|
|
77
|
+
"/usr/local/lib/node_modules/tlc-claude-code"
|
|
78
|
+
"/usr/lib/node_modules/tlc-claude-code"
|
|
79
|
+
"$HOME/.npm-global/lib/node_modules/tlc-claude-code"
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
# Check npm global
|
|
83
|
+
NPM_ROOT=$(npm root -g 2>/dev/null || echo "")
|
|
84
|
+
if [ -n "$NPM_ROOT" ] && [ -f "$NPM_ROOT/tlc-claude-code/start-dev.sh" ]; then
|
|
85
|
+
TLC_DIR="$NPM_ROOT/tlc-claude-code"
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
# Check common locations
|
|
89
|
+
if [ -z "$TLC_DIR" ]; then
|
|
90
|
+
for pattern in "\${LOCATIONS[@]}"; do
|
|
91
|
+
for dir in $pattern; do
|
|
92
|
+
if [ -f "$dir/start-dev.sh" ]; then
|
|
93
|
+
TLC_DIR="$dir"
|
|
94
|
+
break 2
|
|
95
|
+
fi
|
|
96
|
+
done
|
|
97
|
+
done
|
|
98
|
+
fi
|
|
99
|
+
|
|
100
|
+
if [ -z "$TLC_DIR" ]; then
|
|
101
|
+
echo "[TLC] ERROR: Could not find TLC installation"
|
|
102
|
+
echo "[TLC] Install with: npm install -g tlc-claude-code"
|
|
103
|
+
exit 1
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
PROJECT_PATH="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
|
|
107
|
+
|
|
108
|
+
echo "[TLC] Found TLC at: $TLC_DIR"
|
|
109
|
+
echo "[TLC] Starting dev server for: $PROJECT_PATH"
|
|
77
110
|
echo ""
|
|
78
111
|
|
|
79
|
-
|
|
112
|
+
exec "$TLC_DIR/start-dev.sh" "$PROJECT_PATH"
|
|
80
113
|
`;
|
|
81
114
|
|
|
82
115
|
// Detect OS - WSL counts as Windows since user will double-click .bat from Explorer
|
package/docker-compose.dev.yml
CHANGED
|
@@ -79,5 +79,21 @@ services:
|
|
|
79
79
|
- app
|
|
80
80
|
restart: on-failure
|
|
81
81
|
|
|
82
|
+
# Playwright E2E Tests (optional - starts on demand)
|
|
83
|
+
playwright:
|
|
84
|
+
image: mcr.microsoft.com/playwright:v1.40.0-jammy
|
|
85
|
+
container_name: tlc-${COMPOSE_PROJECT_NAME:-dev}-playwright
|
|
86
|
+
working_dir: /app
|
|
87
|
+
profiles:
|
|
88
|
+
- test
|
|
89
|
+
command: npx playwright test
|
|
90
|
+
environment:
|
|
91
|
+
- BASE_URL=http://app:5000
|
|
92
|
+
- CI=true
|
|
93
|
+
volumes:
|
|
94
|
+
- ${PROJECT_DIR:-.}:/app
|
|
95
|
+
depends_on:
|
|
96
|
+
- app
|
|
97
|
+
|
|
82
98
|
volumes:
|
|
83
99
|
postgres-data:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tlc-claude-code",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.2",
|
|
4
4
|
"description": "TLC - Test Led Coding for Claude Code",
|
|
5
5
|
"bin": {
|
|
6
6
|
"tlc": "./bin/tlc.js",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"server/",
|
|
14
14
|
"docker-compose.dev.yml",
|
|
15
15
|
"start-dev.ps1",
|
|
16
|
+
"start-dev.sh",
|
|
16
17
|
"start-dev.bat",
|
|
17
18
|
"*.md",
|
|
18
19
|
"install.sh"
|
package/start-dev.sh
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# TLC Dev Server Launcher
|
|
4
|
+
# Usage: ./start-dev.sh [project-path]
|
|
5
|
+
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
PROJECT_PATH="${1:-$(pwd)}"
|
|
9
|
+
|
|
10
|
+
echo ""
|
|
11
|
+
echo " ============================"
|
|
12
|
+
echo " TLC Dev Server"
|
|
13
|
+
echo " ============================"
|
|
14
|
+
echo ""
|
|
15
|
+
|
|
16
|
+
# Check Docker
|
|
17
|
+
echo "[TLC] Checking Docker..."
|
|
18
|
+
if ! docker info >/dev/null 2>&1; then
|
|
19
|
+
echo "[TLC] Docker is not running."
|
|
20
|
+
|
|
21
|
+
# Try to start Docker based on OS
|
|
22
|
+
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
23
|
+
echo "[TLC] Starting Docker Desktop..."
|
|
24
|
+
open -a Docker
|
|
25
|
+
elif [[ -f /etc/debian_version ]] || [[ -f /etc/redhat-release ]]; then
|
|
26
|
+
echo "[TLC] Starting Docker service..."
|
|
27
|
+
sudo systemctl start docker 2>/dev/null || sudo service docker start 2>/dev/null || true
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
echo "[TLC] Waiting for Docker..."
|
|
31
|
+
TIMEOUT=60
|
|
32
|
+
ELAPSED=0
|
|
33
|
+
while [ $ELAPSED -lt $TIMEOUT ]; do
|
|
34
|
+
sleep 2
|
|
35
|
+
ELAPSED=$((ELAPSED + 2))
|
|
36
|
+
if docker info >/dev/null 2>&1; then
|
|
37
|
+
break
|
|
38
|
+
fi
|
|
39
|
+
printf "."
|
|
40
|
+
done
|
|
41
|
+
echo ""
|
|
42
|
+
|
|
43
|
+
if ! docker info >/dev/null 2>&1; then
|
|
44
|
+
echo "[TLC] ERROR: Docker failed to start"
|
|
45
|
+
echo "[TLC] Please start Docker manually and try again"
|
|
46
|
+
exit 1
|
|
47
|
+
fi
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
echo "[TLC] Docker is ready!"
|
|
51
|
+
|
|
52
|
+
# Resolve project path
|
|
53
|
+
PROJECT_PATH="$(cd "$PROJECT_PATH" 2>/dev/null && pwd)"
|
|
54
|
+
if [ -z "$PROJECT_PATH" ]; then
|
|
55
|
+
echo "[TLC] ERROR: Invalid project path"
|
|
56
|
+
exit 1
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# Get project name from directory
|
|
60
|
+
PROJECT_NAME=$(basename "$PROJECT_PATH" | tr '[:upper:]' '[:lower:]' | tr -cd 'a-z0-9')
|
|
61
|
+
if [ -z "$PROJECT_NAME" ]; then
|
|
62
|
+
PROJECT_NAME="dev"
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
echo "[TLC] Project: $PROJECT_PATH"
|
|
66
|
+
echo "[TLC] Name: $PROJECT_NAME"
|
|
67
|
+
|
|
68
|
+
# Set environment
|
|
69
|
+
export PROJECT_DIR="$PROJECT_PATH"
|
|
70
|
+
export COMPOSE_PROJECT_NAME="$PROJECT_NAME"
|
|
71
|
+
|
|
72
|
+
# Find TLC installation directory
|
|
73
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
74
|
+
cd "$SCRIPT_DIR"
|
|
75
|
+
|
|
76
|
+
echo ""
|
|
77
|
+
echo "[TLC] Starting services..."
|
|
78
|
+
echo " Dashboard: http://localhost:3147"
|
|
79
|
+
echo " App: http://localhost:5000"
|
|
80
|
+
echo " DB Admin: http://localhost:8080"
|
|
81
|
+
echo " Database: localhost:5433 (postgres/postgres)"
|
|
82
|
+
echo ""
|
|
83
|
+
echo "[TLC] Containers: tlc-$PROJECT_NAME-*"
|
|
84
|
+
echo "[TLC] Press Ctrl+C to stop"
|
|
85
|
+
echo ""
|
|
86
|
+
|
|
87
|
+
# Run docker-compose
|
|
88
|
+
docker-compose -f docker-compose.dev.yml up --build
|
|
89
|
+
|
|
90
|
+
echo ""
|
|
91
|
+
echo "[TLC] Stopped."
|