coder / coder/vscode-coder

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

Đang mở
#1,044 2 bình luận 0 reaction 1 người được giao Được @EhabY nhận Xem trên GitHub
Feature vs-code
Ngôn ngữ chính
TypeScript
Star
130
Fork
48
Merge trung bình
3 ngày 3 giờ
Pull request đã merge (30 ngày)
15

Mô tả

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.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.