Skip to content

Commit b833861

Browse files
feat(site): display version message (#8435)
1 parent 44e2518 commit b833861

File tree

23 files changed

+291
-89
lines changed

23 files changed

+291
-89
lines changed

coderd/apidoc/docs.go

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dbfake/dbfake.go

+1
Original file line numberDiff line numberDiff line change
@@ -4771,6 +4771,7 @@ func (q *FakeQuerier) UpdateTemplateVersionByID(_ context.Context, arg database.
47714771
templateVersion.TemplateID = arg.TemplateID
47724772
templateVersion.UpdatedAt = arg.UpdatedAt
47734773
templateVersion.Name = arg.Name
4774+
templateVersion.Message = arg.Message
47744775
q.templateVersions[index] = templateVersion
47754776
return templateVersion, nil
47764777
}

coderd/database/queries.sql.go

+4-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/templateversions.sql

+2-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ UPDATE
9191
SET
9292
template_id = $2,
9393
updated_at = $3,
94-
name = $4
94+
name = $4,
95+
message = $5
9596
WHERE
9697
id = $1 RETURNING *;
9798

coderd/templates.go

+1
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,7 @@ func (api *API) postTemplateByOrganization(rw http.ResponseWriter, r *http.Reque
336336
},
337337
UpdatedAt: database.Now(),
338338
Name: templateVersion.Name,
339+
Message: templateVersion.Message,
339340
})
340341
if err != nil {
341342
return xerrors.Errorf("insert template version: %s", err)

coderd/templateversions.go

+5
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,17 @@ func (api *API) patchTemplateVersion(rw http.ResponseWriter, r *http.Request) {
106106
TemplateID: templateVersion.TemplateID,
107107
UpdatedAt: database.Now(),
108108
Name: templateVersion.Name,
109+
Message: templateVersion.Message,
109110
}
110111

111112
if params.Name != "" {
112113
updateParams.Name = params.Name
113114
}
114115

116+
if params.Message != nil {
117+
updateParams.Message = *params.Message
118+
}
119+
115120
errTemplateVersionNameConflict := xerrors.New("template version name must be unique for a template")
116121

117122
var updatedTemplateVersion database.TemplateVersion

coderd/templateversions_test.go

+65
Original file line numberDiff line numberDiff line change
@@ -1223,6 +1223,71 @@ func TestTemplateVersionPatch(t *testing.T) {
12231223
assert.NotEqual(t, updatedVersion.Name, version.Name)
12241224
})
12251225

1226+
t.Run("Update the message", func(t *testing.T) {
1227+
t.Parallel()
1228+
client := coderdtest.New(t, nil)
1229+
user := coderdtest.CreateFirstUser(t, client)
1230+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil, func(req *codersdk.CreateTemplateVersionRequest) {
1231+
req.Message = "Example message"
1232+
})
1233+
coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
1234+
1235+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1236+
defer cancel()
1237+
1238+
wantMessage := "Updated message"
1239+
updatedVersion, err := client.UpdateTemplateVersion(ctx, version.ID, codersdk.PatchTemplateVersionRequest{
1240+
Message: &wantMessage,
1241+
})
1242+
1243+
require.NoError(t, err)
1244+
assert.Equal(t, wantMessage, updatedVersion.Message)
1245+
})
1246+
1247+
t.Run("Remove the message", func(t *testing.T) {
1248+
t.Parallel()
1249+
client := coderdtest.New(t, nil)
1250+
user := coderdtest.CreateFirstUser(t, client)
1251+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil, func(req *codersdk.CreateTemplateVersionRequest) {
1252+
req.Message = "Example message"
1253+
})
1254+
coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
1255+
1256+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1257+
defer cancel()
1258+
1259+
wantMessage := ""
1260+
updatedVersion, err := client.UpdateTemplateVersion(ctx, version.ID, codersdk.PatchTemplateVersionRequest{
1261+
Message: &wantMessage,
1262+
})
1263+
1264+
require.NoError(t, err)
1265+
assert.Equal(t, wantMessage, updatedVersion.Message)
1266+
})
1267+
1268+
t.Run("Keep the message", func(t *testing.T) {
1269+
t.Parallel()
1270+
client := coderdtest.New(t, nil)
1271+
user := coderdtest.CreateFirstUser(t, client)
1272+
wantMessage := "Example message"
1273+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil, func(req *codersdk.CreateTemplateVersionRequest) {
1274+
req.Message = wantMessage
1275+
})
1276+
coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
1277+
1278+
t.Log(version.Message)
1279+
1280+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1281+
defer cancel()
1282+
1283+
updatedVersion, err := client.UpdateTemplateVersion(ctx, version.ID, codersdk.PatchTemplateVersionRequest{
1284+
Message: nil,
1285+
})
1286+
1287+
require.NoError(t, err)
1288+
assert.Equal(t, wantMessage, updatedVersion.Message)
1289+
})
1290+
12261291
t.Run("Use the same name if a new name is not passed", func(t *testing.T) {
12271292
t.Parallel()
12281293
client := coderdtest.New(t, nil)

codersdk/templateversions.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,8 @@ type TemplateVersionVariable struct {
8787
}
8888

8989
type PatchTemplateVersionRequest struct {
90-
Name string `json:"name" validate:"omitempty,template_version_name"`
90+
Name string `json:"name" validate:"omitempty,template_version_name"`
91+
Message *string `json:"message,omitempty" validate:"omitempty,lt=1048577"`
9192
}
9293

9394
// TemplateVersion returns a template version by ID.

docs/api/schemas.md

+5-3
Original file line numberDiff line numberDiff line change
@@ -3229,15 +3229,17 @@ AuthorizationObject can represent a "set" of objects, such as: all workspaces in
32293229

32303230
```json
32313231
{
3232+
"message": "string",
32323233
"name": "string"
32333234
}
32343235
```
32353236

32363237
### Properties
32373238

3238-
| Name | Type | Required | Restrictions | Description |
3239-
| ------ | ------ | -------- | ------------ | ----------- |
3240-
| `name` | string | false | | |
3239+
| Name | Type | Required | Restrictions | Description |
3240+
| --------- | ------ | -------- | ------------ | ----------- |
3241+
| `message` | string | false | | |
3242+
| `name` | string | false | | |
32413243

32423244
## codersdk.PatchWorkspaceProxy
32433245

docs/api/templates.md

+1
Original file line numberDiff line numberDiff line change
@@ -1249,6 +1249,7 @@ curl -X PATCH http://coder-server:8080/api/v2/templateversions/{templateversion}
12491249
12501250
```json
12511251
{
1252+
"message": "string",
12521253
"name": "string"
12531254
}
12541255
```

site/.storybook/preview.jsx

+8
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { HelmetProvider } from "react-helmet-async"
55
import { dark } from "../src/theme"
66
import "../src/theme/globalFonts"
77
import "../src/i18n"
8+
import { QueryClient, QueryClientProvider } from "@tanstack/react-query"
89

910
export const decorators = [
1011
(Story) => (
@@ -23,6 +24,13 @@ export const decorators = [
2324
</HelmetProvider>
2425
)
2526
},
27+
(Story) => {
28+
return (
29+
<QueryClientProvider client={new QueryClient()}>
30+
<Story />
31+
</QueryClientProvider>
32+
)
33+
},
2634
]
2735

2836
export const parameters = {

site/src/api/typesGenerated.ts

+1
Original file line numberDiff line numberDiff line change
@@ -644,6 +644,7 @@ export interface PatchGroupRequest {
644644
// From codersdk/templateversions.go
645645
export interface PatchTemplateVersionRequest {
646646
readonly name: string
647+
readonly message?: string
647648
}
648649

649650
// From codersdk/workspaceproxy.go

site/src/components/TemplateVersionEditor/PublishTemplateVersionDialog.tsx

+12
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,12 @@ export const PublishTemplateVersionDialog: FC<
3232
const form = useFormik({
3333
initialValues: {
3434
name: defaultName,
35+
message: "",
3536
isActiveVersion: false,
3637
},
3738
validationSchema: Yup.object({
3839
name: Yup.string().required(),
40+
message: Yup.string(),
3941
isActiveVersion: Yup.boolean(),
4042
}),
4143
onSubmit: onConfirm,
@@ -70,6 +72,16 @@ export const PublishTemplateVersionDialog: FC<
7072
disabled={isPublishing}
7173
/>
7274

75+
<TextField
76+
{...getFieldHelpers("message")}
77+
label="Message"
78+
placeholder="Write a short message about the changes you made..."
79+
autoFocus
80+
disabled={isPublishing}
81+
multiline
82+
rows={5}
83+
/>
84+
7385
<FormControlLabel
7486
label="Promote to default version"
7587
control={

site/src/components/Tooltips/OutdatedHelpTooltip.tsx

-66
This file was deleted.

0 commit comments

Comments
 (0)