Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita1546b5

Browse files
refactor: replace task prompt by workspace name in the topbar (#19531)
Fixes#19524**Screenshot:**<img width="1512" height="773" alt="Screenshot 2025-08-25 at 14 59 11"src="https://github.com/user-attachments/assets/5d958302-04b3-4cd6-8e59-41a3048798be"/>**Demo:**https://github.com/user-attachments/assets/040490ea-b276-48d7-9f3a-d8261d982bb5**Changes:**- Change "View workspace" button to icon + "Workspace"- Updated the title to use the workspace name instead of the prompt- Added a prompt button, so the user can see what is the prompt that isrunning + copy it easily
1 parent5baaf27 commita1546b5

File tree

2 files changed

+68
-15
lines changed

2 files changed

+68
-15
lines changed

‎site/src/pages/TaskPage/TaskPage.tsx‎

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ const TaskPage = () => {
151151
return(
152152
<>
153153
<Helmet>
154-
<title>{pageTitle(ellipsizeText(task.prompt,64))}</title>
154+
<title>{pageTitle(task.workspace.name)}</title>
155155
</Helmet>
156156

157157
<divclassName="flex flex-col h-full">
@@ -265,7 +265,3 @@ export const data = {
265265
}satisfiesTask;
266266
},
267267
};
268-
269-
constellipsizeText=(text:string,maxLength=80):string=>{
270-
returntext.length<=maxLength ?text :`${text.slice(0,maxLength-3)}...`;
271-
};

‎site/src/pages/TaskPage/TaskTopbar.tsx‎

Lines changed: 67 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,14 @@ import {
55
TooltipProvider,
66
TooltipTrigger,
77
}from"components/Tooltip/Tooltip";
8-
import{ArrowLeftIcon}from"lucide-react";
8+
import{useClipboard}from"hooks";
9+
import{
10+
ArrowLeftIcon,
11+
CheckIcon,
12+
CopyIcon,
13+
LaptopMinimalIcon,
14+
TerminalIcon,
15+
}from"lucide-react";
916
importtype{Task}from"modules/tasks/tasks";
1017
importtype{FC}from"react";
1118
import{LinkasRouterLink}from"react-router";
@@ -15,7 +22,7 @@ type TaskTopbarProps = { task: Task };
1522

1623
exportconstTaskTopbar:FC<TaskTopbarProps>=({ task})=>{
1724
return(
18-
<headerclassName="flex items-center px-3h-14 border-solid border-border border-0 border-b">
25+
<headerclassName="flex items-center px-3py-4 border-solid border-border border-0 border-b">
1926
<TooltipProvider>
2027
<Tooltip>
2128
<TooltipTriggerasChild>
@@ -30,21 +37,71 @@ export const TaskTopbar: FC<TaskTopbarProps> = ({ task }) => {
3037
</Tooltip>
3138
</TooltipProvider>
3239

33-
<h1className="m-0 text-base font-medium truncate">{task.prompt}</h1>
40+
<h1className="m-0 pl-2 text-base font-medium truncate">
41+
{task.workspace.name}
42+
</h1>
3443

3544
{task.workspace.latest_app_status?.uri&&(
3645
<divclassName="flex items-center gap-2 flex-wrap ml-4">
3746
<TaskStatusLinkuri={task.workspace.latest_app_status.uri}/>
3847
</div>
3948
)}
4049

41-
<ButtonasChildsize="sm"variant="outline"className="ml-auto">
42-
<RouterLink
43-
to={`/@${task.workspace.owner_name}/${task.workspace.name}`}
44-
>
45-
View workspace
46-
</RouterLink>
47-
</Button>
50+
<divclassName="ml-auto gap-2 flex items-center">
51+
<TooltipProviderdelayDuration={250}>
52+
<Tooltip>
53+
<TooltipTriggerasChild>
54+
<Buttonvariant="outline"size="sm">
55+
<TerminalIcon/>
56+
Prompt
57+
</Button>
58+
</TooltipTrigger>
59+
<TooltipContentclassName="max-w-xs bg-surface-secondary p-4">
60+
<pclassName="m-0 mb-2 select-all text-sm font-normal text-content-primary leading-snug">
61+
{task.prompt}
62+
</p>
63+
<CopyPromptButtonprompt={task.prompt}/>
64+
</TooltipContent>
65+
</Tooltip>
66+
</TooltipProvider>
67+
68+
<ButtonasChildvariant="outline"size="sm">
69+
<RouterLink
70+
to={`/@${task.workspace.owner_name}/${task.workspace.name}`}
71+
>
72+
<LaptopMinimalIcon/>
73+
Workspace
74+
</RouterLink>
75+
</Button>
76+
</div>
4877
</header>
4978
);
5079
};
80+
81+
typeCopyPromptButtonProps={prompt:string};
82+
83+
constCopyPromptButton:FC<CopyPromptButtonProps>=({ prompt})=>{
84+
const{ copyToClipboard, showCopiedSuccess}=useClipboard({
85+
textToCopy:prompt,
86+
});
87+
88+
return(
89+
<Button
90+
disabled={showCopiedSuccess}
91+
onClick={copyToClipboard}
92+
size="sm"
93+
variant="subtle"
94+
className="p-0 min-w-0"
95+
>
96+
{showCopiedSuccess ?(
97+
<>
98+
<CheckIcon/> Copied!
99+
</>
100+
) :(
101+
<>
102+
<CopyIcon/> Copy
103+
</>
104+
)}
105+
</Button>
106+
);
107+
};

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp