Repository navigation
v0.3.4
Stable release — promotes 0.3.3rc1 through 0.3.3rc3. All changes below were present in the RC series; this entry summarises them for the stable changelog.
Added
- 6 new Django template tags in Rust renderer —
{% widthratio %},{% firstof %},{% templatetag %},{% spaceless %},{% cycle %},{% now %}. (#329) - System checks
djust.T011/T012/T013— Warns at startup for unsupported Rust template tags, missingdj-view, and invaliddj-viewpaths. (#293, #329) - Deployment guides — Railway, Render, and Fly.io. (#247)
- Navigation and LiveView invariants documentation. (#304, #316)
Fixed
- #380:
{% if %}in HTML attribute values no longer emits<!--dj-if-->comment — Produced malformed HTML (e.g.class="btn <!--dj-if-->"). Empty string is emitted instead; text-node VDOM anchor is unaffected. (#381) - #382:
{% elif %}chains in attribute values propagatein_tag_context— All elif nodes in a chain now inherit the outer{% if %}'s attribute context. (#383) {% if/else %}branches miscounting div depth in template extraction. (#365)- VDOM extraction used fully-merged
{% extends %}document. (#366) TypeError: Illegal invocationin debug panel on Chrome/Edge. (#367)dj-patch('/')now correctly updates browser URL to root path. (#307)live_patchrouting restored —handleNavigationdispatch now fires correctly. (#307)- T003 false positives eliminated —
{% include %}check now examines the include path, not whole-file content. (#331)
What's Changed
- feat: async_pending loading state for start_async() by @johnrtipton in #314
- fix: avoid Illegal invocation in debug panel WebSocket hook by @johnrtipton in #345
- feat: add liveview_server_error signal for monitor integration by @johnrtipton in #346
- ci: bump actions/github-script from 7 to 8 by @dependabot[bot] in #336
- deps: bump happy-dom from 20.6.1 to 20.6.3 by @dependabot[bot] in #339
- deps: bump uuid from 1.20.0 to 1.21.0 by @dependabot[bot] in #338
- deps: Bump eslint from 9.39.2 to 10.0.0 by @dependabot[bot] in #290
- fix: VDOM-created elements never receive event listeners by @johnrtipton in #321
- fix: emit placeholder for false {% if %} blocks (DJE-053, #295) by @johnrtipton in #335
- test: add WebSocket send-count integration test for event dedup by @johnrtipton in #334
- docs: update CHANGELOG for issue #307 navigation fixes by @johnrtipton in #344
- fix: dj-patch('/') fails to update URL and live_patch routing broken (#307) by @johnrtipton in #318
- fix: VDOM diff incorrectly matching siblings when {% if %} removes nodes (closes #295) by @johnrtipton in #322
- fix: prevent duplicate event listeners causing multiple WebSocket sends (closes #315) by @johnrtipton in #319
- fix: recursively scan nested structures for SafeString values (closes #317) by @johnrtipton in #323
- fix: prevent silent str() fallback for non-serializable LiveView state (closes #292) by @johnrtipton in #324
- fix: S005 system check incorrectly warns on login_required = False by @johnrtipton in #325
- feat: add start_async() and @background decorator for non-blocking operations by @johnrtipton in #326
- feat: add djust_check T010 and Q010 for navigation pattern detection by @johnrtipton in #327
- fix: convert 9 logger calls from f-strings to %-style formatting by @johnrtipton in #328
- fix: wrap all bare console.log() calls in djustDebug guard by @johnrtipton in #332
- test: fix trivial double_bind tests — insert elements into DOM by @johnrtipton in #333
- feat: async pending loading state & code quality improvements by @johnrtipton in #353
- deps: bump jsdom from 26.1.0 to 28.1.0 by @dependabot[bot] in #337
- deps: bump eslint-plugin-security from 3.0.1 to 4.0.0 by @dependabot[bot] in #340
- fix: remove double-wrapped djustDebug guards and example tests from core by @johnrtipton in #354
- fix: resolve 17 failing tests (#348, #349 cleanup) by @johnrtipton in #355
- fix: remove deprecation warnings and test model re-registration noise by @johnrtipton in #356
- fix: eliminate T003 false positives and cleanup #348/#349 by @johnrtipton in #357
- docs: add dj-patch vs dj-click navigation best practice by @johnrtipton in #358
- docs: document LiveView root container and **kwargs requirements by @johnrtipton in #359
- feat: add T012/T013 template validation for missing/invalid attributes by @johnrtipton in #361
- feat: implement 6 Django template tags in Rust renderer (#329) by @johnrtipton in #362
- feat: async/pending loading states, SSE transport, TypeScript definitions, and dj-id rename (v0.3.4) by @johnrtipton in #377
- fix: replace desc.get/set.call(ws) with property access in _hookExistingWebSocket by @johnrtipton in #378
- fix: branch-aware div depth counting for {% if/else %} templates (#365, #366) by @johnrtipton in #379
- fix: suppress inside HTML attribute values (#380) by @johnrtipton in #381
- fix: propagate in_tag_context through elif chains (#382) by @johnrtipton in #383
Full Changelog: v0.3.2...v0.3.4