Skip to content

Фикс механизма проверки обновлений - #12

Open
shortflow-source wants to merge 2 commits into
iffuno:mainfrom
shortflow-source:agent/fix-skipping-updates
Open

Фикс механизма проверки обновлений#12
shortflow-source wants to merge 2 commits into
iffuno:mainfrom
shortflow-source:agent/fix-skipping-updates

Conversation

@shortflow-source

@shortflow-source shortflow-source commented Aug 19, 2026

Copy link
Copy Markdown

Проблема

При выбранной настройке "следить за обновлениями" обновления устанавливались автоматически даже при отказе. Для приложения, которые имеет доступ к клавиатуре и ответственно относится к безопасности пользователей это не очень удачное решение по умолчанию. А если я не хочу, чтобы обновления устанавливались сами, мне остается только проверять обновления вручную.

В прошлой версии крестик только закрывал уведомление: обновление к этому моменту уже было скачано, поэтому Sparkle всё равно устанавливал его после выхода или перезапуска Keyboop. Со стороны это выглядело так, будто приложение проигнорировало отказ пользователя.

Предлагаемое решение

Судя по всему, такое поведение случается из-за двух факторов:

  1. желание сделать обновления моментальными
  2. механизм работы Sparkle

Чтобы дать возможность получать уведомления без установки, добавлен новый пункт в настройки. В обычном режиме Keyboop спрашивает об обновлении до скачивания. Крестик действительно пропускает эту версию при автоматических проверках.

Для тех, кому важна установка в одно нажатие, добавлена отдельная настройка «Мгновенные обновления» с честным предупреждением о том, что заранее скачанная версия будет установлена при выходе или перезапуске.

Что изменено

  • предложение обновиться появляется до скачивания файла, пока версию ещё можно нормально пропустить;
  • крестик запоминает отказ от этой версии для автоматических проверок; следующая новая версия предлагается как обычно;
  • если плашку временно заменило другое сообщение приложения, обновление откладывается и снова сможет быть предложено позже;
  • проверка обновлений отделена от новой опциональной настройки «Мгновенные обновления»;
  • интерфейс честно предупреждает: если мгновенное обновление уже скачано, Sparkle установит его при выходе или перезапуске Keyboop, даже если закрыть готовую плашку крестиком;
  • тихая установка в простое остаётся отдельной настройкой и автоматически включает мгновенные обновления и их проверку;
  • значение SUAutomaticallyUpdate по умолчанию изменено на false.

Поведение

  • «Проверять обновления» только ищет новые версии.
  • «Мгновенные обновления» заранее скачивают новую версию, поэтому кнопка «Обновить» срабатывает сразу. После скачивания Sparkle уже обязуется установить файл при выходе: крестик на готовой плашке откладывает установку до выхода или перезапуска, но не отменяет её.
  • Когда «Мгновенные обновления» выключены, плашка появляется до скачивания и после крестика эта версия больше не предлагается автоматическими проверками. Ручная проверка всё ещё может показать её снова, а следующая более новая версия предлагается как обычно.
  • «Ставить сразу, без вопросов» сохраняет существующую тихую установку во время простоя и требует включения двух предыдущих настроек.

Почему исправление устроено именно так

После скачивания Sparkle уже планирует установку при выходе и не предоставляет надёжного способа отменить её крестиком. Поэтому настоящий отказ возможен только до начала скачивания — туда и перенесён вопрос в обычном режиме.

При этом авторский сценарий «файл уже готов, одна кнопка — и сразу обновились» не удалён. Он вынесен в отдельную настройку, где последствия предварительного скачивания описаны прямо в интерфейсе.

Проверка

  • git diff --check проходит;
  • все изменённые Swift-файлы проходят parser validation;
  • исходники апдейтера и уведомления проходят type-check с установленным Sparkle 2.9.3;
  • build-скрипт проходит проверку синтаксиса shell;
  • полный clean build недоступен, потому что игнорируемая сборка зависимости vendor/whisper.cpp отсутствует в этом checkout.

@shortflow-source shortflow-source changed the title Fix skipping available updates Фикс механизма проверки обновлений Aug 20, 2026
@shortflow-source
shortflow-source marked this pull request as ready for review August 20, 2026 14:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant