diff --git a/AGENTS.md b/AGENTS.md index 87a3be3..4a0eba1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -37,6 +37,7 @@ - Update `data/coding-agents.json` only through `bun run data:refresh`; preserve duplicate, retention, stable-key, metric-coverage, material-change, and bounded-history guards. - Regenerate `lib/chart-colors.generated.ts` through the checked iWantHue script. Do not hand-edit generated files. - Keep pointer, keyboard, focus, and touch behavior equivalent. Preserve semantic landmarks, accessible names, visible focus, and responsive horizontal chart panning. +- Give every ordinary themed page exactly one shared icon-menu appearance control as the final action in its header. Do not put appearance controls in footers, content, or fallback action rows. - Keep analytics cookieless and production-only. Add only allowlisted events with controlled properties; do not send URLs, query strings, free-form text, identities, or persistent identifiers. - Never expose `POSTHOG_API_KEY`, commit credentials, or provider secrets in browser variables, source, logs, fixtures, or documentation. - Run narrow tests while iterating and `bun run check` before handoff. diff --git a/app/blog/blog.test.tsx b/app/blog/blog.test.tsx index c567b4c..7282983 100644 --- a/app/blog/blog.test.tsx +++ b/app/blog/blog.test.tsx @@ -50,7 +50,13 @@ describe("AI Charts benchmark notes", () => { expect(markup).toContain('class="plain-nav"'); expect(markup).toContain('href="/blog"'); expect(markup).toContain('href="/"'); + expect(markup.match(/data-presentation="menu"/gu)).toHaveLength(1); + expect(markup.indexOf('>Chart')).toBeLessThan( + markup.indexOf('data-presentation="menu"'), + ); expect(markup).toContain('class="plain-footer"'); + expect(markup.slice(markup.indexOf('