skip to content →
[ CHANGELOG / FIELD_LOG ]Auto-recorded on merge to main

What we shipped.

One line per merged pull request, dated by merge day. Generated by the same automation that pushes the code, so the only delay between "we shipped it" and "it appears here" is a CI run.

What changed most recently in VectraSEO?

The changelog lists the latest merged pull requests by release date, with the newest shipped change first and older releases kept in the project archive.

Last updated·356 shipped changes across 51 releases

last_update2026-06-30
total_releases51
total_changes356
elapsedtoday
[ RELEASE / 2026-06-30 ]
2 changesTuesday, June 30, 2026
  1. PR_1071
    CHANGEDsecurity(ssrf): pin DNS resolver on CMS publish + guard sitemap fetch

    Closes two SSRF gaps that are still live on main. These came out of QA on the stale security/fix-critical-high-findings branch (~6 weeks / 1102 commits behind): most of that...

    @cigan1
  2. PR_1069
    CHANGEDfeat(autofix): orphan sweeper + cancel button + republish retry/error visibility (PR #1066 deferred)

    Ships the deferred items from PR #1066 (autofix_batch durability) plus the fix for today's prod-QA "Fix all" no-op finding. Two commits:

    @cigan1
[ RELEASE / 2026-06-29 ]
9 changesMonday, June 29, 2026
  1. PR_1066
    CHANGEDfix(autofix): durable autofix_batch — checkpoint/resume, deadline-aware continuation, dedup, idempotency

    A 17-fix "Fix all" on a live project (EchoThread, 2026-06-29) exceeded the 15-min Lambda budget. The pipeline FIFO message was redelivered 3× (maxReceiveCount=3), **ea...

    @cigan1
  2. PR_1063
    CHANGEDfix(affiliates): invite non-partners to apply instead of erroring

    QA against prod surfaced that a signed-in user who isn't a partner, navigating directly to /affiliates, saw only a bare red "Your account is not yet a partner." with no pa...

    @cigan1
  3. PR_1064
    CHANGEDfix(migration): hide create form when the feature flag is off

    QA against prod (where migration_monitor_enabled is dark) surfaced that /projects/:id/migration rendered a fully submittable "New migration" form above a red *"Migration...

    @cigan1
  4. PR_1061
    CHANGEDfeat(migration): Trestle P3 — post-launch verification monitor

    Closes the Trestle closed loop (epic #1056). Once a migration is live, the approved redirect map frozen in P2 becomes a contract: every old URL is verified against its a...

    @cigan1
  5. PR_1060
    CHANGEDTrestle P2 — staging validation + approval queue (draft→in_review→approved)

    Third phase of the migration monitor (epic #1056), on top of merged P0 (#1057) and P1 (#1059). Turns the free P1 draft map into an approved, frozen redirect set — th...

    @cigan1
  6. PR_1059
    CHANGEDfeat(migration): Trestle P1 — deterministic draft redirect map

    Second phase of the migration monitor, building on P0 baseline ingest (PR #1057, merged). Turns the baseline's old URLs + the new site's sitemap(s) into a **deterministic ol...

    @cigan1
  7. PR_1057
    CHANGEDfeat(migration): Trestle P0 — pre-migration baseline ingest (3rd monitor_type)

    Ships P0 of epic #1056 (Trestle — ecommerce migration redirect protection) as a third VectraSEO monitor species, monitor_type="migration", mirroring the AI-visibility moni...

    @cigan1
  8. PR_1054
    CHANGEDfeat(autofix): read the live page as source of truth, never overwrite edits

    One-click Auto-Fix / "Fix all" / Auto-Pilot previously patched VectraSEO's stored S3 snapshot and republished it — which could silently **squash a customer's out-of-band edi...

    @cigan1
  9. PR_1052
    CHANGEDfeat(autofix): one-click "Fix all" for Insights recommendations

    Adds a single Fix all button to the Insights / "Needs attention" recommendation surface (project overview and /insights). One click plans, confirms, and dispatches **o...

    @cigan1
[ RELEASE / 2026-06-28 ]
8 changesSunday, June 28, 2026
  1. PR_1050
    CHANGEDfix(autofix): keep the AEO answer block grounded (lands the last 2/3, epic #1034)

    Follow-up to #1048. After the gate-layer fix deployed, a re-run of "Fix all 3 pages" landed 1/3 — the other two still held on truth. A read-only diagnostic against the liv...

    @cigan1
  2. PR_1048
    CHANGEDfix(autofix): land additive fixes by delta-gating + truth-repair (Fix 2, epic #1034)

    Closes the loop opened by #1046 (which made the *failure* observable). This makes the fix *succeed*.

    @cigan1
  3. PR_1046
    CHANGEDfix(autofix): surface terminal fix disposition on Site-Health issues

    One-click Site-Health Auto-Fix set the monitor issue to fix_status=submitted at dispatch, but nothing ever advanced it past submitted once the job finished. A gate-held,...

    @cigan1
  4. PR_1044
    CHANGEDdocs(custom-api): document PUT update/republish requirement

    Documents that VectraSEO republishes a live post via PUT {publish_path}/{id} (edits, scheduled re-publishes, one-click Auto-Fix / "Fix all"), and that a destination servin...

    @cigan1
  5. PR_1041
    CHANGEDfix(monitors): make "Fix all N pages" outcome loud and verifiable

    A user clicked Fix all 3 pages on a Site-Health AEO rule, saw it "do some work," then the button reset to Fix all 3 pages and the issue cards looked unchanged — so it ap...

    @cigan1
  6. PR_1039
    CHANGEDfeat(autofix): Auto-Pilot scheduled remediation (One-Click Auto-Fix Phase 4)

    Opt-in, hands-off remediation. After each Site-Health monitor scan, VectraSEO acts on the findings automatically:

    @cigan1
  7. PR_1037
    CHANGEDAuto-fix Phase 2 + 3: batch fix-all, Tier B connected CMS, Tier C change-sets

    Completes the One-Click Auto-Fix epic (#1034) — Phase 2 (Site-Health issues on the rail) and Phase 3 (Tier B connected CMS + Tier C change-sets + schema/alt fixers). Builds dire...

    @cigan1
  8. PR_1035
    CHANGEDfeat: One-Click Auto-Fix ("Implement") — Phase 1 (Tier A authored posts)

    Closes part of #1034. Turns Insights recommendations and Site-Health monitor issues from *suggestions* into a one-click Implement action: read the live page → apply a minima...

    @cigan1
[ RELEASE / 2026-06-26 ]
2 changesFriday, June 26, 2026
  1. PR_1032
    CHANGEDAI Visibility Improvements
    @cigan1
  2. PR_1029
    CHANGEDfix: honor disabled image generation for hybrid posts
    @cigan1
[ RELEASE / 2026-06-25 ]
3 changesThursday, June 25, 2026
  1. PR_1027
    CHANGEDfix: allow versioned code years in freshness gate
    @cigan1
  2. PR_1025
    CHANGEDfix: honor casual quality bar in publish pipeline

    The affected project stored mode=casual while still carrying default explicit thresholds. The resolver applied the Casual preset and then overwrote it with those stale fields. W...

    @cigan1
  3. PR_1023
    CHANGEDfeat(posts): automatically delete archived posts past retention

    Implements automatic deletion logic for archived and orphaned posts past a configurable retention period (default 30 days) during the hourly schedule sweep.

    @cigan1
[ RELEASE / 2026-06-22 ]
2 changesMonday, June 22, 2026
  1. PR_1021
    CHANGEDfix(gsc): clear stale Google noindex when live probe is clean

    Index Coverage badges on the posts list (IndexBadge.vue) show a critical red "Conflict" (excluded_noindex_sitemap_conflict) for posts that are actually `index,follow...

    @cigan1
  2. PR_1019
    CHANGEDdocs(content-brief): internal reference + expanded public setup guide

    Documents the Content Brief (the editorial / ICP contract that constrains both topic selection and writing for the content engine), which previously had no standalone refere...

    @cigan1
[ RELEASE / 2026-06-21 ]
6 changesSunday, June 21, 2026
  1. PR_1017
    CHANGEDfeat(settings): document every project setting + warn on unsaved changes

    The Project Settings page (/projects/:id/settings) is dense — 6 sections, ~40 controls — but many functions had no explanation, and editing was risky because there was **no pr...

    @cigan1
  2. PR_1015
    CHANGEDfeat(gaps): intent-weighted, striking-distance content prioritization

    Closes the loop between the GSC signals VectraSEO already collects and the topics it generates. Today gap selection is ranked only by Gemini's heuristic priority_score; th...

    @cigan1
  3. PR_1014
    CHANGEDfix(settings): scope "Use spec defaults" to the active project

    Clicking Use spec defaults on the custom-API publish contract filled in emcognito-specific values in every project, regardless of which project you were in.

    @cigan1
  4. PR_1012
    CHANGEDfeat(monitor): self-identifying X-VectraSEO-Monitor header + public /bot page

    A customer asked how to filter VectraSEO traffic out of their analytics. The honest answer surfaced two gaps:

    @cigan1
  5. PR_1010
    CHANGEDfix(url_probe): harden robots-meta content regex against apostrophe truncation

    Hardens url_probe._has_noindex's content= attribute matcher against the same apostrophe-truncation footgun that PR #1008 fixed in duplicate_metadata.

    @cigan1
  6. PR_1008
    CHANGEDfix(duplicate_metadata): stop truncating meta descriptions at apostrophes

    Monitor mon_10da5dec2bc24586 (echothread.io) flagged a duplicate_metadata WARNING: /terms/ and /privacy/ reported an identical meta description of "echothread". Su...

    @cigan1
[ RELEASE / 2026-06-20 ]
4 changesSaturday, June 20, 2026
  1. PR_1005
    CHANGEDtest(gemini,truth-layer): update stale tests for provider fallback + #650 synthesis

    Two unit tests were red on main (surfaced during QA of an unrelated soft-404 fix). Both asserted contracts that intended features have since superseded — there is no p...

    @cigan1
  2. PR_1004
    CHANGEDfix(soft_404): stop flagging canonical-to-another-real-page as a soft 404

    On alaskaroadtrip.com (proj_28112aca8eaa4b15, monitor mon_10da5dec2bc24586) two blog articles were shown as live: Looks like a soft 404 in index-coverage and docke...

    @cigan1
  3. PR_1001
    CHANGEDbuild(deps): bump undici from 7.24.7 to 7.28.0 in /frontend

    Bumps undici from 7.24.7 to 7.28.0.

    @dependabot[bot]
  4. PR_999
    CHANGEDSEO recommendations — 2026-06-20

    Source reports: VectraSEO SEO & AEO Remediation Plan (scan 2026-06-20 01:05 UTC) and GSC SEO recommendations (2026-06-20 01:17 UTC).

    @cigan1
43 older releases kept in CHANGELOG.md