Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,12 @@ jobs:
- name: Check formatting
run: pnpm format:check

- name: Generate Prisma Client
run: pnpm --filter @devradar/server db:generate
env:
DATABASE_URL: 'postgresql://user:pass@localhost:5432/db'
SHADOW_DATABASE_URL: 'postgresql://user:pass@localhost:5432/shadow'

- name: Lint
run: pnpm lint

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,4 @@ coverage/

# Docker
docker-compose.override.yml
apps/server/src/generated/
15 changes: 15 additions & 0 deletions apps/extension/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Build outputs
dist/
out/

# VS Code test
.vscode-test/

# Package
*.vsix

# Node
node_modules/

# Logs
*.log
24 changes: 24 additions & 0 deletions apps/extension/.vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Run Extension",
"type": "extensionHost",
"request": "launch",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}"
],
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
"preLaunchTask": "pnpm: build"
},
{
"name": "Run Extension (No Build)",
"type": "extensionHost",
"request": "launch",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}"
],
"outFiles": ["${workspaceFolder}/dist/**/*.js"]
}
]
}
24 changes: 24 additions & 0 deletions apps/extension/.vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "pnpm: build",
"type": "shell",
"command": "pnpm",
"args": ["build"],
"problemMatcher": "$tsc",
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "pnpm: dev",
"type": "shell",
"command": "pnpm",
"args": ["dev"],
"isBackground": true,
"problemMatcher": ["$tsc-watch"]
}
Comment thread
coderabbitai[bot] marked this conversation as resolved.
]
}
13 changes: 13 additions & 0 deletions apps/extension/.vscodeignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.vscode/**
.vscode-test/**
src/**
node_modules/**
out/**
.gitignore
.eslintrc*
eslint.config.js
tsconfig.json
**/*.ts
**/*.map
*.vsix
.turbo/**
21 changes: 21 additions & 0 deletions apps/extension/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Changelog

All notable changes to the DevRadar extension will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.1.0] - 2026-01-05

### Added

- Initial release
- GitHub OAuth authentication
- Real-time presence tracking
- Friends list with status indicators
- Activity feed showing friend events
- Status bar integration
- WebSocket connection with automatic reconnection
- Privacy mode and blacklisted files
- Poke functionality to get friends' attention
- Configurable settings for all features
92 changes: 92 additions & 0 deletions apps/extension/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# DevRadar VS Code Extension

> **Discord Status for VS Code** - See what your friends are coding in real-time 🚀

## Features

- **🟢 Real-Time Presence**: See which friends are online and what they're working on
- **👀 Activity Sharing**: Share your coding activity (with privacy controls)
- **👋 Poke Friends**: Get their attention with a friendly notification
- **🔒 Privacy First**: Full control over what you share - or go invisible
- **📊 Coding Stats**: Track your session time and coding intensity

## Installation

Since this extension is currently in private development (`private: true`), you can install it locally:

1. Clone the repository
2. Run `pnpm install`
3. Run `pnpm build`
4. Open the `apps/extension` folder in VS Code and press F5 to launch the Extension Development Host.

_Note: Once published, you will be able to install it from the VS Code Marketplace._

## Getting Started

1. Click the DevRadar icon in the Activity Bar
2. Click "Login with GitHub" in the sidebar
3. Authorize DevRadar to access your GitHub profile
4. Start coding - your friends will see your status!

## Configuration

Access settings via `File > Preferences > Settings` and search for "DevRadar".

| Setting | Default | Description |
| -------------------------------- | -------------------------------------------- | ----------------------------------------------------------- |
| Setting | Default | Description |
| -------------------------------- | -------------------------------------------- | ----------------------------------------------------------- |
Comment on lines +35 to +38

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Remove duplicate table header rows.

The settings table contains duplicate header rows that will render incorrectly.

🔎 Proposed fix
 | Setting                          | Default                                      | Description                                                 |
 | -------------------------------- | -------------------------------------------- | ----------------------------------------------------------- |
-| Setting                          | Default                                      | Description                                                 |
-| -------------------------------- | -------------------------------------------- | ----------------------------------------------------------- |
 | `devradar.privacyMode`           | `false`                                      | Hide your activity from friends                             |
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
| Setting | Default | Description |
| -------------------------------- | -------------------------------------------- | ----------------------------------------------------------- |
| Setting | Default | Description |
| -------------------------------- | -------------------------------------------- | ----------------------------------------------------------- |
| Setting | Default | Description |
| -------------------------------- | -------------------------------------------- | ----------------------------------------------------------- |
| `devradar.privacyMode` | `false` | Hide your activity from friends |
🤖 Prompt for AI Agents
In @apps/extension/README.md around lines 35 - 38, The README settings table
contains duplicated header and separator rows; remove the duplicate pair so
there is only one header row "| Setting | Default | Description |" followed
immediately by a single separator row "| --- | --- | --- |" and then the table
entries; update the remaining table rows accordingly in apps/extension/README.md
to ensure the markdown table renders correctly.

| `devradar.privacyMode` | `false` | Hide your activity from friends |
| `devradar.showFileName` | `true` | Show current file name |
| `devradar.showProject` | `true` | Show project name |
| `devradar.showLanguage` | `true` | Show programming language |
| `devradar.showStatusBarItem` | `true` | Show DevRadar status in the status bar |
| `devradar.enableNotifications` | `true` | Show notifications when friends come online or poke you |
| `devradar.serverUrl` | `"http://localhost:3000"` | DevRadar server URL (overridable) |
| `devradar.wsUrl` | `"ws://localhost:3000/ws"` | DevRadar WebSocket URL (overridable) |
| `devradar.blacklistedFiles` | `[".env", ".env.*", "*.pem", "*.key", ...]` | File patterns to never broadcast |
| `devradar.blacklistedWorkspaces` | `[]` | Workspace folders to never broadcast |
| `devradar.idleTimeout` | `300000` | Time (ms) before going idle (5 mins) |
| `devradar.heartbeatInterval` | `60000` | Heartbeat interval in milliseconds (60s) |

## Commands

Access via Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`):

- **DevRadar: Login with GitHub** - Authenticate with your GitHub account
- **DevRadar: Logout** - Sign out of DevRadar
- **DevRadar: Toggle Privacy Mode** - Hide/show your activity
- **DevRadar: Poke Friend** - Send a notification to a friend
- **DevRadar: Set Status** - Manually set your status (online/idle/dnd/offline)
- **DevRadar: Refresh Friends** - Refresh your friends list

## Privacy

DevRadar is built with privacy as a core principle:

- **We NEVER transmit your code** - only metadata (filename, language, project name)
- **Blacklist sensitive files** - .env files are hidden by default
- **Privacy Mode** - Go completely invisible when needed
- **You're in control** - customize exactly what you share

## Development

This extension is part of the DevRadar monorepo.

```bash
# Install dependencies
pnpm install

# Build extension
pnpm --filter @devradar/extension build

# Watch mode
pnpm --filter @devradar/extension dev

# Package VSIX
pnpm --filter @devradar/extension package
```

## License

MIT - see [LICENSE](../../LICENSE)
3 changes: 3 additions & 0 deletions apps/extension/eslint.config.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import config from '@devradar/eslint-config';

export default config;
4 changes: 4 additions & 0 deletions apps/extension/media/activity.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions apps/extension/media/friends.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
43 changes: 43 additions & 0 deletions apps/extension/media/icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading