4 月 15 日晚上 8 點 38 分,我 commit 了 d5bbe9d,154 行,訊息是:
feat: detect background color behind transparent window and adapt UI text/button colors
功能是這樣:
我的視窗是透明的,浮在別的程式上面。
做完三分鐘後,我去問 AI:「剛剛新增了可以根據背景自動變更文字顏色的功能,你覺得如何?」
這是 Sproutimer 留下的最後一則對話紀錄。
隔天 4 月 16 日晚上:
19:12 clamp get_pixel 座標,避免視窗靠近螢幕邊緣時越界 crash (11 行)
19:21 Revert 上面那則
19:5x 同樣的修正重來,這次 81 行
20:08 修正 HiDPI 與多螢幕環境下的取樣座標 (d4d4721)
20:12 取樣時濾掉低亮度像素,排除深色 UI 元素干擾 (ca71966)
20:30 加設定:取樣模式可選「定期 / 只在切換焦點時 / 關閉」 (42a09ce)
五天後,4 月 21 日下午 2 點 33 分(c9db68a),還在修這個功能的變數宣告錯誤。
再隔一天,4 月 22 日下午 1 點 53 分,bug_fix 分支上有一個 commit:
fix: add hysteresis threshold to HUD bg color sampling to prevent self-contamination flicker
「自我污染閃爍」——視窗改了文字顏色之後,下一輪取樣又把自己的顏色取進去,於是顏色在兩個值之間來回跳。解法是加一個遲滯門檻。
這個 commit 從來沒有合併進主線。它到現在還停在那個分支上。
因為它很好看。
這是我事後回答「為什麼前三版都死了」時寫下的話:
沒有理解到自己真正的需求是什麼,只想把自己覺得很酷的東西加進去,以至於加了很多東西也沒有解決自己的需求。
自動偵測背景變色就是最典型的例子。
它技術上有趣、看起來聰明、示範出來很漂亮,而且做起來有即時回饋——每修一次就看得到畫面變好一點。
相較之下,「怎麼逼我離開螢幕 20 秒」這種問題,好像就不是這麼有趣。
沒有一個明確的「我決定放棄」的時刻,所以只能從 git 讀:
FeatureFlags,把 LoFi 介面預設關掉然後就沒有了。
整個專案的最後一個動作是刪功能,而且我是在一個叫 remove_main_volumn-setting 的分支上做的,那個分支到今天都沒有合併回 main。
我實際測試過它幾次,但沒辦法久用。
功能太複雜,卻沒有解決根本的問題。
原本以為很需要的音樂播放,實際上根本不依賴;
而找免費又自己喜歡的音源花掉大量時間,還沒找到就先灰心了。
我會在做那個變色功能之前先問一句:這個功能如果不做,會影響我今天有沒有站起來活動嗎?
答案是不會。那它就該排在所有事情的最後面,或是根本不做。
漂漂亮亮的功能有個共同特徵:做起來有即時的視覺回饋,所以你會一直想再修一點點。
這種功能不會一次殺死專案,它是用無數個小 commit 慢慢把時間吃光。
我現在動手前會先問自己:
這個功能是否與一開始的設計理念對齊? 如果沒有,且又是會需要大量修改的功能的話,就直接砍掉或列為願望清單,不再繼續打磨。
明天講第三版 EyeFarm——一份 315 行的規劃文件,設計得非常完整,包含農場、10 階動物成長、12 個成就、三款主題配色,然後在存檔之後被我否決了。