unstale

pypi / justhtml

justhtml

What changed in justhtml 1 to 3, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-25.

1 breaking12 security2 new APIs and options1 performance11 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.2.6 on npm

justhtml 317 changes

Breaking changes 1

  • Non-ASCII IPv4 octets are rejected without conversion errors on Unicode digit lookalikes.

    3.15.0release notes

Security 2

  • Indentation is bounded to prevent quadratic output expansion from deeply nested lists.

    3.15.0release notes

  • Scanning remains linear across repeated HTML comment markers, including with default sanitization and the event stream API.

    3.15.0release notes

New APIs and options 2

  • Per-attribute literal and Regex(...) value allowlists are supported while preserving URL and inline-style validation.

    3.15.0release notes

  • CSS properties can have literal-string and Regex(...) value allowlists, including explicit permission for CSS variable references.

    3.15.0release notes

Performance 1

  • Class and attribute token sets are shared within selector queries, and attribute caches are allocated only when needed.

    3.14.0release notes

Fixes and other changes 11

  • Whitespace after a <base>, <link> or <meta> that implies the <head> stays in the head, even when sanitization removes the metadata element.

    3.15.0release notes

  • CSS declarations, URL lists, encoding labels, and streamed doctypes use ASCII whitespace rules.

    3.14.0release notes

  • An open <button> stays nested when an object, applet, marquee, table cell, caption, or integration point separates it from another open <button>.

    3.14.0release notes

  • Non-ASCII whitespace is preserved in class and attribute tokens, selector identifiers, HTML cleanup, and pretty output.

    3.14.0release notes

  • Malformed :nth-child() and :nth-of-type() formulas are rejected without accepting Unicode digits or Python integer syntax.

    3.14.0release notes

  • NUL after a less-than sign is ignored in HTML text and CDATA at HTML/MathML integration points, while foreign-text and RAWTEXT replacement rules are preserved.

    3.14.0release notes

  • Definition-list items remain open across intervening special elements such as search.

    3.13.1release notes

  • Doctypes are excluded from element selectors, direct matching, and structural sibling indexing.

    3.13.1release notes

  • HTML5 frameset eligibility is preserved after ordinary body elements, comments, and raw-text content.

    3.13.1release notes

  • Frameset replacement is blocked after literal or character-reference replacement characters in foreign content.

    3.13.1release notes

  • Root attribute overrides are honored when deeply cloning nodes, elements, and templates.

    3.13.1release notes

justhtml 110 changes

Security 10