All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
In Development - Unreleased
4.0.2 - 2026-04-07
- Fail gracefully on
RequestError, which can be thrown bydjango-esiwhen ESI is unavailable, instead of crashing the task (Downtime, Endpoint down, etc.)
- (Internal) Better type hinting
- Translations updated
4.0.1 - 2026-02-27
- Actually remove the dependency to
eveuniverse…
4.0.0 - 2026-02-27
Warning
This version includes a dependency change, so please make sure to read the update instructions carefully before updating to this version, otherwise, the app will not work properly.
- Moved the operational code away from
eveuniverse, usingdjango-eveonline-sdeinstead, for all static EVE data. This also means that the SDE needs to be imported into the database now, which is done via a management command. Please make sure to run this command after updating to this version; otherwise, the app will not work properly.
After installing this version, modify your INSTALLED_APPS in your local.py (or
conf/local.py for Docker installations):
INSTALLED_APPS += [
# ...
"eve_sde", # Only if not already added for another app
"sovtimer", # This one should already be in there
# ...
]
# This line is right below the `INSTALLED_APPS` list, and only if not already added for another app
INSTALLED_APPS = ["modeltranslation"] + INSTALLED_APPSAdd the following new task to ensure the SDE data is kept up to date:
if "eve_sde" in INSTALLED_APPS:
# Run at 12:00 each day
CELERYBEAT_SCHEDULE["EVE SDE :: Check for SDE Updates"] = {
"task": "eve_sde.tasks.check_for_sde_updates",
"schedule": crontab(minute="0", hour="12"),
}
# Set the following when you have a bare metal installation, or Docker with a
# non-standard storage for `myauth`
ESDE_TASK_SPLIT = TrueMigrate and populate SDE:
python manage.py migrate eve_sde
python manage.py esde_load_sdeMigare the app and run static collection:
python manage.py migrate sovtimer
python manage.py collectstatic --noinput3.5.1 - 2026-02-03
- Background to "Total Campaigns" filter above the campaign table to indicate the current filter
- Translations updated
- Unexpected argument from task chain
3.5.0 - 2026-01-23
Important
This version is utilising features that are only available in Alliance Auth >= 4.12.0. Please make sure to update your Alliance Auth instance before installing this version, otherwise, an update to Alliance Auth will be pulled in unsupervised.
- Switched to DataTables 2 provided by Alliance Auth, instead of bundling it ourselves
- Minimum requirements:
- Alliance Auth >= 4.12.0
3.4.0 - 2026-01-16
- Ordering by start time in the campaign table
- DataTable processing refactored/improved
- Enabled global search in the campaign table
- Allow clicking on table headers to change the sorting order
3.3.2 - 2026-01-05
- Translations updated
3.3.1 - 2025-12-18
- Improve error handling during downtime
- Account for
HTTPError - Account for
RequestError
- Account for
3.3.0 - 2025-12-02
- Ajax call refactored
- Translations updated
allianceauth-app-utilsas dependency
3.2.1 - 2025-11-17
- Task code cleaned up and simplified
- Chaining update tasks to ensure they always run in the correct order
- Task cache, since
django-esinow handles ETag caching internally
3.2.0 - 2025-11-16
- Don't use deprecated DataTable options
- DataTables updated to v2.3.5
- Campaigns are now filterable by their state (upcoming, active, all)
- Clearer log messages on ESI exceptions
- Translations updated
3.1.0 - 2025-11-14
- ESI handler to handle ESI calls and deduplicate code
- Allow for public access if enabled in settings
- Improved JS performance when recalculating remaining time for campaigns
- Improvement to the campaign table
3.0.0 - 2025-11-12
- Bootstrap tooltips for the progress icons
- Loading spinner to DataTable while loading data via AJAX
- Switched to OpenAPI3 specification for ESI endpoints
- Dependency to
django-esiset to>=8,<9 - Set compatibility date to 2025-11-06 (November 6th, 2025)
- Dependency to
- Info panel styling improved
- Switched to DataTables 2
- Improved logging for the sovereignty structures task
- JavaScript optimized
- Set maximum Python version to 3.13
- Translations updated
3.0.0-beta.3 - 2025-11-11
Caution
This is a BETA version, not intended for production use! Please test it in a safe environment first and report any issues you find.
This version is pulling in an BETA version of django-esi as well,
so please be aware that this might break at any time.
- Bootstrap tooltips for the progress icons
- Info panel styling improved
- Switched to DataTables 2
- Updated ESI compatibility date to 2025-11-06 (November 6, 2025)
- Translations updated
3.0.0-beta.2 - 2025-11-04
Caution
This is a BETA version, not intended for production use! Please test it in a safe environment first and report any issues you find.
This version is pulling in an BETA version of django-esi as well,
so please be aware that this might break at any time.
- Loading spinner to DataTable while loading data via AJAX
- Updated dependencies
django-esi>=8.0.0b2
- Set maximum Python version to 3.13
3.0.0-beta.1 - 2025-10-17
Caution
This is a BETA version, not intended for production use! Please test it in a safe environment first and report any issues you find.
This version is pulling in an BETA version of django-esi as well,
so please be aware that this might break at any time.
- Updated dependencies
django-esi>=8.0.0b1
- Updated ESI compatibility date to 2025-09-30 (September 30, 2025)
- Etag handling for ESI calls, since
django-esinow handles this internally
2.6.2 - 2025-10-07
- Translations updated
3.0.0-alpha.4 - 2025-09-18
Caution
This is an ALPHA version, not intended for production use! Please test it in a safe environment first and report any issues you find.
This version is pulling in an ALPHA version of django-esi as well,
so please be aware that this might break at any time.
- ETag handling for ESI calls
- JavaScript optimized
3.0.0-alpha.3 - 2025-09-04
Caution
This is an ALPHA version, not intended for production use! Please test it in a safe environment first and report any issues you find.
This version is pulling in an ALPHA version of django-esi as well,
so please be aware that this might break at any time.
- Attempting to catch ESI errors thrown by the OpenAPI client through
aiopenapi3(See: https://gitlab.com/allianceauth/django-esi/-/issues/40)
3.0.0-alpha.2 - 2025-09-04
Caution
This is an ALPHA version, not intended for production use! Please test it in a safe environment first and report any issues you find.
This version is pulling in an ALPHA version of django-esi as well,
so please be aware that this might break at any time.
- Warning: Cannot reinitialise DataTable
3.0.0-alpha.1 - 2025-09-04
Caution
This is an ALPHA version, not intended for production use! Please test it in a safe environment first and report any issues you find.
This version is pulling in an ALPHA version of django-esi as well,
so please be aware that this might break at any time.
- Switch to OpenAPI3 based ESI client
- Set ESI compatibility date to 2025-08-26 (August 26, 2025)
- Improved logging for the sovereignty structures task
2.6.1 - 2025-09-02
- Switch to Terser for JavaScript compression
- Translations updated
2.6.0 - 2025-08-14
- Use AA framework JS functions
- Minimum requirements
- Alliance Auth >= 4.9.0
2.5.1 - 2025-08-05
- Translations updated
2.5.0 - 2025-07-08
- New dependency
django-esi>=7.0.1
- User Agent generation updated to match latest
django-esiguidelines - Translations updated
2.4.3 - 2025-06-20
- Docker install and update instructions to README.md
- Wording: Use "campaigns" instead of "timers" in the campaign table
- Improved explanatory text in the campaign table a bit
- Unused constants
2.4.2 - 2025-06-16
- Contrast issue with upcoming and active campaigns when using the Darkly theme
2.4.1 - 2025-06-13
- Task code refactored
This also fixes an issue with the ADMs getting reset when a Sovhub was reinforced. Unfortunately, the ADM information are not available in the ESI data for reinforced Sovhubs, so the code had to be changed to not reset the ADMs when a Sovhub is reinforced.
This will not fix it for already registered campaigns, but for new ones. - Management command for the initial data load refactored
- zKillboard icon properly loaded via Django static files
- Dotlan constellation links now generated using the
eveonlineapp
2.4.0 - 2025-06-03
- Cache breaker for static files. Doesn't work as expected with
django-sri.
2.3.5 - 2025-05-05
- Translations updated
2.3.4 - 2025-04-09
- Check for
DEBUGstatus has been moved to its own function
- Obsolete template
2.3.3 - 2025-03-04
- Improved the task code
- Improved date/time localization
- Improved the code for the
sovtimer_statictemplate tag
- Redundant localization call in JavaScript
2.3.2 - 2025-02-27
- The last campaign wasn't removed reliably when there were no more campaigns reported by ESI
2.3.1 - 2025-02-26
- Localize datetime output in the campaign table
- Use DataTables' translations instead of our own
- Simplify constant names
- Make ajax call URL an internal URL
- Translations updated
TypeError: object of type 'NoneType' has no len()in update task. Thank you, CCP, for reinvigorating null-sec with the Equinox update. This led to a period when there were no sovereignty campaigns at all, which gave me the chance to find this bug. Now this bug is fixed, you can make null-sec great again, please, and thank you.
2.3.0 - 2025-02-02
- Upcoming Timer Threshold
- Use
django-srifor sri hashes - Material Icon font updated to v143
- Minimum requirements
- Alliance Auth >= 4.6.0
2.2.4 - 2025-01-13
- Escaping translation strings to fix potential issues with French and Italian translations
- Set user agent according to MDN guidelines
2.2.3 - 2024-12-15
- Integrity hashes for the static files
- More logging to the task, since I couldn't believe there are no sovereignty campaigns at all. Well, the Equinox update works, null-sec is "truly" reinvigorated.
- Hide campaign type column. Since there is now only one campaign type, we don't need it.
- Proper JS settings merge
2.2.2 - 2024-12-14
- Python 3.13 to the test matrix
- Translations updated
2.2.1 - 2024-11-01
- Ukrainian translation improved
2.2.0 - 2024-09-16
- Dependencies updated
allianceauth>=4.3.1
- French translation improved
- German translation improved
- Japanese translation improved
- Lingua codes updated to match Alliance Auth v4.3.1
2.1.0 - 2024-07-16
- Campaign event name from "IHub defense" to "Sov Hub defense" to reflect the structure name change in EVE Online
- Support for Python 3.8 and Python 3.9
2.0.2 - 2024-05-16
- Translations updated
2.0.1 - 2024-03-16
- Cell width in the table
2.0.0 - 2024-03-16
Note
This version needs at least Alliance Auth v4.0.0!
Please make sure to update your Alliance Auth instance before you install this version, otherwise, an update to Alliance Auth will be pulled in unsupervised.
- Compatibility to Alliance Auth v4
- Bootstrap 5
- Django 4.2
- JS modernized
- CSS modernizes
- Templates changed to Bootstrap 5
- Compatibility to Alliance Auth v3
2.0.0-beta.1 - 2024-02-18
Note
This version needs at least Alliance Auth v4.0.0b1!
Please make sure to update your Alliance Auth instance before you install this version, otherwise, an update to Alliance Auth will be pulled in unsupervised.
- Compatibility to Alliance Auth v4
- Bootstrap 5
- Django 4.2
- JS modernized
- CSS modernizes
- Templates changed to Bootstrap 5
- Compatibility to Alliance Auth v3
1.12.3 - 2023-09-26
Note
This is the last version compatible with Alliance Auth v3.
- Capitalization for translatable strings
- Ensure the task only runs one instance at a time and is not fired when already running
- Translations updated
- Test suite updated
1.12.2 - 2023-09-20
- Pylint issues
- Missing
<tr>tag
- Use keyword arguments wherever possible
- German translation improved
1.12.1 - 2023-09-02
- Korean translation improved
1.12.0 - 2023-08-31
- Korean translation
1.11.0 - 2023-08-16
- Spanish translation
1.10.2 - 2023-08-13
- Bootstrap CSS fix
1.10.1 - 2023-07-30
- Footer to promote help with the app translation
1.10.0 - 2023-04-26
- Ukrainian translation prepared. Not translated yet, need translators.
- Moved the build process to PEP 621 / pyproject.toml
1.9.0 - 2023-04-16
- Russian translation
1.8.0 - 2023-04-13
- German translation
1.7.0 - 2022-10-12
Before you update to this version, make sure you have at least Alliance Auth v3.0.0 installed and running, otherwise, this update will pull in Alliance Auth 3.x unsupervised with all its breaking changes. (See Alliance Auth 3.0.0 release notes)
- No longer testing for AA alpha versions
- Moved CSS and JS to their own bundled templates
- Minimum requirements
- Alliance Auth >= 3.2.0
- Python >= 3.8
- Auto retry for ESI and OS errors in tasks, since django-esi already retries all relevant errors
1.6.0 - 2022-07-11
- Use bundled version of AA provided JavaScripts
- Minimum requirement
- Alliance Auth >= 2.14.0
- Unused JavaScript
1.5.1 - 2022-05-25
- Versioned static files to break the browser cache on app update
- JavaScript modernized
- Attackers default score in DB
1.5.0 - 2022-03-02
- Test suite for AA 3.x and Django 4
- Switched to
setup.cfgas config file, sincesetup.pyis deprecated now
- Deprecated settings
1.4.0 - 2022-02-28
- [Compatibility] AA 3.x / Django 4 :: ImportError: cannot import name 'ugettext_lazy' from 'django.utils.translation'
1.3.1 - 2022-02-02
- Using
pathin URL config instead of soon-to-be removedurl
1.3.0 - 2022-01-30
- Useragent for ESI calls
models.TextChoicesrefactored for better code readability- Models refactored
- Views refactored
- Switched to
allianceauth-app-utilsfor logging
This release has significant changes to its models, so make sure to follow the instructions below.
pip install aa-sov-timer==1.3.0
python myauth/manage.py collectstatic --noinput
python myauth/manage.py migrate
python myauth/manage.py sovtimer_load_initial_dataAnd restart your supervisor.
1.2.0 - 2022-01-12
- Tests for Python 3.11
- Javascript:
constinstead ofletwhere ever appropriate - Minimum requirements
- Alliance Auth v2.9.4
1.1.0 - 2021-11-30
- Minimum requirements
- Python 3.7
- Alliance Auth v2.9.3
1.0.0 - 2021-11-04
- Now with a proper test suite, it's time to bump it to v1.0.0
0.6.2 - 2021-09-24
- Basic tests
- Better way of implementing the background colours for campaigns that are upcoming or in progress
- Material Icon font updated
- Codebase cleaned up
- Use minified JS in template
0.6.1 - 2021-09-23
- Background colour for campaigns that are upcoming or in progress
0.6.0 - 2021-08-06
0.5.8 - 2021-07-08
- Tested for compatibility with Python 3.9 and Django 3.2
0.5.7 - 2021-06-19
- Performance improvements
0.5.6 - 2021-03-24
- Dotlan links
0.5.5 - 2021-02-17
- Alt attribute for alliance logos
- Explanation for ADM
0.5.4 - 2021-01-31
- Let's use the right repo url, shall we? (Thanks @milleruk for the hint!)
0.5.3 - 2021-01-29
- Alliance logos to defender column
0.5.2 - 2021-01-27
- How to deal with UTC in javascript
0.5.1 - 2020-12-16
- Bootstrap classes in template
0.5.0 - 2020-11-15
- Progress logic improved (task)
- Progress display improved (view)
0.4.0 - 2020-11-13
- Moved the last ESI calls to the task
- Progress Icons
0.3.0 - 2020-11-12
- All relevant updates are now done via scheduled task (see README.md)
- Active campaigns are now highlighted
0.2.0 - 2020-11-11
- Filter for active campaigns
- zKillboard icon with a link to the constellation killboard on active campaigns
0.1.0 - 2020-11-10
- initial version
