feat: finish portfolio title, navigation, and destination effects
Add the approved name animation, rounded docking navigation, localized keyboard focus cue, unified builds card, and destination copy hierarchy.
Introduce lightweight one-shot meteors and a sun ring that repeats every three seconds at Contact. Open the email action in a separate browsing context. Preserve reduced-motion behavior and keep private handoff and visual-check artifacts out of version control.
Validation: 649 tests passed; all 20 failures in world-models and SceneCanvas reproduce on baseline 103427f. Typecheck, artifact verification, and transfer budgets passed. Client/SSR preview build passed before this commit. Existing baseline test failures remain unchanged.
This commit is contained in:
@@ -417,7 +417,7 @@ describe('artifact verification', () => {
|
||||
{
|
||||
name: 'identity rendered only inside a template',
|
||||
mutate: (html: string) => html.replace(
|
||||
/(<h1[^>]*>Luca Pîslaru<\/h1><p class="hero-journey__role">System Administrator & Full-Stack Developer<\/p>)/u,
|
||||
/(<h1\b[^>]*>[\s\S]*?<\/h1><p class="hero-journey__role">System Administrator & Full-Stack Developer<\/p>)/u,
|
||||
'<template>$1</template>',
|
||||
),
|
||||
},
|
||||
@@ -456,7 +456,9 @@ describe('artifact verification', () => {
|
||||
},
|
||||
])('rejects $name as non-visible semantic evidence', async ({ mutate }) => {
|
||||
const { directory, html, inputs, contract } = await writeValidArtifacts();
|
||||
await writeFile(join(directory, 'index.html'), mutate(html, inputs));
|
||||
const mutated = mutate(html, inputs);
|
||||
expect(mutated).not.toBe(html);
|
||||
await writeFile(join(directory, 'index.html'), mutated);
|
||||
|
||||
await expect(verifyArtifactDirectory(directory, inputs, contract)).rejects.toThrow(/visible semantic|visible h1|visible navigation|visible section|connected/i);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user