chore(deps): update dependency djlint to >=1.44.0 #621

Open
renovate wants to merge 1 commit from renovate/djlint-1.x into main
Member

This PR contains the following updates:

Package Change Age Confidence
djlint >=1.40.6>=1.44.0 age confidence

Release Notes

djlint/djLint (djlint)

v1.44.0

Compare Source

Feature
  • New --allow-empty-input option, and the matching allow_empty_input config key, exits 0 instead of 2 when the given paths match no files.
Fix
  • An html close tag inside an inline {% if %}...{% endif %} no longer dedents everything that follows it by one level, collapsing nested structures toward column 0 - a regression in 1.43.0. A close tag already at the content level of the template block it sits in is held there, but the level it was denied was then taken off the end of the line instead, so {% if r %}</strong>{% endif %} moved the rest of the block left. The matching open tag never took a level to give back, since {% endif %} had already returned it.
  • A run where every file found was skipped by exclude, extend_exclude, use_gitignore or require_pragma now exits 0 instead of 1. Skipping them is the configuration doing its job, and it is what lets exclude work under pre-commit, which passes the names of every staged file. Paths that match no files at all now exit 2 rather than 1, so exit 1 means only that djLint found something to report.
  • An unhandled error exits 2 instead of 1, so a crash is no longer indistinguishable from a lint error. The traceback is still printed.
  • An unrecognized --profile, or profile in a config file, is now a usage error. A typo used to lint with a silently different rule set and exit 0, and raised KeyError with --require-pragma.
  • A directory whose name matches the file extension (build.html/) is no longer picked up as a template and opened as a file, crashing the run.
  • No files to check! is written to stderr instead of stdout, where formatted code is written.
  • Input piped to djlint - --reformat that --require-pragma skips is handed back byte for byte instead of being replaced by No files to check!.

v1.43.2

Compare Source

Fix
  • blank_line_before_tag no longer inserts a blank line when the previous line opens a block and increases the indentation, e.g. between <div> and {% block %}. Since 1.41.0 blank_line_after_tag has left the closing edge of a block alone ({% endblock %} before </div>), while the opening edge kept its padding, so a template using both options came out lopsided.

v1.43.1

Compare Source

Fix
  • H025 no longer reports the closing tag of a multi-line <script> or <style> as an orphan - a regression in 1.43.0. A genuinely unmatched </script> is still reported.

v1.43.0

Compare Source

Feature
  • New --stdin-filename option gives content piped in on stdin (djlint -) its real path, so per-file-ignores matches against that name and linter messages report it. Per-file ignores were previously dead for piped input, since nothing matches the name -. Path separators are normalized as they are for files on disk.
Fix
  • An apostrophe inside a template tag nested in an attribute value (title="{% translate "You don't have permission" %}") no longer swallows the rest of the document, which made H025 report every enclosing element as an orphan. A template tag in a value is now skipped whole unless it holds a >, so a quoted literal like a="{{" is still left alone.
  • A line that starts with a closing tag and ends with a whole tag (</span>tail<textarea>y</textarea>) unindents again; everything after it stayed one level too deep.
  • A template block tag followed by a whole html tag on the same line ({% endif %} <td class="x">y</td>) indents as a block tag again, so {% endif %} unindents and {% else %} aligns with its {% if %}. A line only takes that shape once the tag fits on one line, so reformatting an already formatted file moved it.
  • A tag opened after the end of a verbatim block on the same line (</pre> <span>x) is tracked again; its closing tag took a level from a tag opened before the block, dedenting that tag's siblings.
  • A template control block written across lines is kept that way when it opens against a tag (<div>{% if x %}), and the choice is no longer applied to the wrong block. Blocks were paired with the source by position, which does not line up with the expanded html; they are now matched by tag and contents.
  • A tag whose style, srcset, data-srcset or sizes value was written over several lines is no longer spread over multiple lines and pulled back together on the next run. max_attribute_length is now measured against what is written out, not against padding that the rewrite drops.
  • A <pre> or <textarea> opened on a line that also holds a self-contained comment (<pre>x<!--c-->) is recognized as opening a verbatim block again. Its contents were re-indented instead of left alone, and the closing </pre> gained an indent level on every run - unbounded whitespace growth inside preformatted text.
  • A closing tag that starts its line no longer dedents when the tag it closes was opened after text on an earlier line (text <b>bold / </b> tail). The loss accumulated, so a document repeating that shape drifted further left with each occurrence. A closing tag with nothing to pair against still dedents as before.
  • A < inside a one-line <script>, <style>, <textarea> or <title> no longer counts as a tag when indenting. <script>var a = '<span>'</script> left a phantom open <span> on the tag stack, leaving everything after it one level too deep.
  • An inline element that opens after text on its line and closes on a later line no longer dedents everything that follows it by one level (text <b>bold / more</b> tail inside a <p>) - a regression in 1.40.8. The wrong output was idempotent, so it survived later runs.
  • A Go template comment {{/* ... */}} is no longer read as a block close tag. It starts with {{/, the handlebars block-close prefix, so it popped a block off the stack: H037 reported Duplicate attribute found. for mutually exclusive attributes such as <a {{if .A}}href="a"{{else}}{{/* c */}}href="b"{{end}}>, and the formatter unindented the rest of the block. A comment renders as nothing, so H037 no longer treats one as a template-generated attribute name prefix either.
  • A tag that merely touches an ignored block is no longer treated as being inside it. A tag ending exactly where an ignored block starts - such as {% if x %}{# comment #} - was skipped by the linter, most visibly making T038 report End tag has no matching block tag for a balanced {% if %}. Affects every rule that skips ignored blocks (H025, H037, H041, H042, T002, T003, T027, T038, T039) and every kind of ignored block.
  • A bare djlint:off pragma no longer ignores the tag written immediately before it. <img>{# djlint:off #} silently dropped every error on that <img>, while <img>{# djlint:off H013 #} correctly reported it - a pragma covers what follows it, not what precedes it.

v1.42.3

Compare Source

Fix
  • Attribute names containing punctuation beyond -, ., :, @ and * no longer stop a tag from being wrapped over multiple lines. The attribute parser now accepts any character HTML allows in an attribute name, so Alpine key modifiers (@keydown.prevent.?), Angular bindings ((click), [disabled]) and Vue shorthands (#slot) are formatted like every other attribute instead of leaving the whole tag on one long line. Angular bindings also reach --format-attribute-js-json for the first time, which already listed them.
  • An unquoted attribute value with a template tag glued to the rest of the value (e.g. src={{ MEDIA_URL }}/logo.png, href={{ .Permalink }}#{{ .Anchor }}) is no longer split into a truncated value plus a bogus standalone attribute when attributes are wrapped; it stays one value, quoted when spread.

v1.42.2

Compare Source

Fix
  • Attributes containing ${...} inside a quoted value (e.g. JS template literals like :name="`x[${i}]`") respect max_attribute_length again and are spread over multiple lines - a regression in 1.40.6. Unquoted Mako-style ${...} expressions in tags are still left unformatted.
  • A stray <!-- that is not a real HTML comment (for example inside a {# ... #} template comment or inside a <textarea>/<pre>) no longer swallows the rest of the document. This fixes false H025 orphan-tag reports and over-indentation of the tags that follow - a regression in 1.40.6.
  • Handlebars triple-stache {{{ ... }}} and raw-block {{{{ ... }}}} expressions used as tag attributes are tokenized correctly again, fixing false H025 orphan-tag reports - a regression in 1.40.6.
  • A quoted literal brace in an attribute value (e.g. data-x="{{") no longer makes the tokenizer scan into later content looking for a matching }}, which could collapse <pre>/<textarea> whitespace - a regression in 1.40.6.
  • Spacing the }} of a handlebars {{#if}}/{{#each}} block-open tag is now idempotent; it no longer leaks a trailing space into the following {{...}} tag on later formatting passes.
  • T038 no longer reports block tags that appear only inside a handlebars comment ({{!-- ... --}}, {{! ... }}) or inside a handlebars raw block ({{{{raw}}}} ... {{{{/raw}}}}).
  • T039 no longer reports handlebars raw-block delimiters ({{{{raw}}}} / {{{{/raw}}}}) as unclosed template tags.
  • Malformed tag attributes that the attribute parser cannot fully parse (e.g. a stray < or dangling =) are now left untouched instead of having the unparsable characters silently dropped when attributes are wrapped.
  • A < used as a less-than operator inside a template expression in text or <script> content (e.g. ${a<b}, {{a<b}}) is no longer mistaken for an HTML tag start, which could merge or drop following content and break idempotency - a regression in 1.40.6.
  • Unquoted attribute values containing : or / (e.g. href=https://example.com/page) are no longer split into a truncated value plus a bogus standalone attribute when attributes are wrapped - a regression in 1.40.6.
  • A nameless ="value" attribute is no longer rewritten with the literal attribute name None; malformed attributes are left untouched.
  • Trailing whitespace inside an indented <textarea>/<pre> is preserved instead of being collapsed by whitespace cleanup (it is verbatim content).
Performance
  • Detecting ignored/verbatim blocks ({% comment %}, {% blocktrans %}, {% filter %}, <pre>, <script>, etc.) is dramatically faster on templates with many {% ... %} tags. A lazy [ ]*? before the block keywords caused pathological backtracking; the equivalent greedy [ ]* removes it, cutting reformat time on large template-heavy files by roughly 5x.

v1.42.1

Compare Source

Fix
  • H017 and H018 no longer style command, keygen and menuitem - elements that were removed from the HTML standard.
  • Enabling H018 together with H017 or H035 now prints a warning when linting - they enforce opposite void tag conventions, so only one should be on.
Changed

Linter rule defaults were reviewed against a simple bar: on by default means correctness, security, clear accessibility, or a consistency check the formatter also enforces - with near-zero false positives. Four rules moved to opt-in (--include=...):

  • T003 (endblock names): neither Django nor Jinja requires a name on {% endblock %}; the name demand is a style preference. The correctness checks T003 used to bundle - unclosed {% block %}, orphan {% endblock %} and mismatched endblock names, all hard template errors - moved into T038, which stays on by default, so nothing real is lost when T003 is off.
  • T002 (double quotes in tags): engines accept both quote styles, no autofix exists, and quote-style rules are the canonical example of style checks that don't belong in a default tier.
  • H006 (img width/height): valuable performance advice (browsers map the attributes to a default aspect-ratio, preventing layout shift) but performance rather than correctness, and the dimensions are frequently unknowable in a template - user uploads, CMS urls, art-directed <picture> sources - so the rule demands data the author may not have.
  • H031 (meta keywords): major search engines have ignored keyword metadata for over a decade; recommending that it be added is outdated advice. The niche intranet-indexer use case keeps the rule available via --include=H031.
  • H042 (label/for) moved the other way - from opt-in to on by default - after its false-positive class was removed: the rule now checks a file only when nothing in it could render an id invisibly. Any {{ ... }} output (form widgets), {% include %}/{% extends %} or unrecognized template tag silences the rule for that file, so where it does run, every report is a genuinely broken label association (a WCAG 1.3.1/4.1.2 failure the W3C validator also treats as an error).

v1.42.0

Compare Source

Feature

Template languages:

  • New askama profile for Askama (jinja-style templates in Rust). Rust expressions are never reformatted: function and {% set %}/{% let %} formatting are disabled so some_macro!("foo")?, char literals 'a' and tuples keep their exact spelling, and string quotes are never rewritten. The Flask-specific url_for rules (J004/J018) don't apply.
  • New tera profile for Tera (Rust, used by Zola): jinja-style formatting plus Tera v2 {% component %}/{% endcomponent %} blocks and single-tag {% set_global %}. The Flask-specific url_for rules don't apply. MiniJinja needs no profile of its own - it is fully Jinja2-compatible, use --profile=jinja.
  • New liquid profile for Liquid (Shopify themes, Jekyll, Eleventy, the Rust liquid crate). {% case %}/{% when %}, {% capture %}, {% tablerow %}, {% form %}, {% paginate %}, {% highlight %} and {% unless %}/{% elsif %} indent correctly, {%- -%} whitespace control is handled, and the bodies of Shopify section tags ({% schema %}, {% style %}, {% javascript %}, {% stylesheet %}) are left untouched - they contain JSON, CSS or JS rather than html.
  • The golang profile now indents template blocks: {{ if }}, {{ range }}, {{ with }}, {{ block }} and {{ define }} indent their contents up to the matching {{ end }}, with {{ else }}/{{ else if }} as branches and the {{- -}} whitespace-control forms included. Blocks opened and closed on one line are left alone; single tags like {{ template }} and lookalike variables such as {{ .end }} are unaffected.

New linter rules:

  • T040: {% extends %} or {% include %} with a missing or empty template name - an error the engine only raises at render time, so the typo is easy to ship.
  • H041: an html tag opened in one {% block %} and closed in a different one. The pair looks balanced in the file, but a child template overriding either block renders unbalanced html.
  • H018 (off by default, enable with --include=H018): void tags closed with /> instead of >, e.g. <br/> - the trailing slash has no effect in HTML. The opposite convention of the optional H017 ("void tags should be self closing"); enable one or the other, not both.
  • H042 (off by default, enable with --include=H042): a <label for="..."> whose value matches no element id in the same file. Template-generated values are skipped; the rule is opt-in because inputs rendered by e.g. {{ form.email }} carry ids the linter cannot see.

Configuration:

  • indent and max_line_length now fall back to indent_size and max_line_length from a .editorconfig at the project root. The command line and djlint config files still take precedence, and only sections applying to html (or the configured extension) are read.

Documentation:

  • Every linter rule now has a detailed entry on the linter page - what it checks, why it matters, and a verified Don't/Do example pair - in English, French, Russian and Chinese. Askama, Tera and Liquid get language pages, logos and homepage cards, and engines covered by existing profiles (MiniJinja, Jinjava, Pebble, the Liquid dialects) are noted on the pages of the profiles that cover them.
Fix
  • H017 no longer misfires on tags that merely start with a void tag name: <cola> (matched by a broken colgroup exclusion) and custom elements like <img-icon> are no longer reported. <meta> tags, missing from the rule's void tag list, are now reported.

v1.41.0

Compare Source

Feature
  • New rule T038: block template tags with no matching end tag are now reported: {% if %} without {% endif %}, handlebars {{#if}} without {{/if}}, end tags with no opening tag, and crossed blocks like {% if %}{% for %}{% endif %}. Tags from custom_blocks are checked too; {% block %}/{% endblock %} pairs stay covered by T003.
  • New rule T039: template tags that never reach their closing delimiter are now reported, e.g. {% url 'x" user.url }} (closed by }} instead of %}), {{ user.name } (missing a brace), or a tag cut off by the next tag or the end of the file. Complements T027 (unclosed string in a complete tag) and T034 (}% typo), which keep reporting their own cases.
  • New --rules FILE CLI option: load a custom rules file in .djlint_rules.yaml format from any path, instead of only next to pyproject.toml.
Changed
  • The formatter now condenses runs of extra whitespace inside single-line template tags to a single space, e.g. {% if abc == 101 %} becomes {% if abc == 101 %}. This fixes what rule T032 reports, so the linter and formatter no longer conflict. Whitespace inside string literals is preserved, including strings with backslash-escaped quotes; multiline tags, ignored blocks, the literal contents of {% verbatim %}/{% raw %} and the handlebars/golang profiles are untouched.
  • The default exclude list is now tailored to djLint instead of copying ruff/black. Added directories that hold generated or third-party HTML: htmlcov (coverage.py reports), site-packages (installed packages' templates such as Django admin and DRF, matched in any virtualenv layout) and _site (Jekyll/Eleventy output). Removed Python tool caches and editor config that never contain HTML: .ipynb_checkpoints, .mypy_cache, .pytest_cache, .pytype, .ruff_cache, .pants.d, .vscode and buck-out.
Fix

Formatter indentation:

  • Closing a template block now restores the indentation of its opening tag, so HTML tags left unclosed inside the block (e.g. a wrapper <div> rendered by {% if %}...{% endif %} and closed by a later conditional) no longer shift the indentation of everything after it. When every branch of an {% if %}/{% elif %}/{% else %} shifts the depth equally, e.g. a <tr> opened in both branches, the shift is kept after {% endif %}.
  • Template tags and expressions spanning multiple lines keep the relative indentation of their contents instead of flattening every line to the tag's level. Nested objects and arrays in e.g. {% story ... with { ... } %}, {% include ... with { ... } %} and non-JSON {{ func(...) }} calls are now indented by bracket depth.
  • {% endtrans %} (Jinja/Twig block {% trans %}) no longer decreases the indentation level, which shifted the {% endtrans %} line and everything after it one level to the left.
  • Multiline {% set %} objects nested inside HTML elements are no longer over-indented in proportion to their nesting depth.
  • Self-closing custom block tags (django-components syntax, e.g. {% component "calendar" date="2015-06-19" / %} with custom_blocks = "component") no longer indent the lines that follow them as if a block had been opened.

Formatter line breaks and spacing:

  • A single-line block-form {% set x %}...{% endset %} is no longer expanded onto multiple lines. The block captures its content verbatim, so the added whitespace changed the value of the variable. Authored multi-line set blocks are still indented as before.
  • In multi-line {{ ... }} function calls, a call passed as an argument no longer causes a stray space before the following comma, and the arguments after it keep the same indentation as the other arguments.
  • blank_line_after_tag no longer inserts a blank line when the next line closes a block and decreases the indentation, e.g. between {% endblock %} and </div>.
  • blank_line_before_tag now inserts the blank line above a comment directly preceding the tag, keeping the comment attached to the tag it documents.

Linter:

  • H020 no longer reports <slot></slot>: an empty slot element is the standard way to declare a default slot outlet.
  • H025 no longer reports a tag as an orphan when the same tag is opened in each branch of an {% if %}/{% else %} and closed once outside it (and vice versa for close tags), since only one branch renders.
  • H025 now reports mis-nested tags whose close tag crosses another open tag, e.g. <b> in <h1>blah <b>bold</h1>.
  • T003 no longer requires an endblock name when {% endblock %} is on the same line as its {% block ... %}, e.g. {% block title %}{% endblock %}. The formatter keeps such blocks on one line, so the linter and formatter no longer conflict.
  • Linter rules no longer report errors for the literal contents of {% verbatim %}...{% endverbatim %} blocks, matching the existing treatment of jinja {% raw %} blocks.

Configuration:

  • Comma-separated options in config files (ignore, include, custom_blocks, custom_html, exclude, extend_exclude, ignore_blocks, blank_line_after_tag, blank_line_before_tag) can now also be given as lists, e.g. ignore = ["H017", "H031"] in pyproject.toml; previously list values were silently ignored.
  • --max-blank-lines given on the command line is no longer overridden by the config file, matching all other options.

v1.40.10

Compare Source

Fix
  • Fix crashes in mypyc-compiled wheels: AttributeError: attribute 'reformat' of 'Config' objects is not writable when linting or formatting multiple files, and AttributeError: attribute 'start' of 'TagToken' objects is not writable when processing a file.

v1.40.9

Compare Source

Fix
  • Indent content inside Django {% cache %}, {% timezone %}, {% localtime %} and {% localize %} blocks instead of dedenting everything after them.
  • Format django-cotton component tags such as <c-card> and <c-forms.input /> as block HTML tags without requiring custom_html configuration.
  • Preserve whitespace-only content of inline elements as a single space instead of dropping it, so runs like <b>bold</b><span> </span><i>italic</i> keep rendering a space; non-collapsible whitespace such as U+2005 is kept verbatim.
  • Preserve line breaks inside hyperscript _ attribute values, where a newline separates commands and -- comments run to the end of the line.
  • Stop inserting line breaks into attribute values that render whitespace verbatim; only class and style values are spread over multiple lines with format_attribute_template_tags.
  • Leave {% comment %} block content untouched when reformatting, e.g. bare URLs ending in />.
  • Apply rule-specific djlint:off RULE suppression to any finding overlapping the region, so reformatted guards keep linting clean.
  • Avoid false H037 reports for attribute names with a conditional template prefix, e.g. {% if x %}data-{% endif %}srcset.
  • Avoid false reports for HTML-like content inside template tag arguments, e.g. H008 on quotes in a string argument.

v1.40.8

Compare Source

Fix
  • Preserve conditional attribute names and significant whitespace in template-generated attributes.
  • Keep parent closing tags aligned after multiline inline content.
  • Avoid false H026 reports when id or class is followed by a spaced equals sign.
  • Keep short tag contents inline when attributes contain template expressions.
  • Avoid false D018/J018 reports for links using valid URI schemes.
  • Indent content inside Twig embed blocks.
  • Avoid false H037 reports for attributes in mutually exclusive template branches.
  • Respect exclude and extend_exclude for explicitly provided files.
  • Preserve attributes containing nested template blocks when wrapping long tags.
  • Preserve template expressions used in dynamic HTML tag names.
  • Preserve asterisks in HTML attribute names such as htmx response targets.
  • Avoid adding trailing whitespace after function calls in multiline template expressions.
  • Avoid false T002 reports for template tags inside HTML attributes.

v1.40.7

Compare Source

Fix
  • Preserve URLs enclosed in angle brackets inside template comments.

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [djlint](https://github.com/djlint/djLint) | `>=1.40.6` → `>=1.44.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/djlint/1.44.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/djlint/1.40.6/1.44.0?slim=true) | --- ### Release Notes <details> <summary>djlint/djLint (djlint)</summary> ### [`v1.44.0`](https://github.com/djlint/djLint/blob/HEAD/CHANGELOG.md#1440---2026-08-04) [Compare Source](https://github.com/djlint/djLint/compare/v1.43.2...v1.44.0) ##### Feature - New `--allow-empty-input` option, and the matching `allow_empty_input` config key, exits `0` instead of `2` when the given paths match no files. ##### Fix - An html close tag inside an inline `{% if %}...{% endif %}` no longer dedents everything that follows it by one level, collapsing nested structures toward column 0 - a regression in 1.43.0. A close tag already at the content level of the template block it sits in is held there, but the level it was denied was then taken off the end of the line instead, so `{% if r %}</strong>{% endif %}` moved the rest of the block left. The matching open tag never took a level to give back, since `{% endif %}` had already returned it. - A run where every file found was skipped by `exclude`, `extend_exclude`, `use_gitignore` or `require_pragma` now exits `0` instead of `1`. Skipping them is the configuration doing its job, and it is what lets `exclude` work under pre-commit, which passes the names of every staged file. Paths that match no files at all now exit `2` rather than `1`, so exit `1` means only that djLint found something to report. - An unhandled error exits `2` instead of `1`, so a crash is no longer indistinguishable from a lint error. The traceback is still printed. - An unrecognized `--profile`, or `profile` in a config file, is now a usage error. A typo used to lint with a silently different rule set and exit `0`, and raised `KeyError` with `--require-pragma`. - A directory whose name matches the file extension (`build.html/`) is no longer picked up as a template and opened as a file, crashing the run. - `No files to check!` is written to stderr instead of stdout, where formatted code is written. - Input piped to `djlint - --reformat` that `--require-pragma` skips is handed back byte for byte instead of being replaced by `No files to check!`. ### [`v1.43.2`](https://github.com/djlint/djLint/blob/HEAD/CHANGELOG.md#1432---2026-08-01) [Compare Source](https://github.com/djlint/djLint/compare/v1.43.1...v1.43.2) ##### Fix - `blank_line_before_tag` no longer inserts a blank line when the previous line opens a block and increases the indentation, e.g. between `<div>` and `{% block %}`. Since 1.41.0 `blank_line_after_tag` has left the closing edge of a block alone (`{% endblock %}` before `</div>`), while the opening edge kept its padding, so a template using both options came out lopsided. ### [`v1.43.1`](https://github.com/djlint/djLint/blob/HEAD/CHANGELOG.md#1431---2026-07-28) [Compare Source](https://github.com/djlint/djLint/compare/v1.43.0...v1.43.1) ##### Fix - `H025` no longer reports the closing tag of a multi-line `<script>` or `<style>` as an orphan - a regression in 1.43.0. A genuinely unmatched `</script>` is still reported. ### [`v1.43.0`](https://github.com/djlint/djLint/blob/HEAD/CHANGELOG.md#1430---2026-07-27) [Compare Source](https://github.com/djlint/djLint/compare/v1.42.3...v1.43.0) ##### Feature - New `--stdin-filename` option gives content piped in on stdin (`djlint -`) its real path, so `per-file-ignores` matches against that name and linter messages report it. Per-file ignores were previously dead for piped input, since nothing matches the name `-`. Path separators are normalized as they are for files on disk. ##### Fix - An apostrophe inside a template tag nested in an attribute value (`title="{% translate "You don't have permission" %}"`) no longer swallows the rest of the document, which made `H025` report every enclosing element as an orphan. A template tag in a value is now skipped whole unless it holds a `>`, so a quoted literal like `a="{{"` is still left alone. - A line that starts with a closing tag and ends with a whole tag (`</span>tail<textarea>y</textarea>`) unindents again; everything after it stayed one level too deep. - A template block tag followed by a whole html tag on the same line (`{% endif %} <td class="x">y</td>`) indents as a block tag again, so `{% endif %}` unindents and `{% else %}` aligns with its `{% if %}`. A line only takes that shape once the tag fits on one line, so reformatting an already formatted file moved it. - A tag opened after the end of a verbatim block on the same line (`</pre> <span>x`) is tracked again; its closing tag took a level from a tag opened before the block, dedenting that tag's siblings. - A template control block written across lines is kept that way when it opens against a tag (`<div>{% if x %}`), and the choice is no longer applied to the wrong block. Blocks were paired with the source by position, which does not line up with the expanded html; they are now matched by tag and contents. - A tag whose `style`, `srcset`, `data-srcset` or `sizes` value was written over several lines is no longer spread over multiple lines and pulled back together on the next run. `max_attribute_length` is now measured against what is written out, not against padding that the rewrite drops. - A `<pre>` or `<textarea>` opened on a line that also holds a self-contained comment (`<pre>x<!--c-->`) is recognized as opening a verbatim block again. Its contents were re-indented instead of left alone, and the closing `</pre>` gained an indent level on every run - unbounded whitespace growth inside preformatted text. - A closing tag that starts its line no longer dedents when the tag it closes was opened after text on an earlier line (`text <b>bold` / `</b> tail`). The loss accumulated, so a document repeating that shape drifted further left with each occurrence. A closing tag with nothing to pair against still dedents as before. - A `<` inside a one-line `<script>`, `<style>`, `<textarea>` or `<title>` no longer counts as a tag when indenting. `<script>var a = '<span>'</script>` left a phantom open `<span>` on the tag stack, leaving everything after it one level too deep. - An inline element that opens after text on its line and closes on a later line no longer dedents everything that follows it by one level (`text <b>bold` / `more</b> tail` inside a `<p>`) - a regression in 1.40.8. The wrong output was idempotent, so it survived later runs. - A Go template comment `{{/* ... */}}` is no longer read as a block close tag. It starts with `{{/`, the handlebars block-close prefix, so it popped a block off the stack: `H037` reported `Duplicate attribute found.` for mutually exclusive attributes such as `<a {{if .A}}href="a"{{else}}{{/* c */}}href="b"{{end}}>`, and the formatter unindented the rest of the block. A comment renders as nothing, so `H037` no longer treats one as a template-generated attribute name prefix either. - A tag that merely touches an ignored block is no longer treated as being inside it. A tag ending exactly where an ignored block starts - such as `{% if x %}{# comment #}` - was skipped by the linter, most visibly making `T038` report `End tag has no matching block tag` for a balanced `{% if %}`. Affects every rule that skips ignored blocks (`H025`, `H037`, `H041`, `H042`, `T002`, `T003`, `T027`, `T038`, `T039`) and every kind of ignored block. - A bare `djlint:off` pragma no longer ignores the tag written immediately before it. `<img>{# djlint:off #}` silently dropped every error on that `<img>`, while `<img>{# djlint:off H013 #}` correctly reported it - a pragma covers what follows it, not what precedes it. ### [`v1.42.3`](https://github.com/djlint/djLint/blob/HEAD/CHANGELOG.md#1423---2026-07-23) [Compare Source](https://github.com/djlint/djLint/compare/v1.42.2...v1.42.3) ##### Fix - Attribute names containing punctuation beyond `-`, `.`, `:`, `@` and `*` no longer stop a tag from being wrapped over multiple lines. The attribute parser now accepts any character HTML allows in an attribute name, so Alpine key modifiers (`@keydown.prevent.?`), Angular bindings (`(click)`, `[disabled]`) and Vue shorthands (`#slot`) are formatted like every other attribute instead of leaving the whole tag on one long line. Angular bindings also reach `--format-attribute-js-json` for the first time, which already listed them. - An unquoted attribute value with a template tag glued to the rest of the value (e.g. `src={{ MEDIA_URL }}/logo.png`, `href={{ .Permalink }}#{{ .Anchor }}`) is no longer split into a truncated value plus a bogus standalone attribute when attributes are wrapped; it stays one value, quoted when spread. ### [`v1.42.2`](https://github.com/djlint/djLint/blob/HEAD/CHANGELOG.md#1422---2026-07-22) [Compare Source](https://github.com/djlint/djLint/compare/v1.42.1...v1.42.2) ##### Fix - Attributes containing `${...}` inside a quoted value (e.g. JS template literals like ``:name="`x[${i}]`"``) respect `max_attribute_length` again and are spread over multiple lines - a regression in 1.40.6. Unquoted Mako-style `${...}` expressions in tags are still left unformatted. - A stray `<!--` that is not a real HTML comment (for example inside a `{# ... #}` template comment or inside a `<textarea>`/`<pre>`) no longer swallows the rest of the document. This fixes false `H025` orphan-tag reports and over-indentation of the tags that follow - a regression in 1.40.6. - Handlebars triple-stache `{{{ ... }}}` and raw-block `{{{{ ... }}}}` expressions used as tag attributes are tokenized correctly again, fixing false `H025` orphan-tag reports - a regression in 1.40.6. - A quoted literal brace in an attribute value (e.g. `data-x="{{"`) no longer makes the tokenizer scan into later content looking for a matching `}}`, which could collapse `<pre>`/`<textarea>` whitespace - a regression in 1.40.6. - Spacing the `}}` of a handlebars `{{#if}}`/`{{#each}}` block-open tag is now idempotent; it no longer leaks a trailing space into the following `{{...}}` tag on later formatting passes. - `T038` no longer reports block tags that appear only inside a handlebars comment (`{{!-- ... --}}`, `{{! ... }}`) or inside a handlebars raw block (`{{{{raw}}}} ... {{{{/raw}}}}`). - `T039` no longer reports handlebars raw-block delimiters (`{{{{raw}}}}` / `{{{{/raw}}}}`) as unclosed template tags. - Malformed tag attributes that the attribute parser cannot fully parse (e.g. a stray `<` or dangling `=`) are now left untouched instead of having the unparsable characters silently dropped when attributes are wrapped. - A `<` used as a less-than operator inside a template expression in text or `<script>` content (e.g. `${a<b}`, `{{a<b}}`) is no longer mistaken for an HTML tag start, which could merge or drop following content and break idempotency - a regression in 1.40.6. - Unquoted attribute values containing `:` or `/` (e.g. `href=https://example.com/page`) are no longer split into a truncated value plus a bogus standalone attribute when attributes are wrapped - a regression in 1.40.6. - A nameless `="value"` attribute is no longer rewritten with the literal attribute name `None`; malformed attributes are left untouched. - Trailing whitespace inside an indented `<textarea>`/`<pre>` is preserved instead of being collapsed by whitespace cleanup (it is verbatim content). ##### Performance - Detecting ignored/verbatim blocks (`{% comment %}`, `{% blocktrans %}`, `{% filter %}`, `<pre>`, `<script>`, etc.) is dramatically faster on templates with many `{% ... %}` tags. A lazy `[ ]*?` before the block keywords caused pathological backtracking; the equivalent greedy `[ ]*` removes it, cutting reformat time on large template-heavy files by roughly 5x. ### [`v1.42.1`](https://github.com/djlint/djLint/blob/HEAD/CHANGELOG.md#1421---2026-07-20) [Compare Source](https://github.com/djlint/djLint/compare/v1.42.0...v1.42.1) ##### Fix - H017 and H018 no longer style `command`, `keygen` and `menuitem` - elements that were removed from the HTML standard. - Enabling H018 together with H017 or H035 now prints a warning when linting - they enforce opposite void tag conventions, so only one should be on. ##### Changed Linter rule defaults were reviewed against a simple bar: on by default means correctness, security, clear accessibility, or a consistency check the formatter also enforces - with near-zero false positives. Four rules moved to opt-in (`--include=...`): - T003 (endblock names): neither Django nor Jinja requires a name on `{% endblock %}`; the name demand is a style preference. The correctness checks T003 used to bundle - unclosed `{% block %}`, orphan `{% endblock %}` and mismatched endblock names, all hard template errors - moved into T038, which stays on by default, so nothing real is lost when T003 is off. - T002 (double quotes in tags): engines accept both quote styles, no autofix exists, and quote-style rules are the canonical example of style checks that don't belong in a default tier. - H006 (img width/height): valuable performance advice (browsers map the attributes to a default `aspect-ratio`, preventing layout shift) but performance rather than correctness, and the dimensions are frequently unknowable in a template - user uploads, CMS urls, art-directed `<picture>` sources - so the rule demands data the author may not have. - H031 (meta keywords): major search engines have ignored keyword metadata for over a decade; recommending that it be added is outdated advice. The niche intranet-indexer use case keeps the rule available via `--include=H031`. - H042 (label/for) moved the other way - from opt-in to on by default - after its false-positive class was removed: the rule now checks a file only when nothing in it could render an id invisibly. Any `{{ ... }}` output (form widgets), `{% include %}`/`{% extends %}` or unrecognized template tag silences the rule for that file, so where it does run, every report is a genuinely broken label association (a WCAG 1.3.1/4.1.2 failure the W3C validator also treats as an error). ### [`v1.42.0`](https://github.com/djlint/djLint/blob/HEAD/CHANGELOG.md#1420---2026-07-20) [Compare Source](https://github.com/djlint/djLint/compare/v1.41.0...v1.42.0) ##### Feature Template languages: - New `askama` profile for [Askama](https://askama.readthedocs.io/) (jinja-style templates in Rust). Rust expressions are never reformatted: function and `{% set %}`/`{% let %}` formatting are disabled so `some_macro!("foo")?`, char literals `'a'` and tuples keep their exact spelling, and string quotes are never rewritten. The Flask-specific `url_for` rules (J004/J018) don't apply. - New `tera` profile for [Tera](https://keats.github.io/tera/) (Rust, used by Zola): jinja-style formatting plus Tera v2 `{% component %}`/`{% endcomponent %}` blocks and single-tag `{% set_global %}`. The Flask-specific `url_for` rules don't apply. MiniJinja needs no profile of its own - it is fully Jinja2-compatible, use `--profile=jinja`. - New `liquid` profile for [Liquid](https://shopify.github.io/liquid/) (Shopify themes, Jekyll, Eleventy, the Rust `liquid` crate). `{% case %}`/`{% when %}`, `{% capture %}`, `{% tablerow %}`, `{% form %}`, `{% paginate %}`, `{% highlight %}` and `{% unless %}`/`{% elsif %}` indent correctly, `{%- -%}` whitespace control is handled, and the bodies of Shopify section tags (`{% schema %}`, `{% style %}`, `{% javascript %}`, `{% stylesheet %}`) are left untouched - they contain JSON, CSS or JS rather than html. - The `golang` profile now indents template blocks: `{{ if }}`, `{{ range }}`, `{{ with }}`, `{{ block }}` and `{{ define }}` indent their contents up to the matching `{{ end }}`, with `{{ else }}`/`{{ else if }}` as branches and the `{{- -}}` whitespace-control forms included. Blocks opened and closed on one line are left alone; single tags like `{{ template }}` and lookalike variables such as `{{ .end }}` are unaffected. New linter rules: - T040: `{% extends %}` or `{% include %}` with a missing or empty template name - an error the engine only raises at render time, so the typo is easy to ship. - H041: an html tag opened in one `{% block %}` and closed in a different one. The pair looks balanced in the file, but a child template overriding either block renders unbalanced html. - H018 (off by default, enable with `--include=H018`): void tags closed with `/>` instead of `>`, e.g. `<br/>` - the trailing slash has no effect in HTML. The opposite convention of the optional H017 ("void tags should be self closing"); enable one or the other, not both. - H042 (off by default, enable with `--include=H042`): a `<label for="...">` whose value matches no element `id` in the same file. Template-generated values are skipped; the rule is opt-in because inputs rendered by e.g. `{{ form.email }}` carry ids the linter cannot see. Configuration: - `indent` and `max_line_length` now fall back to `indent_size` and `max_line_length` from a `.editorconfig` at the project root. The command line and djlint config files still take precedence, and only sections applying to html (or the configured `extension`) are read. Documentation: - Every linter rule now has a detailed entry on the linter page - what it checks, why it matters, and a verified Don't/Do example pair - in English, French, Russian and Chinese. Askama, Tera and Liquid get language pages, logos and homepage cards, and engines covered by existing profiles (MiniJinja, Jinjava, Pebble, the Liquid dialects) are noted on the pages of the profiles that cover them. ##### Fix - H017 no longer misfires on tags that merely start with a void tag name: `<cola>` (matched by a broken `colgroup` exclusion) and custom elements like `<img-icon>` are no longer reported. `<meta>` tags, missing from the rule's void tag list, are now reported. ### [`v1.41.0`](https://github.com/djlint/djLint/blob/HEAD/CHANGELOG.md#1410---2026-07-19) [Compare Source](https://github.com/djlint/djLint/compare/v1.40.10...v1.41.0) ##### Feature - New rule T038: block template tags with no matching end tag are now reported: `{% if %}` without `{% endif %}`, handlebars `{{#if}}` without `{{/if}}`, end tags with no opening tag, and crossed blocks like `{% if %}{% for %}{% endif %}`. Tags from `custom_blocks` are checked too; `{% block %}`/`{% endblock %}` pairs stay covered by T003. - New rule T039: template tags that never reach their closing delimiter are now reported, e.g. `{% url 'x" user.url }}` (closed by `}}` instead of `%}`), `{{ user.name }` (missing a brace), or a tag cut off by the next tag or the end of the file. Complements T027 (unclosed string in a complete tag) and T034 (`}%` typo), which keep reporting their own cases. - New `--rules FILE` CLI option: load a custom rules file in `.djlint_rules.yaml` format from any path, instead of only next to `pyproject.toml`. ##### Changed - The formatter now condenses runs of extra whitespace inside single-line template tags to a single space, e.g. `{% if abc == 101 %}` becomes `{% if abc == 101 %}`. This fixes what rule T032 reports, so the linter and formatter no longer conflict. Whitespace inside string literals is preserved, including strings with backslash-escaped quotes; multiline tags, ignored blocks, the literal contents of `{% verbatim %}`/`{% raw %}` and the handlebars/golang profiles are untouched. - The default `exclude` list is now tailored to djLint instead of copying ruff/black. Added directories that hold generated or third-party HTML: `htmlcov` (coverage.py reports), `site-packages` (installed packages' templates such as Django admin and DRF, matched in any virtualenv layout) and `_site` (Jekyll/Eleventy output). Removed Python tool caches and editor config that never contain HTML: `.ipynb_checkpoints`, `.mypy_cache`, `.pytest_cache`, `.pytype`, `.ruff_cache`, `.pants.d`, `.vscode` and `buck-out`. ##### Fix Formatter indentation: - Closing a template block now restores the indentation of its opening tag, so HTML tags left unclosed inside the block (e.g. a wrapper `<div>` rendered by `{% if %}...{% endif %}` and closed by a later conditional) no longer shift the indentation of everything after it. When every branch of an `{% if %}/{% elif %}/{% else %}` shifts the depth equally, e.g. a `<tr>` opened in both branches, the shift is kept after `{% endif %}`. - Template tags and expressions spanning multiple lines keep the relative indentation of their contents instead of flattening every line to the tag's level. Nested objects and arrays in e.g. `{% story ... with { ... } %}`, `{% include ... with { ... } %}` and non-JSON `{{ func(...) }}` calls are now indented by bracket depth. - `{% endtrans %}` (Jinja/Twig block `{% trans %}`) no longer decreases the indentation level, which shifted the `{% endtrans %}` line and everything after it one level to the left. - Multiline `{% set %}` objects nested inside HTML elements are no longer over-indented in proportion to their nesting depth. - Self-closing custom block tags (django-components syntax, e.g. `{% component "calendar" date="2015-06-19" / %}` with `custom_blocks = "component"`) no longer indent the lines that follow them as if a block had been opened. Formatter line breaks and spacing: - A single-line block-form `{% set x %}...{% endset %}` is no longer expanded onto multiple lines. The block captures its content verbatim, so the added whitespace changed the value of the variable. Authored multi-line set blocks are still indented as before. - In multi-line `{{ ... }}` function calls, a call passed as an argument no longer causes a stray space before the following comma, and the arguments after it keep the same indentation as the other arguments. - `blank_line_after_tag` no longer inserts a blank line when the next line closes a block and decreases the indentation, e.g. between `{% endblock %}` and `</div>`. - `blank_line_before_tag` now inserts the blank line above a comment directly preceding the tag, keeping the comment attached to the tag it documents. Linter: - H020 no longer reports `<slot></slot>`: an empty slot element is the standard way to declare a default slot outlet. - H025 no longer reports a tag as an orphan when the same tag is opened in each branch of an `{% if %}/{% else %}` and closed once outside it (and vice versa for close tags), since only one branch renders. - H025 now reports mis-nested tags whose close tag crosses another open tag, e.g. `<b>` in `<h1>blah <b>bold</h1>`. - T003 no longer requires an endblock name when `{% endblock %}` is on the same line as its `{% block ... %}`, e.g. `{% block title %}{% endblock %}`. The formatter keeps such blocks on one line, so the linter and formatter no longer conflict. - Linter rules no longer report errors for the literal contents of `{% verbatim %}`...`{% endverbatim %}` blocks, matching the existing treatment of jinja `{% raw %}` blocks. Configuration: - Comma-separated options in config files (`ignore`, `include`, `custom_blocks`, `custom_html`, `exclude`, `extend_exclude`, `ignore_blocks`, `blank_line_after_tag`, `blank_line_before_tag`) can now also be given as lists, e.g. `ignore = ["H017", "H031"]` in `pyproject.toml`; previously list values were silently ignored. - `--max-blank-lines` given on the command line is no longer overridden by the config file, matching all other options. ### [`v1.40.10`](https://github.com/djlint/djLint/blob/HEAD/CHANGELOG.md#14010---2026-07-19) [Compare Source](https://github.com/djlint/djLint/compare/v1.40.9...v1.40.10) ##### Fix - Fix crashes in mypyc-compiled wheels: `AttributeError: attribute 'reformat' of 'Config' objects is not writable` when linting or formatting multiple files, and `AttributeError: attribute 'start' of 'TagToken' objects is not writable` when processing a file. ### [`v1.40.9`](https://github.com/djlint/djLint/blob/HEAD/CHANGELOG.md#1409---2026-07-18) [Compare Source](https://github.com/djlint/djLint/compare/v1.40.8...v1.40.9) ##### Fix - Indent content inside Django `{% cache %}`, `{% timezone %}`, `{% localtime %}` and `{% localize %}` blocks instead of dedenting everything after them. - Format django-cotton component tags such as `<c-card>` and `<c-forms.input />` as block HTML tags without requiring `custom_html` configuration. - Preserve whitespace-only content of inline elements as a single space instead of dropping it, so runs like `<b>bold</b><span> </span><i>italic</i>` keep rendering a space; non-collapsible whitespace such as U+2005 is kept verbatim. - Preserve line breaks inside hyperscript `_` attribute values, where a newline separates commands and `--` comments run to the end of the line. - Stop inserting line breaks into attribute values that render whitespace verbatim; only `class` and `style` values are spread over multiple lines with `format_attribute_template_tags`. - Leave `{% comment %}` block content untouched when reformatting, e.g. bare URLs ending in `/>`. - Apply rule-specific `djlint:off RULE` suppression to any finding overlapping the region, so reformatted guards keep linting clean. - Avoid false H037 reports for attribute names with a conditional template prefix, e.g. `{% if x %}data-{% endif %}srcset`. - Avoid false reports for HTML-like content inside template tag arguments, e.g. H008 on quotes in a string argument. ### [`v1.40.8`](https://github.com/djlint/djLint/blob/HEAD/CHANGELOG.md#1408---2026-07-17) [Compare Source](https://github.com/djlint/djLint/compare/v1.40.7...v1.40.8) ##### Fix - Preserve conditional attribute names and significant whitespace in template-generated attributes. - Keep parent closing tags aligned after multiline inline content. - Avoid false H026 reports when `id` or `class` is followed by a spaced equals sign. - Keep short tag contents inline when attributes contain template expressions. - Avoid false D018/J018 reports for links using valid URI schemes. - Indent content inside Twig `embed` blocks. - Avoid false H037 reports for attributes in mutually exclusive template branches. - Respect `exclude` and `extend_exclude` for explicitly provided files. - Preserve attributes containing nested template blocks when wrapping long tags. - Preserve template expressions used in dynamic HTML tag names. - Preserve asterisks in HTML attribute names such as htmx response targets. - Avoid adding trailing whitespace after function calls in multiline template expressions. - Avoid false T002 reports for template tags inside HTML attributes. ### [`v1.40.7`](https://github.com/djlint/djLint/blob/HEAD/CHANGELOG.md#1407---2026-07-15) [Compare Source](https://github.com/djlint/djLint/compare/v1.40.6...v1.40.7) ##### Fix - Preserve URLs enclosed in angle brackets inside template comments. </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTYuMCIsInVwZGF0ZWRJblZlciI6IjQzLjI4OC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
chore(deps): update dependency djlint to >=1.40.7
All checks were successful
Tests / test (push) Successful in 1m7s
28097d3bb0
renovate force-pushed renovate/djlint-1.x from 28097d3bb0
All checks were successful
Tests / test (push) Successful in 1m7s
to 9e84662008
All checks were successful
Tests / test (push) Successful in 1m10s
2026-07-18 03:02:31 +00:00
Compare
renovate changed title from chore(deps): update dependency djlint to >=1.40.7 to chore(deps): update dependency djlint to >=1.40.8 2026-07-18 03:02:33 +00:00
renovate force-pushed renovate/djlint-1.x from 9e84662008
All checks were successful
Tests / test (push) Successful in 1m10s
to 99d50e5b98
Some checks failed
Tests / test (push) Failing after 1m7s
2026-07-19 03:02:23 +00:00
Compare
renovate changed title from chore(deps): update dependency djlint to >=1.40.8 to chore(deps): update dependency djlint to >=1.40.9 2026-07-19 03:02:26 +00:00
renovate force-pushed renovate/djlint-1.x from 99d50e5b98
Some checks failed
Tests / test (push) Failing after 1m7s
to f7577b47d5
Some checks failed
Tests / test (push) Failing after 1m7s
2026-07-20 03:01:49 +00:00
Compare
renovate changed title from chore(deps): update dependency djlint to >=1.40.9 to chore(deps): update dependency djlint to >=1.41.0 2026-07-20 03:01:50 +00:00
renovate force-pushed renovate/djlint-1.x from f7577b47d5
Some checks failed
Tests / test (push) Failing after 1m7s
to de98ad753b
All checks were successful
Tests / test (push) Successful in 1m10s
2026-07-21 03:01:52 +00:00
Compare
renovate changed title from chore(deps): update dependency djlint to >=1.41.0 to chore(deps): update dependency djlint to >=1.42.1 2026-07-21 03:01:53 +00:00
renovate force-pushed renovate/djlint-1.x from de98ad753b
All checks were successful
Tests / test (push) Successful in 1m10s
to de905838a8
All checks were successful
Tests / test (push) Successful in 1m8s
2026-07-23 03:02:03 +00:00
Compare
renovate changed title from chore(deps): update dependency djlint to >=1.42.1 to chore(deps): update dependency djlint to >=1.42.2 2026-07-23 03:02:06 +00:00
renovate force-pushed renovate/djlint-1.x from de905838a8
All checks were successful
Tests / test (push) Successful in 1m8s
to bc20e2719c
All checks were successful
Tests / test (push) Successful in 1m10s
2026-07-24 03:02:25 +00:00
Compare
renovate changed title from chore(deps): update dependency djlint to >=1.42.2 to chore(deps): update dependency djlint to >=1.42.3 2026-07-24 03:02:28 +00:00
renovate force-pushed renovate/djlint-1.x from bc20e2719c
All checks were successful
Tests / test (push) Successful in 1m10s
to 7ecc044a8e
All checks were successful
Tests / test (push) Successful in 1m10s
2026-07-28 03:02:04 +00:00
Compare
renovate changed title from chore(deps): update dependency djlint to >=1.42.3 to chore(deps): update dependency djlint to >=1.43.0 2026-07-28 03:02:05 +00:00
renovate force-pushed renovate/djlint-1.x from 7ecc044a8e
All checks were successful
Tests / test (push) Successful in 1m10s
to 1b4d14ea89
All checks were successful
Tests / test (push) Successful in 1m12s
2026-07-29 03:02:22 +00:00
Compare
renovate changed title from chore(deps): update dependency djlint to >=1.43.0 to chore(deps): update dependency djlint to >=1.43.1 2026-07-29 03:02:25 +00:00
renovate force-pushed renovate/djlint-1.x from 1b4d14ea89
All checks were successful
Tests / test (push) Successful in 1m12s
to 251c5b0436
Some checks failed
Tests / test (push) Failing after 1m11s
2026-08-02 03:01:56 +00:00
Compare
renovate changed title from chore(deps): update dependency djlint to >=1.43.1 to chore(deps): update dependency djlint to >=1.43.2 2026-08-02 03:01:59 +00:00
renovate force-pushed renovate/djlint-1.x from 251c5b0436
Some checks failed
Tests / test (push) Failing after 1m11s
to 4143494b94
All checks were successful
Tests / test (push) Successful in 1m8s
2026-08-05 03:02:31 +00:00
Compare
renovate changed title from chore(deps): update dependency djlint to >=1.43.2 to chore(deps): update dependency djlint to >=1.44.0 2026-08-05 03:02:33 +00:00
All checks were successful
Tests / test (push) Successful in 1m8s
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/djlint-1.x:renovate/djlint-1.x
git switch renovate/djlint-1.x

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff renovate/djlint-1.x
git switch renovate/djlint-1.x
git rebase main
git switch main
git merge --ff-only renovate/djlint-1.x
git switch renovate/djlint-1.x
git rebase main
git switch main
git merge --no-ff renovate/djlint-1.x
git switch main
git merge --squash renovate/djlint-1.x
git switch main
git merge --ff-only renovate/djlint-1.x
git switch main
git merge renovate/djlint-1.x
git push origin main
Sign in to join this conversation.
No description provided.