The biggest release yet — five community-requested features from Discussion #27 landed at once, plus a sidebar UX overhaul. 100/100 tests green, tsc clean.
Each feature was researched against proven prior art before a single line was written (Atlas, Prisma, Sourcegraph, Knip, PyCharm, DataGrip, factory_boy, flake8-django, Roslyn, Ruff, Clippy).
🎯 Inline Fixes — 16 rules, 11 auto-fixers (Ruff-style codes)
- Queryset (7):
.count() > 0→.exists(),.first() is None→not .exists(),filter().exclude()chain,for x in list(qs):, N+1 attribute-access heuristic - Model (5):
null=TrueonCharField/TextField, missing__str__,ForeignKeywithouton_delete,CharFieldwithoutmax_length,TextField(max_length=...) - Datetime (2):
datetime.now()/datetime.utcnow()→timezone.now() - Forms (2):
render(request, ..., locals()),Meta.fields = '__all__'
Suppress inline: # django-orm-lens-disable-next-line DOL007.
🎨 Sidebar UX overhaul
Stable TreeItem.id, rich description dashboard, MarkdownString tooltips with command: deep-links, FileDecorationProvider badges, TreeView.badge activity-bar count, three when-gated viewsWelcome states, view.reveal on active-editor-change.
🧪 Factory Generator
factory_boy scaffold with Faker providers keyed by field type. CharField(max_length) scales word-count buckets, DecimalField(N,D) computes left_digits=N-D, choices= maps to Iterator, M2M gets @post_generation. FK-chain pulls related factories transitively.
🕰 Schema Diff (Time-Travel)
Pick a models.py, pick two commits, get a typed diff as PR-ready markdown. Renames are first-class events, never Add+Drop. Blob-SHA LRU cache — history walks without model churn are effectively free.
🔎 Impact Analysis
Right-click a field → workspace-wide scan across models/serializers/forms/admin/views/urls/templates/tests/migrations with Certain/Likely/Possibly confidence tags on every finding.
⚡ Query Builder
Right-click → template → snippet inserted at cursor. .filter(field=?) auto-appends .select_related on FK, .annotate(post_count=Count('post_set')) honours related_name.
Under the hood
- 7 atomic commits, each with its own research blueprint
- 100/100 tests green (up from 4 at start of dev), 15 end-to-end user journeys
- Per-rule severity override:
djangoOrmLens.rules = { "DOL007": "off" } - Ruff-style select/ignore:
djangoOrmLens.rulesSelect = ["DOL0"] - 6 new commands, 4 new right-click entries
Install
code --install-extension frowningdev.django-orm-lens
codium --install-extension frowningdev.django-orm-lens
pip install --upgrade "django-orm-lens[mcp]"
Commits: b99899a · ab7ad2c · 473d3ff · 040f2bd · 53e51f2 · 5553e5d · 2750a0d