Для чого він
Офлайн-пошук працює з уже завантаженою історією. Видалення потребує інтернету; видалити повідомлення для всіх можна лише там, де це дозволяє Telegram.
Люди залишають у чатах різне: пароль, надісланий поспіхом, одноразовий код, ключ API, номер картки, адресу. Власний пошук Telegram знайде слово, якщо ви пам’ятаєте, в якому чаті воно було і в якій формі. TCleanner будує на пристрої простий індекс вашої історії і дає змогу запустити справжній регулярний вираз по всій ній одразу, а потім вибрати знайдене і видалити його — для всіх, на кожному пристрої, з точною кількістю перед очима, перш ніж щось зникне.
Він читає лише ваш власний обліковий запис і ніколи не надсилає повідомлень. Він індексує ваші особисті чати й групи; канали, на які ви підписані, індексуються лише якщо ви це ввімкнете.
Де дані
Сервера немає, як і аналітики, реклами чи трекерів. Єдині бібліотеки — власна TDLib від Telegram і локальна база даних GRDB. Індекс зберігається в закритому сховищі застосунку і виключений з резервних копій. Сеанс зберігається в зашифрованому каталозі даних TDLib, теж закритому й виключеному з резервних копій; ключ до нього — у Keychain з параметром «лише цей пристрій»: він може бути в зашифрованій резервній копії пристрою, але його не можна відновити на іншому пристрої. Застосунок звертається лише до Telegram, як ваш клієнт.
Ті самі шість принципів є в застосунку, у Параметри › Як це працює: на вашому пристрої; лише Telegram; нічого третім особам; ви вирішуєте, що видаляти; ваш сеанс та індекс; діагностика — лише якщо ви самі її експортуєте. Повний текст — у політиці конфіденційності.
Як він побудований
Нативний застосунок для iPhone та iPad. Один Swift-пакет містить домен і презентери; SwiftUI відображає знімок стану і надсилає намір назад. До Telegram застосунок звертається через TDLib з вимкненою власною базою повідомлень, бо індексом володіє сам застосунок. Цей індекс — SQLite через GRDB, і пошук по ньому — повний перегляд із ранньою зупинкою, а не індекс слів: індекс слів не може відповісти на регулярний вираз.
Поведінку записують раніше, ніж код: одинадцять специфікацій можливостей із виконуваними сценаріями, кожна вимога — під незмінним ідентифікатором, на який посилаються код і тести. Тести працюють на тестових реалізаціях із керованим годинником. У проєкту є власний інструмент мутаційного тестування з цільовим порогом 100%; його досягли всі можливості. Індексування саме регулює темп і продовжується після того, як застосунок було примусово закрито. Видалення завжди для всіх, завжди підтверджується точною кількістю і ніколи не відбувається за розкладом.
Стан
Застосунку ще немає в App Store. Вбудований демонстраційний архів використовується для розробки й тестування без облікового запису Telegram. Вихідний код закритий.
Підтримка застосунку та діагностика: support@kudravets.com. Загальні питання: info@kudravets.com.
Неофіційний застосунок. Використовує API Telegram; не пов’язаний з Telegram.
Ліцензії відкритого ПЗ (англійською)



