调整 Agent 对话栏 Logo 与工作台布局
Project CI / Frontend tests (pull_request) Failing after 3m19s
Project CI / Repository checks (pull_request) Failing after 5m11s
Project CI / Native shell tests (pull_request) Failing after 5m44s
Project CI / Backend tests (pull_request) Successful in 6m57s

放大 Agent 栏产品 Logo 并接入正式钱包入口
移除工作台外层卡片圆角与间距,改用区域底色和竖向分隔
将资源依赖/类型切换整理为联通分段按钮
This commit is contained in:
2026-08-23 21:05:34 +08:00
parent b1ee6d816d
commit e3efdbb72c
3 changed files with 121 additions and 50 deletions
@@ -307,6 +307,7 @@ export function WorkspaceLauncherShell({
preview={activeProjectPreview}
agentRuntimeSummaries={activeProjectAgentRuntimeSummaries}
agentResults={activeProjectAgentResults}
walletEntry={<AccountWalletBar controller={accountWallet} />}
onPlay={() =>
requestCurrentProjectPlay(currentProjectContext.projectPath)
}
+82 -30
View File
@@ -4923,11 +4923,14 @@ iframe.preview-frame {
/* GameAgent V1.0 project workbench */
.game-project-workbench {
width: calc(100vw - 72px);
--game-workbench-stage-fill: #fffdfa;
--game-workbench-agent-fill: #fbf7f2;
width: calc(100vw - var(--launcher-sidebar-width));
max-width: none;
min-height: 0;
gap: 10px;
padding: 72px 8px 8px;
gap: 0;
margin: 0;
padding: 0;
overflow: hidden;
color: var(--platform-text-base);
}
@@ -4941,7 +4944,7 @@ iframe.preview-frame {
z-index: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(360px, 0.36fr);
gap: 10px;
gap: 0;
height: clamp(560px, calc(100dvh - 206px), 780px);
min-width: 0;
min-height: 0;
@@ -4951,21 +4954,27 @@ iframe.preview-frame {
.game-workbench-chat {
min-width: 0;
overflow: hidden;
border: 1px solid var(--platform-desktop-panel-border);
border-radius: 16px;
background: var(--platform-desktop-panel-fill);
border: 0;
border-radius: 0;
border-left: 1px solid var(--platform-line-soft);
background: var(--game-workbench-agent-fill);
box-shadow: none;
}
.game-workbench-stage {
position: relative;
display: grid;
grid-template-rows: auto auto minmax(0, 1fr);
box-shadow: var(--platform-panel-shadow);
border-left: 0;
background: var(--game-workbench-stage-fill);
box-shadow: none;
}
.game-workbench-chat {
border-color: var(--platform-line-soft);
box-shadow: var(--platform-nav-active-shadow);
.game-workbench-editor-shell {
border: 0;
border-radius: 0;
background: var(--game-workbench-stage-fill);
box-shadow: none;
}
.game-workbench-stage[data-resource-view-state^='resources.asset-canvas'] {
@@ -4985,8 +4994,7 @@ iframe.preview-frame {
gap: 12px;
min-height: 48px;
padding: 8px 12px;
border-bottom: 1px solid var(--platform-line-soft);
background: var(--platform-desktop-topbar-fill);
background: transparent;
}
.game-workbench-tabs,
@@ -5004,6 +5012,27 @@ iframe.preview-frame {
background: var(--platform-nav-fill);
}
.game-resource-sort-tabs {
flex-wrap: nowrap;
gap: 0;
padding: 0;
overflow: hidden;
}
.game-workbench-tabs.game-resource-sort-tabs button {
min-height: 36px;
border: 0;
border-radius: 0;
}
.game-workbench-tabs.game-resource-sort-tabs button + button {
border-left: 1px solid var(--platform-subpanel-border);
}
.game-workbench-tabs.game-resource-sort-tabs button.is-active {
border-color: transparent;
}
.game-workbench-tabs button,
.game-workbench-view-actions button {
display: inline-flex;
@@ -6049,7 +6078,7 @@ iframe.preview-frame {
height: 100%;
min-height: 0;
padding: 12px;
background: #fffdfa;
background: transparent;
}
.game-run-preview {
@@ -6176,12 +6205,12 @@ iframe.preview-frame {
}
.game-workbench-chat > header {
position: relative;
display: flex;
align-items: center;
gap: 9px;
padding: 12px 14px;
border-bottom: 1px solid var(--platform-line-soft);
background: var(--platform-subpanel-fill);
padding: 4px 14px;
background: transparent;
}
.game-workbench-chat > header > div {
@@ -6189,6 +6218,29 @@ iframe.preview-frame {
gap: 2px;
}
.launcher-main:has(.game-project-workbench) > .launcher-account-bar {
display: none;
}
.game-workbench-chat-title {
position: absolute;
left: 50%;
transform: translateX(-50%);
justify-items: center;
text-align: center;
pointer-events: none;
}
.game-workbench-chat-wallet {
position: relative;
z-index: 1;
margin-left: auto;
}
.game-workbench-chat-wallet .launcher-account-bar {
position: static;
}
.game-workbench-approval-trigger {
display: inline-flex;
align-items: center;
@@ -6218,15 +6270,11 @@ iframe.preview-frame {
}
.game-workbench-chat-avatar {
display: grid;
width: 30px;
height: 30px;
border-radius: 50%;
background: var(--platform-button-primary-fill);
color: var(--platform-button-primary-text);
font-size: 12px;
font-weight: 900;
place-items: center;
width: 48px;
height: 48px;
flex: 0 0 auto;
object-fit: contain;
filter: drop-shadow(0 5px 9px rgb(182 98 63 / 16%));
}
.game-workbench-chat .project-supervisor-surface {
@@ -6418,8 +6466,7 @@ iframe.preview-frame {
position: relative;
z-index: 2;
padding-top: 8px;
border-top: 1px solid var(--platform-line-soft);
background: var(--platform-desktop-panel-fill);
background: transparent;
}
.game-workbench-chat .project-supervisor-composer textarea {
@@ -6863,8 +6910,8 @@ iframe.preview-frame {
@media (max-width: 760px) {
.game-project-workbench {
width: min(100%, calc(100vw - 76px));
padding-top: 70px;
width: min(100%, calc(100vw - var(--launcher-sidebar-width)));
padding-top: 0;
}
.game-workbench-layout {
@@ -6878,6 +6925,11 @@ iframe.preview-frame {
min-height: 560px;
}
.game-workbench-chat {
border-top: 1px solid var(--platform-line-soft);
border-left: 0;
}
.game-workbench-toolbar,
.game-workbench-view-actions {
align-items: stretch;
@@ -44,6 +44,7 @@ import type {
GameIterationVersion,
ProjectResourceCanvasLayoutMode,
} from '../../../../../packages/shared/src/contracts/gameCreationApp';
import PRODUCT_LOGO from '../../../../../packages/shared/src/icons/taonier-product-ip.png';
import {
type AssetCanvasCommitNotification,
type AssetCanvasExitResult,
@@ -283,6 +284,7 @@ export type ProjectDevelopmentViewProps = {
agentRuntimeSummaries?: ProjectAgentRuntimeSummary[];
agentResults?: ProjectAgentResultSummary[];
supervisor: ReactNode;
walletEntry?: ReactNode;
onHomeOpen: () => void;
onProjectsOpen: () => void;
onPlay?: () => void;
@@ -722,6 +724,7 @@ export default function ProjectDevelopmentView({
agentRuntimeSummaries = emptyProjectAgentRuntimeSummaries,
agentResults = emptyProjectAgentResults,
supervisor,
walletEntry,
onManifestChange,
onPlay,
}: ProjectDevelopmentViewProps) {
@@ -3028,7 +3031,7 @@ export default function ProjectDevelopmentView({
>
{mode === 'resources' && uiEditorRoute ? (
<div
className="h-full min-h-0 min-w-0 w-full overflow-hidden rounded-2xl border border-(--platform-desktop-panel-border) bg-(--platform-desktop-panel-fill) shadow-(--platform-panel-shadow)"
className="game-workbench-editor-shell h-full min-h-0 min-w-0 w-full overflow-hidden"
data-resource-view-state={resourceViewState}
>
<UiEditorPage
@@ -3127,15 +3130,6 @@ export default function ProjectDevelopmentView({
<Sparkles size={15} aria-hidden="true" />
UI
</button>
<button
type="button"
className={sortMode === 'dependency' ? 'is-active' : ''}
aria-pressed={sortMode === 'dependency'}
onClick={() => showResourceSortMode('dependency')}
>
<FolderTree size={15} aria-hidden="true" />
</button>
<span
className="game-resource-reorder-status"
role="status"
@@ -3143,15 +3137,32 @@ export default function ProjectDevelopmentView({
>
{resourceLayoutSaving ? '保存中' : resourceLayoutNotice}
</span>
<button
type="button"
className={sortMode === 'type' ? 'is-active' : ''}
aria-pressed={sortMode === 'type'}
onClick={() => showResourceSortMode('type')}
<div
className="game-workbench-tabs game-resource-sort-tabs"
role="group"
aria-label="资源排列方式"
>
<ListFilter size={15} aria-hidden="true" />
</button>
<button
type="button"
className={sortMode === 'dependency' ? 'is-active' : ''}
aria-label="按依赖"
aria-pressed={sortMode === 'dependency'}
onClick={() => showResourceSortMode('dependency')}
>
<FolderTree size={15} aria-hidden="true" />
</button>
<button
type="button"
className={sortMode === 'type' ? 'is-active' : ''}
aria-label="按类型"
aria-pressed={sortMode === 'type'}
onClick={() => showResourceSortMode('type')}
>
<ListFilter size={15} aria-hidden="true" />
</button>
</div>
</>
) : null}
</div>
@@ -3905,13 +3916,20 @@ export default function ProjectDevelopmentView({
<aside className="game-workbench-chat" aria-label="陶泥儿 Agent 对话">
<header>
<span className="game-workbench-chat-avatar"></span>
<div>
<img
className="game-workbench-chat-avatar"
src={PRODUCT_LOGO}
alt="陶泥儿"
/>
<div className="game-workbench-chat-title">
<strong></strong>
<small>
{professionalDagVisible ? '项目总控 Agent' : '智能创作'}
</small>
</div>
{walletEntry ? (
<div className="game-workbench-chat-wallet">{walletEntry}</div>
) : null}
{professionalDagVisible ? (
<button
type="button"