215 lines
4.8 KiB
Markdown
215 lines
4.8 KiB
Markdown
# Coding Detection Debug Guide
|
|
|
|
## Current Status
|
|
|
|
Your n8n webhook is returning:
|
|
```json
|
|
{
|
|
"coding": null
|
|
}
|
|
```
|
|
|
|
This means your n8n workflow isn't detecting coding activity.
|
|
|
|
## Quick Fix: Test Your n8n Workflow
|
|
|
|
### Step 1: Check What n8n Is Actually Receiving
|
|
|
|
Open your n8n workflow for `denshooter-71242/status` and check:
|
|
|
|
1. **Do you have a node that fetches coding data?**
|
|
- WakaTime API call?
|
|
- Discord API for Rich Presence?
|
|
- Custom webhook receiver?
|
|
|
|
2. **Is that node active and working?**
|
|
- Check execution history in n8n
|
|
- Look for errors
|
|
|
|
### Step 2: Add Temporary Mock Data (Testing)
|
|
|
|
To see how it looks while you set up real detection, add this to your n8n workflow:
|
|
|
|
**Add a Function Node** after your Discord/Music fetching, before the final response:
|
|
|
|
```javascript
|
|
// Get existing data
|
|
const existingData = $json;
|
|
|
|
// Add mock coding data for testing
|
|
const mockCoding = {
|
|
isActive: true,
|
|
project: "Portfolio Website",
|
|
file: "app/components/ActivityFeed.tsx",
|
|
language: "TypeScript",
|
|
stats: {
|
|
time: "2h 15m",
|
|
topLang: "TypeScript",
|
|
topProject: "Portfolio"
|
|
}
|
|
};
|
|
|
|
// Return combined data
|
|
return {
|
|
json: {
|
|
...existingData,
|
|
coding: mockCoding
|
|
}
|
|
};
|
|
```
|
|
|
|
**Save and test** - you should now see coding activity!
|
|
|
|
### Step 3: Real Coding Detection Options
|
|
|
|
#### Option A: WakaTime (Recommended - Automatic)
|
|
|
|
1. **Sign up**: https://wakatime.com/
|
|
2. **Install plugin** in VS Code/your IDE
|
|
3. **Get API key**: https://wakatime.com/settings/account
|
|
4. **Add HTTP Request node** in n8n:
|
|
|
|
```javascript
|
|
// n8n HTTP Request Node
|
|
URL: https://wakatime.com/api/v1/users/current/heartbeats
|
|
Method: GET
|
|
Authentication: Bearer Token
|
|
Token: YOUR_WAKATIME_API_KEY
|
|
|
|
// Then add Function Node to process:
|
|
const wakaData = $json.data;
|
|
const isActive = wakaData && wakaData.length > 0;
|
|
const latest = wakaData?.[0];
|
|
|
|
return {
|
|
json: {
|
|
coding: {
|
|
isActive: isActive,
|
|
project: latest?.project || null,
|
|
file: latest?.entity || null,
|
|
language: latest?.language || null,
|
|
stats: {
|
|
time: "calculating...",
|
|
topLang: latest?.language || "Unknown",
|
|
topProject: latest?.project || "Unknown"
|
|
}
|
|
}
|
|
}
|
|
};
|
|
```
|
|
|
|
#### Option B: Discord Rich Presence (If Using VS Code)
|
|
|
|
1. **Install extension**: "Discord Presence" in VS Code
|
|
2. **Enable broadcasting** in extension settings
|
|
3. **Add Discord API call** in n8n:
|
|
|
|
```javascript
|
|
// n8n HTTP Request Node
|
|
URL: https://discord.com/api/v10/users/@me
|
|
Method: GET
|
|
Authentication: Bearer Token
|
|
Token: YOUR_DISCORD_BOT_TOKEN
|
|
|
|
// Then process activities:
|
|
const activities = $json.activities || [];
|
|
const codingActivity = activities.find(a =>
|
|
a.name === 'Visual Studio Code' ||
|
|
a.application_id === 'vscode_app_id'
|
|
);
|
|
|
|
return {
|
|
json: {
|
|
coding: codingActivity ? {
|
|
isActive: true,
|
|
project: codingActivity.state || "Unknown Project",
|
|
file: codingActivity.details || "",
|
|
language: codingActivity.assets?.large_text || null
|
|
} : null
|
|
}
|
|
};
|
|
```
|
|
|
|
#### Option C: Simple Time-Based Detection
|
|
|
|
If you just want to show "coding during work hours":
|
|
|
|
```javascript
|
|
// n8n Function Node
|
|
const now = new Date();
|
|
const hour = now.getHours();
|
|
const isWorkHours = hour >= 9 && hour <= 22; // 9 AM - 10 PM
|
|
|
|
return {
|
|
json: {
|
|
coding: isWorkHours ? {
|
|
isActive: true,
|
|
project: "Active Development",
|
|
file: "Working on projects...",
|
|
language: "TypeScript",
|
|
stats: {
|
|
time: "Active",
|
|
topLang: "TypeScript",
|
|
topProject: "Portfolio"
|
|
}
|
|
} : null
|
|
}
|
|
};
|
|
```
|
|
|
|
## Test Your Changes
|
|
|
|
After updating your n8n workflow:
|
|
|
|
```bash
|
|
# Test the webhook
|
|
curl https://n8n.dk0.dev/webhook/denshooter-71242/status | jq .
|
|
|
|
# Should now show:
|
|
{
|
|
"coding": {
|
|
"isActive": true,
|
|
"project": "...",
|
|
"file": "...",
|
|
...
|
|
}
|
|
}
|
|
```
|
|
|
|
## Common Issues
|
|
|
|
### "Still shows null"
|
|
- Make sure n8n workflow is **Active** (toggle in top right)
|
|
- Check execution history for errors
|
|
- Test each node individually
|
|
|
|
### "Shows old data"
|
|
- Clear your browser cache
|
|
- Wait 30 seconds (cache revalidation time)
|
|
- Hard refresh: Cmd+Shift+R (Mac) or Ctrl+Shift+R (Windows)
|
|
|
|
### "WakaTime API returns empty"
|
|
- Make sure you've coded for at least 1 minute
|
|
- Check WakaTime dashboard to verify it's tracking
|
|
- Verify API key is correct
|
|
|
|
## What You're Doing RIGHT NOW
|
|
|
|
Based on the latest data:
|
|
- ✅ **Music**: Listening to "I'm Gonna Be (500 Miles)" by The Proclaimers
|
|
- ❌ **Coding**: Not detected (null)
|
|
- ❌ **Gaming**: Not playing
|
|
|
|
To make coding appear:
|
|
1. Use mock data (Option from Step 2) - instant
|
|
2. Set up WakaTime (Option A) - 5 minutes
|
|
3. Use Discord RPC (Option B) - 10 minutes
|
|
4. Use time-based (Option C) - instant but not accurate
|
|
|
|
## Need Help?
|
|
|
|
The activity feed will now show a warning when coding isn't detected with a helpful tip!
|
|
|
|
---
|
|
|
|
**Quick Start**: Use the mock data from Step 2 to see how it looks, then set up real tracking later! |