ui: show Agents first in module chooser
This commit is contained in:
1 parent
4e33d6ade6
commit
9317d0acc7
4 files changed
+24
-11
No files matched your search
@@ -14,11 +14,13 @@
|
||||
|
||||
- Replace the Agents module chooser placeholder with a generated cinematic illustration in `src/assets/module-agents.webp`.
|
||||
- Follow-up: replace the Agents description in `src/lib/ai-modules.ts` with the user's corrected exact slogan `打造你想象中的AI助手`.
|
||||
- Ordering follow-up: place Agents first in the module catalog; remaining visual/DOM order is Code, Canvas, Robot. Preserve ID-based navigation and the new artwork/slogan.
|
||||
- Reuse the existing module image container, center crop, accessibility text, disabled grayscale and navigation. Require artwork for all four module entries and remove the now-unused placeholder branch.
|
||||
- Update existing module navigation unit/Electron coverage and this task record only.
|
||||
|
||||
## Intent And Constraints
|
||||
|
||||
- Same-task ordering follow-up: official check/start/status passed in this clean worktree; reused already loaded project/peer context and confirmed module catalog consumers. Planning Gate Passed. Only chooser ordering changes; `getAiModuleForPath` still returns the same IDs and default Code route. Extend the existing UI order assertions and rerun the existing Electron layout test to verify the now-first Agents card at both window sizes.
|
||||
- Same-task slogan follow-up: official check/start/status passed and reused this clean feature worktree and the already loaded project/peer context. Planning Gate Passed. User corrected `想像` to `想象`; use the corrected text verbatim, without extra spaces or quotation marks in the UI. This is a copy-only change; existing tests are sufficient and no new interaction test is needed.
|
||||
- Concurrent Task Gate and Planning Gate passed. Official start exited 0 and status matched the task ID, feature mode, branch, absolute worktree and base above. All subsequent operations use this isolated worktree; primary `main` has other ownership and three pre-existing untracked task records.
|
||||
- Loaded the planning entry, own task, memory index, integrated current state, positioning, decision index, architecture, relevant domain/success criteria, accepted personal-cloud-Agent ADR, README and peer scope/intent/promotion sections. Registry holds 28 other planning tasks and 162 ready tasks; historical placeholder scopes remain unknown coordination state. The recent WeChat diagnosis is read-only, and prior Agents entry/platform work is integrated. No concrete semantic dependency on this artwork was identified.
|
||||
@@ -28,6 +30,7 @@
|
||||
|
||||
## Outcome
|
||||
|
||||
- Ordering follow-up completed: final chooser order is Agents, Code, Canvas, Robot in both DOM and visual layout. Real Electron screenshot confirms the first card uses the generated Agent image and `打造你想象中的AI助手`. Module routes remain ID-based and unchanged.
|
||||
- Slogan follow-up completed: the Agents entry description and its accessible button label now use `打造你想象中的AI助手`, matching the user's spelling correction. Existing generated artwork is retained.
|
||||
- Generated and connected the blue/violet holographic Agent artwork. All four entries use the same bundled-image rendering; obsolete violet placeholder markup is removed. Existing card spacing, image crop, labels, policy state and routes are preserved.
|
||||
- Visually inspected the real 1280x800 Electron chooser screenshot: the central figure remains recognizable inside the same 164x132 image region as its neighbors. The existing E2E also verifies the layout after resizing to 1100x700.
|
||||
@@ -35,6 +38,7 @@
|
||||
|
||||
## Verification
|
||||
|
||||
- Ordering follow-up: 12/12 module navigation/access unit tests, typecheck, scoped ESLint and all Vite production targets passed. Existing Electron layout test passed 1/1 with explicit four-entry order, first-card slogan, image decode and 1280x800/1100x700 checks. Inspected its refreshed screenshot and full cumulative changes since base; whitespace and task documentation boundary checks passed.
|
||||
- Slogan follow-up: typecheck and all Vite production targets passed; existing module navigation/access tests passed 12/12. Reviewed the single source-string diff; no interaction or layout rule changed.
|
||||
- Frozen install succeeded using the exact pinned pnpm 10.33.4. Generated WebP is 960x540, 90,688 bytes.
|
||||
- `pnpm run typecheck`: passed.
|
||||
|
||||
+10
-10
@@ -18,6 +18,16 @@ export type AiModuleDefinition = {
|
||||
};
|
||||
|
||||
export const aiModules: readonly AiModuleDefinition[] = [
|
||||
{
|
||||
id: 'cloud_agents',
|
||||
title: 'Makelore Agents',
|
||||
subtitle: 'AI 智能体',
|
||||
description: '打造你想象中的AI助手',
|
||||
route: '/cloud-agents',
|
||||
enabled: true,
|
||||
Icon: Sparkles,
|
||||
switcherLabel: 'Agents 智能体',
|
||||
},
|
||||
{
|
||||
id: 'programming',
|
||||
title: 'Makelore Code',
|
||||
@@ -46,16 +56,6 @@ export const aiModules: readonly AiModuleDefinition[] = [
|
||||
Icon: Bot,
|
||||
switcherLabel: 'Robot 机器',
|
||||
},
|
||||
{
|
||||
id: 'cloud_agents',
|
||||
title: 'Makelore Agents',
|
||||
subtitle: 'AI 智能体',
|
||||
description: '打造你想象中的AI助手',
|
||||
route: '/cloud-agents',
|
||||
enabled: true,
|
||||
Icon: Sparkles,
|
||||
switcherLabel: 'Agents 智能体',
|
||||
},
|
||||
];
|
||||
|
||||
const moduleAccessKeyById: Record<AiModuleId, ModuleAccessKey> = {
|
||||
|
||||
@@ -89,6 +89,10 @@ test.describe('Makelore module navigation without setup flow', () => {
|
||||
await expect(page.getByTestId('ai-module-selection-page')).toBeVisible();
|
||||
|
||||
const moduleCards = page.locator('[data-testid^="ai-module-option-"]');
|
||||
await expect(moduleCards.locator('.module-option-card-title')).toHaveText([
|
||||
'Agents 智能体', 'Code 编程', 'Canvas 设计', 'Robot 机器',
|
||||
]);
|
||||
await expect(moduleCards.first().locator('.module-option-card-description')).toHaveText('打造你想象中的AI助手');
|
||||
await expect(moduleCards.locator('img')).toHaveCount(4);
|
||||
await expect.poll(async () => await moduleCards.locator('img').evaluateAll((images) =>
|
||||
images.every((image) => image.complete && image.naturalWidth > 0),
|
||||
|
||||
@@ -71,7 +71,12 @@ describe('AI module navigation', () => {
|
||||
for (const moduleId of ['programming', 'painting', 'robot', 'cloud_agents'] as const) {
|
||||
expect(screen.getByTestId(`ai-module-option-${moduleId}`).querySelector('.module-option-artwork')).toBeNull();
|
||||
}
|
||||
expect(screen.getAllByTestId(/^ai-module-option-/u)).toHaveLength(4);
|
||||
expect(screen.getAllByTestId(/^ai-module-option-/u).map((option) => option.dataset.testid)).toEqual([
|
||||
'ai-module-option-cloud_agents',
|
||||
'ai-module-option-programming',
|
||||
'ai-module-option-painting',
|
||||
'ai-module-option-robot',
|
||||
]);
|
||||
expect(screen.queryByTestId('ai-module-option-learning')).not.toBeInTheDocument();
|
||||
expect(screen.queryByText('先选一个入口。进入后,你还可以从左下角随时切换到其他模块。')).not.toBeInTheDocument();
|
||||
expect(screen.queryByText('选择创作空间。你可以随时从侧边栏切换。')).not.toBeInTheDocument();
|
||||
|
||||
Reference in new issue
Block a user