Tidy גרסה 2 חוזרת: הסיפור מאחורי הבנייה מחדש לאחר 6 שנים
אם אתם קוראים את זה, יש סיכוי שאתם זוכרים את Tidy. אולי השתמשתם בה ב-2018 או 2019. אולי החלקתם דרך מאות תמונות, ניקיתם את הגלריה בתנועת אצבע. אולי השארתם לנו ביקורת. אם כן, תודה לכם. קראנו כל אחת ואחת.
קרא גם: מה חדש ב-Tidy 2.1 ו-2.2: מיון לאלבומים, אתגרים שבועיים ועוד
ואז נעלמנו.
במשך שש שנים, Tidy ישבה ללא נגיעה ב-App Store. בלי עדכונים. בלי תכונות חדשות. בלי תקשורת. האפליקציה עדיין עבדה, בעיקר, אבל העולם סביבה המשיך להתקדם. iOS התפתח. טלפונים קיבלו מצלמות טובות יותר (וספריות תמונות גדולות יותר). אפליקציות חדשות באו והלכו. ו-Tidy פשוט... ישבה שם.
קרא גם: איך לסדר תמונות באייפון: המדריך המלא (2026)
היום, זה משתנה. Tidy גרסה 2 היא בנייה מחדש מלאה מאפס. לא עדכון. לא ריענון. אפליקציה חדשה לגמרי, שנבנתה מהיסוד עם טכנולוגיה מודרנית, תכונות חדשות, וכל מה שלמדנו בשנים מאז שהשקנו לראשונה.
קרא גם: איך AI מוצא תמונות כפולות ודומות (ולמה זה טוב יותר מחיפוש ידני)
זה הסיפור של איך הגענו לכאן.
ה-Tidy המקורית: 4.8 כוכבים ו-723 ביקורות
Tidy הושקה ב-2018 עם רעיון פשוט: ניקוי ספריית התמונות צריך להרגיש כמו משחק. החלק ימינה כדי לשמור תמונה. החלק שמאלה כדי למחוק אותה. בלי תפריטים מסובכים, בלי מערכות תיקיות, בלי מסגרות ארגוניות. רק החלטות מהירות ואינסטינקטיביות שמנקות את העומס.
התגובה הפתיעה אותנו. תוך חודשים, Tidy צברה מאות ביקורות עם דירוג ממוצע של 4.7 מתוך 5 כוכבים. עד שהגענו ל-723 ביקורות, הדפוס היה ברור: אנשים אהבו את מכניקת ההחלקה. הם אהבו כמה זה מהיר. הם אהבו שזה הפך משימה משעממת למשהו כיפי.
Tidy במספרים
- 4.8 דירוג כוכבים
- 723 ביקורות
- 31 שפות
- 2018 שנת השקה
משתמשים אמרו לנו דברים כמו "זו האפליקציה שלא ידעתי שאני צריך" ו"ניקיתי 3,000 תמונות באחר צהריים אחד." האפליקציה תורגמה ל-31 שפות. היא הופיעה בפיצ'רים של App Store במספר מדינות. עבור אפליקציית אינדי קטנה עם מטרה ממוקדת, היא הצליחה הרבה מעבר למשקלה.
ה-Tidy המקורית נבנתה ב-Swift 4, תוך שימוש בארכיטקטורת MVC שהייתה סטנדרטית לפיתוח iOS באותה תקופה. זו הייתה אפליקציה מוצקה לתקופתה. אבל הטכנולוגיה מתקדמת מהר, ועד 2019, הסדקים התחילו להראות.
למה נעלמנו ל-6 שנים
התשובה הכנה היא: החיים קרו.
Tidy נבנתה על ידי צוות קטן, וכשהעדיפויות השתנו - כפי שקורה למפתחי אינדי - האפליקציה נפלה לתחתית הרשימה. לא היה סיפור דרמטי, לא רכישה, לא החלטת סגירה. רק הסחיפה האיטית שקורה כשפרויקט צדדי מפסיק לקבל תשומת לב.
בינתיים, הפער בין איפה ש-Tidy הייתה לאיפה שהיא צריכה להיות המשיך לגדול:
- SwiftUI הגיע ב-2019 והבשיל במהירות, מה שגרם לממשקים מבוססי UIKit להרגיש מיושנים
- ספריות התמונות התפוצצו בגודל. משתמש האייפון הממוצע עבר מ-2,000-5,000 תמונות ל-10,000-50,000
- AI ולמידת מכונה עברו מניסיוניים לצפויים. משתמשים התחילו לצפות שאפליקציות יהיו חכמות
- ווידג'טים של iOS ו-Live Activities יצרו משטחים חדשים שאפליקציות היו צריכות לתמוך בהם
- ציפיות הפרטיות עלו באופן דרמטי, כשמשתמשים דורשים עיבוד על המכשיר ושקיפות
- Swift עצמה התפתחה דרך גרסאות 5.0 עד 6.0, עם concurrency מחמיר ותכונות שפה חדשות
עד שהסתכלנו על Tidy שוב ברצינות, קוד המקור המקורי היה ארכיאולוגי. קוד Swift 4 שלא יקומפל עם כלים מודרניים. תבניות UIKit שהוחלפו פעמיים. ארכיטקטורה שלא יכלה לתמוך באף אחת מהתכונות שמשתמשים ציפו להן כעת.
היו לנו שתי אפשרויות: לנסות לתקן ולעדכן את קוד המקור הישן, או להתחיל מחדש.
ההחלטה לבנות מחדש מאפס
בחרנו לבנות מחדש. הנה למה.
עדכון ה-Tidy הישנה היה אומר להעביר קוד Swift 4 ל-Swift 6, לכתוב מחדש את כל ה-UI מ-UIKit ל-SwiftUI, להחליף את ארכיטקטורת ה-MVC במשהו מודרני, להוסיף frameworks חדשים של Apple (Vision, Core ML, StoreKit 2, WidgetKit), ואיכשהו לגרום לכל השינויים האלה לעבוד יחד בלי לשבור את האפליקציה הקיימת.
בפיתוח תוכנה, יש מאמר מפורסם של Joel Spolsky בשם "Things You Should Never Do, Part I," שטוען שכתיבה מחדש מאפס היא כמעט תמיד טעות. ולרוב הפרויקטים, הוא צודק. אבל Tidy הייתה היוצאת מהכלל:
- אפס קוד משותף - אחרי הערכת קוד המקור הישן, העריכו שפחות מ-5% מהקוד המקורי יכול היה לשמש שוב. השפה השתנתה מדי, ה-frameworks היו שונים לחלוטין, והארכיטקטורה הייתה לא תואמת
- פלטפורמה שונה - ה-Tidy המקורית כוונה ל-iOS 11. ה-Tidy החדשה מכוונת ל-iOS 18. אלה למעשה פלטפורמות שונות עם יכולות שונות, שפות עיצוב שונות, וציפיות משתמשים שונות
- היקף מורחב - ה-Tidy המקורית עשתה דבר אחד: החלק כדי לנקות. ה-Tidy החדשה הייתה צריכה פילטרים AI, עורך תמונות, מצב השוואה, גיימיפיקציה, ווידג'טים, Live Activities, ועוד. לנסות להרכיב את כל זה על הארכיטקטורה הישנה היה כמו להוסיף קומות לבית קומה אחת על ידי הערמתן על הגג
- בסיס נקי לעתיד - להתחיל מחדש אומר שיכולנו לאמץ Swift 6 strict concurrency מהיום הראשון, להשתמש ב-SwiftData במקום Core Data, ליישם Clean Architecture נכונה, ולבנות בסיס שיתמוך בשנים של פיתוח עתידי
הבנייה מחדש לא הייתה החלטה מהירה. בילינו שבועות בהערכת הקוד הישן, בפרוטוטייפינג בשני הכיוונים (עדכון מול כתיבה מחדש), ובסופו של דבר הגענו למסקנה שבנייה מחדש מהיסוד תהיה מהירה יותר, נקייה יותר, ותביא לאפליקציה טובה יותר מכל ניסיון למודרניזציה של המקור.
מוכנים לנקות את הגלריה?
הורידו את Tidy והתחילו להחליק. זיהוי כפילויות מונע AI, פילטרים חכמים, ועורך תמונות מובנה.
כל מה שחדש ב-Tidy גרסה 2
אז מה בנינו? הנה כל תכונה ושיפור משמעותי ב-Tidy החדשה.
כתיבה מחדש ב-SwiftUI עבור iOS מודרני
האפליקציה כולה בנויה עם SwiftUI, ה-framework המודרני והדקלרטיבי של Apple לממשק משתמש. זה אומר אנימציות זורמות, תמיכה native ב-Dynamic Type (גודל טקסט נגיש), תמיכה אוטומטית ב-Dark Mode, ומראה עקבי ומלוטש בכל מסך. הממשק מרגיש כאילו הוא שייך ל-iOS 18 כי הוא נבנה במיוחד עבורו.
פילטרים חכמים מונעי AI
זו התוספת הגדולה ביותר לחוויית הליבה של Tidy. במקום לגלול ידנית דרך כל ספריית התמונות שלכם, אתם יכולים כעת להשתמש בפילטרים מונעי AI כדי להעלות סוגים ספציפיים של תמונות שהן מועמדות סבירות לניקוי:
- תמונות מטושטשות - AI מזהה תמונות עם טשטוש תנועה, רעידת מצלמה, או פוקוס שהוחמץ
- איכות נמוכה - מזהה תמונות בחשיפה לקויה, דחוסות מדי, או באיכות ירודה אחרת
- תמונות דומות - מקבץ תמונות כמעט זהות יחד באמצעות perceptual hashing, כך שתוכלו לבחור את הטובה ביותר ולמחוק את השאר
- כפילויות - מוצא כפילויות מדויקות וכמעט מדויקות על בסיס מטא-דאטה ודמיון חזותי
- הצילומים הטובים ביותר - בקבוצה של תמונות דומות, AI מציע את האפשרות החדה והמורכבת הכי טוב
- שימושי - מזהה צילומי מסך, קבלות, מסמכים, ותמונות "שימושיות" אחרות שכנראה לא צריך לשמור לנצח
כל עיבוד ה-AI מתרחש על המכשיר שלכם באמצעות Core ML ו-Vision frameworks של Apple. שום תמונות לא מועלות לשום שרת. הניתוח רץ ברקע בזמן שהטלפון שלכם נטען בלילה, כך שהוא מוכן כשאתם מוכנים.
עורך תמונות מלא עם 29 פילטרים
Tidy גרסה 2 כוללת חבילת עריכת תמונות מלאה. זה לא עורך בסיסי של בהירות/ניגודיות - זו מערכת עריכה מקצועית בחמש קטגוריות:
- התאמות - 10 מחוונים כולל חשיפה, הדגשות, צללים, ניגודיות, רוויה, חמימות, חדות, גרעיניות, וטשטוש רקע
- יופי - 6 כלי יופי טבעיים עם מסרים חיוביים לגוף (החלקת עור, תאורת פורטרט, הבהרת עיניים, הצרת פנים, הגדלת עיניים, מילוי שפתיים)
- ריטוש - מברשת ריפוי והלבנת שיניים לתיקונים ממוקדים
- אפקטים - 29 פילטרים יצירתיים מאמולציות פילם עדינות ועד אפקטים אמנותיים נועזים
- AI - הגדלת רזולוציה ואפקטי העברת סגנון מונעי AI
העורך כולל בטל/בצע שוב, מחוון השוואה לפני/אחרי, וצביטה לזום על הקנבס. כל עריכה היא לא הרסנית, ואתם יכולים לשמור כעותק חדש או להחליף את המקור.
מצב השוואה
אחת התכונות המבוקשות ביותר ל-Tidy המקורית הייתה היכולת להשוות תמונות דומות זו לצד זו. Tidy גרסה 2 מספקת את זה עם מצב השוואה ייעודי שכולל רצועת תמונות ממוזערות לגלישה מהירה, צביטה לזום לבדיקת פרטים, ומחוון לפני/אחרי להערכת עריכות.
גיימיפיקציה
ה-Tidy המקורית הפכה ניקוי לכיפי דרך מכניקת ההחלקה. Tidy גרסה 2 לוקחת את זה הלאה עם מערכת גיימיפיקציה מלאה:
- סטטיסטיקות סשן - תמונות שנסקרו, נשמרו, נמחקו, וזמן לכל סשן
- רצפי ניקיון - מעקב אחר רצפים יומיים ושבועיים לבניית מומנטום
- אבני דרך - מערכת הישגים עם אנימציות קונפטי וחגיגות הפטיות
- כרטיסי ניקוי לשיתוף - גרפיקות סיכום יפות ומוכנות לשיתוף לרשתות חברתיות
20 שפות כולל RTL
Tidy גרסה 2 מושקת עם תמיכה ב-20 שפות: אנגלית, עברית, ערבית, פרסית, רוסית, צרפתית, הינדי, רומנית, ספרדית, פורטוגזית, גרמנית, איטלקית, יפנית, קוריאנית, הולנדית, פולנית, תאית, טורקית, סינית פשוטה וסינית מסורתית.
שלוש מהשפות האלה (עברית, ערבית ופרסית) הן מימין לשמאל (RTL). כל מסך ב-Tidy מעוצב להתהפך נכון עבור משתמשי RTL, כולל משחק ההחלקה, העורך, מחוון הלפני/אחרי, וכל רכיבי הניווט. תמיכת RTL היא לא מחשבה שלאחר מעשה - היא מובנית בבסיס.
ווידג'טים אינטראקטיביים ו-Live Activities
ווידג'טים אינטראקטיביים מאפשרים לכם להתחיל סשן ניקוי ממסך הבית בהקשה אחת. Live Activities מציגים את התקדמות הניקוי שלכם במסך הנעילה וב-Dynamic Island בזמן אמת. יחד, הם מפחיתים את החיכוך בין "אני צריך לנקות את התמונות" לבין לעשות את זה באמת.
מנוי Gold
Tidy גרסה 2 חינמית להורדה ושימוש. משחק ההחלקה הבסיסי, פילטרים בסיסיים, והשוואת תמונות כולם זמינים ללא עלות. למשתמשים שרוצים יותר, Tidy Gold פותח:
- כל הפילטרים החכמים מונעי AI (זיהוי טשטוש, תמונות דומות, הצילומים הטובים ביותר, שימושי)
- עורך תמונות מלא עם כל 29 הפילטרים וכלי היופי
- תכונות גיימיפיקציה מתקדמות
- ללא פרסומות
Gold זמין כמנוי של חודש, 3 חודשים, או 6 חודשים. בחרנו במודל הזה כי הוא מיישר את האינטרסים שלנו עם שלכם: אנחנו מצליחים רק אם אתם ממשיכים למצוא את Tidy מספיק בעלת ערך כדי להמשיך להשתמש.
אתגרים טכניים בבנייה מחדש
בנייה מחדש של אפליקציה מאפס נשמעת משחררת, וזה נכון - בהתחלה. אבל זה גם מגיע עם מערך משלו של אתגרים. הנה כמה מהמכשולים הטכניים המשמעותיים ביותר שנתקלנו בהם.
Swift 6 Strict Concurrency
Swift 6 הציג בדיקת concurrency מחמירה, מה שאומר שהקומפיילר אוכף בטיחות threads בזמן בנייה. זה מצוין למניעת באגים אבל מאתגר מאוד במהלך הפיתוח. כל פיסת state משותף וניתן לשינוי צריכה להיות מוגנת על ידי actor, מסומנת כ-Sendable, או מבודדת ל-main thread.
עבור אפליקציית תמונות, זה מאתגר במיוחד כי עיבוד תמונות הוא מטבעו concurrent. טעינת תמונות ממוזערות, הפעלת ניתוח AI, החלת פילטרים, שמירת עריכות - כל הפעולות האלה קורות על threads ברקע בזמן שה-UI מתעדכן על ה-main thread. לקבל את מודל ה-concurrency נכון דרש מאמץ משמעותי, אבל התוצאה היא אפליקציה שכמעט ללא קריסות בכל הקשור לבעיות threading.
Perceptual Hashing לזיהוי תמונות דומות
מציאת תמונות דומות נשמעת פשוטה עד שמנסים ליישם את זה בקנה מידה. Tidy משתמשת בטכניקה שנקראת perceptual hashing (pHash) כדי להשוות תמונות חזותית. כל תמונה מצומצמת ל-hash של 64 ביט שמייצג את התוכן החזותי שלה, ותמונות עם hash דומה מקובצות יחד.
האתגר היה לכוון את סף הדמיון. מחמיר מדי, ותמונות קשורות לא מקובצות יחד. רופף מדי, ותמונות לא קשורות מגיעות לאותה קבוצה. התיישבנו על סף מרחק Hamming של 10 להשוואות סטנדרטיות ו-14 לתמונות burst (שצולמו תוך 10 שניות אחת מהשנייה), עם קוטר קבוצה מקסימלי של 14 כדי למנוע מצברים לגדול יותר מדי.
היינו צריכים גם לבחור את אלגוריתם ה-clustering הנכון. גישת greedy פשוטה לפעמים פיצלה תמונות קשורות לקבוצות נפרדות. יישמנו Union-Find clustering במקום, שמזהה נכון רכיבים מחוברים ומחיל את אילוץ הקוטר רק על קבוצות גדולות מדי. התוצאה היא קיבוצי תמונות טבעיים ואינטואיטיביים.
עיבוד AI על המכשיר
הפעלת מודלי AI על המכשיר מציגה פשרה מתמדת בין דיוק לביצועים. מודל שלוקח 2 שניות לתמונה הוא בלתי שמיש כשיש לכם 30,000 תמונות לנתח. מודל שרץ ב-10 מילישניות לתמונה עשוי לא להיות מדויק מספיק כדי להיות שימושי.
פתרנו את זה עם עיבוד ברקע. Tidy משתמשת ב-iOS BGProcessingTasks כדי להריץ את ניתוח ה-AI המלא בלילה בזמן שהטלפון שלכם נטען ומחובר ל-WiFi. הניתוח כולל זיהוי טשטוש, ניקוד איכות, hashing דמיון, וזיהוי פנים - הכל מעובד בדיוק גבוה כי אין לחץ זמן. עד הבוקר, התוצאות שלכם מוכנות.
עבור תכונות בזמן אמת (כמו עורך היופי), אנחנו משתמשים ב-pipelines מותאמים שמקריבים קצת איכות למען מהירות. כלי היופי רצים בקצבי frame אינטראקטיביים כי הם משתמשים ב-Metal GPU shaders ופילטרים של Core Image של Apple, שמואצים בחומרה בכל האייפונים המודרניים.
Metal Shaders לעיוות פנים
כלי היופי שמעצבים מחדש תווי פנים (הצרת פנים, הגדלת עיניים, מילוי שפתיים) משתמשים ב-Metal CIWarpKernel shaders לעיוות mesh בזמן אמת. כתיבת ה-shaders האלה דרשה עבודה בתת-קבוצה מוגבלת של Metal Shading Language שתואמת ל-pipeline של Core Image.
באג מסובך במיוחד כלל את עיוות קו הלסת. היישום הראשוני מיקם את עוגן העיוות בקואורדינטה אנכית לא נכונה (המצח במקום הסנטר), מה שגרם להצרת פנים לעצב מחדש את החלק הלא נכון של הפנים. לקח לימוד קפדני של מערכת קואורדינטות ציוני הדרך של Vision framework כדי לקבל את המיקום נכון.
תמיכת פריסת RTL
תמיכה בשפות מימין לשמאל היא יותר מהפיכת יישור טקסט. כל רכיב אינטראקטיבי צריך לעבוד נכון בשני הכיוונים. משחק ההחלקה ("החלק ימינה לשמור, שמאלה למחוק") שומר על המשמעות הסמנטית שלו ב-RTL - המחוות נשארות אותו דבר כי הן מבוססות על סמנטיקה של שמור/מחק, לא כיוון שמאל/ימין. מחוון הלפני/אחרי בעורך התמונות מתהפך נכון בכיוונו. זרימות ניווט מתהפכות. וכל אילוץ פריסה נבדק במצבי LTR ו-RTL.
מה בהמשך
Tidy גרסה 2 היא בסיס, לא קו סיום. הנה הצצה למה שאנחנו עובדים עליו לגרסאות הבאות:
- כלי חיתוך וסיבוב - מגיעים בגרסה 2.1, עם מדריכי יישור ופריסטים של יחסי רוחב-גובה
- אינטגרציית Siri ו-App Intents - "היי Siri, התחל סשן ניקוי תמונות" יעבוד ישירות
- דחיסת וידאו - הפחתת גודל קבצי וידאו גדולים תוך שמירה על איכות
- אתגרי ניקוי - אתגרים שבועיים וחודשיים עם מטרות נושאיות (לדוגמה, "שבוע טיהור צילומי מסך")
- תחזית מקום - תחזיות AI מתי הטלפון שלכם ייגמר לו האחסון על בסיס דפוסי צילום התמונות שלכם
- עוד פילטרים AI - כולל פילטר זיהוי מימז וקטגוריזציה משופרת
אנחנו גם חוקרים אינטגרציה עם Foundation Models API של Apple לחיפוש שפה טבעית על המכשיר (לדוגמה, "הראה לי תמונות של הכלב שלי בחוף"), אם כי זה תלוי בלוח הזמנים של Apple להשקת ה-API.
המטרה שלנו היא לשחרר עדכונים משמעותיים כל 4-6 שבועות. אנחנו לא נעלמים שוב.
תודה לקהילה שלנו
לפני שנסיים, אנחנו רוצים לומר משהו ישירות לאנשים שהשתמשו ב-Tidy המקורית ואולי קוראים את זה.
תודה על הביקורות. תודה על בקשות התכונות. תודה על דיווחי הבאגים. תודה על הציוצים וההודעות וההמלצות לחברים. בניתם משהו מיוחד סביב אפליקציה פשוטה, ואנחנו אסירי תודה על כך.
אנחנו יודעים ששש שנים של שתיקה זה הרבה זמן. אנחנו יודעים שאמון, ברגע שנשבר, לוקח מאמץ לבנות מחדש. אנחנו מחויבים להרוויח אותו בחזרה - לא עם הבטחות, אלא עם עדכונים עקביים, תקשורת שקופה, ואפליקציה שממשיכה להשתפר.
אם השתמשתם ב-Tidy המקורית, נשמח לקבל אתכם בחזרה. הורידו את גרסה 2, נסו אותה, וספרו לנו מה אתם חושבים. המשוב שלכם עיצב את הגרסה הראשונה של Tidy, והוא יעצב כל גרסה שתבוא.
ואם אתם חדשים ב-Tidy - ברוכים הבאים. אתם מצטרפים בתחילת משהו שאנחנו באמת גאים בו. אנחנו מקווים שתאהבו את זה.
הזמן הטוב ביותר לנקות את ספריית התמונות שלכם היה לפני שש שנים. הזמן השני הכי טוב הוא עכשיו.
רוצים לחקור מה ה-Tidy החדשה יכולה לעשות? התחילו עם המדריכים שלנו על פילטרים יופי טבעיים, השוואת תמונות זו לצד זו, בניית הרגל ניקוי עם גיימיפיקציה, ושימוש בווידג'טים ו-Live Activities לניקוי מהיר.


