1.7.8:

    - Minor technical update due to pytz dependency update and new migration because of it.

1.7.7:

    - Added Django 3.0 support.
    - Dropped Django 2.1 support.
    - Tested in Python 3.8.
    - Added six as a dependency to support Django 1.11 on Python 2.7 and Django 3.0 simultaneously (https://docs.djangoproject.com/en/3.0/releases/3.0/#removed-private-python-2-compatibility-apis).

1.7.6:

    - Reassembled pypi package because of small but important change in pywebpush library it depends on (Google GCM endpoint, which will stop working on May 29th, replaced with FCM endpoint).

1.7.5:

    - Reassembled pypi package as it now supports multiple Django versions.

1.7.4:

    - Max length of endpoint is 512 chars now instead of 255 (some endpoint don't fit to 255). Do not forget to run migrate.
    - MySQL users, please read docs/MYSQL.rst! Your project needs some additional setup.

1.7.3:

    - Small modifications to pushsend management command. Mostly in logging and subscription error accounting.

1.7.2:

    - Fixed payload encryption in legacy non-VAPID Chrome subscription due to pywebpush dependency update.

1.7.1:

    - Fixed a bug with vapid_claims dict reference.

1.7:

    - VAPID support (it is default auth method from now on). 
    - FCM/GCM support left only for bc (sending pushes to subscriptions that already exist).

1.6.9:

    - Fixed wrong urllib import from six.moves.

1.6.8:

    - New setting: how many processes to use in a pushsend management command for parallel push.

1.6.7:

    - Edited raw SQL query in push task stats so it won't fail on Postgresql.

1.6.6:

    - Django test for pushsend management command.
    - Python 2.7 backward compatibility.

1.6.5:

    - Tests for push views.

1.6.4:

    - Moving pid locks (so we can have only 1 copy of management command running) from files to DB because commonstuff changed.

1.6.3:

    - Completely reseted app migrations before publishing app.

1.6.2:

    - В модели и коде push переименовал свой выдуманный ext_id на общеупотребимый термин endpoint.
    - Выпилил код связанный с хранением old_ext_id для push, т.к. он запутанный, переусложненный и ненужный.

1.6.1:

    - i18n приложения. По умолчанию английский и добавлен русский перевод.
    - Удалил консольную комманду pushfill (точнее переместил в другое приложение), тк она не универсальна.

1.6:

    - Переход на Python 3.
    - Починил JS-код сохранения на сервере отключенной пользователем подписки, который был поломан в ходе рефакторинга промисов в JS.
    - service-worker.js теперь отдается динамически, не нужно копировать его ручками в папку www каждого проекта.

1.5.6:

    - JS-код переписан, чтобы быть понятнее.
    - Учет закрытия нотификации пользователем в статистике.

1.5.5:

    - Большие картинки в пушах для Chrome.
    - Новые настройки для этих картинок.
    - Обновлена обязательная версия pywebpush в зависимостях, т.к. раньше, оказывается, в ней не работали пуши без payload.

1.5.4:

    - Проверка, что тип и расширение картинки совпадают, чтобы не залили png-картинку, как .jpg например.

1.5.3:

    - Возможность массового включения/выключения заданий пуш-рассылки в админке.
    - Консольная команда для создания заданий рассылки из активных статей, которые еще не пушились.

1.5.2:

    - Необязательные настройки theme_color и background_color для web-app, которое объявляется в /push/manifest.json.
    - Автоматическое определение размера указанных иконок для PWA.
    - Удалены настройки DJANGO_PUSH_APP_ICON_W, DJANGO_PUSH_APP_ICON_H.
    - DJANGO_PUSH_APP_ICON_URL переименована в DJANGO_PUSH_APP_ICON_URLS.

1.5.1:
    
    - За-defer-ил загрузку джаваскриптов приложения.

1.5:

    - Рассылка с учетом часового пояса пользователя.
    - Чистка старых tzl и неактивных подписок, чтобы таблицы push не разростались.

1.4:

    - Отправка сообщений с полезной нагрузкой.
    - Delete unused FCM_SLEEP var.
    - Убрана зависимость от django-sslserver, т.к. для дебага пушей на локалке ssl не нужен.
    - Отказ от extra_data в подписке и передачи ext_id при клике по пушу - лишние тормоза и сложность кода ради возможности, которая никак не используется.

1.3:

    - Сбор часовых поясов в push-подписках (на будущее).
    - Сбор auth secret в push-подписках (на будущее, если будем шифровать payload, пока пусть база обновляется).
    - Переименовал GCM в актуальный FCM в названиях настроек и переменных.

1.2:

    - Удален параметр delay_while_idle=True из рассылки GCM/FCM, т.к. "This parameter is deprecated. After Nov 15th 2016, it will be accepted by FCM, but ignored.".
    - Удалена возможность шифрования payload для Firefox, т.к. в новых версиях FF она перестала работать (service-worker жалуется, что не может расшифровать нагрузку).
    - Совместимость с Django 1.11 LTS. Совместимость со старыми версиями неизвестна.
    - Вывод времени обработки рассылок в админке без микросекунд (лишняя информация).

1.1.4:

    - Немного доработано восстановление ext_id под странные версии хрома (и тех, кто использует его движок), когда передается только последняя часть урла.

1.1.3:

    - Исправил непойманный exception в админке пушей при подсчете среднего ctr.

1.1.2:

    - В админке по push task появился подсчет среднего ctr и всего кликов, показов. Чтобы отслеживать эффективность рассылок по периодам.

1.1.1:

    - Настройка, которая позволяет отключить проверку CSRF в push-вьюхах, иногда бывает необходимо.

1.1:

    - Push standalone app теперь не падает, если нет именного урла homepage для главной сайта.
    - В javascript коде push убраны все зависимости от jQuery.
    - Возможность хранить в БД доп. инфу по каждой подписке в JSON-формате.
    - Хеш всей важной инфы по подписке в куке, чтобы сразу обновить на сервере, как только что-то изменится.
    - Отключен шифрованный payload в push'ах для FF. В современном firefox шифрование сломалось (раньше работало), service-worker ругается, что не может расшифровать сообщение.
    - Замена инфы из каждой push-подписки на макросы в урлах push-заданий.

1.0.1:

    - Время сна в секундах между пачками в GCM рассылке вынесено в отдельную настройку.

1.0:

    - Перенос всего кода в reusable app.
    
