From 409cc2348f811c2c4e9f681910229a3eeeaeb74a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=B2=A8=E9=B1=BC=E8=BE=A3=E6=A4=92?= Date: Wed, 30 Sep 2026 01:05:49 +0800 Subject: [PATCH] Verify merged navigation and align legacy return assertions --- .../tasks/20260930-code-nav-merge-2f867bc4.md | 15 +++++++++++---- tests/e2e/main-navigation.spec.ts | 12 ++++++------ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/.project-docs/30-worklog/tasks/20260930-code-nav-merge-2f867bc4.md b/.project-docs/30-worklog/tasks/20260930-code-nav-merge-2f867bc4.md index 5459e198..6bf8e9d8 100644 --- a/.project-docs/30-worklog/tasks/20260930-code-nav-merge-2f867bc4.md +++ b/.project-docs/30-worklog/tasks/20260930-code-nav-merge-2f867bc4.md @@ -8,7 +8,7 @@ - Worktree: /Users/chillishark/Makelore 麦洛/.codex-worktrees/makelore/20260930-code-nav-merge-2f867bc4 - Base commit: 7bce156edab454636c122013d52923f20b08c317 - Owner: codex -- Status: Planning +- Status: Ready for Integration ## Scope @@ -20,15 +20,15 @@ ## Outcome -- Not completed. +- Source d1bf54b merged without conflicts as ae2ee5d onto main 7bce156. Recent teacher introduction, shortcut and composer-height changes remain intact. Independent review found only separate README/CSS sections overlap; product behavior matches the verified source. Final main fast-forward and approved cleanup follow below. ## Verification -- Not run. +- Standard typecheck, 44 focused unit tests across four files, scoped ESLint, production Vite build and diff check passed. All four Electron navigation scenarios passed across initial run/recheck. One old scenario still expected the removed Code label/duplicate title logo and 8px text-button padding; updated only those assertions to the accepted icon-only 32px topbar and existing brand, then rechecked successfully. No product change was required. Logs: /tmp/code-nav-merge-{unit,peek,types,lint,build,e2e,e2e-recheck}.log. ## Follow-ups -- None recorded. +- Complete the user-authorized main fast-forward and bounded cleanup; keep both branches/commits and the live temporary app. ## Promotion Candidates @@ -46,3 +46,10 @@ 1. Merge source in this isolated checkout and preserve main's recent teacher/composer changes. 2. Run relevant unit tests, typecheck, lint, production compile and navigation E2E on the combined tree. 3. Commit the merge outcome, fast-forward local main after a clean/unchanged check, then retire eligible task worktrees or use narrowly scoped legacy cleanup when app archive/official retire cannot represent the source checkout. Keep branch/commit recovery and trial runtime paths intact. + +## Documentation And Cleanup Review + +- Task-aware drift initially reported the unchanged source task record imported by the merge. Confirmed exact byte identity with d1bf54b, then used official same-task adoption for this user-authorized known source: soft-reset only the private merge HEAD while preserving index/worktree, register the staged source record, restore the identical merge commit. No source document, product tree, merge parents, shared history or user file changed. Final drift check passes. +- App artifact list is empty; archive_worktree cannot address these unattached legacy/skill checkouts. Source task registry is ready_for_integration but its old top-level document Status remained Planning despite committed final verification. Its managed flag is false because it reused a previous checkout; official retire is therefore unavailable. Preserve the source record unchanged and use the user's explicit cleanup authorization for this known clean completed legacy checkout: official non-force release and exact-path Git worktree removal after main ancestry verification. Do not edit registry flags or imply a successful retire. +- Source cleanup path: /Users/chillishark/Makelore 麦洛/.codex-worktrees/makelore/20260929-empty-work-merge-39c633d0; branch codex/20260929-code-back-entry-33d87a81-code-back-entry; HEAD d1bf54b. Merge checkout will use official retire after its ready record is committed and main contains it. +- Independent dependency audit: trial Main 32583 and children run from the temporary source; no live file or working-directory dependency points to either target. Trial bundle/candidate and primary dependency symlinks do not point to targets. Ignored contents are generated dist, dist-electron, reports/test-results and a node_modules symlink to primary. No secrets/user projects/trial profile are removed; unrelated worktrees remain untouched. diff --git a/tests/e2e/main-navigation.spec.ts b/tests/e2e/main-navigation.spec.ts index 2a9da6e7..cf9f9590 100644 --- a/tests/e2e/main-navigation.spec.ts +++ b/tests/e2e/main-navigation.spec.ts @@ -355,8 +355,9 @@ test.describe('Makelore module navigation without setup flow', () => { await expect(page.getByTestId('coding-project-starter')).toHaveCount(0); await expect(page.getByTestId('coding-existing-projects')).toHaveCount(0); await expect(page.getByText('一念成光,万物可创。')).toHaveCount(0); - await expect(page.getByRole('img', { name: 'Makelore logo' })).toBeVisible(); - await expect(page.getByTestId('sidebar-module-switcher-trigger')).toContainText('编程 Code'); + await expect(page.getByRole('img', { name: 'Makelore logo' })).toHaveCount(0); + await expect(page.getByTestId('sidebar').locator('.classroom-brand')).toBeVisible(); + await expect(page.getByTestId('sidebar-module-switcher-trigger')).toHaveText(''); await expect(page.getByTestId('sidebar-module-return-icon')).toBeVisible(); await expect(page.getByTestId('sidebar-create-project')).toBeVisible(); await expect(page.getByTestId('sidebar-nav-publish')).toHaveCount(0); @@ -377,10 +378,9 @@ test.describe('Makelore module navigation without setup flow', () => { await expect(page.getByTestId('sidebar-module-switcher')).toBeVisible(); const moduleHomeTrigger = page.getByTestId('sidebar-module-switcher-trigger'); await expect(moduleHomeTrigger).toHaveAttribute('aria-label', '返回首页'); - await expect(moduleHomeTrigger).toHaveCSS('padding-top', '8px'); - await expect(moduleHomeTrigger).toHaveCSS('padding-right', '8px'); - await expect(moduleHomeTrigger).toHaveCSS('padding-bottom', '8px'); - await expect(moduleHomeTrigger).toHaveCSS('padding-left', '8px'); + await expect(page.getByTestId('classroom-titlebar-navigation')).toBeVisible(); + await expect(moduleHomeTrigger).toHaveCSS('width', '32px'); + await expect(moduleHomeTrigger).toHaveCSS('height', '32px'); await expect(page.getByTestId('sidebar-module-switcher-menu')).toHaveCount(0); await moduleHomeTrigger.click(); await expect(page).toHaveURL(/\/module-select$/);