Skip to content

Commit 2c92a5a

Browse files
committed
Merge branch 'main' into chore-improve-delete-confirmation-dialog
2 parents 3df7c52 + c00704d commit 2c92a5a

22 files changed

+976
-338
lines changed

.github/workflows/build.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ jobs:
2020
- windows-latest
2121
runs-on: ${{ matrix.platform }}
2222
steps:
23-
- uses: actions/checkout@v4.2.2
23+
- uses: actions/checkout@v5
2424

25-
- uses: actions/setup-java@v4
25+
- uses: actions/setup-java@v5
2626
with:
2727
distribution: zulu
2828
java-version: 21
@@ -50,11 +50,11 @@ jobs:
5050
steps:
5151
# Check out current repository
5252
- name: Fetch Sources
53-
uses: actions/checkout@v4.2.2
53+
uses: actions/checkout@v5
5454

5555
# Setup Java 21 environment for the next steps
5656
- name: Setup Java
57-
uses: actions/setup-java@v4
57+
uses: actions/setup-java@v5
5858
with:
5959
distribution: zulu
6060
java-version: 21
@@ -101,7 +101,7 @@ jobs:
101101

102102
# Check out current repository
103103
- name: Fetch Sources
104-
uses: actions/checkout@v4.2.2
104+
uses: actions/checkout@v5
105105

106106
# Remove old release drafts by using GitHub CLI
107107
- name: Remove Old Release Drafts

.github/workflows/jetbrains-compliance.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ jobs:
1313

1414
steps:
1515
- name: Checkout code
16-
uses: actions/checkout@v4
16+
uses: actions/checkout@v5
1717

1818
- name: Set up JDK 21
19-
uses: actions/setup-java@v4
19+
uses: actions/setup-java@v5
2020
with:
2121
java-version: '21'
2222
distribution: 'temurin'
@@ -50,7 +50,7 @@ jobs:
5050

5151
- name: Comment PR with compliance status
5252
if: github.event_name == 'pull_request' && failure()
53-
uses: actions/github-script@v7
53+
uses: actions/github-script@v8
5454
with:
5555
script: |
5656
github.rest.issues.createComment({

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ jobs:
1515

1616
# Check out current repository
1717
- name: Fetch Sources
18-
uses: actions/checkout@v4.2.2
18+
uses: actions/checkout@v5
1919
with:
2020
ref: ${{ github.event.release.tag_name }}
2121

2222
# Setup Java 21 environment for the next steps
2323
- name: Setup Java
24-
uses: actions/setup-java@v4
24+
uses: actions/setup-java@v5
2525
with:
2626
distribution: zulu
2727
java-version: 21

CHANGELOG.md

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,42 @@
44

55
### Changed
66

7-
- workspaces status is now refresh every time Coder Toolbox becomes visible
87
- workspaces can no longer be removed by accident - users are now required to input the workspace name.
98

109
### Fixed
1110

11+
- relaxed SNI hostname resolution
12+
13+
## 0.6.5 - 2025-09-16
14+
15+
### Fixed
16+
17+
- token is no longer required when authentication is done via certificates
18+
- errors while running actions are now reported
19+
20+
## 0.6.4 - 2025-09-03
21+
22+
### Added
23+
24+
- improved diagnose support
25+
26+
### Fixed
27+
28+
- NPE during error reporting
29+
- relaxed `Content-Type` checks while downloading the CLI
30+
31+
## 0.6.3 - 2025-08-25
32+
33+
### Added
34+
35+
- progress reporting while handling URIs
36+
37+
### Changed
38+
39+
- workspaces status is now refresh every time Coder Toolbox becomes visible
40+
41+
### Fixed
42+
1243
- support for downloading the CLI when proxy is configured
1344

1445
## 0.6.2 - 2025-08-14

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
version=0.6.3
1+
version=0.6.6
22
group=com.coder.toolbox
33
name=coder-toolbox

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ ksp = "2.1.20-2.0.1"
1313
retrofit = "3.0.0"
1414
changelog = "2.4.0"
1515
gettext = "0.7.0"
16-
plugin-structure = "3.310"
16+
plugin-structure = "3.316"
1717
mockk = "1.14.5"
1818
detekt = "1.23.8"
19-
bouncycastle = "1.81"
19+
bouncycastle = "1.82"
2020

2121
[libraries]
2222
toolbox-core-api = { module = "com.jetbrains.toolbox:core-api", version.ref = "toolbox-plugin-api" }

src/main/kotlin/com/coder/toolbox/CoderRemoteEnvironment.kt

Lines changed: 45 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import com.jetbrains.toolbox.api.remoteDev.states.RemoteEnvironmentState
2525
import com.jetbrains.toolbox.api.ui.actions.ActionDescription
2626
import com.jetbrains.toolbox.api.ui.components.TextType
2727
import com.squareup.moshi.Moshi
28+
import kotlinx.coroutines.CoroutineName
2829
import kotlinx.coroutines.Job
2930
import kotlinx.coroutines.delay
3031
import kotlinx.coroutines.flow.MutableStateFlow
@@ -81,72 +82,65 @@ class CoderRemoteEnvironment(
8182
private fun getAvailableActions(): List<ActionDescription> {
8283
val actions = mutableListOf<ActionDescription>()
8384
if (wsRawStatus.canStop()) {
84-
actions.add(Action(context.i18n.ptrl("Open web terminal")) {
85-
context.cs.launch {
86-
context.desktop.browse(client.url.withPath("/${workspace.ownerName}/$name/terminal").toString()) {
87-
context.ui.showErrorInfoPopup(it)
88-
}
85+
actions.add(Action(context, "Open web terminal") {
86+
context.desktop.browse(client.url.withPath("/${workspace.ownerName}/$name/terminal").toString()) {
87+
context.ui.showErrorInfoPopup(it)
8988
}
90-
})
89+
}
90+
)
9191
}
9292
actions.add(
93-
Action(context.i18n.ptrl("Open in dashboard")) {
94-
context.cs.launch {
95-
context.desktop.browse(
96-
client.url.withPath("/@${workspace.ownerName}/${workspace.name}").toString()
97-
) {
98-
context.ui.showErrorInfoPopup(it)
99-
}
100-
}
101-
})
102-
103-
actions.add(Action(context.i18n.ptrl("View template")) {
104-
context.cs.launch {
105-
context.desktop.browse(client.url.withPath("/templates/${workspace.templateName}").toString()) {
93+
Action(context, "Open in dashboard") {
94+
context.desktop.browse(
95+
client.url.withPath("/@${workspace.ownerName}/${workspace.name}").toString()
96+
) {
10697
context.ui.showErrorInfoPopup(it)
10798
}
10899
}
109-
})
100+
)
101+
102+
actions.add(Action(context, "View template") {
103+
context.desktop.browse(client.url.withPath("/templates/${workspace.templateName}").toString()) {
104+
context.ui.showErrorInfoPopup(it)
105+
}
106+
}
107+
)
110108

111109
if (wsRawStatus.canStart()) {
112110
if (workspace.outdated) {
113-
actions.add(Action(context.i18n.ptrl("Update and start")) {
114-
context.cs.launch {
115-
val build = client.updateWorkspace(workspace)
116-
update(workspace.copy(latestBuild = build), agent)
117-
}
118-
})
111+
actions.add(Action(context, "Update and start") {
112+
val build = client.updateWorkspace(workspace)
113+
update(workspace.copy(latestBuild = build), agent)
114+
}
115+
)
119116
} else {
120-
actions.add(Action(context.i18n.ptrl("Start")) {
121-
context.cs.launch {
122-
val build = client.startWorkspace(workspace)
123-
update(workspace.copy(latestBuild = build), agent)
117+
actions.add(Action(context, "Start") {
118+
val build = client.startWorkspace(workspace)
119+
update(workspace.copy(latestBuild = build), agent)
124120

125-
}
126-
})
121+
}
122+
)
127123
}
128124
}
129125
if (wsRawStatus.canStop()) {
130126
if (workspace.outdated) {
131-
actions.add(Action(context.i18n.ptrl("Update and restart")) {
132-
context.cs.launch {
133-
val build = client.updateWorkspace(workspace)
134-
update(workspace.copy(latestBuild = build), agent)
135-
}
136-
})
137-
}
138-
actions.add(Action(context.i18n.ptrl("Stop")) {
139-
context.cs.launch {
140-
tryStopSshConnection()
141-
142-
val build = client.stopWorkspace(workspace)
127+
actions.add(Action(context, "Update and restart") {
128+
val build = client.updateWorkspace(workspace)
143129
update(workspace.copy(latestBuild = build), agent)
144130
}
145-
})
131+
)
132+
}
133+
actions.add(Action(context, "Stop") {
134+
tryStopSshConnection()
135+
136+
val build = client.stopWorkspace(workspace)
137+
update(workspace.copy(latestBuild = build), agent)
138+
}
139+
)
146140
}
147141
actions.add(CoderDelimiter(context.i18n.pnotr("")))
148-
actions.add(Action(context.i18n.ptrl("Delete workspace"), highlightInRed = true) {
149-
context.cs.launch {
142+
actions.add(Action(context, "Delete workspace", highlightInRed = true) {
143+
context.cs.launch(CoroutineName("Delete Workspace Action")) {
150144
var dialogText =
151145
if (wsRawStatus.canStop()) "This will close the workspace and remove all its information, including files, unsaved changes, history, and usage data."
152146
else "This will remove all information from the workspace, including files, unsaved changes, history, and usage data."
@@ -192,7 +186,7 @@ class CoderRemoteEnvironment(
192186
pollJob = pollNetworkMetrics()
193187
}
194188

195-
private fun pollNetworkMetrics(): Job = context.cs.launch {
189+
private fun pollNetworkMetrics(): Job = context.cs.launch(CoroutineName("Network Metrics Poller")) {
196190
context.logger.info("Starting the network metrics poll job for $id")
197191
while (isActive) {
198192
context.logger.debug("Searching SSH command's PID for workspace $id...")
@@ -250,7 +244,7 @@ class CoderRemoteEnvironment(
250244
actionsList.update {
251245
getAvailableActions()
252246
}
253-
context.cs.launch {
247+
context.cs.launch(CoroutineName("Workspace Status Updater")) {
254248
state.update {
255249
wsRawStatus.toRemoteEnvironmentState(context)
256250
}
@@ -285,7 +279,7 @@ class CoderRemoteEnvironment(
285279
*/
286280
fun startSshConnection(): Boolean {
287281
if (wsRawStatus.ready() && !isConnected.value) {
288-
context.cs.launch {
282+
context.cs.launch(CoroutineName("SSH Connection Trigger")) {
289283
connectionRequest.update {
290284
true
291285
}
@@ -306,7 +300,7 @@ class CoderRemoteEnvironment(
306300
WorkspaceAndAgentStatus.DELETING.toRemoteEnvironmentState(context)
307301
}
308302

309-
context.cs.launch {
303+
context.cs.launch(CoroutineName("Workspace Deletion Poller")) {
310304
withTimeout(5.minutes) {
311305
var workspaceStillExists = true
312306
while (context.cs.isActive && workspaceStillExists) {

0 commit comments

Comments
 (0)