Skip to content

SCIX-877 feat(metatags): gate Google Scholar tags by doctype#883

Open
thostetler wants to merge 1 commit into
adsabs:masterfrom
thostetler:SCIX-877-google-scholar-doctypes
Open

SCIX-877 feat(metatags): gate Google Scholar tags by doctype#883
thostetler wants to merge 1 commit into
adsabs:masterfrom
thostetler:SCIX-877-google-scholar-doctypes

Conversation

@thostetler

Copy link
Copy Markdown
Member

Google Scholar-compatible meta tags were emitted on every abstract page regardless of doctype. Per SCIX-877 only a defined set of doctypes should expose them; non-scholarly doctypes (proposal, dataset, software, misc, pressrelease, catalog, talk, service, instrument) should not.

  • Added a doctype whitelist and showsGoogleScholarTags predicate (scholarDoctypes.ts), matched case-insensitively
  • Gated the Highwire (citation_), PRISM (prism.), and Dublin Core (dc.*) tag families behind the whitelist on the abstract page
  • Left Schema.org JSON-LD, Open Graph, Twitter, canonical, and description tags emitted for all records
  • Normalized doctype comparisons to lowercase (fixes prior title-case checks for proceedings, phdthesis, mastersthesis)
  • Added unit tests covering whitelisted, removed, unlisted, missing, and case-insensitive doctypes

@codecov

codecov Bot commented Jun 9, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.08257% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 61.2%. Comparing base (6a15785) to head (59c406c).

Files with missing lines Patch % Lines
src/components/Metatags/Metatags.tsx 98.6% 1 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff            @@
##           master    #883     +/-   ##
========================================
+ Coverage    61.2%   61.2%   +0.1%     
========================================
  Files         348     349      +1     
  Lines       41373   41430     +57     
  Branches     1826    1808     -18     
========================================
+ Hits        25297   25353     +56     
- Misses      16033   16034      +1     
  Partials       43      43             
Files with missing lines Coverage Δ
src/components/Metatags/scholarDoctypes.ts 100.0% <100.0%> (ø)
src/components/Metatags/Metatags.tsx 95.8% <98.6%> (+0.5%) ⬆️

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Only an allowed whitelist of doctypes emits Google Scholar-compatible
meta tags (Highwire citation_*, PRISM prism.*, Dublin Core dc.*) on the
abstract page. Other or unknown doctypes omit them; Schema.org JSON-LD,
Open Graph, Twitter, canonical, and description tags remain for all
records. Doctype comparisons are normalized to lowercase.
@thostetler thostetler force-pushed the SCIX-877-google-scholar-doctypes branch from 59c406c to 91e13d0 Compare June 10, 2026 15:44
@thostetler thostetler marked this pull request as ready for review June 10, 2026 15:44
@thostetler thostetler requested review from Copilot and shinyichen June 10, 2026 15:44

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Risk summary: Low risk. Change is isolated to meta tag emission logic on abstract pages, with unit tests added/updated to cover allowed/blocked/missing/case-insensitive doctypes.

This PR implements SCIX-877 by gating Google Scholar–compatible meta tags (Highwire citation_*, PRISM prism.*, and Dublin Core dc.*) behind a doctype whitelist, while keeping Schema.org JSON-LD and general social/meta tags emitted for all records.

Changes:

  • Added a centralized doctype whitelist and a case-insensitive showsGoogleScholarTags predicate.
  • Wrapped Highwire/PRISM/Dublin Core meta tag emission in Metatags behind the new predicate and normalized legacy doctype comparisons to lowercase.
  • Added/updated unit tests to verify tag gating for whitelisted, removed, unlisted, missing, and case-variant doctypes.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
src/components/Metatags/scholarDoctypes.ts Introduces the Google Scholar doctype whitelist and showsGoogleScholarTags() helper.
src/components/Metatags/Metatags.tsx Gates Highwire/PRISM/DC meta tags behind the whitelist; keeps JSON-LD and other tags always-on.
src/components/Metatags/__tests__/Metatags.test.tsx Adds test coverage for doctype gating, including case-insensitive matching and missing doctypes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants