Skip to content

v1.0.17 — Analyzer correctness: 20 verified scoring bugs fixed (#148–#167)

Choose a tag to compare

@CyberCraftBangladesh CyberCraftBangladesh released this 23 Jul 15:04
· 6 commits to development since this release

Fixed

  • @power-seo/corestripHtml no longer truncates all remaining text when a <script>/<style> tag has no closing tag (only the opening tag is removed), fixing silent content loss for checks that re-strip entity-decoded prose mentioning <script> (#148). Inline tags (<b>, <em>, <a>, <code>, …) no longer insert a space when stripped, so keyphrases spanning inline formatting match again and word counts are accurate; block tags still separate words (#157).
  • @power-seo/coregetParagraphs no longer deletes content between the first and last <br> on a line (only two consecutive <br>s act as a separator), splits on all block-level closers (</ul>, </ol>, </table>, </figure>, </blockquote>, headings) instead of only </p>, and excludes <pre> blocks from paragraph analysis (#150, #160).
  • @power-seo/core — Keyphrases with non-word edges ("C++", "C#", ".NET") now match: keyword occurrence/density regexes use lookaround boundaries instead of \b (#158). extractTagContents('p') no longer matches <pre>/<picture> as paragraph openers (#162). Sentence splitting no longer breaks after common abbreviations (e.g., i.e., etc., vs., Mr., Dr.) (#165). ensureTrailingSlash no longer produces a double slash on bare domains (#167).
  • @power-seo/readability — Passive-voice detection requires an actual past participle (curated irregular list + suffix rule) instead of any word ending in t/en/ed, and the percentage is computed per sentence and clamped to 100 (#156). Transition words are matched with word boundaries, so "distillery"/"tribute" no longer count (#163). ARI and Coleman-Liau count letters and digits only (spaces/punctuation no longer inflate grades by ~5 levels), and Flesch/FKG are computed from raw ratios instead of pre-rounded averages (#165). <pre>/<code> content is excluded from all readability statistics (#151).
  • @power-seo/content-analysis — Bare keyphrases are no longer classified navigational by insertion order: intent defaults to informational unless real navigational modifiers are present, which also removes fabricated "competing intents" warnings for short keyphrases (#149, #167). The local sub-type no longer triggers on any keyphrase containing "in" (#163).
  • @power-seo/content-analysis — FAQ/PAA question detection requires a real question (ends with ? or starts with an interrogative); answer paragraphs are searched only within the question's own section, so declarative headings with an unrelated trailing paragraph no longer score full AEO Q&A points (#155). TL;DR detection requires the bullet list to follow the summary heading within its section, and the heading must be a real summary title (#163).
  • @power-seo/content-analysis — Stateful /g regexes used with .test() were made non-global in YMYL disclaimer, affiliate-link, and References-section detection, eliminating flip-flopping results between identical calls and within-call affiliate undercounting (#154).
  • @power-seo/content-analysis — YMYL detection requires two distinct category terms, matches contentCategory by exact token (a "Newsletter" category no longer triggers news, "syntax" no longer triggers tax), and phrase-ifies over-broad terms like "recall"; shared detection lives in shared-ymyl.ts (#159).
  • @power-seo/content-analysis — "ad hoc" no longer counts as an FTC disclosure and #ad/#sponsored hashtags are matched correctly (#163); "paragraph"/"photography" no longer count as charts in original-research detection (#163); CTA-intent alignment scans link and button text instead of all prose, so "Open Graph" in body copy no longer registers as a navigational CTA (#163); sentence-initial "According to Jane Doe" is detected, <cite>/<figcaption> containing nested markup are counted, and the expert-consensus source type is no longer dead code (#164).
  • @power-seo/content-analysis — Link parsing no longer drops hrefs containing # fragments (external/internal/nofollow/competing link checks now see them) (#161). Table-of-contents detection requires ≥2 anchor links inside one list instead of matching any list plus any later anchor in the document (#166).
  • @power-seo/content-analysisintent-related-coverage returns na for unrecognized keyphrase shapes instead of a dead-end 0/5 and adds checklist/tips/examples/tutorial mappings; secondary-keyphrases returns na when no seeds are configured; intent-depth-match enforces documented upper bounds for informational/commercial content; single-h1 no longer penalizes body content that starts at H2 when the page title serves as the H1; author-schema descriptions report a consistent field count; the E-E-A-T overall score is graded from pillar points instead of flat tiers, removing multi-point cliffs; future publish/modified dates no longer earn freshness credit (#167).