Skip to content

Commit 0e9fb55

Browse files
authored
Ensure an agent is always set when opening a workspace (#552)
This guarantees we open the same session each time, even if you click on the workspace rather than a specific agent.
1 parent 2d7dac8 commit 0e9fb55

File tree

3 files changed

+35
-15
lines changed

3 files changed

+35
-15
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
update notifications.
99
- Coder output panel enhancements: All log entries now include timestamps, and you
1010
can filter messages by log level in the panel.
11+
- Consistently use the same session for each agent. Previously,
12+
depending on how you connected, it could be possible to get two
13+
different sessions for an agent. Existing connections may still
14+
have this problem, only new connections are fixed.
1115

1216
## [v1.9.2](https://github.com/coder/vscode-coder/releases/tag/v1.9.2) 2025-06-25
1317

src/commands.ts

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -437,12 +437,15 @@ export class Commands {
437437
if (!baseUrl) {
438438
throw new Error("You are not logged in");
439439
}
440+
if (treeItem.primaryAgentName === undefined) {
441+
return;
442+
}
440443
await openWorkspace(
441444
baseUrl,
442445
treeItem.workspaceOwner,
443446
treeItem.workspaceName,
444-
treeItem.workspaceAgent,
445-
treeItem.workspaceFolderPath,
447+
treeItem.primaryAgentName,
448+
treeItem.primaryAgentFolderPath,
446449
true,
447450
);
448451
} else {
@@ -525,6 +528,8 @@ export class Commands {
525528
let folderPath: string | undefined;
526529
let openRecent: boolean | undefined;
527530

531+
let workspace: Workspace | undefined;
532+
528533
const baseUrl = this.restClient.getAxiosInstance().defaults.baseURL;
529534
if (!baseUrl) {
530535
throw new Error("You are not logged in");
@@ -571,7 +576,7 @@ export class Commands {
571576
});
572577
});
573578
quickPick.show();
574-
const workspace = await new Promise<Workspace | undefined>((resolve) => {
579+
workspace = await new Promise<Workspace | undefined>((resolve) => {
575580
quickPick.onDidHide(() => {
576581
resolve(undefined);
577582
});
@@ -590,20 +595,31 @@ export class Commands {
590595
}
591596
workspaceOwner = workspace.owner_name;
592597
workspaceName = workspace.name;
598+
} else {
599+
workspaceOwner = args[0] as string;
600+
workspaceName = args[1] as string;
601+
workspaceAgent = args[2] as string | undefined;
602+
folderPath = args[3] as string | undefined;
603+
openRecent = args[4] as boolean | undefined;
604+
}
605+
606+
if (!workspaceAgent) {
607+
if (workspace === undefined) {
608+
workspace = await this.restClient.getWorkspaceByOwnerAndName(
609+
workspaceOwner,
610+
workspaceName,
611+
);
612+
}
593613

594614
const agent = await this.maybeAskAgent(workspace);
595615
if (!agent) {
596616
// User declined to pick an agent.
597617
return;
598618
}
599-
folderPath = agent.expanded_directory;
619+
if (!folderPath) {
620+
folderPath = agent.expanded_directory;
621+
}
600622
workspaceAgent = agent.name;
601-
} else {
602-
workspaceOwner = args[0] as string;
603-
workspaceName = args[1] as string;
604-
workspaceAgent = args[2] as string | undefined;
605-
folderPath = args[3] as string | undefined;
606-
openRecent = args[4] as boolean | undefined;
607623
}
608624

609625
await openWorkspace(
@@ -679,7 +695,7 @@ async function openWorkspace(
679695
baseUrl: string,
680696
workspaceOwner: string,
681697
workspaceName: string,
682-
workspaceAgent: string | undefined,
698+
workspaceAgent: string,
683699
folderPath: string | undefined,
684700
openRecent: boolean | undefined,
685701
) {

src/workspacesProvider.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -436,8 +436,8 @@ export class OpenableTreeItem extends vscode.TreeItem {
436436

437437
public readonly workspaceOwner: string,
438438
public readonly workspaceName: string,
439-
public readonly workspaceAgent: string | undefined,
440-
public readonly workspaceFolderPath: string | undefined,
439+
public readonly primaryAgentName: string | undefined,
440+
public readonly primaryAgentFolderPath: string | undefined,
441441

442442
contextValue: CoderOpenableTreeItemType,
443443
) {
@@ -476,7 +476,7 @@ class AgentTreeItem extends OpenableTreeItem {
476476
}
477477
}
478478

479-
export class WorkspaceTreeItem extends OpenableTreeItem {
479+
class WorkspaceTreeItem extends OpenableTreeItem {
480480
public appStatus: {
481481
name: string;
482482
url?: string;
@@ -509,7 +509,7 @@ export class WorkspaceTreeItem extends OpenableTreeItem {
509509
: vscode.TreeItemCollapsibleState.Expanded,
510510
workspace.owner_name,
511511
workspace.name,
512-
undefined,
512+
agents[0]?.name,
513513
agents[0]?.expanded_directory,
514514
agents.length > 1
515515
? "coderWorkspaceMultipleAgents"

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy