coder / coder/vscode-coder

Report the actual IDE (Cursor, Devin Desktop, ...) for session tracking

Abierto
#1,044 2 comentarios 0 reacciones 1 asignado Reclamado por @EhabY Ver en GitHub
Feature vs-code
Lenguaje dominante
TypeScript
Estrellas
130
Forks
48
Merge medio
3 d 3 h
PR fusionados (30 d)
15

Descripción

Client half of the [Scalable Approach for Adding New IDE Session Types RFC](); supersedes coder/vscode-coder#696, closed as a duplicate of this issue. The extension hardcodes `vscode` in both identification mechanisms, so Cursor, Windsurf, and other forks are all recorded as VS Code. The server side (coder/coder#27410 → coder/coder#27412) accepts arbitrary app names; this issue makes the extension send the real one.

Scope (RFC: "Client-side changes" and "Rollout order and version gating"):

* Add a `getIdeType()` util mapping `vscode.env.appName` to an app name: `Visual Studio Code` → `vscode`, `Visual Studio Code - Insiders` → `vscode_insiders`, `Cursor` → `cursor`, ``` Windsu``rf/Devin Desktop ``` → `devin`, plus `positron`, `vscodium`, ...; unknown editors send the raw app name and the server normalizes it (lowercase, `-` → `_`, 64-rune cap)
* Use it in both mechanisms, which feed different pipelines:
* `--usage-app=` on the ProxyCommand (workspace usage API → session counts)
* `CODER_SSH_SESSION_TYPE=` via SSH `SetEnv` (agent magic env → session counts + connection log)
* Version gate: one new `FeatureSet` flag evaluated on two instances, the existing CLI-binary-version instance and a second one built from the already-fetched `/api/v2/buildinfo` version; send a non-`vscode` name only when **both** pass, otherwise fall back to `vscode` (no regression against old servers, old agents, or stale custom binaries)
* The gate targets the coder/coder release containing **both** the `connection_logs` ENUM → TEXT migration (coder/coder#27412) **and** the `template_usage_stats` JSONB merge (coder/coder#27413). Until 642, the phase-1 rollup drops non-canonical app names from `template_usage_stats` entirely (they are not even bucketed by family), so flipping the gate earlier would silently undercount those users' IDE minutes and agent-side usage in template insights. Gating on both closes that window without an interim schema workaround
* Prior art (from coder/vscode-coder#696): [wakatime/vscode-wakatime]() and [kahole/edamagit]() detect the host editor via `vscode.env.appName` the same way

### Done when

- [ ] Cursor/Windsurf sessions show up under their own name on a new-enough deployment (session counts and connection log)
- [ ] The same build falls back to `vscode` against an older server or CLI binary
- [ ] An unmapped fork still connects and reports its raw app name

---

🤖 Created by Coder Agents on behalf of @EhabY.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.