From c95d972d4eb8d477d79141c23c79f483ef5105e9 Mon Sep 17 00:00:00 2001 From: Hugo Dutka Date: Thu, 12 Jun 2025 10:05:17 +0200 Subject: [PATCH 1/2] feat: update task workspace name format and prevent title overflow (#18315) --- site/src/pages/TaskPage/TaskPage.tsx | 3 ++- site/src/pages/TaskPage/TaskSidebar.tsx | 4 +++- site/src/pages/TasksPage/TasksPage.tsx | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/site/src/pages/TaskPage/TaskPage.tsx b/site/src/pages/TaskPage/TaskPage.tsx index ea32ea5d43f40..1b90b7b775e07 100644 --- a/site/src/pages/TaskPage/TaskPage.tsx +++ b/site/src/pages/TaskPage/TaskPage.tsx @@ -12,6 +12,7 @@ import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { useParams } from "react-router-dom"; import { Link as RouterLink } from "react-router-dom"; +import { ellipsizeText } from "utils/ellipsizeText"; import { pageTitle } from "utils/page"; import { TaskApps } from "./TaskApps"; import { TaskSidebar } from "./TaskSidebar"; @@ -163,7 +164,7 @@ const TaskPage = () => { return ( <> - Codestin Search App + Codestin Search App
diff --git a/site/src/pages/TaskPage/TaskSidebar.tsx b/site/src/pages/TaskPage/TaskSidebar.tsx index e1d31b8e6b33c..9ed19c41fa4f1 100644 --- a/site/src/pages/TaskPage/TaskSidebar.tsx +++ b/site/src/pages/TaskPage/TaskSidebar.tsx @@ -97,7 +97,9 @@ export const TaskSidebar: FC = ({ task }) => {
-

{task.prompt}

+

+ {task.prompt} +

{task.workspace.latest_app_status?.uri && (
diff --git a/site/src/pages/TasksPage/TasksPage.tsx b/site/src/pages/TasksPage/TasksPage.tsx index c12436c109996..adb978cb05cac 100644 --- a/site/src/pages/TasksPage/TasksPage.tsx +++ b/site/src/pages/TasksPage/TasksPage.tsx @@ -32,6 +32,7 @@ import { useAuthenticated } from "hooks"; import { ExternalLinkIcon, RotateCcwIcon, SendIcon } from "lucide-react"; import { AI_PROMPT_PARAMETER_NAME, type Task } from "modules/tasks/tasks"; import { WorkspaceAppStatus } from "modules/workspaces/WorkspaceAppStatus/WorkspaceAppStatus"; +import { generateWorkspaceName } from "modules/workspaces/generateWorkspaceName"; import { type FC, type ReactNode, useState } from "react"; import { Helmet } from "react-helmet-async"; import { useMutation, useQuery, useQueryClient } from "react-query"; @@ -489,7 +490,7 @@ export const data = { templateId: string, ): Promise { const workspace = await API.createWorkspace(userId, { - name: `task-${new Date().getTime()}`, + name: `task-${generateWorkspaceName()}`, template_id: templateId, rich_parameter_values: [ { name: AI_PROMPT_PARAMETER_NAME, value: prompt }, From 70723d3b517061909ae1ccc419bb791b42a35cc9 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Thu, 12 Jun 2025 13:50:50 +0300 Subject: [PATCH 2/2] fix(coderd): fix panics by always checking for non-nil request logger (#18228) --- coderd/inboxnotifications.go | 4 +++- coderd/provisionerjobs.go | 4 +++- coderd/workspaceagents.go | 12 +++++++++--- enterprise/coderd/provisionerdaemons.go | 4 +++- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/coderd/inboxnotifications.go b/coderd/inboxnotifications.go index bc357bf2e35f2..4bb3f9ec953aa 100644 --- a/coderd/inboxnotifications.go +++ b/coderd/inboxnotifications.go @@ -221,7 +221,9 @@ func (api *API) watchInboxNotifications(rw http.ResponseWriter, r *http.Request) defer encoder.Close(websocket.StatusNormalClosure) // Log the request immediately instead of after it completes. - loggermw.RequestLoggerFromContext(ctx).WriteLog(ctx, http.StatusAccepted) + if rl := loggermw.RequestLoggerFromContext(ctx); rl != nil { + rl.WriteLog(ctx, http.StatusAccepted) + } for { select { diff --git a/coderd/provisionerjobs.go b/coderd/provisionerjobs.go index 5a8a0a5126cc0..800b2916efef3 100644 --- a/coderd/provisionerjobs.go +++ b/coderd/provisionerjobs.go @@ -557,7 +557,9 @@ func (f *logFollower) follow() { } // Log the request immediately instead of after it completes. - loggermw.RequestLoggerFromContext(f.ctx).WriteLog(f.ctx, http.StatusAccepted) + if rl := loggermw.RequestLoggerFromContext(f.ctx); rl != nil { + rl.WriteLog(f.ctx, http.StatusAccepted) + } // no need to wait if the job is done if f.complete { diff --git a/coderd/workspaceagents.go b/coderd/workspaceagents.go index 6b25fcbcfeaf6..ed3f554a89b75 100644 --- a/coderd/workspaceagents.go +++ b/coderd/workspaceagents.go @@ -578,7 +578,9 @@ func (api *API) workspaceAgentLogs(rw http.ResponseWriter, r *http.Request) { defer t.Stop() // Log the request immediately instead of after it completes. - loggermw.RequestLoggerFromContext(ctx).WriteLog(ctx, http.StatusAccepted) + if rl := loggermw.RequestLoggerFromContext(ctx); rl != nil { + rl.WriteLog(ctx, http.StatusAccepted) + } go func() { defer func() { @@ -1047,7 +1049,9 @@ func (api *API) derpMapUpdates(rw http.ResponseWriter, r *http.Request) { defer encoder.Close(websocket.StatusGoingAway) // Log the request immediately instead of after it completes. - loggermw.RequestLoggerFromContext(ctx).WriteLog(ctx, http.StatusAccepted) + if rl := loggermw.RequestLoggerFromContext(ctx); rl != nil { + rl.WriteLog(ctx, http.StatusAccepted) + } go func(ctx context.Context) { // TODO(mafredri): Is this too frequent? Use separate ping disconnect timeout? @@ -1501,7 +1505,9 @@ func (api *API) watchWorkspaceAgentMetadata( defer sendTicker.Stop() // Log the request immediately instead of after it completes. - loggermw.RequestLoggerFromContext(ctx).WriteLog(ctx, http.StatusAccepted) + if rl := loggermw.RequestLoggerFromContext(ctx); rl != nil { + rl.WriteLog(ctx, http.StatusAccepted) + } // Send initial metadata. sendMetadata() diff --git a/enterprise/coderd/provisionerdaemons.go b/enterprise/coderd/provisionerdaemons.go index 9039d2e97dbc5..30f4ddd66d91c 100644 --- a/enterprise/coderd/provisionerdaemons.go +++ b/enterprise/coderd/provisionerdaemons.go @@ -384,7 +384,9 @@ func (api *API) provisionerDaemonServe(rw http.ResponseWriter, r *http.Request) }) // Log the request immediately instead of after it completes. - loggermw.RequestLoggerFromContext(ctx).WriteLog(ctx, http.StatusAccepted) + if rl := loggermw.RequestLoggerFromContext(ctx); rl != nil { + rl.WriteLog(ctx, http.StatusAccepted) + } err = server.Serve(ctx, session) srvCancel()