Repository navigation
4.0.0
[4.0.0] - 01.10.2026
Important
This Release has changed the Task Structure.
Therefore, add the following new task to ensure that the killmails continue to be updated
if "killstats" in INSTALLED_APPS:
CELERYBEAT_SCHEDULE["Killstats :: Check for Killmails"] = {
"task": "killstats.tasks.run_tracker_zkb",
"schedule": crontab(minute="*/1"),
}
CELERYBEAT_SCHEDULE["Killstats :: Check for Missing Killmail Data"] = {
"task": "killstats.tasks.run_tracker_missing_data",
"schedule": crontab(minute="*/15"),
}Caution
Please note that this release involves structural dependency changes.
Therefore, the command killstats_migrate_old_killmails is no longer available
Added
Performance & Database Optimization
- Index-Optimized Date Range Queries: Migrated from SQL date extraction functions (
__year/__month) to index-backed range queries (gte/ltonkillmail_date), enabling full B-tree composite index scans across millions of killmails. - Composite Database Indexes: Added composite indexes on
Killmail(km_date_idx,km_corp_loss_idx,km_ally_loss_idx,km_corp_val_idx,km_ally_val_idx,km_val_desc_idx,km_system_idx) andAttacker(att_km_final_blow_idx) to drastically reduce query latency. - Server-Side Pagination & Two-Phase Loading: Implemented high-performance database-level
LIMIT/OFFSETpagination; detailed records (victims, ships, participants, final blows) are only fetched for the current page slice. - N+1 Query Elimination: Resolved N+1 query bottlenecks via native Django
SolarSystem.objects.in_bulk(...)bulk lookups.
Backend API (Django Ninja V2)
- RESTful Query Parameter Filtering: Converted API routes from static URL path dates to flexible Django Ninja
FilterSchemaquery parameters (DateRangeFilter,TopPilotsFilter,HallFilter,KillmailFilter). - Manager & QuerySet Encapsulation: Cleanly encapsulated entity lookups (
Attacker.objects.for_entity(...),Killmail.objects.for_victim_entity(...)) and pagination logic (Killmail.objects.get_paged_ids(...)) directly within model managers. - Modular Endpoints: Decomposed monolithic endpoints into lightweight, parallel endpoints (
/stats/v2/summary/,/stats/v2/attackers/,/stats/v2/victims/,/hall/v2/,/killmails/).
Frontend (Modern React Framework)
- Vite & TypeScript SPA: Brand-new Single Page Application frontend built with React 19, TypeScript, and Vite.
- TanStack Query & State Management: Parallel data fetching with automated caching, background updates, and URL query state persistence via
nuqs. - Interactive UI Components: Purpose-built components for killboard stats, TanStack Table with server-side pagination, Hall of Fame & Shame, Top Pilots modal, and tooltips with direct zKillboard links.
- Full Localization & Test Suite: Multi-language i18n support (EN/DE) with
react-i18nextand unit testing via Vitest and React Testing Library.
CSS Framework & Theme Integration
- Isolated Styling for Alliance Auth: Conflict-free utility design system (
ks-*classes) designed to seamlessly integrate with all standard Alliance Auth themes. - Vowra Dark Theme Aesthetic: Sleek EVE-inspired dark interface featuring glassmorphism (
backdrop-blur), subtle glowing gradients, and styled rank badges (Gold/Silver/Bronze).
Changed
- Made the React-based Killboard V2 the default view across the application.
- Increased backend test coverage above 83% with
AuthTestCaseand network isolation (pook). - Modernized
KillmailBodyto Pydantic v2BaseModel.
Removed
- Deprecated server-side Django template views (
killboard.html,corporation_admin.html,alliance_admin.html). - Obsolete V1 Ninja endpoints (
/killmail/month/...,/halls/month/...,/stats/top/10/...,/stats/all/...). - Legacy helper functions and unused modules (
_date_filters_*,_entity_*_q,account_manager.py,service.py,sync.py). - Management command
killstats_migrate_old_killmails.
What's Changed
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #137
- [npm] Bump the npm-dependencies group with 2 updates by @dependabot[bot] in #138
- Bump js-yaml from 4.1.1 to 4.3.0 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #139
- [github-actions] Bump codecov/codecov-action from 6 to 7 by @dependabot[bot] in #140
- [github-actions] Bump actions/checkout from 6 to 7 by @dependabot[bot] in #141
- [npm] Bump the npm-dependencies group with 3 updates by @dependabot[bot] in #142
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #143
- [FIX] AttributeError in Permission Model since AAv5.2 by @Geuthur in #144
- [FIX] Proxy Model Issue with AAv5.2 by @Geuthur in #145
- Modify FUNDING.yml to include Geuthur by @Geuthur in #146
- Bump brace-expansion from 5.0.5 to 5.0.8 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #147
- Bump the npm_and_yarn group across 1 directory with 2 updates by @dependabot[bot] in #149
- [github-actions] Bump actions/setup-python from 6 to 7 by @dependabot[bot] in #153
- [npm] Bump the npm-dependencies group with 3 updates by @dependabot[bot] in #151
- [github-actions] Bump actions/setup-node from 6 to 7 by @dependabot[bot] in #150
- [github-actions] Bump shogo82148/actions-setup-redis from 1 to 1.55.0 by @dependabot[bot] in #152
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #154
- Bump fast-uri from 3.1.4 to 3.1.5 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #155
- Bump js-yaml from 4.3.0 to 4.3.1 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #156
- [github-actions] Bump shogo82148/actions-setup-redis from 1.55.0 to 1.57.0 by @dependabot[bot] in #158
- [npm] Bump the npm-dependencies group with 2 updates by @dependabot[bot] in #157
- Bump fast-uri from 3.1.5 to 3.1.7 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #159
- Bump @humanfs/node from 0.16.7 to 0.16.8 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #160
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #161
- [CHANGE] Refactor GitHub by @Geuthur in #162
- [npm] Bump the npm-dependencies group with 3 updates by @dependabot[bot] in #163
- Bump js-yaml from 4.3.1 to 4.3.2 in the npm_and_yarn group across 1 directory by @dependabot[bot] in #164
- [pre-commit] Bump https://github.com/pylint-dev/pylint from v4.0.8 to 4.0.9 by @dependabot[bot] in #168
- [pre-commit] Bump https://github.com/tox-dev/pyproject-fmt from v2.29.3 to 2.29.4 by @dependabot[bot] in #170
- [pre-commit] Bump https://github.com/thibaudcolas/pre-commit-stylelint from v17.14.1 to 17.15.0 by @dependabot[bot] in #171
- [pre-commit] Bump https://github.com/pre-commit/mirrors-eslint from v10.10.0 to 10.11.0 by @dependabot[bot] in #169
- [pre-commit] Bump the pre-commit-dependencies group with 4 updates by @dependabot[bot] in #167
- [npm] Bump eslint from 10.10.0 to 10.11.0 in the npm-dependencies group by @dependabot[bot] in #166
- [ADD] Refactor Killstats by @Geuthur in #165
- [RELEASE] v4.0.0 by @Geuthur in #172
Full Changelog: v3.0.1...v4.0.0