Release v1.2.2
What's Changed
- refactor(version): single source of truth, drop hardcoded VERSION tuple (c98fef5)
- test(v1.2.2): cover defensive branches to close patch-coverage gap (1f51229)
- docs(changelog): add 1.2.2 release notes (87af4bf)
- chore(release): bump version to 1.2.2 (c8b76a1)
- fix(types): apply DjangoObjectType.get_queryset on DjangoListObjectField (completes #58) (dfdbbb0)
- fix(docs): fix crashing version snippet, compat matrix over-claim, missing classifier (closes #67) (665230f)
- fix(docs/ci/filtering): README 404, stale issue link, mypy drift, daphne cap, filter_fields None (closes #55) (24723e8)
- fix(types): all_directives type mismatch + _fmap_cache through .only()-narrowing pass (closes #66) (bfd216c)
- perf(optimizer): thread _fmap_cache through nested-list descent in _walk_filtered_prefetches (closes #57) (a7e99d7)
- perf(optimizer): eliminate per-parent COUNT N+1 on empty window-sliced nested pages (closes #64) (e11f7a2)
- fix(types): Meta-option hygiene — unknown options, include_fields, id KeyError, queryset (closes #65) (b1d18c8)
- fix(converter): fold app_label into enum registry key + use parent_link for MTI guard (closes #52) (1a34940)
- fix(nested): pk=0 upsert creates instead of updates + enum members in LIST not unwrapped to raw values (closes #51) (455feda)
- fix(mutation): close nested-write integrity gaps — M2M bad-pk 500, reverse-FK child steal, reverse-O2O list, forward-FK list drop (closes #62) (1ef3811)
- fix(playground): add session middleware to WebSocket ASGI stack, fix directive names and enum example (closes #54) (a028933)
- fix(subscriptions): defer broadcasts via transaction.on_commit to suppress phantom notifications on rollback (closes #63) (fb63794)
- fix(subscriptions): wrap sync ORM hooks and cache I/O in sync_to_async + guard disconnect AttributeError (closes #61) (e50d7a4)
- fix(cache): multipart POST 500 + CSRF cookie replay under CACHE_ACTIVE (closes #53) (fd4985a)
- fix(cache): version-counter correctness — on_commit bump, timeout=None, seed to 1 (closes #60) (dc19991)
- fix(directives/pagination): wrap bad client input in GraphQLError (closes #50) (62414cc)
- style: apply ruff format to pagination.py and test_pagination_ordering_security.py (2f39efd)
- fix(pagination): validate ordering terms against concrete attnames (closes #59) (56c653a)
- fix(types): invoke DjangoObjectType.get_queryset scoping hook (closes #58) (e02c46e)
Installation
pip install django-graphex==1.2.2Full Changelog: v1.2.1...v1.2.2