This is a pre-release. djust 0.9.7 has shipped since: read the djust 0.9.7 release notes.
Added
- LiveView state survives WS reconnect when
enable_state_snapshot = True(#1465, supersedes stale PR #1429). Three companion changes topython/djust/websocket.pyclose a long-standing gap whereenable_state_snapshotwas effectively HTTP-only. (1)handle_eventnow mirrors the HTTP-path session save (mixins/request.py:603-609) after every successful WS event handler — freshget_context_data()snapshot is filtered forLiveComponentinstances, normalized, andasetto the Django session underliveview_<page_url>, with private (_-prefixed) attrs and components persisted alongside. (2) The load gate inhandle_mountwidens fromif has_prerendered:toif has_prerendered or saved_state:so pure-WS reconnect (no SSR — e.g. after djustlive proxy force-closed the backend WS for snapshot) reaches theaget(view_key)lookup. (3) Mount response now skips thehtmlfield on resume — whenmounted(state restored) ANDhas_prerendered, the client's DOM already reflects the saved state, so omittinghtmlprevents a redundant morphdom-style DOM swap;client.js'se.html && (n.innerHTML=e.html)short-circuits cleanly. Mount response shrinks ~12KB → ~500 bytes on the resume path. The LOAD path (gate widening + skip-html on resume) is opt-in-gated viaenable_state_snapshot/has_prerendered— behavior for non-opt-in views' load path is unchanged. The SAVE block inhandle_event, however, fires unconditionally after every successful WS event, mirroring the HTTP-pathmixins/request.py:603-609semantics — the same session-write cost a POST incurs. Downstream consumers with high-event-rate views (e.g.dj-inputper keystroke) on DB- or Redis-backed sessions should plan for that per-event write cost; the save is gated on top-level view identity (skips embedded child LiveComponent views to avoid wrong-key writes — child-view save coverage tracked at #1467) and wrapped in try/except so failures are caught and logged, never propagate to the event handler. Unblocks djustlive's "scale-to-zero with sub-50ms wake" story for stateful apps.