Skip to content

v0.11.0

Latest

Choose a tag to compare

@marcoroth marcoroth released this 24 Sep 14:12
· 9 commits to main since this release
c54649b

Herb v0.11

Herb v0.11 ships alongside ReActionView v0.6. Check out the "What's new in Herb v0.11" post on the Herb Blog.

Rails World 2026@2x

Parser

Engine

Formatter

Linter

  • Lint a rendered page in the browser by @marcoroth in #2478, #2481 and #2568
  • Add defaultEnabledIn so version gate sees re-enabled rules by @marcoroth in #2613
  • Extend herb:disable with per-rule counts by @joelhawksley in #2351
  • Make cleanup rules less intrusive in the editor by @marcoroth in #1965
  • Scope Action View specific rules to actionview option by @marcoroth in #2223
  • Respect framework when parsing Action View helpers by @marcoroth in #2265
  • Make element context rules aware of where a file is rendered by @marcoroth in #2095
  • Export every registered rule from the package entrypoint by @marcoroth in #2102
  • Move shared rule utilities into src/utils/ by @marcoroth in #2320
  • Fix rule gaps behind skipped and failing tests by @marcoroth in #2146
  • Add dedent as an explicit dependency by @jleo3 in #2214
  • Remove Yeoman rule generator by @marcoroth in #2025
  • Fix html-no-duplicate-ids for interpolated helper IDs by @marcoroth in #1940
  • Update html-no-duplicate-ids to use ERBIterationBlockNode by @marcoroth in #1913
  • Update erb-no-output-control-flow to use ERBIterationBlockNode by @marcoroth in #1914
  • Improve erb-no-output-control-flow offense message by @marcoroth in #2008
  • Update erb-no-output-control-flow message for end tags by @akira-in-tech in #2205
  • Don't flag consumed helper in actionview-no-silent-helper by @marcoroth in #1971
  • Cover Component slot setters in actionview-no-silent-helper by @marcoroth in #2616
  • Don't flag case operands in erb-no-unused-literals by @marcoroth in #1978
  • Don't flag conditional predicates in erb-no-unused-literals by @viktorianer in #2637
  • Don't flag String literals in erb-no-unsafe-raw by @marcoroth in #2031
  • Improve unextractable tags in erb-no-duplicate-branch-elements by @marcoroth in #2033
  • Fix erb-no-duplicate-branch-elements autofixes by @marcoroth in #2051
  • Fix erb-no-trailing-whitespace autofix inside HTML tags by @marcoroth in #2016
  • Improve erb-no-unused-expressions offense message by @marcoroth in #2038
  • Allow attribute writes in erb-no-unused-expressions by @marcoroth in #2511
  • Allow slot setters on block local in erb-no-unused-expressions by @marcoroth in #2602
  • Improve erb-no-instance-variables-in-partials offense message by @marcoroth in #2046
  • Show erb-prefer-direct-output rewrite in offense message by @AG0708 in #2193
  • Don't flag empty data-* values in Action View tag helpers by @marcoroth in #2024
  • Make more attribute rules Action View Helpers aware by @marcoroth in #2004
  • Restrict erb-prefer-image-tag-helper to Action View by @marcoroth in #2078
  • Make erb-no-conditional-html-element framework aware by @marcoroth in #2641
  • Don't flag ERB string literals that can't be inlined safely by @marcoroth in #2129
  • Point strict locals offenses at the declaration they violate by @marcoroth in #2098
  • Infer strict locals from call sites in erb-strict-locals-required by @marcoroth in #2103
  • Point erb-strict-locals-required at the first line of the file by @marcoroth in #2147
  • Don't report duplicate strict locals diagnostics by @AG0708 in #2252
  • Improve locations for erb-strict-locals-comment-syntax by @marcoroth in #2267
  • Apply the strict locals rules to every template by @marcoroth in #2614
  • Allow a combined state condition in a boolean attribute by @marcoroth in #2385
  • Don't flag external scripts in html-require-script-nonce by @manrods in #2253
  • Fix SVG false positives in html-no-block-inside-inline by @FrancescoK in #2411
  • Let user files.include override default excludes by @joelhawksley in #2406

Linter Rules

New Rules
Autofixes
  • Implement autofix for erb-no-output-control-flow by @marcoroth in #2010
  • Fix erb-strict-locals-comment-syntax and implement autofix by @marcoroth in #2096

Linter CLI

Config

Language Server

Language Service

Analysis

  • Implement @herb-tools/analysis package by @marcoroth in #2168
  • Template dependencies, state tracing, and partial resolution by @marcoroth in #1667
  • Introduce ProjectIndex as the front door to a project's indexes by @marcoroth in #2185
  • Rename PartialCallerIndex to RenderGraph and answer both directions by @marcoroth in #2190
  • Collect what state a template depends on by @marcoroth in #2187
  • Work out which templates a state change affects by @marcoroth in #2188
  • Map state down to the nodes that read it by @marcoroth in #2189
  • Number a node the way SlotVisitor and SubtreeCompiler do by @marcoroth in #2279
  • Introduce SlotDependencies to say which state a slot reads by @marcoroth in #2280
  • Carry a page's state into the partials that render it by @marcoroth in #2281
  • Follow state through block parameters and the locals it is assigned to by @marcoroth in #2288 and #2289
  • Never call a constant an identity once the map travels by @marcoroth in #2290
  • Build the slot dependency map the way the host compiled the page by @marcoroth in #2293
  • Tell a loop apart from a block that runs once by @marcoroth in #2296
  • Don't treat a name in a string literal as a reference by @marcoroth in #2639

Core

Herb

Action View

Client

Dev Tools

Dev Server

Highlighter

Minifier

Playground

Rewriter

  • Import the package's own source in its loader test by @marcoroth in #2390

Tailwind Class Sorter

  • Make tailwindcss peer dependency optional by @G-Rath in #2101

Diff Engine

  • Don't emit a changeset for insignificant whitespace changes by @marcoroth in #2009

Ruby

Ruby CLI

Rust

Java

Visual Studio Code Extension

Documentation

Internal

libherb

Dependencies

Show all

New Contributors

Commits

Full Changelog: v0.10.4...v0.11.0