故事

Tidy 回來了:沉寂 6 年後完全重建的故事

閱讀時間 12 分鐘
Tidy Team
Tidy App Icon
v2.0 NEW RELEASE

如果你正在讀這篇文章,你可能還記得 Tidy。也許你在 2018 或 2019 年使用過它。也許你用拇指輕輕一滑就清理了數百張照片。也許你給我們留了評論。如果你留了,謝謝你。我們讀了每一則。

然後我們消失了。

六年來,Tidy 靜靜地待在 App Store 裡,無人觸碰。沒有更新。沒有新功能。沒有溝通。應用程式大致還能運作,但它周圍的世界一直在前進。iOS 不斷演進。手機有了更好的鏡頭(和更大的照片庫)。新的應用程式來了又去。而 Tidy 就……待在那裡。

延伸閱讀: Tidy 2.1 & 2.2 新功能:相簿分類、每週挑戰等

今天,一切改變了。Tidy v2.0 是從頭開始的完全重建。不是更新。不是翻新。而是一個全新的應用程式,從零開始用現代技術、新功能以及我們首次發布以來學到的一切打造。

這就是我們走到這裡的故事。

最初的 Tidy:4.8 星和 723 則評論

Tidy 於 2018 年推出,有一個簡單的前提:清理照片庫應該感覺像一場遊戲。右滑保留照片。左滑丟棄。沒有複雜的選單,沒有資料夾系統,沒有整理框架。只有快速、本能的決定來清除雜亂。

回應讓我們驚喜。幾個月內,Tidy 就累積了數百則評論,平均評分為 5 顆星中的 4.8 顆。當我們達到 723 則評論時,模式已經很清楚:人們喜歡滑動機制。他們喜歡它的速度。他們喜歡它讓無聊的任務變得有趣。

延伸閱讀: 如何整理iPhone照片:完整指南(2026)

Tidy 數據一覽

  • 4.8 星評分
  • 723 則評論
  • 31 種語言
  • 2018 上線年份

用戶告訴我們像是「這是我不知道自己需要的應用程式」和「我一個下午就清理了 3,000 張照片」。應用程式被翻譯成 31 種語言。它在多個國家的 App Store 精選中出現。對於一個有明確目標的小型獨立應用程式來說,它的表現遠超其體量。

延伸閱讀: AI如何找到你的重複和相似照片(以及為什麼比手動搜尋更好)

最初的 Tidy 是用 Swift 4 構建的,使用當時 iOS 開發標準的 MVC 架構模式。對那個時代來說,它是一個紮實的應用程式。但技術發展迅速,到 2019 年,裂痕開始出現。

為什麼我們沉寂了 6 年

誠實的回答是:生活發生了。

Tidy 是由一個小團隊構建的,當優先事項轉移時——獨立開發者都會這樣——應用程式跌到了清單底部。沒有戲劇性的故事,沒有收購,沒有關閉決定。只是副業專案停止受到關注時發生的緩慢漂移。

同時,Tidy 的現狀與它需要達到的水準之間的差距不斷擴大:

  • SwiftUI 在 2019 年到來並迅速成熟,讓基於 UIKit 的介面感覺過時
  • 照片庫爆炸式增長。iPhone 用戶平均從 2,000-5,000 張照片增長到 10,000-50,000 張
  • AI 和機器學習從實驗性變成了理所當然。用戶開始期望應用程式要夠聰明
  • iOS 小工具和即時動態創建了應用程式被期望支援的新介面
  • 隱私期望大幅提高,用戶要求裝置端處理和透明度
  • Swift 本身經歷了 5.0 到 6.0 版本的演進,加入了嚴格的並行機制和新的語言特性

當我們認真重新審視 Tidy 時,原始程式碼庫已經是考古級別的。Swift 4 程式碼無法用現代工具鏈編譯。UIKit 模式已經被取代了兩次。架構無法支援用戶現在期望的任何功能。

我們有兩個選擇:嘗試修補和更新舊程式碼庫,或從頭開始。

Tidy App Icon

準備好清理你的相簿了嗎?

下載 Tidy 開始滑動清理。內建 AI 重複照片偵測、智慧篩選器和照片編輯器。

從頭重建的決定

我們選擇了重建。原因如下。

更新舊的 Tidy 意味著將 Swift 4 程式碼移植到 Swift 6、將整個 UI 從 UIKit 重寫為 SwiftUI、用現代架構替換 MVC 架構、添加新的 Apple 框架(Vision、Core ML、StoreKit 2、WidgetKit),並且以某種方式讓所有這些變更在不破壞現有應用程式的情況下協同工作。

在軟體開發中,Joel Spolsky 有一篇著名的文章叫做「你永遠不應該做的事,第一部分」,認為從頭重寫幾乎總是一個錯誤。對大多數專案來說,他是對的。但 Tidy 是例外:

  • 零共享程式碼 - 在評估舊程式碼庫後,我們估計不到 5% 的原始程式碼可以重用。語言變化太大,框架完全不同,架構不相容
  • 不同的平台 - 原始 Tidy 的目標是 iOS 11。新的 Tidy 目標是 iOS 18。這些實際上是具有不同功能、設計語言和用戶期望的不同平台
  • 擴展的範圍 - 原始 Tidy 只做一件事:滑動清理。新的 Tidy 需要 AI 篩選器、照片編輯器、比較模式、遊戲化、小工具、即時動態等等。試圖將所有這些都加到舊架構上,就像在一層樓的房子屋頂上疊加樓層
  • 為未來打好基礎 - 從頭開始意味著我們可以從第一天就採用 Swift 6 嚴格並行機制、使用 SwiftData 而非 Core Data、實施適當的 Clean Architecture,並建立一個能支撐多年未來開發的基礎

重建不是一個倉促的決定。我們花了數週評估舊程式碼,在兩個方向(更新 vs. 重寫)上進行原型設計,最終得出結論:從頭重建會更快、更乾淨,並產生比任何試圖現代化原始版本更好的應用程式。

Tidy v2.0 的所有新功能

那我們建構了什麼?以下是新 Tidy 中每個主要功能和改進。

為現代 iOS 的 SwiftUI 重寫

整個應用程式都使用 SwiftUI 構建,這是 Apple 的現代宣告式 UI 框架。這意味著流暢的動畫、原生支援動態字型(無障礙文字大小)、自動深色模式支援,以及每個畫面一致、精緻的外觀。UI 感覺像是屬於 iOS 18 的,因為它就是專門為此而建構的。

AI 智慧篩選器

這是 Tidy 核心體驗中最大的新增功能。不再需要手動滾動整個照片庫,你現在可以使用 AI 篩選器來找出特定類型可能需要清理的照片:

  • 模糊照片 - AI 識別有動態模糊、相機抖動或失焦的照片
  • 低品質 - 偵測曝光不良、過度壓縮或其他低品質的圖片
  • 相似照片 - 使用感知雜湊將幾乎相同的照片分組,讓你可以選出最好的並丟棄其餘的
  • 重複照片 - 根據元數據和視覺相似性找到完全相同和近似重複的照片
  • 最佳照片 - 在一組相似照片中,AI 建議最清晰、構圖最佳的選項
  • 工具類 - 識別截圖、收據、文件和其他你可能不需要永久保留的「工具類」照片

所有 AI 處理都在你的裝置上使用 Apple 的 Core ML 和 Vision 框架進行。沒有照片會上傳到任何伺服器。分析在夜間充電時在背景運行,所以當你準備好時,一切就緒。

完整照片編輯器,附 29 種濾鏡

Tidy v2.0 包含一個完整的照片編輯套件。這不是基本的亮度/對比度編輯器——它是一個五類別的專業編輯系統:

  • 調整 - 10 個調整滑桿,包括曝光、高光、陰影、對比度、飽和度、色溫、銳度、顆粒和背景模糊
  • 美顏 - 6 個自然美顏工具,帶有正面身體形象訊息(肌膚平滑、人像光效、亮眼、瘦臉、大眼、豐唇)
  • 修飾 - 修復筆刷和牙齒美白工具,用於定向修正
  • 特效 - 29 種創意濾鏡,從細膩的膠片模擬到大膽的藝術效果
  • AI - 超解析度放大和 AI 風格轉換效果

編輯器包含撤銷/重做、前後對比滑桿和畫布上的雙指縮放。每次編輯都是非破壞性的,你可以儲存為新副本或替換原始檔案。

比較模式

原始 Tidy 最受要求的功能之一就是能夠並排比較相似照片。Tidy v2.0 通過專用的比較模式實現了這一點,包括用於快速瀏覽的縮圖條、用於細節檢查的雙指縮放,以及用於評估編輯效果的前後對比滑桿。

遊戲化

原始 Tidy 通過滑動機制讓清理變得有趣。Tidy v2.0 通過完整的遊戲化系統更進一步:

  • 清理統計 - 每次清理的已審閱、已保留、已丟棄照片數和時間
  • 清理連續天數 - 每日和每週連續追蹤以建立動力
  • 里程碑 - 帶有彩帶動畫和觸覺慶祝的成就系統
  • 可分享的清理卡片 - 精美的、可分享的社群媒體摘要圖形

20 種語言,包括 RTL

Tidy v2.0 推出時支援 20 種語言:英語、希伯來語、阿拉伯語、波斯語、俄語、法語、印地語、羅馬尼亞語、西班牙語、葡萄牙語、德語、義大利語、日語、韓語、荷蘭語、波蘭語、泰語、土耳其語、簡體中文和繁體中文。

其中三種語言(希伯來語、阿拉伯語和波斯語)是從右到左(RTL)書寫的。Tidy 中的每個畫面都設計為可正確為 RTL 用戶翻轉,包括滑動遊戲、編輯器、前後對比滑桿和所有導航元素。RTL 支援不是事後考慮——它深植於基礎之中。

互動式小工具和即時動態

互動式小工具讓你只需輕點一下就能從主畫面開始清理。即時動態在鎖定畫面和動態島上即時顯示你的清理進度。它們共同減少了「我應該清理照片」和實際去做之間的摩擦。

Gold 訂閱

Tidy v2.0 免費下載和使用。核心滑動遊戲、基本篩選器和照片比較全部免費提供。對於想要更多功能的用戶,Tidy Gold 解鎖:

  • 所有 AI 智慧篩選器(模糊偵測、相似照片、最佳照片、工具類)
  • 完整照片編輯器,包含所有 29 種濾鏡和美顏工具
  • 進階遊戲化功能
  • 無廣告

Gold 提供 1 個月、3 個月或 6 個月的訂閱方案。我們選擇這個模式是因為它讓我們的動機與你的一致:只有你持續認為 Tidy 有足夠的價值繼續使用,我們才能成功。

重建的技術挑戰

從頭重建一個應用程式聽起來很解放,一開始確實是這樣。但它也帶來了自己的一系列挑戰。以下是我們面臨的一些最重大的技術難題。

Swift 6 嚴格並行機制

Swift 6 引入了嚴格的並行檢查,這意味著編譯器在建構時就強制執行執行緒安全。這對於防止錯誤很好,但在開發過程中要求極高。每一塊共享的可變狀態都需要由 actor 保護、標記為 Sendable,或隔離到主執行緒。

對於照片應用程式來說,這特別具有挑戰性,因為照片處理本質上是並行的。載入縮圖、運行 AI 分析、套用濾鏡、儲存編輯——所有這些操作都在背景執行緒上進行,而 UI 在主執行緒上更新。正確建立並行模型花了相當大的努力,但結果是一個在執行緒問題上幾乎不會閃退的應用程式。

用於相似照片偵測的感知雜湊

找到相似照片聽起來很簡單,直到你嘗試大規模實施它。Tidy 使用一種叫做感知雜湊(pHash)的技術來視覺比較照片。每張照片被縮減為一個代表其視覺內容的 64 位元雜湊值,具有相似雜湊值的照片被分組在一起。

挑戰在於調整相似度閾值。太嚴格,相關照片不會被分在一起。太寬鬆,不相關的照片會出現在同一組中。我們最終確定標準比較的漢明距離閾值為 10,連拍照片(10 秒內拍攝的)為 14,最大群組直徑為 14,以防止叢集增長過大。

我們還必須選擇正確的聚類演算法。簡單的貪心方法有時會將相關照片分到不同的組中。我們改為實施了並查集聚類,它能正確識別連通元件,並僅對過大的群組應用直徑約束。結果是自然、直覺的照片分組。

裝置端 AI 處理

在裝置上運行 AI 模型面臨著準確性和性能之間的持續權衡。每張照片需要 2 秒的模型在你有 30,000 張照片需要分析時是不可用的。每張照片 10 毫秒的模型可能不夠準確以至於沒有用處。

我們通過背景處理解決了這個問題。Tidy 使用 iOS BGProcessingTasks 在夜間手機充電並連接 WiFi 時運行完整的 AI 分析。分析包括模糊偵測、品質評分、相似性雜湊和面部偵測——全部以高準確度處理,因為沒有時間壓力。到早上,你的結果就準備好了。

對於即時功能(如美顏編輯器),我們使用了為速度犧牲部分品質的最佳化管線。美顏工具以互動式幀率運行,因為它們使用 Apple 的 Metal GPU 著色器和 Core Image 濾鏡,在所有現代 iPhone 上都有硬體加速。

用於面部變形的 Metal 著色器

重塑面部特徵的美顏工具(瘦臉、大眼、豐唇)使用 Metal CIWarpKernel 著色器進行即時網格變形。編寫這些著色器需要在與 Core Image 管線相容的 Metal 著色語言受限子集中工作。

一個特別棘手的錯誤涉及下顎線變形。最初的實現將變形錨點定位在錯誤的垂直座標(額頭而不是下巴),導致瘦臉功能重塑了臉部的錯誤部分。仔細研究 Vision 框架的面部地標座標系統才得以正確定位。

RTL 佈局支援

支援從右到左語言不僅僅是翻轉文字對齊。每個互動元素都需要在兩個方向上正確運作。滑動遊戲(「右滑保留,左滑丟棄」)在 RTL 中保持其語義含義——手勢保持不變,因為它們基於保留/丟棄語義,而不是左/右方向。照片編輯器中的前後對比滑桿正確翻轉其方向。導航流程反轉。每個佈局約束都在 LTR 和 RTL 模式下進行了測試。

接下來會有什麼

Tidy v2.0 是一個基礎,而不是終點。以下是我們即將發布的版本預覽:

  • 裁剪和旋轉工具 - 將在 v2.1 推出,附帶拉直導線和寬高比預設
  • Siri 和 App Intents 整合 - 「嘿 Siri,開始照片清理」將直接運作
  • 影片壓縮 - 在保持品質的同時減小大型影片檔案的大小
  • 清理挑戰 - 每週和每月帶有主題目標的挑戰(例如「截圖清除週」)
  • 空間預測 - AI 根據你的拍照模式預測手機何時會耗盡儲存空間
  • 更多 AI 篩選器 - 包括迷因偵測篩選器和改進的分類

我們還在探索與 Apple 的 Foundation Models API 整合,用於裝置端自然語言搜尋(例如「顯示我在海灘上和狗的照片」),不過這取決於 Apple 對該 API 的推出時間表。

我們的目標是每 4-6 週發布有意義的更新。我們不會再沉寂了。

感謝我們的社群

在結束之前,我們想直接對使用過原始 Tidy 且可能正在閱讀這篇文章的人說幾句話。

感謝你們的評論。感謝你們的功能建議。感謝你們的錯誤回報。感謝你們的推文和訊息以及對朋友的推薦。你們圍繞一個簡單的應用程式建立了特別的東西,我們對此心存感激。

我們知道六年的沉寂是很長的時間。我們知道信任一旦打破,需要努力才能重建。我們致力於贏回它——不是靠承諾,而是靠持續的更新、透明的溝通,以及一個不斷變得更好的應用程式。

如果你使用過原始的 Tidy,我們很期待你回來。下載 v2.0,試試看,告訴我們你的想法。你的回饋塑造了 Tidy 的第一個版本,它也將塑造接下來的每一個版本。

如果你是 Tidy 的新用戶——歡迎。你加入的是我們真正感到驕傲的開始。我們希望你喜歡它。

清理照片庫最好的時間是六年前。第二好的時間是現在。

想探索新 Tidy 能做什麼?從我們的指南開始:自然美顏濾鏡並排比較照片用遊戲化建立清理習慣,以及使用小工具和即時動態進行快速清理。

Tidy App Icon

準備好清理你的相簿了嗎?

下載 Tidy 開始滑動清理。內建 AI 重複照片偵測、智慧篩選器和照片編輯器。