feat(chat): Comments and review in VS Code, like the OpenChamber desktop app (#1724)

* feat(chat): render code comments as cards instead of fenced text

* fix(vscode): route Add Comment to the active session editor panel

* fix(chat): persist queued inline comments and tighten file-chip path matching

* feat(vscode): comment on code from the editor

* fix(chat): keep attached context in the message and broadcast comment removal

* fix(vscode): hold every pending comment and gate both entry points on the workspace

* fix(vscode): let only the owning surface decide its comment threads

* fix(vscode): drop a comment removed while its delivery was still in flight

* test(vscode): cover the in-flight comment removal guard

* test(vscode): cover comment removal reaching every chat surface

* fix(vscode): give up on a comment the chat never confirmed holding

* fix(vscode): retract a comment everywhere before reporting it discarded

* fix(chat): preserve queued comment cards

* fix: preserve inline comment context across send paths

* fix(chat): preserve command routing with context

* fix(chat): keep unavailable actions on normal send path

---------

Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
Felipe Gené
2026-09-05 12:28:17 +03:00
committed by GitHub
co-authored by Bohdan Triapitsyn
parent d323b51a0a
commit a12b9be443
35 changed files with 2192 additions and 131 deletions
+43
View File
@@ -115,6 +115,22 @@
"category": "OpenChamber",
"title": "%command.addToContext.title%"
},
{
"command": "openchamber.addLineComment",
"category": "OpenChamber",
"title": "%command.addLineComment.title%"
},
{
"command": "openchamber.submitLineComment",
"category": "OpenChamber",
"title": "%command.submitLineComment.title%"
},
{
"command": "openchamber.removeLineComment",
"category": "OpenChamber",
"title": "%command.removeLineComment.title%",
"icon": "$(close)"
},
{
"command": "openchamber.explain",
"category": "OpenChamber",
@@ -150,6 +166,30 @@
}
],
"menus": {
"comments/commentThread/context": [
{
"command": "openchamber.submitLineComment",
"group": "inline",
"when": "commentController == openchamber.inlineComments"
}
],
"comments/commentThread/title": [
{
"command": "openchamber.removeLineComment",
"group": "navigation",
"when": "commentController == openchamber.inlineComments && commentThread == openchamberAttached"
}
],
"commandPalette": [
{
"command": "openchamber.submitLineComment",
"when": "false"
},
{
"command": "openchamber.removeLineComment",
"when": "false"
}
],
"editor/context": [
{
"submenu": "openchamber.submenu",
@@ -200,6 +240,9 @@
},
{
"command": "openchamber.addToContext"
},
{
"command": "openchamber.addLineComment"
}
]
},