Commit Graph

14 Commits

Author SHA1 Message Date
peptiderepo
0bbb75fd26 fix(schema): v0.6.2 — move Drug/FAQ injection to wpseo_schema_graph; fix peptide 500
Root cause: inject_graph_pieces() added plain PHP arrays to wpseo_schema_graph_pieces.
Yoast Schema_Generator::filter_graph_pieces_to_generate() calls get_class() +
is_needed() on every piece expecting Abstract_Schema_Piece objects — a plain array
produces: PHP Fatal: get_class(): Argument #1 ($object) must be of type object,
array given. All peptide monograph pages returned HTTP 500; non-peptide pages were
unaffected (is_singular guard).

Fix: remove wpseo_schema_graph_pieces hook entirely. New inject_graph_nodes() method
hooks wpseo_schema_graph at priority 12 (after enrich_webpage_piece at 11), which
receives the fully-assembled graph as array-of-arrays — safe for plain array appends.

Also adds regression test (test-jsonld-peptide-piece.php) that:
- Reproduces the v0.6.1 get_class(array) TypeError (fails-before)
- Confirms inject_graph_nodes Drug+FAQ emission is correct (passes-after)

Agent-Session: jsonld-peptide-piece-fix v0.6.2
2026-06-13 07:12:46 +00:00
peptiderepo
118f301705 peptide-repo-core v0.6.1: fix Yoast webpage-type TypeError on singular pages (#20)
Accept string|array in retype_to_medical_webpage (Yoast wpseo_schema_webpage_type passes array on singular pages); normalize @type comparison; add regression test.

QA: APPROVE — qa-reviews/peptide-repo-core/2026-06-13-077c4b0e518f682721abe6a115eac9bb2bf18186.md

Agent-Session: jsonld-webpage-typefix v0.6.1 merge
2026-06-13 13:52:46 +07:00
peptiderepo
e9d97b51e2 peptide-repo-core v0.6.0: peptide schema backfill + Yoast-integrated Drug/MedicalWebPage/FAQ (#19)
Backfill psa_*->_pr_* meta (migration 0004 + PubChem fallback); enrich Drug node with {permalink}#drug @id + molecularFormula/Weight/alternateName; rewrite emitter into Yoast schema graph (MedicalWebPage retype + FAQPage, no duplicate nodes).

QA: APPROVE (independent) — qa-reviews/peptide-repo-core/2026-06-13-817690c1b6ec2118ddcf3b8cfe8bc5ea7f3933b3.md

Agent-Session: peptide-schema-backfill v0.6.0 merge
2026-06-13 13:09:56 +07:00
peptiderepo
6015b3e5c3 ci(audit): retry PR-association check (#16)
* ci(audit): retry PR-association check to stop false positives on squash-merges

listPullRequestsAssociatedWithCommit is eventually-consistent after a squash
merge; the single immediate call intermittently flagged legit merges as
'direct push to main'. Now polls up to 5x/10s before opening an issue.

Agent-Session: cto audit-race-fix

* chore: bump plugin header to 0.5.0 to match PR_CORE_VERSION constant
2026-06-09 13:39:18 +07:00
peptiderepo
708204c3b6 PR Core v0.5.0: Add Repo Daily CPT, taxonomy, and metaboxes
- Register repo_daily CPT at /daily/[slug]/ for editorial publications
- Register repo_daily_category taxonomy with 4 seeded terms
- Add Repo Daily metabox for author byline and clinical review flag
- Bulk-migrate _repo_daily_author on autoblogged posts (psa_source)
- Update ARCHITECTURE.md with content-type table and scanner scope
- Update CONVENTIONS.md with repo_daily meta field extension pattern
- Bump version to 0.5.0, add CHANGELOG entry

Closes v0.5.0 scope.
2026-04-27 15:33:28 +00:00
peptiderepo
c52cf9b3d6 feat: verification scanner + admin UI (PR Core v0.4.0)
Implements recurring verification scanner, dashboard widget, per-post sidebar meta box, reader-facing last-verified display, and unified settings panel. Bumps to v0.4.0.

Co-authored-by: peptiderepo <peptiderepo@users.noreply.github.com>
2026-04-27 12:24:57 +07:00
peptiderepo
3050292fcf fix(cpt): remove rest_namespace so Gutenberg block editor can load peptide posts (v0.3.2)
Removes rest_namespace => pr-core/v1 from CPT registration. Gutenberg fetches wp/v2 hardcoded — custom namespace caused 404 and editor crash on all 89 peptide entries. WordPress defaults to wp/v2.

QA: PASS (2026-04-25-9d4ce64c.md)
CI: green
PR: #5
2026-04-25 01:57:30 +07:00
peptiderepo
21d05427d8 hotfix: bump to v0.3.1 2026-04-24 12:07:40 +07:00
peptiderepo
d5376d1612 chore: bump version to 0.3.0 2026-04-24 10:03:03 +07:00
peptiderepo
bb3967a071 fix(repo): drop stale TAX_FAMILY references (v0.2.1 P1 hotfix) (#2)
v0.2.0 removed TAX_FAMILY from PR_Core_Peptide_CPT but left two stale
references in PR_Core_Peptide_Repository:
  - find_all() family filter branch (class-pr-core-peptide-repository.php:95-102)
  - post_to_dto() families taxonomy lookup (class-pr-core-peptide-repository.php:138)

JSON-LD emission on single-peptide templates called find_by_id() ->
post_to_dto() which hit the undefined constant and killed every peptide
detail page render mid-wp_head().

Fix:
  - family filter is silently ignored until a future minor bump
    removes it from the REST schema.
  - post_to_dto() hardcodes $families = [] so the DTO still carries
    the field (REST response shape unchanged for existing clients).

Out-of-scope follow-ups:
  - Post-mortem on why the v0.2.0 QA gate missed this (unit tests
    exercised the CPT class in isolation, not the repository's
    consumption of its constants).
  - Add an integration-style test for JSON-LD emission on a single
    peptide so any future CPT-class refactor catches repository drift.

Co-authored-by: peptiderepo <peptiderepo@users.noreply.github.com>
2026-04-22 16:56:42 +07:00
peptiderepo
f086b89e2d feat(cpt): consolidate peptide CPT with PSA; drop pr_peptide (v0.2.0) (#1)
Consolidates the `peptide` CPT under PR Core ownership, dropping the `pr_peptide` slug-collision that was 404ing all 89 peptide detail pages.

- POST_TYPE: pr_peptide -> peptide
- TAX_CATEGORY: pr_peptide_category -> peptide_category
- TAX_FAMILY + pr_peptide_family taxonomy removed
- Defensive post_type_exists/taxonomy_exists guards on both registrations
- Args harmonized as superset of PSA + prior PR Core (adds thumbnail support)
- Activation hook + init:999 version-change flush handler
- Uninstall scoped to _pr_core_authored flag (PSA-authored posts survive)
- Plugin version 0.1.1 -> 0.2.0, CHANGELOG in same commit
- ARCHITECTURE.md + CONVENTIONS.md updated with CPT ownership rule

QA gate verdict: PASS (qa-reviews/peptide-repo-core/2026-04-22-874f93b.md)
Sibling release: peptiderepo/peptide-search-ai#15 (PSA v4.5.0)

Known follow-up: manage_peptide_content capability is not granted to any role as of v0.2.0. No current UI/theme reads or writes PR Core-defined meta keys, so no regression. Follow-up thread to decide role assignment.
2026-04-22 16:44:04 +07:00
peptiderepo
c70352eb40 fix: two fatal errors preventing plugin activation (v0.1.1)
1. NAMESPACE is a PHP reserved keyword — renamed to REST_NAMESPACE
   in the REST controller. This caused a parse error on activation.

2. Autoloader can't resolve PR_Core class — the class name equals the
   autoloader prefix exactly, so stripping "PR_Core_" yields an empty
   suffix and the wrong filename. Added explicit require_once in
   bootstrap, same pattern as PRAutoBlogger.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-19 16:13:21 +07:00
peptiderepo
c9361b0283 fix(ci): restructure CI for PHP 8.1+ and proper PHPCS setup
- Drop PHP 8.0 from matrix — DTOs use readonly properties (8.1+)
- Add composer.json with PHPCS/WPCS as dev dependencies
- Add phpcs.xml.dist for WordPress coding standard config
- Use dealerdirect/phpcodesniffer-composer-installer for auto path setup
- Separate lint jobs: PHP syntax (8.1/8.2/8.3) + PHPCS + file-size
- Update Requires PHP header to 8.1
- Update ARCHITECTURE.md file tree

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-17 07:43:01 +07:00
peptiderepo
808b2509d8 feat: initial peptide-repo-core plugin (v0.1.0) — canonical schema sprint
Implements ADR-0002: canonical peptide schema as shared data layer for
the peptiderepo.com ecosystem. All Tier 1 tools (Reconstitution Calculator,
Dosage Reference, Legal Status Tracker, PSA enhancements) build on this.

Includes:
- pr_peptide CPT with REST, taxonomies, 11 meta fields
- 3 custom tables: pr_dosing_rows, pr_legal_cells, pr_ai_candidate_queue
- Sequential migration runner with schema versioning
- 4 typed DTOs and 4 repository classes (full CRUD)
- REST API (pr-core/v1): 6 endpoints (read public, write auth-gated)
- Admin UI: 3 meta boxes, custom columns, AI candidate queue page
- Shared disclaimer component (shortcode + static API)
- JSON-LD Drug schema emission on single peptide pages
- Seed data fixture (3 peptides, 10 dosing rows, 5 legal cells)
- Full teardown in uninstall.php
- CI: PHP lint 8.0-8.2, PHPCS WordPress, 300-line check

All 22 PHP files under 300 lines. Highest: peptide-cpt at 265.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-17 07:36:12 +07:00