Verify merged navigation and align legacy return assertions

This commit is contained in:
鲨鱼辣椒
2026-09-30 01:05:49 +08:00
parent ae2ee5d021
commit 409cc2348f
2 changed files with 17 additions and 10 deletions

View File

@@ -8,7 +8,7 @@
- Worktree: /Users/chillishark/Makelore 麦洛/.codex-worktrees/makelore/20260930-code-nav-merge-2f867bc4 - Worktree: /Users/chillishark/Makelore 麦洛/.codex-worktrees/makelore/20260930-code-nav-merge-2f867bc4
- Base commit: 7bce156edab454636c122013d52923f20b08c317 - Base commit: 7bce156edab454636c122013d52923f20b08c317
- Owner: codex - Owner: codex
- Status: Planning - Status: Ready for Integration
## Scope ## Scope
@@ -20,15 +20,15 @@
## Outcome ## 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 ## 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 ## 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 ## Promotion Candidates
@@ -46,3 +46,10 @@
1. Merge source in this isolated checkout and preserve main's recent teacher/composer changes. 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. 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. 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.

View File

@@ -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-project-starter')).toHaveCount(0);
await expect(page.getByTestId('coding-existing-projects')).toHaveCount(0); await expect(page.getByTestId('coding-existing-projects')).toHaveCount(0);
await expect(page.getByText('一念成光,万物可创。')).toHaveCount(0); await expect(page.getByText('一念成光,万物可创。')).toHaveCount(0);
await expect(page.getByRole('img', { name: 'Makelore logo' })).toBeVisible(); await expect(page.getByRole('img', { name: 'Makelore logo' })).toHaveCount(0);
await expect(page.getByTestId('sidebar-module-switcher-trigger')).toContainText('编程 Code'); 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-module-return-icon')).toBeVisible();
await expect(page.getByTestId('sidebar-create-project')).toBeVisible(); await expect(page.getByTestId('sidebar-create-project')).toBeVisible();
await expect(page.getByTestId('sidebar-nav-publish')).toHaveCount(0); 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(); await expect(page.getByTestId('sidebar-module-switcher')).toBeVisible();
const moduleHomeTrigger = page.getByTestId('sidebar-module-switcher-trigger'); const moduleHomeTrigger = page.getByTestId('sidebar-module-switcher-trigger');
await expect(moduleHomeTrigger).toHaveAttribute('aria-label', '返回首页'); await expect(moduleHomeTrigger).toHaveAttribute('aria-label', '返回首页');
await expect(moduleHomeTrigger).toHaveCSS('padding-top', '8px'); await expect(page.getByTestId('classroom-titlebar-navigation')).toBeVisible();
await expect(moduleHomeTrigger).toHaveCSS('padding-right', '8px'); await expect(moduleHomeTrigger).toHaveCSS('width', '32px');
await expect(moduleHomeTrigger).toHaveCSS('padding-bottom', '8px'); await expect(moduleHomeTrigger).toHaveCSS('height', '32px');
await expect(moduleHomeTrigger).toHaveCSS('padding-left', '8px');
await expect(page.getByTestId('sidebar-module-switcher-menu')).toHaveCount(0); await expect(page.getByTestId('sidebar-module-switcher-menu')).toHaveCount(0);
await moduleHomeTrigger.click(); await moduleHomeTrigger.click();
await expect(page).toHaveURL(/\/module-select$/); await expect(page).toHaveURL(/\/module-select$/);