Skip to content

Releases: Xtratter/appshelf

AppShelf 1.38.3

Choose a tag to compare

@Xtratter Xtratter released this 06 Oct 21:46
  • The link catalog is now asked about: on first launch AppShelf asks whether to download the shared list of links (raw.githubusercontent.com, once a day) and use it for link suggestions and update checks through api.github.com. Until you answer "Turn on", the app makes no network requests on its own. Your own links and WebDAV work as before; the choice can be changed any time in the link catalog

AppShelf 1.38.2

Choose a tag to compare

@Xtratter Xtratter released this 06 Oct 07:11
  • Notifications about app updates: after a scheduled send to WebDAV the app checks GitHub releases of your apps and shows one notice about the updates that appeared since the last one ("3 app updates available — DroidTop 1.11 → 1.12, …"); tapping it opens the list with the "Updates" filter. Turn it on in the WebDAV schedule ("Notify about app updates"); Android 13+ asks for the notification permission
  • Fix: pressing "Save" in the WebDAV settings could close the app (the "Wi-Fi only" switch of the schedule was not connected since 1.37.0)
  • Tests for the notice logic

Русский

  • Уведомления об обновлениях приложений: после плановой отправки на WebDAV приложение проверяет релизы ваших приложений на GitHub и показывает одно уведомление о том, что появилось с прошлого раза («Доступно 3 обновления приложений — DroidTop 1.11 → 1.12, …»); нажатие открывает список с фильтром «Обновления». Включается в расписании WebDAV («Уведомлять об обновлениях приложений»); Android 13+ спросит разрешение на уведомления
  • Исправление: кнопка «Сохранить» в настройках WebDAV могла закрывать приложение (переключатель расписания «Только Wi-Fi» не был подключён с версии 1.37.0)
  • Тесты на логику уведомления

AppShelf 1.38.1

Choose a tag to compare

@Xtratter Xtratter released this 06 Oct 06:56
  • Choose what to install when restoring: in an opened saved list, long-press a missing app to mark it; the bottom bar offers "All missing" and "Install (N)", which goes through the restore plan and installs only the marked apps
  • Different versions in the phone comparison: a third section lists apps that exist on both phones in different versions and where the newer one is
  • Compare button in the picker of lists on the server (after choosing a phone), next to the existing "What changed → Compare with a phone…"
  • Tests for the version comparison

Русский

  • Выбор, что ставить при восстановлении: в открытом сохранённом списке долгое нажатие на недостающее приложение отмечает его; внизу появляются «Все недостающие» и «Поставить (N)» — они ведут через план восстановления и ставят только отмеченные
  • Разные версии в сравнении телефонов: третий раздел — приложения, которые есть на обоих телефонах в разных версиях, и где версия новее
  • Кнопка «Сравнить» в окне выбора списка на сервере (после выбора телефона), рядом с прежним «Что изменилось → Сравнить с телефоном…»
  • Тесты на сравнение версий

AppShelf 1.38.0

Choose a tag to compare

@Xtratter Xtratter released this 06 Oct 06:37
  • Restore plan: "Install missing" now first shows where every app will come from — your APK backup, direct download (GitHub or APK link), a saved link page, the store it came from, or nothing (search only) — with counts and the first names of each group. Apps without a source can be skipped, so the queue does not waste steps on them
  • Tests for the grouping rules

Русский

  • План восстановления: «Поставить недостающее» теперь сначала показывает, откуда каждое приложение будет ставиться — из резервной копии APK, прямой загрузкой (GitHub или ссылка на APK), со страницы сохранённой ссылки, из магазина, откуда оно было, или никак (только поиск) — со счётчиками и первыми названиями в каждой группе. Приложения без источника можно пропустить, чтобы очередь не тратила на них шаги
  • Тесты на правила группировки

AppShelf 1.37.2

Choose a tag to compare

@Xtratter Xtratter released this 06 Oct 06:31
  • WebDAV password in exported settings is now encrypted with a passphrase you choose (PBKDF2-HMAC-SHA256 + AES-GCM) instead of being written as plain text; the passphrase is asked when saving to a file or to the server and when restoring. A wrong passphrase changes nothing; old files with a plain-text password are still read
  • Tests for the encryption (round trip, wrong passphrase, damaged and foreign data)

Русский

  • Пароль WebDAV в переносимых настройках теперь зашифрован парольной фразой, которую вы задаёте (PBKDF2-HMAC-SHA256 + AES-GCM), а не лежит открытым текстом; фразу спрашивают при сохранении в файл или на сервер и при восстановлении. Неверная фраза ничего не меняет; старые файлы с открытым паролем по-прежнему читаются
  • Тесты на шифрование (круг, неверная фраза, испорченные и чужие данные)

AppShelf 1.37.1

Choose a tag to compare

@Xtratter Xtratter released this 06 Oct 06:22
  • Faster start: the list of installed apps is re-read only for apps that changed since the last launch (new, updated, reinstalled); names and install sources of the others are taken from the saved list. On a phone with 547 apps loading dropped from about 1.2 s to 40–60 ms. After a language or system update everything is read again once
  • Tests for the reuse rule

Русский

  • Быстрее запуск: список установленных приложений перечитывается только у тех, что изменились с прошлого запуска (новые, обновлённые, переустановленные); названия и источники остальных берутся из сохранённого списка. На телефоне с 547 приложениями загрузка сократилась примерно с 1,2 с до 40–60 мс. После смены языка или обновления системы всё один раз читается заново
  • Тесты на правило переиспользования

AppShelf 1.37.0

Choose a tag to compare

@Xtratter Xtratter released this 06 Oct 06:09
  • The screen keeps its state when it is recreated (rotation, system theme or language change, low memory): search text, filters, selected apps, the opened saved list and the restore queue stay as they were; switching the theme with search open no longer hides the search field while still filtering
  • "Update all" survives screen changes: the progress window moves to the new screen and the queue goes on
  • Safer background work: results of network actions no longer pop up dialogs or toasts on a closed screen; the screen's worker thread stops with it
  • Accessibility: app rows are read by TalkBack (name, version, source, update, note)
  • Large system font: rows grow with the font size instead of overlapping
  • Code cleanup: SyncDialog split into SyncDialog, DialogKit, SchedulePicker, ServerLists; unused imports removed

Русский

  • Экран сохраняет состояние при пересоздании (поворот, смена системной темы или языка, нехватка памяти): текст поиска, фильтры, отмеченные приложения, открытый сохранённый список и очередь восстановления остаются как были; смена темы при открытом поиске больше не прячет строку поиска, оставляя фильтр
  • «Обновить все» переживает смену экрана: окно прогресса переходит на новый экран, очередь продолжается
  • Надёжнее фоновая работа: результаты сетевых действий больше не показывают окна и тосты на закрытом экране; рабочий поток экрана останавливается вместе с ним
  • Доступность: строки приложений читает TalkBack (название, версия, источник, обновление, заметка)
  • Крупный системный шрифт: строки растут вместе со шрифтом, а не накладываются
  • Чистка кода: SyncDialog разделён на SyncDialog, DialogKit, SchedulePicker, ServerLists; убраны неиспользуемые импорты

AppShelf 1.36.5

Choose a tag to compare

@Xtratter Xtratter released this 06 Oct 05:56
  • Tests: 18 new unit tests for update logic (version comparison, APK choice per processor, GitHub link parsing), links (kinds, merge, catalog files) and the sending schedule (year and leap-day borders, single weekday, "every N days" phase)
  • Fix: on a 32-bit x86 device the update picker could choose the x86_64 build because "x86" is part of "x86_64"; now such builds are skipped

Русский

  • Тесты: 18 новых юнит-тестов на логику обновлений (сравнение версий, выбор APK под процессор, разбор ссылок GitHub), ссылки (виды, слияние, файлы каталога) и расписание отправки (границы года и 29 февраля, один день недели, фаза «каждые N дней»)
  • Исправление: на 32-битном x86 при обновлении мог выбираться APK x86_64, потому что «x86» входит в «x86_64»; теперь такие сборки пропускаются

AppShelf 1.36.4

Choose a tag to compare

@Xtratter Xtratter released this 06 Oct 05:31
  • Code cleanup, no changes in behavior: ApkInstaller split into installation (ApkInstaller.kt), "Update all" (UpdateAll.kt), uninstall queue (Uninstaller.kt) and the system reply receiver (InstallReceiver.kt); the three copies of the progress window code replaced by shared helpers (InstallUi.kt)

Русский

  • Чистка кода, поведение не меняется: ApkInstaller разделён на установку (ApkInstaller.kt), «Обновить все» (UpdateAll.kt), очередь удаления (Uninstaller.kt) и приёмник ответов системы (InstallReceiver.kt); три копии кода окна прогресса заменены общими помощниками (InstallUi.kt)

AppShelf 1.36.3

Choose a tag to compare

@Xtratter Xtratter released this 06 Oct 05:20
  • Code cleanup, no changes in behavior: saving to file, settings transfer, links export, sharing and autosave moved out of MainActivity into FileActions.kt (MainActivity is now ~30% smaller than at 1.36.1)

Русский

  • Чистка кода, поведение не меняется: сохранение в файл, перенос настроек, экспорт ссылок, «Поделиться» и автосохранение вынесены из MainActivity в FileActions.kt (MainActivity стал примерно на 30% короче, чем в 1.36.1)