Skip to content

Pro footer current-year token renders literally after fallback to Neve Free #4602

Description

@pirate-bot

Summary

A footer copyright value saved through Neve Pro can display its current-year token as literal text after the site falls back to Neve Free. The expected result is frontend copyright text without an unresolved placeholder. The actual Free footer output reuses the saved value without expanding the token, leaving a visible variable in the site footer.

Customer context

Product / area: Neve Free, footer copyright
Version: Not provided; affected code is present from Neve 4.1.0 onward
Environment: A site previously used a Neve Pro trial and now uses the Free footer path
Integration / third party: Neve Pro Addon previously provided the copyright component
Reported error / symptom: An unresolved year variable remains visible in the footer
Impact: Public footer content displays an internal placeholder instead of the intended year

Reproduction notes

Reported workflow:

  1. Configure footer copyright during a Neve Pro trial with a dynamic year value.
  2. Transition to the Neve Free footer path after the trial.
  3. View the public footer.

Reported result: an unresolved year variable is visible. Code inspection confirms the same result for persisted {current_year} content when the Free fallback executes. No live runtime reproduction was performed.

Diagnosis

Conclusion

The defect is confirmed by the render-path mismatch. Neve Pro stores copyright content containing dynamic tags and expands it during rendering, while Neve Free later reads the same persisted setting and outputs it after sanitization only. For a saved current-year tag, this produces literal placeholder text. Commit fa189e825b introduced reuse of the persisted setting in the Free fallback, and tag containment places the change in v4.1.0.

Where this likely occurs

  • Free frontend fallback: header-footer-grid/Core/Builder/Footer.phpFooter::add_footer_component() lines 208–231 reads footer_copyright_content; lines 225–228 output the saved value without dynamic-tag parsing.
  • Available Free parser: header-footer-grid/functions-template.phpHFG\parse_dynamic_tags() lines 248–257 delegates tag expansion to Magic_Tags.
  • Current-year definition: header-footer-grid/Core/Magic_Tags.phpMagic_Tags::do_magic_tags() lines 88–110 performs replacement, and Magic_Tags::current_year() lines 385–392 returns the year.
  • Supporting Pro path: includes/modules/header_footer_grid/templates/component-copyright.php — Pro copyright template lines 15–20 reads the same component content and passes it through HFG\parse_dynamic_tags().
  • Regression boundary: Neve commit fa189e825b (feat: footer copyright enhancements) replaced the fixed Free credit with persisted footer_copyright_content; the commit is contained in v4.1.0 and later tags.

Engineering notes

The confirmed path applies when Neve considers the Pro implementation unavailable and invokes the Free footer fallback. Dynamic tags are documented as a Pro capability, but the Free path nevertheless consumes content previously authored by that Pro capability. The code evidence establishes the data-flow mismatch; the ticket does not identify whether the trial plugin was deactivated, removed, or otherwise became unavailable.

Test coverage status

e2e-tests/specs/customizer/hfg/hfg-copyright-component.spec.ts lines 3–30 covers only the default Free credit. The Pro suite e2e-tests/specs/sample-data/headerbooster/hfg-copyright-component.spec.ts lines 5–23 verifies expansion of a saved current-year token while Pro is active. No relevant coverage was found during inspection for retaining that value while transitioning to the Free fallback.

What to verify or explore next

  • May be worth reproducing with footer_copyright_content containing {current_year}, first with the Pro copyright component active and then with Pro unavailable.
  • May be worth confirming frontend behavior across the v4.0.1 to v4.1.0 boundary.
  • If reproducible, checking the existing Free and Pro Playwright copyright suites would establish behavior on desktop and mobile.

Unknowns / follow-up

  • The exact saved placeholder text and installed Neve version were not provided in the ticket.
  • The precise trial-to-Free transition state is unknown.

Confidence

Confidence: 96/100

Repository inspection confirms two independently testable Neve Free fallback defects. The frontend reuses Pro copyright data without resolving its dynamic year token, and legacy-site gating can expose that data without an editing control; git history identifies the v4.1.0 boundary that exposed both lifecycle failures.


Source: HelpScout #3431022627
Generated by bug-report-triage (ID: bug-report-triage_6a8eff8d624e91.81367320)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug-reportbug-report-triageregressionIssue represents a change in behavior from a previous version that is not intended or desired..

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions