Repository navigation
Agents ready for parsing, update consent and linked icons - #610
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Client Sentry bypasses the consent model, while stale cleanup work and incomplete cache negotiation can violate advertised behavior.
9 open findings
Gate client Sentry and replay behind consent · New Cancel stale consent cleanup tasks · New Preserve Accept in the final HTML Vary header · New Intercept DuckDuckGo icon requests in tests · New Handle dynamic import failures during idle prefetch · New Restrict Google Analytics cookie matching · New Preserve history state when closing panels · New Correct the ConsentBanner layout description · New Correct the service consent integration description · New
What changed in this PR
Adds agent-readable routes, granular consent controls, privacy-policy UI, link icons, dark-theme tokens, and supporting architecture updates.
Changes:
- Adds Markdown negotiation,
llms.txt, redirects, rewrites, and machine-readable content. - Replaces the cookie notice with purpose-based consent and gated optional services.
- Centralizes shared data/styles and expands unit, E2E, and architecture documentation.
| File | Description |
|---|---|
src/util/runWhenIdle.ts |
Adds idle scheduling helper. |
src/util/runWhenIdle.test.ts |
Tests idle and timeout paths. |
src/util/panelState.ts |
Adds shared panel state. |
src/util/panelState.test.ts |
Tests panel lifecycle. |
src/util/negotiateContentType.ts |
Implements Accept negotiation. |
src/util/negotiateContentType.test.ts |
Tests negotiation cases. |
src/util/markdown/policyMarkdown.ts |
Renders policy Markdown. |
src/util/markdown/policyMarkdown.test.ts |
Tests policy rendering. |
src/util/markdown/notFoundMarkdown.ts |
Builds Markdown 404s. |
src/util/markdown/notFoundMarkdown.test.ts |
Tests Markdown 404s. |
src/util/markdown/markdownResponse.ts |
Standardizes Markdown responses. |
src/util/markdown/markdownResponse.test.ts |
Tests response headers. |
src/util/markdown/llmsTxt.ts |
Generates llms.txt. |
src/util/markdown/llmsTxt.test.ts |
Validates llms.txt. |
src/util/markdown/homeMarkdown.ts |
Generates full-site Markdown. |
src/util/markdown/homeMarkdown.test.ts |
Tests Markdown content. |
src/util/locationHash.ts |
Adds reactive hash handling. |
src/util/locationHash.test.ts |
Tests hash updates. |
src/util/linkIcon.ts |
Selects and generates link icons. |
src/util/linkIcon.test.ts |
Tests icon selection. |
src/util/isNetworkFast.ts |
Simplifies network classification. |
src/util/isNetworkFast.test.ts |
Updates network expectations. |
src/util/cookieConsent.ts |
Removes legacy consent utility. |
src/util/consent/useConsent.ts |
Adds consent hook. |
src/util/consent/useConsent.test.tsx |
Tests hook snapshots. |
src/util/consent/consentStore.ts |
Implements consent persistence. |
src/util/consent/consentStore.test.ts |
Tests storage and tab synchronization. |
src/util/consent/clearUnconsentedStorage.ts |
Clears refused-purpose storage. |
src/util/consent/clearUnconsentedStorage.test.ts |
Tests storage cleanup. |
src/util/absoluteUrl.ts |
Centralizes canonical URL resolution. |
src/util/absoluteUrl.test.ts |
Tests URL resolution. |
src/styles/tokens.ts |
Adds shared dark-theme tokens. |
src/styles/theme.ts |
Configures the dark MUI palette. |
src/proxy.ts |
Adds redirects and content negotiation. |
src/proxy.test.ts |
Tests proxy routing. |
src/layouts/GeneralLayout.tsx |
Integrates consent and policy UI. |
src/layouts/GeneralLayout.test.tsx |
Tests layout ordering and landmarks. |
src/data/structuredData.ts |
Centralizes JSON-LD data. |
src/data/structuredData.test.ts |
Validates structured data. |
src/data/projects.ts |
Uses privacy-enhanced YouTube URLs. |
src/data/profile.ts |
Centralizes profile data. |
src/constants/routes.ts |
Centralizes routes and section IDs. |
src/constants/index.ts |
Removes raw network thresholds. |
src/configs/firebase.ts |
Lazily starts consented Firebase services. |
src/configs/firebase.test.ts |
Tests consent mode and lazy startup. |
src/components/publications/Publications.tsx |
Adds stretched cards and DOI links. |
src/components/publications/Publications.test.tsx |
Tests publication-link behavior. |
src/components/projects/ProjectsGrid.tsx |
Gates videos and adds icons. |
src/components/projects/ProjectsGrid.test.tsx |
Tests consented video previews. |
src/components/policy/gate/PolicyDialogGate.tsx |
Lazily mounts the policy dialog. |
src/components/policy/gate/PolicyDialogGate.test.tsx |
Tests lazy dialog mounting. |
src/components/policy/dialog/PolicyDialog.tsx |
Adds responsive policy dialog. |
src/components/policy/dialog/PolicyDialog.test.tsx |
Tests dialog opening and closing. |
src/components/policy/content/PolicyContent.test.tsx |
Tests policy content rendering. |
src/components/pill-button/PillButton.tsx |
Adds shared pill button. |
src/components/pill-button/PillButton.test.tsx |
Tests shared button behavior. |
src/components/panel-link/PanelLink.tsx |
Adds progressively enhanced panel links. |
src/components/panel-link/PanelLink.test.tsx |
Tests panel links. |
src/components/navbar/Navbar.tsx |
Adjusts dark-theme hover styling. |
src/components/link-icon/LinkIcon.tsx |
Renders consent-aware link marks. |
src/components/link-icon/LinkIcon.test.tsx |
Tests link-icon rendering. |
src/components/footer/Footer.tsx |
Adds policy and settings links. |
src/components/footer/Footer.test.tsx |
Tests footer targets and links. |
src/components/cookie-snackbar/CookieSnackbar.tsx |
Removes legacy cookie snackbar. |
src/components/cookie-snackbar/CookieSnackbar.test.tsx |
Removes obsolete tests. |
src/components/consent/services/ConsentedServices.tsx |
Gates analytics and offline services. |
src/components/consent/services/ConsentedServices.test.tsx |
Tests service gating and withdrawal. |
src/components/consent/controls/ConsentControls.test.tsx |
Tests purpose switches. |
src/components/consent/banner/ConsentBanner.test.tsx |
Tests banner behavior and focus. |
src/app/page.tsx |
Removes unconditional Firebase startup. |
src/app/not-found.tsx |
Reuses the pill button. |
src/app/loading.tsx |
Removes loading route UI. |
src/app/loading.test.tsx |
Removes loading UI tests. |
src/app/llms.txt/route.ts |
Serves llms.txt. |
src/app/llms.txt/route.test.ts |
Tests llms.txt response. |
src/app/index.md/route.ts |
Serves home-page Markdown. |
src/app/index.md/route.test.ts |
Tests Markdown route response. |
src/app/global-error.tsx |
Reuses the pill button. |
src/app/error.tsx |
Reuses the pill button. |
package.json |
Updates package versions. |
next.config.js |
Applies security headers globally. |
jest/setup.ts |
Clears cookies between tests. |
docs/index.md |
Links new architecture guides. |
docs/architecture/utils.md |
Documents new utilities. |
docs/architecture/service-worker.md |
Documents consent-gated registration. |
docs/architecture/pwa.md |
Updates service-worker lifecycle. |
docs/architecture/layouts.md |
Documents new layout composition. |
docs/architecture/index.md |
Links agent and consent guides. |
docs/architecture/data.md |
Documents new data modules. |
docs/architecture/constants.md |
Updates network constants. |
docs/architecture/consent.md |
Adds consent architecture guide. |
docs/architecture/configs.md |
Documents gated Firebase startup. |
docs/architecture/components/stars.md |
Updates starfield integration notes. |
docs/architecture/components/publications.md |
Documents revised publication cards. |
docs/architecture/components/index.md |
Updates component inventory. |
docs/architecture/components/cookie-snackbar.md |
Removes obsolete snackbar guide. |
docs/architecture/components/consent-banner.md |
Documents consent UI. |
docs/architecture/agent-readiness.md |
Documents machine-readable routes. |
cypress/e2e/landing.cy.ts |
Adds consent E2E coverage. |
cypress/e2e/agent-readiness.cy.ts |
Adds agent-readiness E2E coverage. |
CLAUDE.md |
Updates architecture guidance. |
.github/copilot-instructions.md |
Updates repository conventions. |
.claude/rules/testing.md |
Documents cookie test cleanup. |
.claude/rules/code-style.md |
Updates component and test conventions. |
🧠 Review effort: Balanced
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Originally meant to only update the codebase to ensure it is agent ready for parsing/indexing but ended up adding a proper cookie consent system, a combined privacy & cookie policy, link icons, a dark theme, and a bunch of architecture cleanup along the way.
Agent readiness:
Accept: text/markdown(also at/index.md), withVary: Acceptllms.txtwith a "When to use" section, and/llm.txtserves the same fileNew routes (all redirect into the home page, there are no new pages):
/aboutgoes to//contactgoes to the contact section/privacy,/policy,/cookie,/cookies,/privacy-policyand/cookie-policyopen the privacy & cookie policy dialogsrc/proxy.ts, driven by one routes table insrc/constants/routes.tsConsent:
Privacy & cookie policy:
Link icons:
Design and accessibility:
Codebase:
CLAUDE.md, the Copilot instructions and the rules files