tlc-claude-code 1.2.11 → 1.2.13
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/deploy.md +142 -1
- package/help.md +1 -0
- package/init.md +22 -0
- package/new-project.md +32 -0
- package/package.json +1 -1
- package/tlc.md +127 -1
package/deploy.md
CHANGED
|
@@ -9,12 +9,153 @@ Deploy your TLC project to a remote dev server for team collaboration.
|
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
Commands:
|
|
12
|
-
- `setup` -
|
|
12
|
+
- `setup` - Generate server config and setup instructions
|
|
13
13
|
- `push` - Deploy current branch
|
|
14
14
|
- `status` - Check deployment status
|
|
15
15
|
- `logs` - View deployment logs
|
|
16
16
|
- `users` - Manage server users
|
|
17
17
|
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Quick Setup (Terminal)
|
|
21
|
+
|
|
22
|
+
Run `/tlc:deploy setup` to generate your server config:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
TLC Dev Server Setup
|
|
26
|
+
════════════════════════════════════════════════════════════════════
|
|
27
|
+
|
|
28
|
+
Project Configuration
|
|
29
|
+
─────────────────────
|
|
30
|
+
Name: my-awesome-app
|
|
31
|
+
Repo: git@github.com:myorg/my-awesome-app.git
|
|
32
|
+
Domain: (enter your domain)
|
|
33
|
+
|
|
34
|
+
Domain for dev server: myapp.example.com
|
|
35
|
+
|
|
36
|
+
Generating config...
|
|
37
|
+
|
|
38
|
+
════════════════════════════════════════════════════════════════════
|
|
39
|
+
STEP 1: Run this on your Ubuntu server
|
|
40
|
+
════════════════════════════════════════════════════════════════════
|
|
41
|
+
|
|
42
|
+
┌────────────────────────────────────────────────────────────────────┐
|
|
43
|
+
│ │
|
|
44
|
+
│ curl -fsSL https://tlc.dev/install | bash -s -- \ │
|
|
45
|
+
│ --project "my-awesome-app" \ │
|
|
46
|
+
│ --repo "git@github.com:myorg/my-awesome-app.git" \ │
|
|
47
|
+
│ --domain "myapp.example.com" \ │
|
|
48
|
+
│ --webhook-secret "a1b2c3d4e5f6g7h8" │
|
|
49
|
+
│ │
|
|
50
|
+
└────────────────────────────────────────────────────────────────────┘
|
|
51
|
+
[Copy to clipboard]
|
|
52
|
+
|
|
53
|
+
════════════════════════════════════════════════════════════════════
|
|
54
|
+
STEP 2: Configure DNS
|
|
55
|
+
════════════════════════════════════════════════════════════════════
|
|
56
|
+
|
|
57
|
+
Add these DNS records pointing to your server IP:
|
|
58
|
+
|
|
59
|
+
*.myapp.example.com → YOUR_SERVER_IP
|
|
60
|
+
dashboard.myapp.example.com → YOUR_SERVER_IP
|
|
61
|
+
|
|
62
|
+
════════════════════════════════════════════════════════════════════
|
|
63
|
+
STEP 3: Add GitHub Webhook
|
|
64
|
+
════════════════════════════════════════════════════════════════════
|
|
65
|
+
|
|
66
|
+
Go to: https://github.com/myorg/my-awesome-app/settings/hooks/new
|
|
67
|
+
|
|
68
|
+
Payload URL: https://dashboard.myapp.example.com/api/webhook
|
|
69
|
+
Content type: application/json
|
|
70
|
+
Secret: a1b2c3d4e5f6g7h8
|
|
71
|
+
Events: Just the push event
|
|
72
|
+
|
|
73
|
+
════════════════════════════════════════════════════════════════════
|
|
74
|
+
STEP 4: Done!
|
|
75
|
+
════════════════════════════════════════════════════════════════════
|
|
76
|
+
|
|
77
|
+
Once server setup completes, you'll get:
|
|
78
|
+
|
|
79
|
+
Dashboard: https://dashboard.myapp.example.com
|
|
80
|
+
Main branch: https://main.myapp.example.com
|
|
81
|
+
Feature branches: https://{branch}.myapp.example.com
|
|
82
|
+
|
|
83
|
+
Admin credentials will be shown after server setup.
|
|
84
|
+
|
|
85
|
+
────────────────────────────────────────────────────────────────────
|
|
86
|
+
Config saved to .tlc.json
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Process
|
|
90
|
+
|
|
91
|
+
1. **Detect project state**:
|
|
92
|
+
- New project? Use info from `/tlc:new-project` or `/tlc:init`
|
|
93
|
+
- Existing TLC project? Read from `.tlc.json`
|
|
94
|
+
- Legacy project? Read from `package.json` + git remote
|
|
95
|
+
2. **Ask for domain** if not configured
|
|
96
|
+
3. **Generate webhook secret** (random 16 chars)
|
|
97
|
+
4. **Output setup command** with all config embedded
|
|
98
|
+
5. **Save/update config** in `.tlc.json`
|
|
99
|
+
|
|
100
|
+
### Upgrading Existing Projects
|
|
101
|
+
|
|
102
|
+
For projects already using TLC but without team features:
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
> /tlc:deploy setup
|
|
106
|
+
|
|
107
|
+
TLC Dev Server Setup
|
|
108
|
+
════════════════════════════════════════════════════════════════════
|
|
109
|
+
|
|
110
|
+
Detected existing TLC project: my-awesome-app
|
|
111
|
+
✓ .tlc.json found
|
|
112
|
+
✓ .planning/ directory exists
|
|
113
|
+
✗ No deploy config yet
|
|
114
|
+
|
|
115
|
+
Adding team collaboration features...
|
|
116
|
+
|
|
117
|
+
Project: my-awesome-app
|
|
118
|
+
Repo: git@github.com:myorg/my-awesome-app.git
|
|
119
|
+
|
|
120
|
+
Enter your server domain: _
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
The setup continues with the same flow - generates config, shows server command, DNS instructions, webhook config.
|
|
124
|
+
|
|
125
|
+
**What gets added to .tlc.json:**
|
|
126
|
+
|
|
127
|
+
```json
|
|
128
|
+
{
|
|
129
|
+
"project": "my-awesome-app",
|
|
130
|
+
"testFrameworks": { ... }, // existing config preserved
|
|
131
|
+
"deploy": { // NEW: added by setup
|
|
132
|
+
"domain": "myapp.example.com",
|
|
133
|
+
"webhookSecret": "x7k9m2p4q8r1s5t3",
|
|
134
|
+
"dashboardUrl": "https://dashboard.myapp.example.com",
|
|
135
|
+
"configured": false
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
```javascript
|
|
141
|
+
// Config generation
|
|
142
|
+
const config = {
|
|
143
|
+
project: packageJson.name,
|
|
144
|
+
repo: getGitRemoteUrl(),
|
|
145
|
+
domain: userInput.domain,
|
|
146
|
+
webhookSecret: crypto.randomBytes(16).toString('hex')
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
// Generate one-liner
|
|
150
|
+
const command = `curl -fsSL https://tlc.dev/install | bash -s -- \\
|
|
151
|
+
--project "${config.project}" \\
|
|
152
|
+
--repo "${config.repo}" \\
|
|
153
|
+
--domain "${config.domain}" \\
|
|
154
|
+
--webhook-secret "${config.webhookSecret}"`;
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
18
159
|
## Architecture
|
|
19
160
|
|
|
20
161
|
```
|
package/help.md
CHANGED
|
@@ -92,6 +92,7 @@ Launches the visual dashboard. Detects where you are, shows what's next.
|
|
|
92
92
|
| `/tlc:export --list` | Show all supported AI tools |
|
|
93
93
|
| `/tlc:export --detect` | Detect which AI tool is running |
|
|
94
94
|
| `/tlc:deploy` | Show deployment status |
|
|
95
|
+
| `/tlc:deploy setup` | Generate server config + copy-paste install command |
|
|
95
96
|
| `/tlc:deploy start <branch>` | Deploy branch to dev server |
|
|
96
97
|
| `/tlc:deploy stop <branch>` | Stop branch deployment |
|
|
97
98
|
| `/tlc:deploy logs <branch>` | View deployment logs |
|
package/init.md
CHANGED
|
@@ -388,6 +388,28 @@ Next steps:
|
|
|
388
388
|
- Run /tlc:quick for ad-hoc tasks with tests
|
|
389
389
|
```
|
|
390
390
|
|
|
391
|
+
### Step 13: Offer Dev Server Setup
|
|
392
|
+
|
|
393
|
+
After initialization, offer remote dev server:
|
|
394
|
+
|
|
395
|
+
```
|
|
396
|
+
───────────────────────────────────────────────────────────────
|
|
397
|
+
Dev Server (Optional)
|
|
398
|
+
───────────────────────────────────────────────────────────────
|
|
399
|
+
|
|
400
|
+
Set up a shared dev server for team collaboration?
|
|
401
|
+
• Each branch gets its own preview URL
|
|
402
|
+
• QA and PO can access without local setup
|
|
403
|
+
• Slack notifications for deployments
|
|
404
|
+
|
|
405
|
+
[1] Yes, set up dev server
|
|
406
|
+
[2] Skip for now
|
|
407
|
+
|
|
408
|
+
Choice [1/2]: _
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
**If [1] selected:** Run the dev server setup flow from `/tlc:deploy setup`.
|
|
412
|
+
|
|
391
413
|
## Usage
|
|
392
414
|
|
|
393
415
|
```
|
package/new-project.md
CHANGED
|
@@ -380,6 +380,37 @@ npx cypress open
|
|
|
380
380
|
Ready to build. Run /tlc:plan to create your first phase.
|
|
381
381
|
```
|
|
382
382
|
|
|
383
|
+
### Step 10: Offer Dev Server Setup
|
|
384
|
+
|
|
385
|
+
After project is configured, offer remote dev server:
|
|
386
|
+
|
|
387
|
+
```
|
|
388
|
+
───────────────────────────────────────────────────────────────
|
|
389
|
+
Dev Server (Optional)
|
|
390
|
+
───────────────────────────────────────────────────────────────
|
|
391
|
+
|
|
392
|
+
Set up a shared dev server for team collaboration?
|
|
393
|
+
• Each branch gets its own preview URL
|
|
394
|
+
• QA and PO can access without local setup
|
|
395
|
+
• Slack notifications for deployments
|
|
396
|
+
|
|
397
|
+
[1] Yes, set up dev server
|
|
398
|
+
[2] Skip for now
|
|
399
|
+
|
|
400
|
+
Choice [1/2]: _
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
**If [1] selected:**
|
|
404
|
+
|
|
405
|
+
1. Ask for server domain
|
|
406
|
+
2. Generate webhook secret
|
|
407
|
+
3. Show setup command for server
|
|
408
|
+
4. Show DNS instructions
|
|
409
|
+
5. Show GitHub webhook config
|
|
410
|
+
6. Save config to `.tlc.json`
|
|
411
|
+
|
|
412
|
+
See `/tlc:deploy setup` for full output format.
|
|
413
|
+
|
|
383
414
|
## Usage
|
|
384
415
|
|
|
385
416
|
```
|
|
@@ -392,3 +423,4 @@ Interactive flow that:
|
|
|
392
423
|
3. Lets you adjust
|
|
393
424
|
4. Creates roadmap
|
|
394
425
|
5. Sets up tests
|
|
426
|
+
6. Offers dev server setup
|
package/package.json
CHANGED
package/tlc.md
CHANGED
|
@@ -64,6 +64,23 @@ fi
|
|
|
64
64
|
echo "✓ Synced"
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
+
### Step 0b: Check for Team Features (Existing Projects)
|
|
68
|
+
|
|
69
|
+
For projects that existed before team features, check if dev server is configured:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Check if deploy config exists
|
|
73
|
+
deployDomain=$(jq -r '.deploy.domain // ""' .tlc.json)
|
|
74
|
+
|
|
75
|
+
if [ -z "$deployDomain" ]; then
|
|
76
|
+
# No deploy config - this is an existing project without team setup
|
|
77
|
+
# Show subtle hint in header (not blocking)
|
|
78
|
+
teamHint="│ 💡 Team sharing available: /tlc:deploy setup"
|
|
79
|
+
fi
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
This adds a non-blocking hint. Users can also access it via Quick Actions [5].
|
|
83
|
+
|
|
67
84
|
### Step 1: Show Phase Checklist (ALWAYS SHOW THIS)
|
|
68
85
|
|
|
69
86
|
**This is the core of `/tlc` - always show the current phase status:**
|
|
@@ -102,8 +119,9 @@ Phase 2: User Dashboard
|
|
|
102
119
|
[2] Go back and fix skipped steps
|
|
103
120
|
[3] Show all commands (/tlc:help)
|
|
104
121
|
[4] Full project checklist (/tlc:checklist)
|
|
122
|
+
[5] Set up team dev server (/tlc:deploy setup)
|
|
105
123
|
|
|
106
|
-
Choice [1/2/3/4]: _
|
|
124
|
+
Choice [1/2/3/4/5]: _
|
|
107
125
|
```
|
|
108
126
|
|
|
109
127
|
### Step 2: Detect Current Phase
|
|
@@ -256,6 +274,114 @@ Options:
|
|
|
256
274
|
Choice [1/2]: _
|
|
257
275
|
```
|
|
258
276
|
|
|
277
|
+
## After Project Setup (First Time)
|
|
278
|
+
|
|
279
|
+
After `/tlc:new-project` or `/tlc:init` completes, show dev server option:
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
TLC v{{VERSION}}
|
|
283
|
+
═══════════════════════════════════════════════════════════════
|
|
284
|
+
|
|
285
|
+
✓ Project configured: my-awesome-app
|
|
286
|
+
|
|
287
|
+
───────────────────────────────────────────────────────────────
|
|
288
|
+
Dev Server Setup (Optional)
|
|
289
|
+
───────────────────────────────────────────────────────────────
|
|
290
|
+
|
|
291
|
+
Deploy to a shared dev server for team collaboration?
|
|
292
|
+
Each branch gets its own preview URL.
|
|
293
|
+
|
|
294
|
+
[1] Yes, set up dev server → Shows setup instructions
|
|
295
|
+
[2] Skip for now → Continue to project
|
|
296
|
+
|
|
297
|
+
Choice [1/2]: _
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
**If [1] selected**, show inline setup panel:
|
|
301
|
+
|
|
302
|
+
```
|
|
303
|
+
═══════════════════════════════════════════════════════════════
|
|
304
|
+
TLC Dev Server Setup
|
|
305
|
+
═══════════════════════════════════════════════════════════════
|
|
306
|
+
|
|
307
|
+
Project: my-awesome-app
|
|
308
|
+
Repo: git@github.com:myorg/my-awesome-app.git
|
|
309
|
+
|
|
310
|
+
Enter your server domain: myapp.example.com
|
|
311
|
+
|
|
312
|
+
───────────────────────────────────────────────────────────────
|
|
313
|
+
STEP 1: Run on Ubuntu Server
|
|
314
|
+
───────────────────────────────────────────────────────────────
|
|
315
|
+
|
|
316
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
317
|
+
│ curl -fsSL https://tlc.dev/install | bash -s -- \ │
|
|
318
|
+
│ --project "my-awesome-app" \ │
|
|
319
|
+
│ --repo "git@github.com:myorg/my-awesome-app.git" \ │
|
|
320
|
+
│ --domain "myapp.example.com" \ │
|
|
321
|
+
│ --webhook-secret "x7k9m2p4q8r1s5t3" │
|
|
322
|
+
└─────────────────────────────────────────────────────────────┘
|
|
323
|
+
|
|
324
|
+
───────────────────────────────────────────────────────────────
|
|
325
|
+
STEP 2: Configure DNS
|
|
326
|
+
───────────────────────────────────────────────────────────────
|
|
327
|
+
|
|
328
|
+
Point these to your server:
|
|
329
|
+
*.myapp.example.com → SERVER_IP
|
|
330
|
+
dashboard.myapp.example.com → SERVER_IP
|
|
331
|
+
|
|
332
|
+
───────────────────────────────────────────────────────────────
|
|
333
|
+
STEP 3: Add Webhook to GitHub
|
|
334
|
+
───────────────────────────────────────────────────────────────
|
|
335
|
+
|
|
336
|
+
URL: https://dashboard.myapp.example.com/api/webhook
|
|
337
|
+
Secret: x7k9m2p4q8r1s5t3
|
|
338
|
+
|
|
339
|
+
───────────────────────────────────────────────────────────────
|
|
340
|
+
What You Get
|
|
341
|
+
───────────────────────────────────────────────────────────────
|
|
342
|
+
|
|
343
|
+
Dashboard: https://dashboard.myapp.example.com
|
|
344
|
+
Main branch: https://main.myapp.example.com
|
|
345
|
+
Feature branches: https://{branch}.myapp.example.com
|
|
346
|
+
|
|
347
|
+
───────────────────────────────────────────────────────────────
|
|
348
|
+
|
|
349
|
+
Config saved to .tlc.json
|
|
350
|
+
|
|
351
|
+
Press Enter to continue...
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
### Config Generation
|
|
355
|
+
|
|
356
|
+
When generating the setup command:
|
|
357
|
+
|
|
358
|
+
```javascript
|
|
359
|
+
// Read from project
|
|
360
|
+
const projectName = tlcJson.project || packageJson.name;
|
|
361
|
+
const repoUrl = execSync('git remote get-url origin').toString().trim();
|
|
362
|
+
|
|
363
|
+
// Ask user for domain
|
|
364
|
+
const domain = await prompt('Enter your server domain:');
|
|
365
|
+
|
|
366
|
+
// Generate secure webhook secret
|
|
367
|
+
const webhookSecret = crypto.randomBytes(8).toString('hex');
|
|
368
|
+
|
|
369
|
+
// Save to .tlc.json
|
|
370
|
+
tlcJson.deploy = {
|
|
371
|
+
domain: domain,
|
|
372
|
+
webhookSecret: webhookSecret,
|
|
373
|
+
dashboardUrl: `https://dashboard.${domain}`,
|
|
374
|
+
configured: false // Set to true after server confirms
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
// Generate command
|
|
378
|
+
const setupCommand = `curl -fsSL https://tlc.dev/install | bash -s -- \\
|
|
379
|
+
--project "${projectName}" \\
|
|
380
|
+
--repo "${repoUrl}" \\
|
|
381
|
+
--domain "${domain}" \\
|
|
382
|
+
--webhook-secret "${webhookSecret}"`;
|
|
383
|
+
```
|
|
384
|
+
|
|
259
385
|
## All Phases Complete
|
|
260
386
|
|
|
261
387
|
```
|