Report the actual IDE (Cursor, Devin Desktop, ...) for session tracking
维护者通常 2 天内回复
@EhabY 已经在做这个了。
开始于 2026年7月23日。
评估
这个 Issue 还没有评估数据。
描述
The extension hardcodes vscode in both identification mechanisms, so Cursor, Devin Desktop and other forks are all recorded as VS Code. Server-side ingestion is unlocked (coder/coder#28338): app_name is a free-form string, normalized at ingestion.
Scope
- Use
vscode.env.uriSchemeas the app name. It is already a unique, stable, machine-readable ID per editor, so there is noappNamemapping table to keep in sync as forks rename or localize.NormalizeAppNamefolds-→_server-side, sovscode-insidersarrives as the existing registry keyvscode_insiders. - No exceptions: report the scheme verbatim, never rewrite it. Devin Desktop registers
devinnatively ("urlProtocol": "devin", with"oldUrlProtocol": "windsurf"kept only so inboundwindsurf://links still open), andoldUrlProtocolis not exposed through the extension API — soenv.uriSchemealready returns the post-rebrand name with no help from us. Pre-rename Windsurf builds reportwindsurf, which is an existing registry key in the VS Code family, and that tail shrinks as users upgrade. Comment the rule so a mapping table is not reintroduced later. - Fall back to
vscodeif the scheme is empty. An editor missing fromcodersdk/appname.gostill reports its own scheme and shows under theunknownfamily until it is added. - Send it through both mechanisms, which feed different pipelines:
--usage-app=<name>on the ProxyCommand (workspace usage API → session counts)CODER_SSH_SESSION_TYPE=<name>via SSHSetEnv(agent magic env → session counts + connection log)
- Version gate: one new
FeatureSetflag evaluated on two instances, the existing CLI-binary-version instance and a second built from the already-fetched/api/v2/buildinfoversion. Send a non-vscodename only when both pass; otherwise fall back tovscode. Coder ≤ 2.37.x returns HTTP 400 for an unknownapp_name, so the gate is load-bearing. - Release channels stay distinct (
vscode_insiders,devin_next,vscodium_insiders, ...). They are separate installs, the family already provides the rollup, and a split can be collapsed at read time while a collapse can never be split again.
Verified schemes
From product.json / urlProtocol — locally inspected where marked, otherwise from public source or first-party deep links:
| Editor | Scheme | Reported as | Confidence |
|---|---|---|---|
| VS Code | vscode |
vscode |
verified |
| VS Code Insiders | vscode-insiders |
vscode_insiders |
verified |
| Code - OSS | code-oss |
code_oss |
verified (microsoft/vscode product.json) |
| VSCodium | vscodium |
vscodium |
verified (prepare_vscode.sh) |
| VSCodium Insiders | vscodium-insiders |
vscodium_insiders |
verified (same) |
| Positron | positron |
positron |
verified (positron:// URI handlers) |
| Cursor | cursor |
cursor |
verified (local product.json) |
| Devin Desktop | devin |
devin |
verified (local product.json, oldUrlProtocol: windsurf) |
| Devin Desktop Next | devin-next |
devin_next |
verified (local product.json, oldUrlProtocol: windsurf-next) |
| Windsurf (pre-rename builds) | windsurf |
windsurf |
legacy urlProtocol, already a registry key |
| Antigravity | antigravity |
antigravity |
verified (local product.json) |
| Trae | trae |
trae |
strong (trae://file/...) |
| Trae CN | trae-cn |
trae_cn |
reported by third parties |
| Kiro | kiro |
kiro |
strong (kiro:// OAuth callback) |
vscode-exploration is a real Microsoft-internal scheme but is deliberately not handled: no external users, and an unknown row costs nothing.
Missing registry keys are tracked in coder/coder#29928: code_oss, vscodium_insiders, trae_cn, devin_next.
Gate release: 2.38
The first release containing coder/coder#28338 (merged after the 2.37 branch cut, so no 2.37.x patch carries it). Confirm the number at branch cut.
This supersedes waiting for coder/coder#27412 and coder/coder#27413: the undercount that blocked an earlier gate is gone now that per-app and per-family session minutes are stored (template_usage_stats_session_apps, migration 000596). Both are expected in 2.38; if either lags, the consequence is presentation-only and self-healing — the connection log records the family until #27412, and template insights show family totals until #27413's read path. Session counts, Prometheus and the deployment banner are per-app as of #27411.
Done when
- Cursor and Devin Desktop sessions appear under their own name on a 2.38+ deployment (session counts, deployment banner)
- The same build falls back to
vscodeagainst an older server or a stale custom CLI binary - An editor missing from the registry connects and reports its own URI scheme
Description updated by Coder Agents on behalf of @EhabY: uriScheme reported verbatim with no rewrites, schemes verified from local product.json, channels kept distinct.
- 主要语言
- TypeScript
- 星标
- 131
- 派生
- 48
- 平均合并
- 1 天 23 小时
- 30 天内合并 PR
- 16
环境准备
在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
coder/vscode-coder 的其他 Issue
-
Migrate CI setup to pnpm/setup可能已有人在做 @EhabY 于 16 天前认领。 未关闭tech-debt
coder/vscode-coder#1119 · 1 条评论 · 已指派 1 人 ·
维护者通常 2 天内回复
-
Design the VS Code Workspaces panel可能已有人在做 @chrifro 于 20 天前认领。 未关闭
coder/vscode-coder#1113 · 3 条评论 · 已指派 1 人 ·
维护者通常 2 天内回复
-
enhancement tech-debt
难度 5/5 一周以上 新手友好度 45/100
coder/vscode-coder#1112 · 1 条评论 ·
维护者通常 2 天内回复
-
bug upstream
难度 4/5 3-5 天 新手友好度 42/100
coder/vscode-coder#1087 · 1 条评论 ·
维护者通常 2 天内回复
-
Improvement tech-debt vs-code
难度 3/5 1-2 天 新手友好度 55/100
coder/vscode-coder#1066 · 1 条评论 ·
维护者通常 2 天内回复
查看 coder/vscode-coder 的全部 Issue
相似的 Issue
-
level/task reporter/qa type/bug
难度 2/5 1-3 小时 新手友好度 85/100
wazuh/wazuh-dashboard-plugins#9310 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
cybersemics/treecrdt#267 ·
-
难度 1/5 1-3 小时 新手友好度 85/100
wiz-sec-public/backstage-plugin-wiz#16 · 1 条评论 ·
-
bug
难度 2/5 1-3 小时 新手友好度 78/100
-
难度 2/5 1-3 小时 新手友好度 72/100
solana-foundation/solana-com#2245 ·
维护者通常 1 天内回复