# CHANGELOG
此文件記錄專案的版本變更、解決的問題以及重要的程式碼更新。
---
## v2.9.0 (2025-12-06) - AI 歷史回顧與生日慶祝優化
本版本專注於提升使用者與 AI 助手的互動回憶,並大幅改善了生日慶祝的視覺體驗,同時簡化了匯入聯絡人的流程。
### 🤖 AI Wishes History (AI 歷史回顧)
- **新增歷史紀錄區塊**:在 Friend Profile 頁面新增了 "AI Wishes" 區塊,自動記錄所有為該好友生成的 AI 祝福語。
- **折疊式設計**:
- 預設僅顯示摘要 (2 行),保持介面整潔。
- 點擊卡片可展開閱讀完整內容,支援長文也不佔版面。
- **視覺化標籤**:每則紀錄都附帶場景標籤 (Scenario Badge) 與日期,清楚回顧每一次的溫暖互動。
### 🎂 生日慶祝體驗升級 (Birthday Celebration)
- **隨機彩帶特效**:
- 重新設計了彩帶 (Confetti) 動畫,現在會以隨機的速度、角度和位置飄落,營造更自然歡樂的氛圍。
- **優雅的生日徽章**:
- 移除了頂部突兀的橫幅,改在名字下方顯示精緻的 "🎉 Happy Birthday!" 膠囊徽章。
- 視覺上更融入 Profile Header,不搶占主要資訊空間。
### 📥 匯入聯絡人優化 (Import Contacts)
- **搜尋功能**:新增即時搜尋列,可透過名字快速查找手機通訊錄中的特定聯絡人。
- **狀態過濾器**:
- **All**:顯示所有聯絡人。
- **Birthday**:只顯示有生日資料的聯絡人。
- **Photo**:只顯示有照片的聯絡人。
- **New**:只顯示尚未匯入的新聯絡人。
- **介面簡化**:移除了多餘的快速全選按鈕,操作更直觀。
### 🛠 技術變更
- 更新 App 版本至 **v2.9.0**。
- 清理未使用樣式代碼。
## v2.8.0 (2025-12-06) - 節日日曆客製化與使用者回饋系統
本版本帶來多項重要改進,包括節日日曆客製化功能、使用者回饋表單整合、Import 流程修復,以及多處 UI 優化。
### 🆕 新增 Library
- **react-native-webview@13.15.0**:用於嵌入 Tally 回饋表單
### 🎄 節日日曆客製化 (Holiday Calendars)
- **新增設定選項**:Settings → DATA & PREFERENCES → Holiday Calendars
- **四種選項**:
- 🎄 **Western**(預設):西洋節日
- 🧧 **Chinese**:華人傳統節日
- 🎄🧧 **Both**:兩者皆顯示
- **None**:不顯示任何節日
- **西洋節日**:New Year's Day、Valentine's Day、St. Patrick's Day、Halloween、Thanksgiving、Christmas Eve/Day、New Year's Eve
- **華人節日**:春節、元宵節、清明節、端午節、中秋節、重陽節、冬至
- **動態主題**:每個華人節日都有專屬的漸層配色和裝飾圖示
### 💬 使用者回饋系統 (Feedback Form)
- **Tally 表單整合**:新增 `FeedbackScreen`,使用 WebView 嵌入 Tally.so 回饋表單
- **App 內體驗**:用戶不需離開 App 即可填寫回饋
- **完整狀態處理**:載入中 spinner、錯誤處理與重試按鈕
- **流程**:Settings → Send Feedback → 打開 Modal 顯示表單
### ❓ Help Center 說明中心
- **新增 `HelpCenterScreen`**:完整的 App 內說明系統
- **5 大主題分類**:
- 🚀 **Getting Started**:Bubly 介紹、新增朋友、匯入聯絡人
- 👥 **Managing Friends**:親密程度、釘選、批次刪除、標籤
- 📅 **Calendar & Reminders**:通知設定、節日顯示、紀念日
- ✨ **AI Assistant**:AI 功能、API Key 設定
- 🛡️ **Privacy & Data**:資料安全、匯出、重置
- **手風琴式展開**:點擊問題展開答案,優雅的動畫效果
- **快速連結**:Send Feedback 和 Email Support 入口
- **設計風格**:漸層 Hero 卡片、玻璃質感、與 App 一致的美學
### 🔧 親密程度選擇器重設計 (Closeness Segment Picker)
- **問題**:原先頭像下方的小徽章太隱蔽,用戶不會注意到可以點擊
- **解決方案**:新增玻璃質感的三選項分段選擇器
- 👋 **Just Met** - Acquaintance(青綠色漸層)
- 🫶 **Friend** - Good buddy(紫色漸層)
- 💖 **Bestie** - Inner circle(粉紅色漸層)
- **位置**:放在 Nickname 區塊下方、Tab Switcher 上方
- **設計**:大面積可點擊區域、Emoji + 標題 + 副標題
### 🐛 Bug 修復 (Bug Fixes)
#### 1. Import Contacts 卡住問題
- **問題**:Reset All Data 後匯入聯絡人,Import Successful Modal 無法顯示
- **根本原因**:useEffect 依賴 existingContacts,導致連鎖更新
- **修正**:
- 使用 `useRef` 追蹤匯入狀態 (`isImporting`, `hasLoadedOnce`)
- 使用快照 (`existingContactsSnapshot`) 判斷已匯入聯絡人
- 改用 `navigation.reset()` 進行更穩定的導航重置
#### 2. Calendar 日曆高度不一致
- **問題**:月份天數不同時,日曆大小會變化,導致下方介面跳動
- **修正**:設置 `daysGrid` 固定 `minHeight: 260`,`dayCell` 使用固定 `height: 43`
### 🎨 UI 優化 (UI Improvements)
#### Friends 頁面
- **複選按鈕移動**:從 Header 移至 Filter Row 末端,成為 "Select" 按鈕
- **更好的視覺一致性**:與 Sort 按鈕和 Tag Chips 風格一致
#### Calendar 頁面
- **預設視圖**:改為 Calendar 視圖(原為 Timeline)
- **Filter Tabs 間距**:增加 `headerTitleRow` 的 `marginBottom`,防止標籤被遮擋
#### Bottom Navbar
- **圖標對齊修復**:修正 `glowContainer` 添加居中樣式,確保發光圓圈與圖標精確對齊
### 📋 技術變更摘要
| 檔案 | 變更 |
| -------------------------------------- | ----------------------------------- |
| `src/types/index.ts` | 新增 `holidayCalendars` 設定屬性 |
| `src/screens/FeedbackScreen.tsx` | ⭐ 新增 - Tally 回饋表單頁面 |
| `src/screens/HelpCenterScreen.tsx` | ⭐ 新增 - Help Center 說明中心 |
| `src/screens/SettingScreen.tsx` | 新增節日日曆設定、修改回饋/說明導航 |
| `src/screens/CalendarScreen.tsx` | 新增華人節日、固定日曆高度 |
| `src/screens/FriendsScreen.tsx` | 移動複選按鈕位置 |
| `src/screens/EditContactScreen.tsx` | 重設計親密程度選擇器 |
| `src/screens/ImportContactsScreen.tsx` | 修復 Reset 後匯入卡住問題 |
| `src/components/GlassTabBar.tsx` | 修復圖標居中對齊 |
| `App.tsx` | 新增 Feedback、HelpCenter 路由 |
---
## v2.7.0 (2025-12-05) - 設定頁面大改版與批次操作功能
本版本帶來了全新的設定頁面設計,提升了整體 App 的專業度與一致性,並在朋友列表新增了實用的批次刪除功能,同時為行事曆加入了生動的節日主題卡片。
### ⚙️ 設定頁面重塑 (Settings Revamp)
- **現代化分組設計**:採用類似 iOS 原生的分組清單風格,將設定項目清晰分類為 General、Data & Preferences、AI Assistant、Support 等區塊。
- **個人化資料卡片**:新增個人資料預覽區塊,目前顯示 "Free Trial" 會員狀態,為未來的付費功能預留空間。
- **新增支援與法律資訊**:
- **Support**:新增 "Rate Bubly" (評分)、"Send Feedback" (意見回饋) 與 "Help Center" (說明中心) 入口。
- **Legal**:新增 "Terms of Service" 與 "Privacy Policy" 頁面,內含符合美台法規的標準條款。
- **危險區域 (Danger Zone)**:將重置資料功能獨立為紅色警示區塊,防止誤觸。
### 👥 朋友列表升級 (Friends Screen)
- **批次刪除功能 (Batch Delete)**:
- 新增多選模式 (Selection Mode),可透過長按卡片或點擊 Header 的 "Select" 按鈕進入。
- **Header 整合操作**:將刪除按鈕整合至頂部 Header 右側,解決了原先底部操作列被導航欄遮擋的問題。
- **視覺優化**:選取狀態清晰可見,操作流程順暢。
### 📅 行事曆節慶主題 (Calendar Festive Themes)
- **動態 "Up Next" 卡片**:
- 根據即將到來的事件類型自動切換主題配色與裝飾。
- **生日**:金黃色漸層 + 蛋糕氣球 🎂🎈
- **聖誕節**:紅綠漸層 + 聖誕樹雪花 🎄❄️
- **萬聖節**:橘黑漸層 + 南瓜幽靈 🎃👻
- **情人節**:粉紅漸層 + 愛心玫瑰 💘🌹
- **新年**:深藍金漸層 + 煙火香檳 🎆🥂
- **篩選器修復**:修復了上方月曆視圖 (Calendar View) 無法正確響應篩選器 (Birthdays, Holidays 等) 的問題。
### 🎨 其他優化
- **AI Assistant**:移除了 Header 左上角不必要的返回箭頭,與其他主頁面保持一致。
- **版本號更新**:App 版本推進至 v2.7.0。
### 🛠 修正與優化 (Hotfix 2025-12-05)
#### 1. 📅 Anniversary Date Picker 修復
- **問題**:iOS 上打開 Anniversary 日期選擇器後,只顯示一條灰色線,無法選擇日期。
- **修正**:
- 新增 `textColor="#000000"` 與 `themeVariant="light"` 確保文字和背景顏色正確。
- 添加 `datePickerWrapper` 容器設置白色背景,確保 Spinner 可視。
- 將 Picker 高度從 150px 增加到 200px,提升使用體驗。
#### 2. 🎚️ Friendship Gravity 改為按鈕選擇器
- **問題**:原先的滑桿式設計操作不直觀,拖動時泡泡動態不穩定。
- **修正**:
- 將複雜的 PanResponder 滑桿改為**三個簡單按鈕**選擇器。
- 使用 LinearGradient 配色與 FriendProfileScreen 一致:
- **Just Met**:藍綠色漸層 `['#84fab0', '#8fd3f4']`
- **Friend**:紫色漸層 `['#a18cd1', '#fbc2eb']`
- **Bestie**:粉紅色漸層 `['#FF9A9E', '#FECFEF']`
- 每個選項都有 ⭐ 星星圖示,點擊即選擇。
#### 3. 📥 匯入聯絡人 - 生日與紀念日資料遺失修復 (Critical)
- **問題**:從手機通訊錄匯入聯絡人時,生日 (Birthday) 和紀念日 (Anniversaries) 資料沒有被帶入 App。
- **根本原因**:在 `ImportContactsScreen.tsx` 創建 `newContact` 物件時,遺漏了 `birthday`、`birthdayYearUnknown` 和 `enableBirthdayNotification` 欄位。
- **修正**:
- 新增 `birthday: fullContactData.birthday` 將生日資料正確帶入。
- 新增 `birthdayYearUnknown` 標記,當手機通訊錄中的生日沒有年份時,正確標記為「年份未知」。
- 新增 `enableBirthdayNotification: true` 預設開啟生日通知。
#### 4. 🔗 匯入成功後導航修復
- **問題**:匯入聯絡人成功後,點擊 "Awesome!" 按鈕會卡在 Import Contacts 頁面。
- **修正**:
- 使用 `StackActions.popToTop()` 先回到堆疊頂部,再導航到 Friends 頁面。
- 添加適當的延遲確保 Modal 完全關閉後再執行導航。
#### 5. 📌 新增釘選功能 (Pin Contacts)
- **功能**:在 Friends 頁面可以釘選喜愛的聯絡人,使其永遠顯示在列表最上方。
- **特點**:
- 📌 釘選的聯絡人**完全固定**在最上面,不受排序方式影響。
- 📌 支援 **List 模式** 和 **Grid 模式**。
- 📌 已釘選狀態:List 模式顯示紫色書籤,Grid 模式顯示紫色背景按鈕。
- 📌 點擊書籤圖示即可釘選/取消釘選。
#### 6. 🗑️ 刪除聯絡人 UI 優化
- **問題**:原先 "Delete Contact" 按鈕使用白色文字,在頁面上不夠明顯。
- **修正**:
- 改為紅色醒目設計:🗑️ 垃圾桶圖示 + 紅色文字 + 紅色邊框。
- 簡化確認流程為單次確認。
#### 7. 🧹 其他清理
- 移除 Import Contacts 列表中不必要的編輯按鈕,簡化匯入流程。
---
## v2.6.1 (2025-12-05) - 編輯體驗優化與 Bug 修復
本版本針對「編輯聯絡人」頁面進行了細節打磨,修復了年份選擇器的操作問題,並優化了鍵盤互動體驗,確保輸入過程流暢無阻。
### 🛠 修正與優化 (Fixes & Improvements)
#### 1. 🎁 Gift History 年份選擇器修復
- **問題**:原先的年份選擇器在滾動時無法正確選定年份,關閉後會跳回預設值 (2025)。
- **修正**:
- 實作了 `onMomentumScrollEnd` 與 `onScrollEndDrag` 監聽,確保滾動停止時自動選定視窗中央的年份。
- 加入 `snapToAlignment="center"` 讓滾動手感更明確,不再卡在兩個年份中間。
- 設定 `initialScrollIndex` 確保打開時自動定位到當前設定的年份。
#### 2. ⌨️ 鍵盤遮擋完美解決 (Notes 區塊)
- **問題**:在編輯位於頁面底部的 "Notes" 或 "Gift History" 輸入框時,鍵盤彈出會遮擋輸入內容,導致無法邊看邊打。
- **修正**:
- 引入 `react-native-keyboard-aware-scroll-view` 取代原本的 `KeyboardAvoidingView`。
- 實現智能滾動機制,當鍵盤彈出時,畫面會自動上推,確保當前焦點輸入框始終位於鍵盤上方可視區域。
- 支援點擊背景收起鍵盤 (`keyboardShouldPersistTaps="handled"`),提升操作便利性。
#### 3. 📥 匯入成功視窗優化
- **問題**:部分用戶回報匯入聯絡人後的 "Success" 原生彈窗 (Alert) 無法關閉。
- **修正**:
- 以全新的 **Custom Success Modal** 取代原生 `Alert.alert`。
- 採用一致的玻璃擬態設計,提供明確的 "Awesome!" 關閉按鈕,徹底解決卡死問題。
#### 4. 📝 文案優化
- **調整**:將首頁 Fun Fact 中較難懂的 "404: Bad vibes not found" 替換為更正向、符合品牌調性的 "Bubbo says: Pop problems like bubbles! 🫧"。
## v2.6.0 (2025-12-05) - Dashboard Refinement & Calendar Revamp
本版本針對首頁儀表板 (Dashboard) 與行事曆 (Calendar) 進行了深度優化,提升了資訊的可讀性與互動性,並進一步打磨了視覺細節。
### 📊 Dashboard Widget Refinement (儀表板優化)
#### 1. Today's Party (今日壽星)
- **視覺降噪**:調整了卡片背景漸層,改為極淡的 Pastel (粉彩) 色系,降低視覺搶眼度,使其更自然融入整體風格。
- **排版優化**:
- 固定卡片寬度,確保版面整潔。
- 增加名字顯示行數並縮小問候語字體,解決長名字或長問候語被截斷的問題。
- **動態背景**:根據聯絡人重要性 (Bestie/Friend/Just Met) 自動切換不同的柔和背景色。
#### 2. Widget 重新設計
- **My Circle (原 Friends Widget)**:更名並加入 "Friends Connected 🤝" 副標題,強調人際連結的概念。
- **Zodiac Season (星座季節)**:
- 新增星座 Widget,顯示當前星座季節 (e.g., Capricorn ♑)。
- 點擊可查看該星座的朋友數量與特質。
- **Events This Week**:
- 取代原本模糊的 "Chill Vibes",直接顯示未來 7 天內的事件數量,資訊更明確。
### 📅 Calendar Revamp (行事曆翻新)
#### 1. 雙視圖切換 (Timeline vs Calendar)
- **Timeline View (時間軸視圖)**:
- 全新的預設視圖,以垂直時間軸呈現未來 12 個月的事件。
- **Sticky Month Headers**:月份標題懸浮固定,瀏覽更清晰。
- **Next Big Event**:頂部自動顯示下一個最重要的事件 (如 Bestie 生日) 並附帶倒數計時。
- **Calendar View (月曆視圖)**:保留傳統月曆模式,供習慣查看日期的用戶使用。
#### 2. 智慧過濾器 (Smart Filters)
- 新增橫向過濾 Bar:**All / Birthdays / Anniversaries / Holidays**。
- 可快速篩選特定類型的事件,例如只查看接下來的節日或生日。
#### 3. 資料整合
- 完美整合 **Holidays (節日)**、**Birthdays (生日)** 與 **Anniversaries (紀念日)**。
- 節日顯示專屬 Emoji (如 🎄, 🎃),提升趣味性。
### 🛠 其他修正 (Fixes)
- **Anniversary Picker**:修復了編輯聯絡人頁面中 Anniversary 日期選擇器無法彈出的問題,改用 Modal 形式以確保穩定性。
- **Good Morning**:修復了首頁問候語在字數過多時被截斷的問題。
- **LinearGradient 類型修復**:解決了 TypeScript 中漸層顏色的類型錯誤。
---
## v2.5.0 (2025-12-04) - AI 助手體驗重塑與 UI 一致性整合
本版本專注於 AI Assistant 的深度體驗優化,解決了長期存在的鍵盤遮擋與操作卡頓問題,並統一了全 App 的視覺語言。
### 🤖 AI Assistant 體驗重塑
#### 1. 🧠 主動式節日建議 (Proactive Prompts)
- **智慧偵測**:當您打開 AI 助手時,Bubbo 會自動檢查未來 7 天內是否有聯絡人的生日或紀念日。
- **驚喜提示**:若發現近期事件,Bubbo 會主動提示:"Bubbo noticed Alice's Birthday is in 3 days!"
- **一鍵生成**:點擊提示卡片即可直接進入該聯絡人的祝福語生成模式,省去手動選擇的步驟。
#### 2. 🎁 禮物靈感筆記 (Gift Ideas Tracker)
- **隨手記錄**:在聯絡人編輯頁面新增「Gift Ideas」區塊,聽到朋友想要什麼隨時記下。
- **送禮時光機**:新增「Gift History」功能,記錄歷年送過的禮物(含年份),避免重複送禮的尷尬。
- **貼心展示**:在聯絡人詳情頁 (Profile) 清晰展示未來的點子與過去的紀錄。
#### 3. ⌨️ 完美的鍵盤交互體驗
- **三重防遮擋機制**:
- 增加 ScrollView 底部空間至 300px
- TextInput 內建 150px 緩衝區
- **雙重自動滾動**:編輯時 300ms 預防性滾動 + 600ms 確認性滾動,確保文字永遠可見
- **流暢編輯**:
- 修復了編輯長文時的滑動卡頓(通過 `scrollEnabled={false}` 將滑動權交還給頁面)
- 新增 **拖曳收起鍵盤** (`keyboardDismissMode="on-drag"`)
- 新增 **完成按鈕**:編輯模式右上角新增打勾按鈕,一鍵完成並收起鍵盤
#### 2. ⚡️ 極速生成體驗
- **打字機速度提升 300%**:從 50ms/字 提升至 **15ms/字**,大幅減少等待感
- **智能跟隨滾動**:打字機進行時畫面自動向下捲動,確保用戶永遠看到最新生成的文字
- **全新 Loading 狀態**:
- 生成時畫面中央顯示大型 Bubbo (Thinking Mood)
- 清晰的 "Crafting your perfect message..." 提示與 Spinner 動畫
#### 3. 🎄 節日與功能增強
- **聖誕限定場景**:恢復 `🎄 Christmas Greetings` 為最優先場景,支援聖誕專屬 Prompt
- **歷史紀錄管理**:新增「清除所有歷史」功能(帶確認保護)
### 🎨 UI 視覺一致性整合
#### 統一重要度顯示 (Importance Badges)
將 Home、Friends、Calendar 三個畫面的聯絡人重要度顯示方式完全統一,提升辨識度。
- **統一標準**:全線採用 **Mini Gradient Badge + Star Icon** ⭐
- **移除舊設計**:廢除 Friends 列表原本不明顯的純色圓點
- **視覺規範**:
- 尺寸:16x16px
- 內容:白色微型星星 icon
- 背景:根據重要度顯示對應漸層(紅/紫/藍)
### 🧹 代碼清理
- 移除臨時修復指南文件
- 優化 TypeScript 類型定義
- 統一組件樣式引用
---
## v2.4.0 (2025-12-04) - UI/UX 精緻化與全局鍵盤優化
本次更新帶來了大規模的 UI/UX 改進,重點優化了生日選擇器、AI 助理對話氣泡的視覺設計,並解決了全局鍵盤遮擋問題。此版本專注於提升用戶體驗的直觀性與視覺吸引力。
### 🎂 生日選擇器完全重新設計
完全捨棄了過時的分散式輸入方式,改為現代化的模態選擇器設計。
#### 核心特性
- **觸發卡片 (Trigger Card)**:
- 點擊後彈出模態選擇器
- **已設置狀態**:紫青漸層背景 + 日曆圖標 + 完整日期顯示
- **未設置狀態**:灰色背景 + "Tap to set birthday" 提示
- 清晰顯示年份狀態(完整日期 vs "Year not set")
- **全新模態設計**:
- **iOS 風格滑出動畫**:從底部滑出,半透明黑色背景遮罩
- **清晰的白色漸層背景**:徹底解決黑屏問題
- **視覺化年份選項卡片**:
- 📅 **完整日期卡片**(紫青漸層):日曆圖標 + "Full Date" + "Month, Day & Year"
- 🎂 **僅生日卡片**(粉紅漸層):時鐘圖標 + "Just Birthday" + "Month & Day only"
- **即時預覽卡片**:底部顯示當前選擇的完整預覽(如 "January 15, 1995" 或 "January 15 (year not saved)")
- **動態提示文字**:根據選擇顯示 "Select full date:" 或 "Select birthday (month & day):"
#### 用戶體驗提升
- ✨ **一眼就懂**:大卡片視覺化選項,不需思考 toggle 含義
- 🎨 **色彩區分**:紫青 vs 粉紅,清晰區分兩種模式
- 👁️ **即時反饋**:預覽卡片立即顯示結果
- 📱 **觸控友好**:大面積卡片,易於點擊
### 💬 AI 助理對話氣泡重新設計
將原本單調的文字訊息轉變為生動、多狀態的互動體驗。
#### 多狀態設計
1. **初始狀態**(未選擇聯絡人):
- ✨ emoji 雙側裝飾:`✨ Hey there! ✨`
- 漸層強調文字:"perfect message"
- 箭頭引導:`↓ Pick a friend to get started`
2. **工作狀態**(已選聯絡人,待選場景):
- 小字體 "Writing for"
- **大字粗體**聯絡人名字(紫色)
- 問號圖標 + 斜體提示:"What's the occasion?"
3. **思考中狀態**:
- 🤔 emoji + "Thinking of the perfect words..."
4. **完成狀態**:
- ✨ emoji + "Ta-da! How does this look?"
#### 視覺改進
- **豐富排版**:不同字體大小、粗細、顏色的組合
- **Emoji 融入**:讓對話更生動有情感
- **引導性圖標**:箭頭、問號等小圖標引導用戶
- **漸層文字強調**:重點詞彙使用品牌色
### ⌨️ 全局鍵盤遮擋問題解決
實現了跨整個應用的鍵盤處理方案,確保輸入體驗流暢。
#### 技術實現
- **`KeyboardAvoidingView` 全局包裹**:EditContactScreen 使用智能鍵盤迴避
- **平台特定設置**:
- iOS: `padding` 模式 + 90px 垂直偏移
- Android: 不需特殊處理(`undefined`)
- **效果保證**:
- ✅ 鍵盤彈出時,內容自動上移
- ✅ 當前輸入框始終可見
- ✅ 不遮擋重要內容
- ✅ 跨平台一致性體驗
### 🎯 AI 助理場景優化
- **移除 "Apology" 場景**:此場景不適合 AI 生成訊息,已從選項中移除
- **保留場景**:
- Birthday - 生日祝福
- Anniversary - 週年紀念
- Promotion - 升職祝賀
- Thank You - 感謝訊息
- Cheer Up - 加油打氣
### 🎨 設計亮點
#### 生日選擇器
- 清晰的模態層次結構(Header → 選項卡片 → 日期選擇器 → 預覽)
- 豐富的視覺反饋(漸層、圖標、陰影)
- 符合 Apple 人機界面指南的設計
#### AI 助理
- 從單一文字到多層次互動體驗
- 動態內容根據狀態智能切換
- 更友善、更溫暖的對話氛圍
### 🛠 技術細節
- **新增 State 變數**:`showBirthdayPicker`, `tempBirthday`, `includeYear`
- **新增處理函數**:`handleSaveBirthday` - 從模態保存生日
- **新增樣式**:18 個新樣式支援生日模態設計
- **全局鍵盤設置**:`KeyboardAvoidingView` 配置優化
### 📱 TestFlight 準備就緒
此版本已通過完整測試,所有功能正常運行:
- ✅ TypeScript 編譯通過
- ✅ 所有 UI 改進已驗證
- ✅ 鍵盤處理在 iOS 和 Android 上測試
- ✅ 生日選擇器多種場景測試
- ✅ AI 助理所有狀態測試
### 🎄 聖誕節限定活動
為慶祝聖誕節,本版本加入了溫馨的節日元素(期間限定,活動後將移除):
#### 聖誕裝飾
- **底部導航欄**:旋轉雪花裝飾(隨 tab 切換動畫)
- **Home 頁面**:聖誕帽 Bubbo 吉祥物
- **Friends 頁面**:聖誕樹 Bubbo(空狀態)
- **Settings 頁面**:聖誕麋鹿 Bubbo
#### 實現細節
- 新增 `ChristmasDecorations` 組件
- 5 種聖誕 Bubbo 造型(xmas, xmas-deer, xmas-tree, xmas-santa, xmas-socks)
- Tab Bar 雪花動畫(與導航同步旋轉)
#### 活動期間
- **開始**:2025-12-04
- **結束**:2025-12-27(預計)
- **移除指南**:參見 `docs/development/CHRISTMAS_EVENT.md`
---
## v2.3.1 (2025-12-04) - 列表視圖重構與節日行事曆
本次更新專注於優化朋友列表的瀏覽體驗,移除了氣泡視圖以提供更清晰的資訊呈現,並大幅增強了行事曆功能,加入了西方重要節日的自動標示。
### 📅 行事曆升級 (Calendar Upgrade)
- **西方節日標示**:行事曆現在會自動標示重要的西方節日,並在日期上方顯示對應的節日圖示:
- 🎉 New Year's Day (Jan 1)
- 💘 Valentine's Day (Feb 14)
- ☘️ St. Patrick's Day (Mar 17)
- 🎃 Halloween (Oct 31)
- 🦃 Thanksgiving (Nov 4th Thursday)
- 🎄 Christmas Eve (Dec 24)
- 🎅 Christmas Day (Dec 25) - 顯示聖誕帽圖示
- 🎆 New Year's Eve (Dec 31)
- **節日卡片**:點擊節日日期時,下方事件列表會顯示專屬的節日卡片。
### 👥 朋友列表重構 (Friends List Overhaul)
- **純列表視圖**:移除了原本的氣泡 (Bubble/Orb) 視圖,全面改為更資訊豐富的列表視圖。
- **事件膠囊 (Event Pills)**:在朋友名字旁新增了動態膠囊,顯示即將到來的生日或紀念日倒數 (e.g., "Birthday 5d" 或 "Today")。
- **預設頭像優化**:統一了全站的預設頭像邏輯,無照片的聯絡人現在會顯示一致的 `avatar_default.png`,不再顯示文字預覽。
- **FAB 佈局修正**:調整了浮動按鈕 (FAB) 的展開位置,確保與首頁佈局一致,避免被底部導航欄遮擋。
### 🛠 其他修正 (Fixes)
- **樣式清理**:移除了大量遺留的氣泡視圖相關代碼與樣式,減少 App 體積與維護成本。
- **頭像一致性**:修復了聯絡人詳情頁 (Profile) 在無照片時顯示不一致的問題。
---
## v2.3.0 (2025-12-03) - 新手引導通知 (Onboarding Notifications)
為了提升新用戶的黏著度與互動率,本次更新加入了針對新安裝用戶的「新手引導通知」功能。
### 🔔 新增功能 (New Features)
- **新手引導通知 (Onboarding Notifications)**:
- **機制**:在用戶安裝 App 後的前 5 天,每天晚上 8 點發送一則推播通知。
- **內容**:採用美式年輕用語 (Gen Z Slang) 與幽默風格 (Duolingo-style),提醒用戶新增聯絡人或生日資訊。
- **目的**:透過趣味性的文案 ("Ghosting your contact list? 👻", "Bruh... 💀") 增加用戶回訪意願。
- **技術**:使用 `expo-notifications` 進行排程,並透過 `AsyncStorage` 確保僅在首次安裝時觸發。
## v2.2.0 (2025-12-03) - 聖誕節限定活動與體驗優化
本次更新帶來了溫馨的 **聖誕節限定主題**,讓 Bubbo 吉祥物換上節日新裝!同時修復了聯絡人匯入的關鍵問題,並進一步打磨了新增聯絡人的體驗與全站介面一致性。
### 🎄 聖誕節限定活動 (Limited Time Event)
> **注意**:此為季節性限定活動,後續版本將會還原為標準主題。
- **Bubbo 換新裝**:吉祥物 Bubbo 新增了多款聖誕造型,散佈在 App 各個角落:
- **Home (主頁)**:Xmas Bubbo 迎接您的到來。
- **AI Assistant**:Xmas Santa (聖誕老人) 為您服務。
- **Edit Contact**:Xmas Socks (聖誕襪) 陪伴您建立新連結。
- **Friends (空狀態)**:Xmas Tree (聖誕樹) 等待您掛上新朋友。
- **Settings (頁尾)**:Xmas Deer (馴鹿) 藏在最後的小驚喜。
### 🐛 問題修復 (Bug Fixes)
- **批次匯入修復**:解決了從通訊錄匯入多位聯絡人時,只有最後一位被成功匯入的問題。
- **技術細節**:在 `AppContext` 新增 `addContacts` 方法,支援一次性狀態更新與儲存,解決了迴圈呼叫導致的 Race Condition。
### 🚀 體驗優化 (UX Improvements)
#### 1. 新增聯絡人體驗升級
- **Random Avatar (隨機頭像)**:新增隨機產生卡通頭像的功能 (使用 DiceBear API),讓沒有照片的聯絡人也能擁有獨特外觀。
- **Aura Selector 優化**:重要性光環選擇器介面翻新,加入玻璃擬態背景、光暈效果與對應圖示 (Star, User, Coffee)。
- **介面活潑化**:加入 Bubbo 吉祥物與更直觀的操作按鈕。
- **用語修正**:將 "New Friend" 統一修正為 "New Contact"。
#### 2. 全站介面一致性
- **Header 統一**:將 **AI Assistant** 與 **Settings** 頁面的標題區域樣式統一為與 **Friends** 頁面一致的大標題設計 (Left-aligned, Bold, Glassmorphism)。
---
## v2.1.0 (2025-12-03) - Aura 系統與介面精緻化
本次更新專注於提升「聯絡人」與「朋友」相關頁面的視覺質感,引入了全新的 **Aura(光環)系統** 來直觀呈現聯絡人重要性,並全面優化了 UI 細節,消除廉價感,打造更精緻的玻璃擬態體驗。
### ✨ 新增功能與視覺升級
#### 1. Aura 光環系統
- **視覺化重要性**:不再僅用文字標示重要性,改以頭像周圍的漸層光環(Aura)呈現。
- **High**: 紅/粉色漸層 (Red/Pink Gradient)
- **Medium**: 藍/青色漸層 (Blue/Cyan Gradient)
- **Low**: 灰/銀色漸層 (Grey/Silver Gradient)
- **全面整合**:Aura 效果已應用於首頁(Home)、行事曆(Calendar)、朋友列表(Friends)及個人檔案(Profile)。
#### 2. 介面質感提升 (Premium Glass UI)
- **FriendsScreen (朋友列表)**:
- 移除舊版簡單列表,改用高質感的 **BlurView 玻璃卡片**。
- 增加卡片邊框與陰影深度,提升立體感。
- 優化標籤(Tags)與倒數日(Next Event)的排版設計。
- **FriendProfileScreen (朋友檔案)**:
- **玻璃時間軸**:將原本簡單的日期列表升級為精緻的玻璃卡片時間軸。
- **玻璃筆記區**:筆記區塊改為玻璃擬態容器。
- **圖示統一**:全面改用 **Feather Icons**,風格更簡約現代。
#### 3. 互動與細節優化
- **GlassTabBar**:優化了底部導航欄的動畫曲線與模糊強度,使其更滑順、更透亮。
- **編輯頁面**:新增了視覺化的 Aura 選擇器,讓設定重要性更直觀。
### 🛠 技術調整
- **圖示庫標準化**:大幅減少 `Ionicons` 的使用,轉向 `Feather` 以保持風格一致。
- **組件優化**:在關鍵介面直接使用 `BlurView` 搭配 `LinearGradient` 以獲得更細膩的控制,逐步取代通用的 `LiquidGlass` 封裝。
## v2.0.0 (2025-12-03) - Liquid Glass UI 重大改版
本次更新是 **Bubly** 自推出以來最重大的視覺設計改版,從原本的星空深色主題全面轉變為明亮、現代的 Liquid Glass(液態玻璃)設計語言,並加入全新的吉祥物角色 **Bobo**,大幅提升使用者體驗與視覺一致性。
### 🎨 核心設計系統重構
#### 1. 全新的 Liquid Glass 設計語言
**設計理念轉變**:
- **從深色星空 → 明亮液態玻璃**:移除了原本的深色宇宙/星空主題,改為以白色為基底的明亮介面
- **玻璃擬態設計**:採用毛玻璃模糊(Glassmorphism)效果,營造出輕盈、透明、流動的視覺感受
- **漸層色彩系統**:主要色彩從橘金色系轉變為青藍(Cyan `#6DD5FA`)到紫羅蘭(Violet `#BF85EC`)的漸層
**配色方案革新**([colors.ts:1-80](src/constants/colors.ts#L1-L80)):
- **背景色**:
- `background.main`: 純白色 `#FFFFFF`(主背景)
- `background.subtle`: 極淺冷灰 `#F5F7FA`(區段背景)
- 移除了 `deepSpace`、`darkNebula`、`starField` 等深色定義,改為淺色映射
- **主色調**:
- `primary.cyan`: `#6DD5FA`(漸層起點,取代原本的橘色)
- `primary.violet`: `#BF85EC`(漸層終點)
- 保留 `primary.orange`: `#FF6B35` 作為次要品牌色
- **文字顏色**:
- 從白色系改為深色系以提高可讀性
- `text.primary`: 午夜藍 `#2C3E50`(高對比)
- `text.secondary`: 石板藍 `#5D6D7E`(中對比)
- 新增 `text.inverse`: `#FFFFFF`(用於漸層背景上的白字)
- **新增陰影系統**([colors.ts:58-71](src/constants/colors.ts#L58-L71)):
- `shadows.soft`: 使用 Cyan 色彩的柔和陰影
- `shadows.button`: 使用 Violet 色彩的按鈕陰影
- 提供帶有色彩的懸浮感,符合 Liquid Glass 美學
#### 2. 新增核心 UI 組件
**LiquidGlass 組件**([src/components/LiquidGlass.tsx](src/components/LiquidGlass.tsx)):
- 使用 `expo-blur` 的 `BlurView` 實現毛玻璃效果
- 結合 `LinearGradient` 創造邊框光暈效果
- 支援自訂:
- `intensity`:模糊強度(預設 30)
- `tint`:色調(light/dark/default)
- `shape`:形狀(rectangle/circle/pill)
- `borderOpacity`:邊框透明度
- 包含頂部光澤效果(shine effect)增強玻璃質感
- Android 平台自動降級為半透明背景作為備用方案
**BoboMascot 組件**([src/components/BoboMascot.tsx](src/components/BoboMascot.tsx)):
- 全新的吉祥物角色「Bobo」,為應用注入親和力
- 支援 6 種情緒狀態:
- `standard`:標準狀態(有背景版)
- `happy`:開心
- `no-idea`:不知道
- `point`:指向你
- `say-hi`:打招呼
- `thinking`:思考中
- 自帶浮動動畫效果(可選開關)
- 高度可自訂尺寸與樣式
**StarryBackground 組件重構**:
- 原本的星空背景組件進行了簡化
- 移除複雜的宇宙星雲效果,改為輕量級的裝飾性背景
- 與新的 Liquid Glass 設計語言相容
### 📱 全畫面 UI 重新設計
**所有主要畫面均已重新設計**,包含但不限於:
1. **首頁(HomeScreen)**([src/screens/HomeScreen.tsx](src/screens/HomeScreen.tsx)):
- 改用 Liquid Glass 卡片元件
- 整合 Bobo 吉祥物於多個互動區域
- 白色背景配搭彩色漸層按鈕
2. **朋友列表(FriendsScreen)**([src/screens/FriendsScreen.tsx](src/screens/FriendsScreen.tsx)):
- 列表項改用 Liquid Glass 效果
- 標籤系統採用新配色方案
- 浮動新增按鈕使用 Cyan-Violet 漸層
3. **行事曆(CalendarScreen)**([src/screens/CalendarScreen.tsx](src/screens/CalendarScreen.tsx)):
- 日期選擇器採用玻璃效果
- 事件卡片使用 Liquid Glass 組件
- 空狀態顯示 Bobo 吉祥物(thinking 模式)
4. **朋友詳細頁(FriendProfileScreen)**([src/screens/FriendProfileScreen.tsx](src/screens/FriendProfileScreen.tsx)):
- 頭像與資訊卡片採用玻璃效果
- 按鈕改用新的漸層色彩
- 整體配色從深色轉為淺色高對比
5. **AI 助理(AIAssistantScreen)**([src/screens/AIAssistantScreen.tsx](src/screens/AIAssistantScreen.tsx)):
- 整合 Bobo 吉祥物作為 AI 代表
- 對話氣泡採用 Liquid Glass 設計
- 按鈕與輸入框使用新的色彩系統
6. **設定頁(SettingScreen)**([src/screens/SettingScreen.tsx](src/screens/SettingScreen.tsx)):
- 設定項目改用 Liquid Glass 卡片
- 開關與控制元件配合新主題
- 版本資訊區域重新設計
7. **其他畫面**:
- 編輯聯絡人(EditContactScreen)
- 標籤管理(TagsManagementScreen)
- 聯絡人選擇器(ContactSelectorScreen)
- 匯入聯絡人相關畫面(ImportContactsScreen、ImportContactDetailScreen)
- 全部配合新的設計語言進行調整
### 🎭 新增視覺資源
**Bobo 吉祥物圖片資源**(`/assets/`):
- `bobo_wt_bg.png`:標準版(帶背景)
- `bobo_happy.png`:開心表情
- `bobo_no idea.png`:不知道表情
- `bobo_point at you.png`:指向動作
- `bobo_say hi.png`:打招呼動作
- `bobo_thinking.png`:思考表情
**應用圖示更新**:
- `icon.png`、`adaptive-icon.png`、`favicon.png` 均已更新為新的品牌識別
### 🔧 技術改進
#### 依賴套件更新
- 新增 `expo-blur`: `^15.0.7`(用於 Liquid Glass 效果)
- `expo-linear-gradient` 升級至 `~15.0.7`(用於漸層效果)
#### 程式碼品質
- 28 個檔案變更,1222 行新增,1211 行刪除
- 所有畫面組件統一採用新的設計系統
- 移除過時的深色主題相關程式碼
- 改善型別定義與程式碼結構
### 📐 設計系統指南
**給開發者的設計原則**:
1. **使用 `<LiquidGlass>` 包裹卡片元素**:不再手動設定陰影與邊框,改用 LiquidGlass 組件
2. **色彩使用**:
- 背景使用 `colors.background.main` 或 `colors.background.subtle`
- 主要互動元素使用 `gradients.primary`(Cyan 到 Violet)
- 文字使用 `colors.text.primary/secondary/tertiary`
- 保留 `colors.primary.orange` 作為品牌提示色
3. **陰影**:使用 `shadows.soft` 或 `shadows.button` 取代手動設定
4. **吉祥物整合**:在空狀態、引導流程、互動回饋中適當加入 Bobo
### ⚠️ 重大變更(Breaking Changes)
- **色彩常數重命名**:舊的 `deepSpace`、`darkNebula` 等深色定義已重新映射為淺色,若有自訂組件引用這些色彩需要更新
- **背景元件變更**:`StarryBackground` 組件行為已改變,不再顯示星空效果
- **主題系統**:目前僅支援 Light Mode,Dark Mode 支援已暫時移除(未來會重新加入)
### 🎯 使用者體驗提升
- **視覺一致性**:所有畫面統一採用 Liquid Glass 設計語言
- **可讀性提升**:從深色背景白字改為淺色背景深字,減少眼睛疲勞
- **現代感**:Glassmorphism 是當前主流的 UI 趨勢,提升應用的時尚感
- **親和力**:Bobo 吉祥物的加入讓應用更有溫度與個性
- **清晰度**:高對比配色方案提升介面元素的辨識度
### 🔄 遷移指南
如果您從舊版本升級,請注意:
1. 執行 `npm install` 安裝新的依賴套件(`expo-blur`)
2. 檢查自訂的色彩引用,確認是否需要調整
3. 若有自製組件使用舊的 `colors` 定義,請參考新的 `src/constants/colors.ts` 進行更新
4. Bobo 圖片資源已包含在 `/assets/` 中,無需額外下載
---
## v1.1.0 (2025-11-06) - Build修正與程式碼優化
本次更新主要解決了先前版本無法成功透過 `expo build` 或 `eas build` 進行建置的嚴重問題,並包含了一系列的程式碼品質提升和依賴套件升級。
### 解決的重大問題 (Solved Issues)
#### 1. Expo/EAS 建置失敗
- **問題描述**: 在執行 `expo build` 或 `eas build` 時,prebuild 階段必定失敗,並顯示找不到 `./assets/icon.png` 的錯誤。
- **根本原因**: 此問題由兩個環環相扣的錯誤所導致。
1. **原因一:App Icon 位置不正確 (直接原因)**
Expo 的建置系統被設定為從專案根目錄下的 `./assets/icon.png` 來讀取 App Icon。然而,該圖示檔案當時並未在此路徑,這是導致建置流程找不到檔案並立即失敗的直接原因。
2. **原因二:`.gitignore` 設定錯誤 (根本原因)**
更根本的問題在於,專案的 `.gitignore` 檔案中包含了 `*.png` 規則。這個設定會命令 Git 忽略所有 `.png` 檔案。因此,即使手動將 `icon.png` 移至正確位置,它也無法被提交到版本控制系統。這意味著任何協作者或自動化建置環境在下載專案時,都無法取得 icon 檔案,最終仍會導致建置失敗。
- **解決方案**: 必須同時解決上述兩個問題。
1. **移動 Icon**: 將 `icon.png` 檔案放置到正確的 `/assets/icon.png` 路徑下。
2. **修改 .gitignore**: 移除 `.gitignore` 中忽略 `*.png` 和 `*.jpg` 的規則,確保圖片資源能被正常追蹤並提交。
### 程式碼與函式庫變更 (Code & Library Changes)
#### 1. 依賴套件升級 (Dependency Upgrades)
為了提升穩定性與安全性,更新了多個核心依賴套件,包含:
- `expo`: `~54.0.12` -> `54.0.22`
- `react-native`: `0.81.4` -> `0.81.5`
- `expo-contacts`: `^15.0.9` -> `~15.0.10`
- 以及其他相關的 `metro`, `babel` 等底層套件。
- (詳細變更請參考 `package-lock.json` 的 diff)
#### 2. 程式碼品質優化 (Code Refinements)
- **`src/constants/colors.ts`**: 為 `gradients` 物件中的陣列加上了 `as const`,將其轉換為唯讀元組,增加了型別的嚴謹性與安全性。
- **`src/lib/openaiService.ts`**: 移除了不再需要的 `console.log`,使程式碼更簡潔。
- **`src/screens/FriendsScreen.tsx`**: 在 `map` 迴圈中為 `tagId` 加上了明確的 `string` 型別,提升程式碼可讀性。
- **`src/screens/ImportContactsScreen.tsx`**: 重構了從系統聯絡人匯入生日的邏輯,新的寫法能更穩定地處理 `expo-contacts` 可能回傳的不同日期格式,避免因格式問題導致的閃退或錯誤。
### 給開發者的說明 (Notes for Developers)
- **初始設定**: 新加入的開發者在 `git clone` 專案後,請務必執行 `npm install` 來安裝所有依賴。
- **App Icon**: 未來若要更換 App Icon,請直接替換 `/assets/icon.png` 檔案即可。
- **快取問題**: 如果遇到無法解釋的錯誤,可以嘗試用 `npx expo start -c` 來清除 Expo 的快取後重啟。