MSN Code V1
Um mensageiro inspirado no MSN/Windows Live Messenger dentro do Visual Studio Code.
O que a V1 faz
- Login com GitHub usando OAuth Device Flow.
- Guarda o token no SecretStorage do VS Code.
- Descobre automaticamente usuários MSN Code na mesma rede local.
- Mostra presença: online, ausente, ocupado e offline.
- Chat 1 para 1 em tempo real via WebSocket.
- Notificações do VS Code.
- Interface Webview inspirada no MSN clássico.
- Cada computador roda um pequeno servidor local embutido na extensão.
A V1 não usa um servidor central para transportar as mensagens. Os computadores conversam diretamente pela LAN.
Requisitos
- Visual Studio Code 1.90+
- Node.js 20+
- Windows, Linux ou macOS
- Computadores na mesma rede local
Instalação para desenvolvimento
git clone <seu-repositorio>
cd msn-code
npm install
npm run compile
No VS Code:
- Abra a pasta do projeto.
- Pressione
F5.
- Escolha
Run Extension.
- Uma nova janela do VS Code será aberta.
- Abra o ícone
MSN Code na barra lateral.
A V1 usa o Device Flow do GitHub.
Criar o OAuth App
No GitHub:
- Settings
- Developer settings
- OAuth Apps
- New OAuth App
- Crie o aplicativo.
- Ative o Device Flow para o aplicativo.
- Copie o Client ID.
Depois, no VS Code, configure:
"msnCode.githubClientId": "SEU_CLIENT_ID"
Se a configuração não estiver presente, a tela de login também permite informar o Client ID.
A extensão nunca grava o Client ID como segredo. O token de acesso fica no SecretStorage do VS Code.
Teste na rede
Execute a extensão em dois computadores na mesma rede.
Exemplo:
PC 1 -> GitHub: joao
PC 2 -> GitHub: maria
João:
🟢 Maria
Maria:
🟢 João
Abra uma conversa e envie mensagens.
Portas
- UDP
41234: descoberta de usuários.
- TCP: uma porta dinâmica para WebSocket de cada instância.
O Windows Firewall pode perguntar se o Node/VS Code pode acessar a rede. Para descobrir os computadores, permita acesso na rede privada.
Arquitetura
VS Code
|
+-- Extension Host
| |
| +-- GitHub OAuth
| +-- Discovery UDP
| +-- Peer WebSocket
|
+-- Webview
|
+-- Lista de contatos
+-- Chat
+-- Status
+-- Perfil
Segurança da V1
A V1 é destinada a uma rede confiável, como laboratório/aula.
As mensagens da LAN não têm criptografia ponta a ponta e não existe servidor de autenticação próprio. O GitHub autentica a identidade, mas a descoberta LAN não deve ser considerada uma barreira de segurança.
Para produção, a V2 deve adicionar:
- assinatura/autenticação de mensagens;
- criptografia TLS ou E2EE;
- confirmação de identidade dos peers;
- histórico criptografado;
- servidor central opcional;
- controle de salas;
- transferência segura de arquivos.
Estrutura
msn-code/
├── media/
│ └── icon.svg
├── server/
│ └── peerServer.ts
├── src/
│ ├── discovery.ts
│ ├── github.ts
│ ├── extension.ts
│ ├── peer.ts
│ └── types.ts
├── .gitignore
├── package.json
├── README.md
└── tsconfig.json