Poveste

Tidy s-a întors: povestea din spatele reconstruirii noastre complete după 6 ani

12 min de citit
Tidy Team
Tidy App Icon
v2.0 NEW RELEASE

Dacă citești asta, există o șansă să îți amintești de Tidy. Poate l-ai folosit în 2018 sau 2019. Poate ai glisat prin sute de fotografii, curățându-ți galeria cu o mișcare a degetului. Poate ne-ai lăsat o recenzie. Dacă ai făcut-o, mulțumim. Am citit fiecare în parte.

Citește și: Ce e nou în Tidy v2.1 și v2.2: toate actualizările într-un singur loc

Și apoi am dispărut.

Timp de șase ani, Tidy a stat neatins în App Store. Fără actualizări. Fără funcționalități noi. Fără comunicare. Aplicația încă funcționa, în mare parte, dar lumea din jurul ei a continuat să se miște. iOS a evoluat. Telefoanele au primit camere mai bune (și biblioteci foto mai mari). Aplicații noi au apărut și au dispărut. Și Tidy pur și simplu... a stat acolo.

Citește și: Cum să organizezi fotografiile pe iPhone: Ghidul complet (2026)

Astăzi, asta se schimbă. Tidy v2.0 este o reconstruire completă de la zero. Nu o actualizare. Nu o împrospătare. O aplicație complet nouă, construită de la bază cu tehnologie modernă, funcționalități noi și tot ce am învățat în anii de la lansarea inițială.

Citește și: Cum găsește AI fotografiile tale duplicate și similare (și de ce e mai bun decât căutarea manuală)

Aceasta este povestea modului în care am ajuns aici.

Tidy original: 4,8 stele și 723 de recenzii

Tidy a fost lansat în 2018 cu o premisă simplă: curățarea bibliotecii foto ar trebui să se simtă ca un joc. Glisează la dreapta pentru a păstra o fotografie. Glisează la stânga pentru a o șterge. Fără meniuri complicate, fără sisteme de foldere, fără cadre organizaționale. Doar decizii rapide, instinctive care elimină dezordinea.

Răspunsul ne-a surprins. În câteva luni, Tidy acumulase sute de recenzii cu o medie de 4,8 din 5 stele. Până când am ajuns la 723 de recenzii, tendința era clară: oamenilor le plăcea mecanismul de glisare. Le plăcea cât de rapid era. Le plăcea că făcea o sarcină plictisitoare să pară distractivă.

Tidy în cifre

  • 4,8 Rating stele
  • 723 Recenzii
  • 31 Limbi
  • 2018 Anul lansării

Utilizatorii ne spuneau lucruri precum “aceasta este aplicația de care nu știam că am nevoie” și “am curățat 3.000 de fotografii într-o după-amiază.” Aplicația a fost tradusă în 31 de limbi. A apărut în secțiunile prezentate din App Store în mai multe țări. Pentru o mică aplicație indie cu un scop focalizat, a performat mult peste așteptări.

Tidy original a fost construit în Swift 4, folosind modelul de arhitectură MVC care era standard pentru dezvoltarea iOS la acel moment. Era o aplicație solidă pentru epoca sa. Dar tehnologia se mișca rapid, și până în 2019, fisurile începeau să apară.

De ce am tăcut timp de 6 ani

Răspunsul sincer este: viața s-a întâmplat.

Tidy a fost construit de o echipă mică, și când prioritățile s-au schimbat - așa cum se întâmplă pentru dezvoltatorii indie - aplicația a căzut în josul listei. Nu a existat o poveste dramatică, nicio achiziție, nicio decizie de închidere. Doar driftul lent care se întâmplă când un proiect secundar nu mai primește atenție.

Între timp, decalajul dintre unde era Tidy și unde trebuia să fie a continuat să crească:

  • SwiftUI a apărut în 2019 și a maturat rapid, făcând interfețele bazate pe UIKit să pară învechite
  • Bibliotecile foto au explodat ca dimensiune. Utilizatorul mediu de iPhone a trecut de la 2.000-5.000 fotografii la 10.000-50.000
  • AI și machine learning au trecut de la experimental la așteptat. Utilizatorii au început să aștepte ca aplicațiile să fie inteligente
  • Widget-urile iOS și Live Activities au creat noi suprafețe pe care aplicațiile erau așteptate să le suporte
  • Așteptările de confidențialitate au crescut dramatic, utilizatorii cerând procesare pe dispozitiv și transparență
  • Swift însuși a evoluat prin versiunile 5.0 până la 6.0, cu concurență strictă și noi funcționalități ale limbajului

Până când ne-am uitat serios din nou la Tidy, codul sursă original era arheologic. Cod Swift 4 care nu se compila cu toolchain-urile moderne. Modele UIKit care fuseseră înlocuite de două ori. O arhitectură care nu putea suporta niciuna dintre funcționalitățile pe care utilizatorii le așteptau acum.

Aveam două opțiuni: să încercăm să reparăm și să actualizăm codul vechi, sau să o luăm de la zero.

Decizia de a reconstrui de la zero

Am ales să reconstruim. Iată de ce.

Actualizarea vechiului Tidy ar fi însemnat portarea codului Swift 4 la Swift 6, rescrierea întregii interfețe de la UIKit la SwiftUI, înlocuirea arhitecturii MVC cu ceva modern, adăugarea de noi framework-uri Apple (Vision, Core ML, StoreKit 2, WidgetKit) și cumva să facem toate aceste modificări să funcționeze împreună fără a strica aplicația existentă.

În dezvoltarea software, există un eseu celebru al lui Joel Spolsky numit “Things You Should Never Do, Part I,” care argumentează că rescrierea de la zero este aproape întotdeauna o greșeală. Și pentru majoritatea proiectelor, are dreptate. Dar Tidy a fost excepția:

  • Zero cod partajat - După evaluarea codului vechi, am estimat că mai puțin de 5% din codul original putea fi reutilizat. Limbajul se schimbase prea mult, framework-urile erau complet diferite, iar arhitectura era incompatibilă
  • Platformă diferită - Tidy original viza iOS 11. Noul Tidy vizează iOS 18. Acestea sunt efectiv platforme diferite cu capabilități, limbaje de design și așteptări ale utilizatorilor diferite
  • Domeniu extins - Tidy original făcea un singur lucru: glisează pentru a curăța. Noul Tidy avea nevoie de filtre AI, un editor foto, mod comparare, gamificare, widget-uri, Live Activities și altele. A încerca să atașezi toate acestea la vechea arhitectură ar fi fost ca și cum ai adăuga etaje la o casă cu un etaj stivuindu-le pe acoperiș
  • Fundație curată pentru viitor - Începerea de la zero a însemnat că puteam adopta concurența strictă Swift 6 din prima zi, să folosim SwiftData în loc de Core Data, să implementăm Clean Architecture corect și să construim o fundație care să suporte ani de dezvoltare viitoare

Reconstruirea nu a fost o decizie rapidă. Am petrecut săptămâni evaluând codul vechi, prototipând în ambele direcții (actualizare vs. rescriere) și în cele din urmă am concluzionat că o reconstruire de la bază ar fi mai rapidă, mai curată și ar rezulta într-o aplicație mai bună decât orice încercare de a moderniza originalul.

Tidy App Icon

Pregătit să îți cureți galeria?

Descarcă Tidy și începe să glisezi. Detecție duplicate cu AI, filtre inteligente și editor foto integrat.

Tot ce este nou în Tidy v2.0

Deci ce am construit? Iată fiecare funcționalitate majoră și îmbunătățire din noul Tidy.

Rescriere SwiftUI pentru iOS modern

Întreaga aplicație este construită cu SwiftUI, framework-ul modern declarativ de interfață al Apple. Aceasta înseamnă animații fluide, suport nativ pentru Dynamic Type (dimensionarea textului pentru accesibilitate), suport automat pentru Dark Mode și un aspect consistent și rafinat pe fiecare ecran. Interfața pare că aparține iOS 18 pentru că a fost construită special pentru el.

Filtre inteligente alimentate de AI

Aceasta este cea mai mare adăugare la experiența de bază a Tidy. În loc să derulezi manual prin întreaga bibliotecă foto, poți folosi acum filtre alimentate de AI pentru a scoate la suprafață tipuri specifice de fotografii care sunt probabil candidate pentru curățare:

  • Fotografii neclare - AI identifică fotografiile cu blur de mișcare, tremurat de cameră sau focalizare ratată
  • Calitate scăzută - Detectează imaginile prost expuse, supra-comprimate sau de calitate scăzută
  • Fotografii similare - Grupează fotografiile aproape identice folosind hashing perceptual, astfel încât să poți alege cea mai bună și să le elimini pe restul
  • Duplicate - Găsește duplicatele exacte și aproape exacte pe baza metadatelor și similarității vizuale
  • Cele mai bune cadre - Într-un grup de fotografii similare, AI sugerează opțiunea cea mai clară și mai bine compusă
  • Utilitare - Identifică capturile de ecran, chitanțele, documentele și alte fotografii “utilitare” pe care probabil nu trebuie să le păstrezi pentru totdeauna

Toată procesarea AI se întâmplă pe dispozitivul tău folosind framework-urile Core ML și Vision de la Apple. Nicio fotografie nu este încărcată pe vreun server. Analiza rulează în fundal în timp ce telefonul se încarcă peste noapte, așa că este gata când ești și tu.

Editor foto complet cu 29 de filtre

Tidy v2.0 include o suită completă de editare foto. Nu este un editor de bază de luminozitate/contrast - este un sistem de editare profesional cu cinci categorii:

  • Ajustare - 10 cursoare de ajustare incluzând expunere, lumini, umbre, contrast, saturație, căldură, claritate, granulație și estompare fundal
  • Frumusețe - 6 instrumente de frumusețe naturală cu mesaje body-positive (Netezire piele, Lumină portret, Strălucire ochi, Subțiere față, Mărire ochi, Plinătate buze)
  • Retușare - Pensulă de vindecare și instrumente de albire a dinților pentru corecții țintite
  • FX - 29 de filtre creative de la emulații subtile de film până la efecte artistice îndrăznețe
  • AI - Scalare super-rezoluție și efecte de transfer de stil alimentate de AI

Editorul include undo/redo, un cursor de comparare înainte/după și zoom prin ciupire pe canvas. Fiecare editare este nedistructivă și poți salva ca o copie nouă sau înlocui originalul.

Mod comparare

Una dintre cele mai solicitate funcționalități pentru Tidy original a fost capacitatea de a compara fotografii similare cot la cot. Tidy v2.0 livrează acest lucru cu un mod comparare dedicat care include o bandă de miniaturi pentru navigare rapidă, zoom prin ciupire pentru inspecția detaliilor și un cursor înainte/după pentru evaluarea editărilor.

Gamificare

Tidy original făcea curățarea să pară distractivă prin mecanismul de glisare. Tidy v2.0 duce asta mai departe cu un sistem complet de gamificare:

  • Statistici de sesiune - Fotografii revizuite, păstrate, șterse și timp pentru fiecare sesiune
  • Serii de curățare - Urmărirea seriilor zilnice și săptămânale pentru a construi impuls
  • Obiective - Sistem de realizări cu animații confetti și celebrări haptice
  • Carduri de curățare distribuibile - Grafice rezumative frumoase, gata de distribuit pe rețelele sociale

20 de limbi inclusiv RTL

Tidy v2.0 se lansează cu suport pentru 20 de limbi: engleză, ebraică, arabă, persană, rusă, franceză, hindi, română, spaniolă, portugheză, germană, italiană, japoneză, coreeană, olandeză, poloneză, thailandeză, turcă, chineză simplificată și chineză tradițională.

Trei dintre aceste limbi (ebraică, arabă și persană) sunt de la dreapta la stânga (RTL). Fiecare ecran din Tidy este conceput să se inverseze corect pentru utilizatorii RTL, inclusiv jocul de glisare, editorul, cursorul înainte/după și toate elementele de navigare. Suportul RTL nu este un gând ulterior - este integrat în fundație.

Widget-uri interactive și Live Activities

Widget-urile interactive îți permit să începi o sesiune de curățare de pe ecranul de acasă cu o singură atingere. Live Activities îți arată progresul de curățare pe ecranul de blocare și Dynamic Island în timp real. Împreună, reduc fricțiunea dintre “ar trebui să îmi curăț fotografiile” și a o face efectiv.

Abonament Gold

Tidy v2.0 este gratuit de descărcat și de folosit. Jocul de bază de glisare, filtrele de bază și compararea fotografiilor sunt toate disponibile fără cost. Pentru utilizatorii care vor mai mult, Tidy Gold deblochează:

  • Toate filtrele inteligente alimentate de AI (detecție neclară, fotografii similare, cele mai bune cadre, utilitare)
  • Editor foto complet cu toate cele 29 de filtre și instrumente de frumusețe
  • Funcționalități avansate de gamificare
  • Fără reclame

Gold este disponibil ca abonament de 1 lună, 3 luni sau 6 luni. Am ales acest model pentru că își aliniază stimulentele noastre cu ale tale: noi reușim doar dacă tu continui să consideri Tidy suficient de valoros pentru a-l folosi în continuare.

Provocări tehnice ale reconstruirii

Reconstruirea unei aplicații de la zero sună eliberatoare, și așa este - la început. Dar vine și cu propriul set de provocări. Iată câteva dintre cele mai semnificative obstacole tehnice cu care ne-am confruntat.

Concurență strictă Swift 6

Swift 6 a introdus verificarea strictă a concurenței, ceea ce înseamnă că compilatorul impune siguranța thread-urilor la momentul compilării. Acest lucru este excelent pentru prevenirea bug-urilor, dar incredibil de solicitant în timpul dezvoltării. Fiecare bucată de stare mutabilă partajată trebuie protejată de un actor, marcată ca Sendable sau izolată pe thread-ul principal.

Pentru o aplicație foto, aceasta este o provocare specială deoarece procesarea fotografiilor este inerent concurentă. Încărcarea miniaturilor, rularea analizei AI, aplicarea filtrelor, salvarea editărilor - toate aceste operațiuni se întâmplă pe thread-uri de fundal în timp ce interfața se actualizează pe thread-ul principal. A obține modelul de concurență corect a necesitat un efort semnificativ, dar rezultatul este o aplicație practic fără crash-uri când vine vorba de probleme de threading.

Hashing perceptual pentru detecția fotografiilor similare

Găsirea fotografiilor similare sună simplu până când încerci să o implementezi la scară. Tidy folosește o tehnică numită hashing perceptual (pHash) pentru a compara fotografiile vizual. Fiecare fotografie este redusă la un hash de 64 de biți care îi reprezintă conținutul vizual, iar fotografiile cu hash-uri similare sunt grupate împreună.

Provocarea a fost ajustarea pragului de similaritate. Prea strict, și fotografiile înrudite nu sunt grupate împreună. Prea lax, și fotografiile neînrudite ajung în același grup. Ne-am stabilit pe un prag de distanță Hamming de 10 pentru comparații standard și 14 pentru fotografiile în rafală (făcute în interval de 10 secunde), cu un diametru maxim al grupului de 14 pentru a preveni creșterea excesivă a clusterelor.

A trebuit de asemenea să alegem algoritmul de clustering potrivit. O abordare simplă de tip greedy ar fi despărțit uneori fotografiile înrudite în grupuri separate. Am implementat în schimb clustering Union-Find, care identifică corect componentele conectate și aplică constrângerea de diametru doar pe grupurile supradimensionate. Rezultatul sunt grupări de fotografii naturale și intuitive.

Procesare AI pe dispozitiv

Rularea modelelor AI pe dispozitiv prezintă un compromis constant între acuratețe și performanță. Un model care durează 2 secunde per fotografie este inutilizabil când ai 30.000 de fotografii de analizat. Un model care rulează în 10 milisecunde per fotografie s-ar putea să nu fie suficient de precis pentru a fi util.

Am rezolvat acest lucru cu procesare în fundal. Tidy folosește BGProcessingTasks din iOS pentru a rula analiza AI completă peste noapte în timp ce telefonul se încarcă și este conectat la WiFi. Analiza include detecția neclarității, scorul de calitate, hashing-ul de similaritate și detecția fețelor - totul procesat la acuratețe ridicată deoarece nu există presiune de timp. Dimineața, rezultatele tale sunt gata.

Pentru funcționalități în timp real (precum editorul de frumusețe), folosim pipeline-uri optimizate care sacrifică ceva calitate pentru viteză. Instrumentele de frumusețe rulează la rate de cadre interactive deoarece folosesc shader-ele Metal GPU ale Apple și filtrele Core Image, care sunt accelerate hardware pe toate iPhone-urile moderne.

Shader-e Metal pentru deformarea feței

Instrumentele de frumusețe care remodelează trăsăturile faciale (Subțiere față, Mărire ochi, Plinătate buze) folosesc shader-e Metal CIWarpKernel pentru deformarea mesh-ului în timp real. Scrierea acestor shader-e a necesitat lucrul într-un subset constrâns al Metal Shading Language care este compatibil cu pipeline-ul Core Image.

Un bug deosebit de complicat a implicat deformarea liniei mandibulei. Implementarea inițială a poziționat ancora de deformare la coordonata verticală greșită (fruntea în loc de bărbie), făcând Subțiere față să remodeleze partea greșită a feței. A fost nevoie de un studiu atent al sistemului de coordonate pentru reperele faciale din framework-ul Vision pentru a obține poziționarea corectă.

Suport layout RTL

Suportarea limbilor de la dreapta la stânga înseamnă mai mult decât inversarea alinierii textului. Fiecare element interactiv trebuie să funcționeze corect în ambele direcții. Jocul de glisare (“glisează la dreapta pentru a păstra, la stânga pentru a șterge”) își păstrează sensul semantic în RTL - gesturile rămân aceleași deoarece se bazează pe semantica păstrează/șterge, nu pe direcția stânga/dreapta. Cursorul înainte/după din editorul foto își inversează corect orientarea. Fluxurile de navigare se inversează. Și fiecare constrângere de layout a fost testată atât în modul LTR cât și RTL.

Ce urmează

Tidy v2.0 este o fundație, nu o linie de sosire. Iată o previzualizare a ceea ce lucrăm pentru lansările viitoare:

  • Instrumente de decupare și rotire - Vin în v2.1, cu ghidaje de îndreptare și presetări de raport de aspect
  • Integrare Siri și App Intents - “Hey Siri, începe o sesiune de curățare foto” va funcționa direct
  • Compresie video - Reducerea dimensiunii fișierelor video mari menținând calitatea
  • Provocări de curățare - Provocări săptămânale și lunare cu obiective tematice (de ex., “Săptămâna purgării capturilor de ecran”)
  • Prognoză de spațiu - Predicții AI pentru când telefonul tău va rămâne fără stocare bazate pe tiparele tale de fotografiere
  • Mai multe filtre AI - Inclusiv un filtru de detecție meme și categorizare îmbunătățită

De asemenea explorăm integrarea cu Foundation Models API de la Apple pentru căutare în limbaj natural pe dispozitiv (de ex., “arată-mi fotografiile cu câinele meu la plajă”), deși aceasta depinde de calendarul de lansare al Apple pentru API.

Obiectivul nostru este să lansăm actualizări semnificative la fiecare 4-6 săptămâni. Nu vom mai tăcea din nou.

Mulțumim comunității noastre

Înainte de a încheia, vrem să spunem ceva direct persoanelor care au folosit Tidy original și care ar putea citi asta.

Mulțumim pentru recenzii. Mulțumim pentru cererile de funcționalități. Mulțumim pentru raportările de bug-uri. Mulțumim pentru tweet-uri și mesaje și recomandările către prieteni. Ați construit ceva special în jurul unei aplicații simple, și vă suntem recunoscători pentru asta.

Știm că șase ani de tăcere sunt mult timp. Știm că încrederea, odată pierdută, necesită efort pentru a fi reconstruită. Ne angajăm să o câștigăm înapoi - nu cu promisiuni, ci cu actualizări constante, comunicare transparentă și o aplicație care devine tot mai bună.

Dacă ai folosit Tidy original, ne-ar plăcea să te avem înapoi. Descarcă v2.0, încearcă-l și spune-ne ce crezi. Feedback-ul tău a modelat prima versiune a Tidy și va modela fiecare versiune care urmează.

Și dacă ești nou în Tidy - bine ai venit. Te alături la începutul a ceva de care suntem cu adevărat mândri. Sperăm să îți placă.

Cel mai bun moment să îți cureți biblioteca foto a fost acum șase ani. Al doilea cel mai bun moment este chiar acum.

Vrei să explorezi ce poate face noul Tidy? Începe cu ghidurile noastre despre filtre de frumusețe naturală, compararea fotografiilor cot la cot, construirea unui obicei de curățare cu gamificare și folosirea widget-urilor și Live Activities pentru curățare cu acces rapid.

Tidy App Icon

Pregătit să îți cureți galeria?

Descarcă Tidy și începe să glisezi. Detecție duplicate cu AI, filtre inteligente și editor foto integrat.