diff --git a/docs/architecture/README.md b/docs/architecture/README.md
index a30be71..975ef54 100644
--- a/docs/architecture/README.md
+++ b/docs/architecture/README.md
@@ -26,13 +26,16 @@ MCP Feedback Enhanced 採用**單一活躍會話 + 持久化 Web UI**的創新
- **智能資源管理**: 自動清理和會話生命週期管理
- **提示詞管理系統**: 常用提示詞的 CRUD 操作和快速選擇
- **自動提交功能**: 倒數計時器和自動回饋提交機制
-- **會話管理功能**: 會話歷史追蹤和統計分析
+- **會話管理功能**: 會話歷史追蹤和統計分析(v2.4.3 重構增強)
+- **音效通知系統**: 智能音效提醒和自訂音效管理(v2.4.3 新增)
+- **智能記憶功能**: 輸入框高度記憶和一鍵複製(v2.4.3 新增)
- **多語言支援**: 繁體中文、簡體中文、英文動態切換
#### 技術棧
- **後端**: Python 3.11+, FastAPI, FastMCP
-- **前端**: HTML5, JavaScript ES6+, WebSocket
+- **前端**: HTML5, JavaScript ES6+, WebSocket, Web Audio API(v2.4.3)
- **通信**: WebSocket, HTTP REST API
+- **存儲**: localStorage(會話歷史、音效文件、設定記憶)
- **部署**: uvicorn, 跨平台支援
### 🎯 快速導航
@@ -50,12 +53,38 @@ MCP Feedback Enhanced 採用**單一活躍會話 + 持久化 Web UI**的創新
- 交互流程圖
- 會話生命週期圖
- 部署拓撲圖
+- **音效通知系統架構圖**(v2.4.3 新增)
+- **會話管理重構流程圖**(v2.4.3 新增)
+- **智能記憶功能架構圖**(v2.4.3 新增)
+
+### 🆕 v2.4.3 版本亮點
+
+#### 🔊 音效通知系統
+- **內建音效**: 經典提示音、通知鈴聲、輕柔鐘聲
+- **自訂音效**: 支援 MP3、WAV、OGG 格式上傳
+- **智能播放**: 會話更新時自動播放通知音效
+- **音量控制**: 0-100% 可調節音量
+- **瀏覽器相容**: 處理自動播放政策限制
+
+#### 📋 會話管理重構
+- **頁籤化設計**: 從側邊欄遷移到獨立頁籤,解決瀏覽器相容性問題
+- **本地歷史存儲**: 支援 72 小時可配置保存期限
+- **隱私控制**: 三級用戶訊息記錄設定(完整/基本/停用)
+- **數據管理**: 匯出和清理功能
+- **詳情查看**: 專門的會話詳情彈窗
+
+#### 🧠 智能記憶功能
+- **輸入框高度記憶**: 自動保存和恢復輸入框高度
+- **一鍵複製**: 專案路徑和會話ID點擊複製
+- **設定持久化**: 用戶偏好自動保存
+- **國際化支援**: 複製提示支援多語言
---
-**版本**: 2.4.0
-**最後更新**: 2025年6月
+**版本**: 2.4.3
+**最後更新**: 2025年6月14日
**維護者**: Minidoracat
**架構類型**: Web-Only 四層架構
-**新功能**: 提示詞管理、自動提交、會話管理、語系切換優化
-**文檔狀態**: ✅ 已完成全面更新,包含所有新功能的詳細說明
+**v2.4.3 新功能**: 音效通知系統、會話管理重構、智能記憶功能、一鍵複製
+**歷史功能**: 提示詞管理、自動提交、會話管理、語系切換優化
+**文檔狀態**: ✅ 已完成 v2.4.3 全面更新,包含所有新功能的詳細說明和架構分析
diff --git a/docs/architecture/api-reference.md b/docs/architecture/api-reference.md
index db3d7c9..2920140 100644
--- a/docs/architecture/api-reference.md
+++ b/docs/architecture/api-reference.md
@@ -270,22 +270,81 @@ ws://localhost:{port}/ws
- `settings.timeout`: 自動提交倒數時間(秒)
- `settings.promptId`: 自動提交使用的提示詞 ID
-#### session_management
+#### session_management(v2.4.3 重構增強)
會話管理操作。
```json
{
"type": "session_management",
"data": {
- "action": "get_history|get_stats|clear_history",
- "sessionId": "550e8400-e29b-41d4-a716-446655440000"
+ "action": "get_history|get_stats|clear_history|export_history|view_details",
+ "sessionId": "550e8400-e29b-41d4-a716-446655440000",
+ "options": {
+ "retentionHours": 72,
+ "privacyLevel": "full",
+ "includeUserMessages": true
+ }
}
}
```
**字段說明**:
-- `action`: 管理動作(get_history=獲取歷史, get_stats=獲取統計, clear_history=清除歷史)
+- `action`: 管理動作(get_history=獲取歷史, get_stats=獲取統計, clear_history=清除歷史, export_history=匯出歷史, view_details=查看詳情)
- `sessionId`: 會話 ID(可選)
+- `options.retentionHours`: 歷史保存時間(小時)
+- `options.privacyLevel`: 隱私等級(full=完整, basic=基本, disabled=停用)
+- `options.includeUserMessages`: 是否包含用戶訊息記錄
+
+#### audio_management(v2.4.3 新增)
+音效管理操作。
+
+```json
+{
+ "type": "audio_management",
+ "data": {
+ "action": "update_settings|test_audio|upload_custom|delete_custom",
+ "settings": {
+ "enabled": true,
+ "volume": 75,
+ "selectedAudioId": "notification-ding"
+ },
+ "customAudio": {
+ "id": "custom_1_1703123456789",
+ "name": "自訂提示音",
+ "data": "data:audio/mp3;base64,//uQx...",
+ "mimeType": "audio/mp3"
+ }
+ }
+}
+```
+
+**字段說明**:
+- `action`: 操作類型(update_settings=更新設定, test_audio=測試播放, upload_custom=上傳自訂音效, delete_custom=刪除自訂音效)
+- `settings.enabled`: 是否啟用音效通知
+- `settings.volume`: 音量(0-100)
+- `settings.selectedAudioId`: 選中的音效 ID
+- `customAudio`: 自訂音效數據
+
+#### height_management(v2.4.3 新增)
+輸入框高度管理。
+
+```json
+{
+ "type": "height_management",
+ "data": {
+ "action": "save_height|load_height",
+ "elementId": "combinedFeedbackText",
+ "height": 200,
+ "settingKey": "combinedFeedbackTextHeight"
+ }
+}
+```
+
+**字段說明**:
+- `action`: 操作類型(save_height=保存高度, load_height=載入高度)
+- `elementId`: 元素 ID
+- `height`: 高度值(像素)
+- `settingKey`: 設定鍵名
### 📥 服務器 → 客戶端訊息
@@ -366,7 +425,7 @@ WebSocket 連接建立確認。
- `promptId`: 當前自動提交提示詞 ID
- `promptName`: 當前自動提交提示詞名稱
-#### session_history
+#### session_history(v2.4.3 增強)
會話歷史數據。
```json
@@ -379,18 +438,99 @@ WebSocket 連接建立確認。
"summary": "代碼審查完成",
"status": "completed",
"created_at": "2024-12-13T10:30:00Z",
- "feedback_length": 150
+ "completed_at": "2024-12-13T10:35:00Z",
+ "feedback_length": 150,
+ "user_messages": [
+ {
+ "timestamp": "2024-12-13T10:32:00Z",
+ "content": "代碼看起來不錯",
+ "type": "text",
+ "submission_method": "manual"
+ }
+ ],
+ "project_directory": "./my-project"
}
],
"stats": {
"total": 10,
"completed": 8,
- "average_feedback_length": 120
+ "average_feedback_length": 120,
+ "today_count": 3,
+ "average_duration": 300
+ },
+ "retention_info": {
+ "retention_hours": 72,
+ "oldest_session": "2024-12-11T10:30:00Z",
+ "cleanup_count": 2
}
}
}
```
+#### audio_notification(v2.4.3 新增)
+音效通知觸發。
+
+```json
+{
+ "type": "audio_notification",
+ "data": {
+ "trigger": "session_updated",
+ "audioId": "notification-ding",
+ "volume": 75,
+ "timestamp": "2024-12-13T10:30:00Z"
+ }
+}
+```
+
+**字段說明**:
+- `trigger`: 觸發事件(session_updated=會話更新, feedback_received=回饋接收)
+- `audioId`: 播放的音效 ID
+- `volume`: 播放音量
+- `timestamp`: 觸發時間
+
+#### audio_settings_update(v2.4.3 新增)
+音效設定更新通知。
+
+```json
+{
+ "type": "audio_settings_update",
+ "data": {
+ "settings": {
+ "enabled": true,
+ "volume": 75,
+ "selectedAudioId": "soft-chime"
+ },
+ "availableAudios": [
+ {
+ "id": "default-beep",
+ "name": "經典提示音",
+ "isDefault": true
+ },
+ {
+ "id": "custom_1",
+ "name": "自訂音效1",
+ "isDefault": false
+ }
+ ]
+ }
+}
+```
+
+#### height_settings_update(v2.4.3 新增)
+高度設定更新通知。
+
+```json
+{
+ "type": "height_settings_update",
+ "data": {
+ "elementId": "combinedFeedbackText",
+ "height": 200,
+ "saved": true,
+ "timestamp": "2024-12-13T10:30:00Z"
+ }
+}
+```
+
#### error
錯誤訊息。
@@ -505,7 +645,7 @@ def getPromptsSortedByUsage(self) -> List[dict]
獲取按使用頻率排序的提示詞列表,自動提交提示詞優先顯示。
-### SessionManager API
+### SessionManager API(v2.4.3 重構增強)
#### getCurrentSession()
```python
@@ -516,17 +656,108 @@ def getCurrentSession(self) -> dict
#### getSessionHistory()
```python
-def getSessionHistory(self) -> List[dict]
+def getSessionHistory(self, retentionHours: int = 72) -> List[dict]
```
-獲取會話歷史記錄。
+獲取會話歷史記錄,支援保存期限過濾。
#### getSessionStats()
```python
def getSessionStats(self) -> dict
```
-獲取會話統計信息。
+獲取會話統計信息,包含今日統計和平均時長。
+
+#### exportSessionHistory()
+```python
+def exportSessionHistory(self, format: str = "json") -> str
+```
+
+匯出會話歷史數據。
+
+**參數**:
+- `format`: 匯出格式(json, csv)
+
+#### cleanupExpiredSessions()
+```python
+def cleanupExpiredSessions(self, retentionHours: int = 72) -> int
+```
+
+清理過期會話記錄。
+
+**返回值**: 清理的會話數量
+
+### AudioManager API(v2.4.3 新增)
+
+#### playNotification()
+```python
+def playNotification(self) -> None
+```
+
+播放通知音效。
+
+#### updateSettings()
+```python
+def updateSettings(self, enabled: bool, volume: int, selectedAudioId: str) -> None
+```
+
+更新音效設定。
+
+#### addCustomAudio()
+```python
+def addCustomAudio(self, name: str, audioData: str, mimeType: str) -> dict
+```
+
+新增自訂音效。
+
+**參數**:
+- `name`: 音效名稱
+- `audioData`: Base64 編碼的音效數據
+- `mimeType`: MIME 類型(audio/mp3, audio/wav, audio/ogg)
+
+#### deleteCustomAudio()
+```python
+def deleteCustomAudio(self, audioId: str) -> bool
+```
+
+刪除自訂音效。
+
+#### getAllAudios()
+```python
+def getAllAudios(self) -> List[dict]
+```
+
+獲取所有可用音效(內建 + 自訂)。
+
+### TextareaHeightManager API(v2.4.3 新增)
+
+#### registerTextarea()
+```python
+def registerTextarea(self, elementId: str, settingKey: str) -> bool
+```
+
+註冊 textarea 元素進行高度管理。
+
+#### saveHeight()
+```python
+def saveHeight(self, elementId: str, height: int) -> None
+```
+
+保存 textarea 高度到設定。
+
+#### loadHeight()
+```python
+def loadHeight(self, elementId: str) -> int
+```
+
+從設定載入 textarea 高度。
+
+#### unregisterTextarea()
+```python
+def unregisterTextarea(self, elementId: str) -> None
+```
+
+取消註冊 textarea 元素。
### AutoSubmitManager API
@@ -595,6 +826,32 @@ class AutoSubmitStatus:
COMPLETED = "completed" # 已完成提交
```
+### 音效通知狀態(v2.4.3 新增)
+```python
+class AudioNotificationStatus:
+ DISABLED = "disabled" # 已停用
+ ENABLED = "enabled" # 已啟用
+ PLAYING = "playing" # 播放中
+ ERROR = "error" # 播放錯誤
+```
+
+### 會話歷史狀態(v2.4.3 新增)
+```python
+class SessionHistoryStatus:
+ ACTIVE = "active" # 活躍會話
+ COMPLETED = "completed" # 已完成會話
+ EXPIRED = "expired" # 已過期會話
+ ARCHIVED = "archived" # 已歸檔會話
+```
+
+### 隱私等級(v2.4.3 新增)
+```python
+class PrivacyLevel:
+ FULL = "full" # 完整記錄
+ BASIC = "basic" # 基本記錄
+ DISABLED = "disabled" # 停用記錄
+```
+
## 🔒 安全考慮
### 輸入驗證
@@ -605,6 +862,15 @@ class AutoSubmitStatus:
- 提示詞名稱長度限制:最大 100 字符
- 提示詞內容長度限制:最大 5,000 字符
- 提示詞數量限制:最多 50 個
+- **音效文件限制(v2.4.3 新增)**:
+ - 支援格式:MP3, WAV, OGG
+ - 單個文件最大:2MB
+ - 自訂音效數量:最多 20 個
+ - 音效名稱長度:最大 50 字符
+- **會話歷史限制(v2.4.3 新增)**:
+ - 預設保存期限:72 小時
+ - 最大保存期限:168 小時(7天)
+ - 單個會話最大用戶訊息數:100 條
### 資源保護
- WebSocket 連接數限制:每會話最多 5 個連接
@@ -633,9 +899,10 @@ app.add_middleware(
---
-**版本**: 2.4.0
-**最後更新**: 2025年6月
+**版本**: 2.4.3
+**最後更新**: 2025年6月14日
**維護者**: Minidoracat
**API 版本**: v1
-**協議支援**: MCP 2.0+, WebSocket, HTTP/1.1
-**新功能**: 自動提交、提示詞管理、會話管理、語系切換優化
+**協議支援**: MCP 2.0+, WebSocket, HTTP/1.1, Web Audio API
+**v2.4.3 新功能**: 音效通知系統、會話管理重構、智能記憶功能、一鍵複製
+**歷史功能**: 自動提交、提示詞管理、會話管理、語系切換優化
diff --git a/docs/architecture/component-details.md b/docs/architecture/component-details.md
index de61065..49a8fcc 100644
--- a/docs/architecture/component-details.md
+++ b/docs/architecture/component-details.md
@@ -588,26 +588,106 @@ graph TB
- **PromptSettingsUI**: 設定頁籤中的提示詞管理界面
- **PromptInputButtons**: 回饋輸入區的快速選擇按鈕
-#### 會話管理模組群組 (session/)
+#### 會話管理模組群組 (session/) - v2.4.3 重構增強
**模組結構**:
```mermaid
graph TB
- subgraph "會話管理模組"
+ subgraph "會話管理模組(v2.4.3 重構)"
SM[session-manager.js
會話控制器
狀態管理]
- SDM[session-data-manager.js
數據管理器
歷史記錄]
- SU[session-utils.js
工具函數
狀態判斷]
+ SDM[session-data-manager.js
數據管理器
本地存儲增強]
+ SUR[session-ui-renderer.js
UI 渲染器
頁籤化設計]
+ SDM_MODAL[session-details-modal.js
詳情彈窗
會話詳細資訊]
end
SM -->|數據操作| SDM
- SM -->|工具函數| SU
+ SM -->|UI 渲染| SUR
+ SM -->|詳情顯示| SDM_MODAL
SDM -->|狀態回調| SM
+ SUR -->|用戶操作| SM
+ SDM_MODAL -->|查看操作| SM
```
+**v2.4.3 重構亮點**:
+- **從側邊欄遷移到頁籤**: 解決瀏覽器相容性問題
+- **本地歷史存儲**: 支援 72 小時可配置保存期限
+- **隱私控制**: 三級用戶訊息記錄設定(完整/基本/停用)
+- **數據管理**: 匯出和清理功能
+- **UI 重新設計**: 專門的渲染器和詳情彈窗
+
**核心功能**:
- **SessionManager**: 當前會話的狀態管理和控制
-- **SessionDataManager**: 會話歷史記錄和統計數據管理
-- **SessionUtils**: 會話狀態判斷和工具函數
+- **SessionDataManager**: 會話歷史記錄、統計數據和本地存儲管理
+- **SessionUIRenderer**: 專門的 UI 渲染器,負責會話列表和狀態顯示
+- **SessionDetailsModal**: 會話詳情彈窗,提供完整的會話資訊查看
+
+#### 音效通知模組群組 (audio/) - v2.4.3 新增
+
+**模組結構**:
+```mermaid
+graph TB
+ subgraph "音效通知系統(v2.4.3 新增)"
+ AM[audio-manager.js
音效管理器
播放控制]
+ ASU[audio-settings-ui.js
設定界面
音效配置]
+ DA[DefaultAudios
內建音效
Base64 編碼]
+ CA[CustomAudios
自訂音效
用戶上傳]
+ end
+
+ subgraph "Web Audio API"
+ AUDIO[Audio 物件]
+ BASE64[Base64 音效數據]
+ end
+
+ AM -->|管理界面| ASU
+ AM -->|內建音效| DA
+ AM -->|自訂音效| CA
+ AM -->|播放控制| AUDIO
+ AUDIO -->|數據來源| BASE64
+ ASU -->|設定保存| SettingsManager
+```
+
+**核心功能**:
+- **AudioManager**: 音效播放控制、音量管理、音效選擇
+- **AudioSettingsUI**: 音效設定界面、上傳管理、測試播放
+- **內建音效**: 經典提示音、通知鈴聲、輕柔鐘聲
+- **自訂音效**: 支援 MP3、WAV、OGG 格式上傳和管理
+
+**技術特性**:
+- **Web Audio API**: 使用原生 Audio 物件進行播放
+- **Base64 存儲**: 音效文件以 Base64 格式存儲在 localStorage
+- **音量控制**: 0-100% 可調節音量
+- **瀏覽器相容性**: 處理自動播放政策限制
+
+#### 智能記憶功能 - v2.4.3 新增
+
+**輸入框高度管理**:
+```mermaid
+graph TB
+ subgraph "高度管理系統"
+ THM[TextareaHeightManager
高度管理器]
+ RO[ResizeObserver
尺寸監控]
+ DEBOUNCE[防抖機制
500ms 延遲]
+ end
+
+ subgraph "存儲機制"
+ SETTINGS[SettingsManager]
+ HEIGHT_KEY[combinedFeedbackTextHeight]
+ end
+
+ TEXTAREA[combinedFeedbackText] --> RO
+ RO --> THM
+ THM --> DEBOUNCE
+ DEBOUNCE --> SETTINGS
+ SETTINGS --> HEIGHT_KEY
+
+ THM -->|恢復高度| TEXTAREA
+```
+
+**一鍵複製功能**:
+- **專案路徑複製**: 點擊路徑文字即可複製到剪貼簿
+- **會話ID複製**: 點擊會話ID即可複製
+- **複製反饋**: 視覺提示複製成功狀態
+- **國際化支援**: 複製提示支援多語言
#### 自動提交功能整合
@@ -883,6 +963,110 @@ class ImageHandler {
- **性能優化**: 延遲載入和資源快取
- **無障礙支援**: 鍵盤導航和螢幕閱讀器支援
+### static/css/ - 樣式系統(v2.4.3 擴展)
+
+**樣式文件結構**:
+```
+static/css/
+├── styles.css # 主樣式文件
+├── prompt-management.css # 提示詞管理樣式
+├── session-management.css # 會話管理樣式
+└── audio-management.css # 音效管理樣式(v2.4.3 新增)
+```
+
+**v2.4.3 新增樣式特性**:
+
+**audio-management.css - 音效管理樣式**:
+```css
+/* 音效管理區塊樣式 */
+.audio-management-section {
+ background: var(--bg-tertiary);
+ border: 1px solid var(--border-color);
+ border-radius: 12px;
+ padding: 20px;
+ margin-bottom: 20px;
+ transition: all 0.3s ease;
+}
+
+/* 音效設定控制項 */
+.audio-setting-item {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 16px;
+ padding: 12px 0;
+ border-bottom: 1px solid var(--border-color);
+}
+
+/* 音量控制滑桿 */
+.audio-volume-slider {
+ width: 120px;
+ height: 6px;
+ background: var(--bg-secondary);
+ border-radius: 3px;
+ outline: none;
+}
+
+/* 自訂音效列表 */
+.audio-custom-item {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 12px;
+ background: var(--bg-primary);
+ border: 1px solid var(--border-color);
+ border-radius: 8px;
+ margin-bottom: 8px;
+}
+```
+
+**session-management.css - 會話管理樣式增強**:
+```css
+/* v2.4.3 頁籤化設計 */
+.session-tab-content {
+ padding: 20px;
+ background: var(--bg-primary);
+ border-radius: 8px;
+ margin-top: 16px;
+}
+
+/* 會話卡片樣式 */
+.session-card {
+ background: var(--bg-secondary);
+ border: 1px solid var(--border-color);
+ border-radius: 8px;
+ padding: 16px;
+ margin-bottom: 12px;
+ transition: all 0.3s ease;
+}
+
+.session-card:hover {
+ border-color: var(--accent-color);
+ box-shadow: 0 2px 8px rgba(0, 122, 204, 0.1);
+}
+
+/* 一鍵複製按鈕樣式 */
+.copy-button {
+ background: transparent;
+ border: none;
+ color: var(--accent-color);
+ cursor: pointer;
+ padding: 2px 6px;
+ border-radius: 4px;
+ transition: background-color 0.2s ease;
+}
+
+.copy-button:hover {
+ background: var(--bg-tertiary);
+}
+```
+
+**響應式設計增強**:
+- **移動設備優化**: 音效控制項在小螢幕下垂直排列
+- **觸控友好**: 按鈕和滑桿適配觸控操作
+- **視覺反饋**: 懸停和點擊狀態的視覺提示
+- **深色主題**: 完整的深色主題支援
+
## 🛠️ 工具層組件
### utils/error_handler.py - 錯誤處理框架
@@ -1181,8 +1365,9 @@ tests/
---
-**版本**: 2.3.0
-**最後更新**: 2024年12月
+**版本**: 2.4.3
+**最後更新**: 2025年6月14日
**維護者**: Minidoracat
**架構類型**: Web-Only 四層架構
-**技術棧**: Python 3.11+, FastAPI, FastMCP, WebSocket
+**v2.4.3 新功能**: 音效通知系統、會話管理重構、智能記憶功能
+**技術棧**: Python 3.11+, FastAPI, FastMCP, WebSocket, Web Audio API
diff --git a/docs/architecture/deployment-guide.md b/docs/architecture/deployment-guide.md
index 54e5098..75dcdb1 100644
--- a/docs/architecture/deployment-guide.md
+++ b/docs/architecture/deployment-guide.md
@@ -46,12 +46,14 @@ graph TB
- **內存**: 512MB 可用內存
- **磁盤**: 100MB 可用空間
- **網路**: 可訪問的網路連接
+- **瀏覽器**: 支援 Web Audio API 的現代瀏覽器(v2.4.3 音效功能)
#### 推薦配置
- **Python**: 3.12+
- **內存**: 1GB+ 可用內存
-- **磁盤**: 500MB+ 可用空間
+- **磁盤**: 500MB+ 可用空間(包含音效文件存儲)
- **CPU**: 2 核心或更多
+- **瀏覽器**: Chrome 90+, Firefox 88+, Safari 14+(完整功能支援)
### 安裝方式
@@ -61,7 +63,7 @@ graph TB
uvx mcp-feedback-enhanced@latest web
# 指定版本
-uvx mcp-feedback-enhanced@2.3.0 web
+uvx mcp-feedback-enhanced@2.4.3 web
```
#### 2. 使用 pip
@@ -223,6 +225,8 @@ mcp-feedback-enhanced web [OPTIONS]
| `--debug` | `bool` | `False` | 啟用調試模式 |
| `--no-browser` | `bool` | `False` | 不自動開啟瀏覽器 |
| `--timeout` | `int` | `600` | 預設會話超時時間(秒) |
+| `--audio-enabled` | `bool` | `True` | 啟用音效通知(v2.4.3 新增) |
+| `--session-retention` | `int` | `72` | 會話歷史保存時間(小時,v2.4.3 新增) |
### 環境變數
@@ -232,6 +236,8 @@ export MCP_FEEDBACK_HOST=0.0.0.0
export MCP_FEEDBACK_PORT=9000
export MCP_FEEDBACK_DEBUG=true
export MCP_FEEDBACK_TIMEOUT=1200
+export MCP_FEEDBACK_AUDIO_ENABLED=true
+export MCP_FEEDBACK_SESSION_RETENTION=72
```
### 配置文件
@@ -250,6 +256,101 @@ export MCP_FEEDBACK_TIMEOUT=1200
"ui": {
"default_language": "zh-TW",
"theme": "light"
+ },
+ "audio": {
+ "enabled": true,
+ "default_volume": 75,
+ "max_custom_audios": 20,
+ "max_file_size_mb": 2
+ },
+ "session_history": {
+ "retention_hours": 72,
+ "max_retention_hours": 168,
+ "privacy_level": "full",
+ "auto_cleanup": true
+ }
+}
+```
+
+## 🆕 v2.4.3 版本部署考慮
+
+### 音效通知系統部署
+
+#### 瀏覽器相容性檢查
+```javascript
+// 檢查 Web Audio API 支援
+function checkAudioSupport() {
+ if (typeof Audio === 'undefined') {
+ console.warn('Web Audio API 不支援,音效功能將被停用');
+ return false;
+ }
+ return true;
+}
+```
+
+#### 音效文件存儲配置
+```json
+{
+ "audio_storage": {
+ "type": "localStorage",
+ "max_size_mb": 10,
+ "compression": true,
+ "fallback_enabled": true
+ }
+}
+```
+
+#### 自動播放政策處理
+```bash
+# 部署時需要考慮瀏覽器自動播放限制
+# Chrome: 需要用戶交互後才能播放音效
+# Firefox: 預設允許音效播放
+# Safari: 需要用戶手勢觸發
+```
+
+### 會話管理重構部署
+
+#### localStorage 容量規劃
+```javascript
+// 估算存儲需求
+const estimatedStorage = {
+ sessions_per_day: 50,
+ average_session_size_kb: 5,
+ retention_days: 3,
+ total_size_mb: (50 * 5 * 3) / 1024 // 約 0.73 MB
+};
+```
+
+#### 隱私設定配置
+```json
+{
+ "privacy_defaults": {
+ "user_message_recording": "full",
+ "retention_hours": 72,
+ "auto_cleanup": true,
+ "export_enabled": true
+ }
+}
+```
+
+### 智能記憶功能部署
+
+#### ResizeObserver 支援檢查
+```javascript
+// 檢查 ResizeObserver 支援
+if (typeof ResizeObserver === 'undefined') {
+ console.warn('ResizeObserver 不支援,高度記憶功能將使用 fallback');
+ // 使用 window.resize 事件作為 fallback
+}
+```
+
+#### 設定存儲優化
+```json
+{
+ "memory_settings": {
+ "debounce_delay_ms": 500,
+ "max_stored_heights": 10,
+ "cleanup_interval_hours": 24
}
}
```
@@ -266,9 +367,19 @@ curl http://localhost:8000/health
# 響應示例
{
"status": "healthy",
- "version": "2.3.0",
+ "version": "2.4.3",
"uptime": "2h 30m 15s",
- "active_sessions": 1
+ "active_sessions": 1,
+ "features": {
+ "audio_notifications": true,
+ "session_history": true,
+ "smart_memory": true
+ },
+ "storage": {
+ "session_history_count": 25,
+ "custom_audio_count": 3,
+ "localStorage_usage_mb": 1.2
+ }
}
```
@@ -309,7 +420,41 @@ MAX_WEBSOCKET_CONNECTIONS = 50
#### 常見問題
-1. **埠被佔用**
+**v2.4.3 新增問題**:
+
+1. **音效無法播放**
+```bash
+# 檢查瀏覽器自動播放政策
+# 解決方案:用戶需要先與頁面交互
+console.log('請點擊頁面任意位置以啟用音效功能');
+
+# 檢查音效文件格式
+# 支援格式:MP3, WAV, OGG
+# 最大文件大小:2MB
+```
+
+2. **會話歷史丟失**
+```bash
+# 檢查 localStorage 容量
+# 解決方案:清理過期數據或增加保存期限
+localStorage.getItem('sessionHistory');
+
+# 檢查隱私設定
+# 確認用戶訊息記錄等級設定正確
+```
+
+3. **輸入框高度不記憶**
+```bash
+# 檢查 ResizeObserver 支援
+if (typeof ResizeObserver === 'undefined') {
+ console.warn('瀏覽器不支援 ResizeObserver');
+}
+
+# 檢查設定存儲
+localStorage.getItem('combinedFeedbackTextHeight');
+```
+
+4. **埠被佔用**
```bash
# 檢查埠使用情況
netstat -tulpn | grep 8000
@@ -391,6 +536,13 @@ sudo firewall-cmd --reload
- 平均回應時間
- 錯誤率
+### v2.4.3 新增指標
+- 音效播放成功率
+- 會話歷史存儲使用量
+- 自訂音效上傳數量
+- 輸入框高度調整頻率
+- localStorage 使用量
+
### 監控工具集成
```python
# Prometheus 指標
@@ -399,8 +551,92 @@ from prometheus_client import Counter, Histogram, Gauge
session_counter = Counter('mcp_sessions_total', 'Total sessions created')
response_time = Histogram('mcp_response_time_seconds', 'Response time')
active_sessions = Gauge('mcp_active_sessions', 'Active sessions')
+
+# v2.4.3 新增指標
+audio_plays = Counter('mcp_audio_plays_total', 'Total audio notifications played')
+audio_errors = Counter('mcp_audio_errors_total', 'Total audio playback errors')
+session_history_size = Gauge('mcp_session_history_size_bytes', 'Session history storage size')
+custom_audio_count = Gauge('mcp_custom_audio_count', 'Number of custom audio files')
+height_adjustments = Counter('mcp_height_adjustments_total', 'Total textarea height adjustments')
```
---
-**完成**: 架構文檔體系已建立完成,包含完整的技術文檔和部署指南。
+## 🔄 版本升級指南
+
+### 從 v2.4.2 升級到 v2.4.3
+
+#### 1. 備份現有數據
+```bash
+# 備份用戶設定
+cp ~/.mcp-feedback/settings.json ~/.mcp-feedback/settings.json.backup
+
+# 備份提示詞數據
+cp ~/.mcp-feedback/prompts.json ~/.mcp-feedback/prompts.json.backup
+```
+
+#### 2. 升級軟體
+```bash
+# 使用 uvx 升級
+uvx mcp-feedback-enhanced@2.4.3 web
+
+# 或使用 pip 升級
+pip install --upgrade mcp-feedback-enhanced==2.4.3
+```
+
+#### 3. 驗證新功能
+```bash
+# 檢查音效功能
+curl http://localhost:8000/health | jq '.features.audio_notifications'
+
+# 檢查會話歷史功能
+curl http://localhost:8000/health | jq '.features.session_history'
+
+# 檢查智能記憶功能
+curl http://localhost:8000/health | jq '.features.smart_memory'
+```
+
+#### 4. 配置遷移
+```json
+// 新增的配置項目會自動使用預設值
+{
+ "audio": {
+ "enabled": true,
+ "volume": 75,
+ "selectedAudioId": "default-beep"
+ },
+ "sessionHistory": {
+ "retentionHours": 72,
+ "privacyLevel": "full"
+ },
+ "smartMemory": {
+ "heightMemoryEnabled": true
+ }
+}
+```
+
+### 回滾指南
+
+如果需要回滾到 v2.4.2:
+
+```bash
+# 停止服務
+pkill -f mcp-feedback-enhanced
+
+# 安裝舊版本
+pip install mcp-feedback-enhanced==2.4.2
+
+# 恢復備份設定
+cp ~/.mcp-feedback/settings.json.backup ~/.mcp-feedback/settings.json
+
+# 重新啟動服務
+mcp-feedback-enhanced web
+```
+
+---
+
+**版本**: 2.4.3
+**最後更新**: 2025年6月14日
+**維護者**: Minidoracat
+**新功能**: 音效通知系統、會話管理重構、智能記憶功能、一鍵複製
+**完成**: 架構文檔體系已更新完成,包含 v2.4.3 版本的完整技術文檔和部署指南。
diff --git a/docs/architecture/interaction-flows.md b/docs/architecture/interaction-flows.md
index a2d96f8..e050947 100644
--- a/docs/architecture/interaction-flows.md
+++ b/docs/architecture/interaction-flows.md
@@ -553,7 +553,7 @@ sequenceDiagram
Modal->>UI: 填入提示詞內容
```
-### 會話管理流程
+### 會話管理流程(v2.4.3 重構增強)
```mermaid
sequenceDiagram
@@ -561,52 +561,148 @@ sequenceDiagram
participant Server as MCP 服務器
participant SM as SessionManager
participant SDM as SessionDataManager
+ participant SUR as SessionUIRenderer
participant UI as 前端界面
- Note over AI,UI: 📊 會話生命週期管理
+ Note over AI,UI: 📊 會話生命週期管理(v2.4.3 重構)
AI->>Server: interactive_feedback()
Server->>SM: createSession()
SM->>SDM: addCurrentSession()
- SDM->>UI: 更新會話顯示
+ SDM->>SUR: renderCurrentSession()
+ SUR->>UI: 更新會話顯示(頁籤化設計)
Note over AI,UI: 📝 用戶回饋處理
UI->>Server: submit_feedback
Server->>SM: processFeedback()
SM->>SDM: updateSessionStatus()
- SDM->>SDM: 記錄回饋數據
+ SDM->>SDM: 記錄回饋數據(本地存儲)
SM->>AI: 返回回饋結果
- Note over AI,UI: 📚 會話歷史管理
+ Note over AI,UI: 📚 會話歷史管理(v2.4.3 增強)
SM->>SDM: addSessionToHistory()
SDM->>SDM: 檢查完成狀態
alt 會話已完成
- SDM->>SDM: 加入歷史記錄
+ SDM->>SDM: 加入歷史記錄(localStorage)
SDM->>SDM: updateStats()
- SDM->>UI: 觸發 onHistoryChange
+ SDM->>SUR: renderSessionHistory()
+ SUR->>UI: 觸發 onHistoryChange
else 會話未完成
SDM->>SDM: 跳過歷史記錄
end
- Note over AI,UI: 🔍 歷史查詢
+ Note over AI,UI: 🔍 歷史查詢與管理
UI->>SDM: getSessionHistory()
- SDM-->>UI: 返回歷史列表
+ SDM-->>UI: 返回歷史列表(72小時內)
UI->>SDM: getSessionStats()
SDM-->>UI: 返回統計數據
+ UI->>SDM: exportSessionHistory()
+ SDM-->>UI: 返回匯出數據
+ UI->>SDM: cleanupExpiredSessions()
+ SDM->>SDM: 清理過期會話
+```
+
+### 音效通知系統流程(v2.4.3 新增)
+
+```mermaid
+sequenceDiagram
+ participant WS as WebSocket
+ participant AM as AudioManager
+ participant ASU as AudioSettingsUI
+ participant AUDIO as Web Audio API
+ participant User as 用戶
+
+ Note over WS,User: 🔊 音效通知觸發流程
+ WS->>AM: session_updated 事件
+ AM->>AM: checkNotificationEnabled()
+ alt 音效通知已啟用
+ AM->>AM: getSelectedAudio()
+ AM->>AUDIO: 創建 Audio 物件
+ AM->>AUDIO: 設定音量和來源
+ AUDIO->>User: 播放通知音效
+ AM->>AM: logPlaybackSuccess()
+ else 音效通知已停用
+ AM->>AM: logSkippedNotification()
+ end
+
+ Note over WS,User: 🎵 音效設定管理
+ User->>ASU: 開啟音效設定
+ ASU->>AM: getAudioSettings()
+ AM-->>ASU: 返回當前設定
+ ASU->>User: 顯示設定界面
+
+ User->>ASU: 調整音量
+ ASU->>AM: updateVolume(volume)
+ AM->>AM: saveSettings()
+
+ User->>ASU: 選擇音效
+ ASU->>AM: selectAudio(audioId)
+ AM->>AM: saveSettings()
+
+ User->>ASU: 測試播放
+ ASU->>AM: testPlayAudio(audioId)
+ AM->>AUDIO: 播放測試音效
+ AUDIO->>User: 播放音效
+
+ Note over WS,User: 📁 自訂音效管理
+ User->>ASU: 上傳自訂音效
+ ASU->>ASU: validateAudioFile()
+ ASU->>AM: addCustomAudio(file)
+ AM->>AM: convertToBase64()
+ AM->>AM: saveToLocalStorage()
+ ASU->>User: 顯示上傳成功
+```
+
+### 智能記憶功能流程(v2.4.3 新增)
+
+```mermaid
+sequenceDiagram
+ participant User as 用戶
+ participant TEXTAREA as 輸入框
+ participant THM as TextareaHeightManager
+ participant RO as ResizeObserver
+ participant SM as SettingsManager
+
+ Note over User,SM: 📏 輸入框高度記憶
+ User->>TEXTAREA: 調整輸入框高度
+ TEXTAREA->>RO: 觸發尺寸變化事件
+ RO->>THM: handleResize(element)
+ THM->>THM: debounce(500ms)
+ THM->>SM: saveHeight(elementId, height)
+ SM->>SM: 保存到 localStorage
+
+ Note over User,SM: 🔄 高度恢復
+ User->>User: 重新載入頁面
+ THM->>SM: loadHeight(elementId)
+ SM-->>THM: 返回保存的高度
+ THM->>TEXTAREA: 應用保存的高度
+ TEXTAREA->>User: 顯示恢復的高度
+
+ Note over User,SM: 📋 一鍵複製功能
+ User->>User: 點擊專案路徑
+ User->>User: 觸發複製事件
+ User->>User: 複製到剪貼簿
+ User->>User: 顯示複製成功提示
+
+ User->>User: 點擊會話ID
+ User->>User: 觸發複製事件
+ User->>User: 複製到剪貼簿
+ User->>User: 顯示複製成功提示(多語言)
```
## 📊 狀態同步機制
-### WebSocket 訊息類型
+### WebSocket 訊息類型(v2.4.3 擴展)
```mermaid
graph LR
subgraph "服務器 → 客戶端"
CE[connection_established
連接建立]
- SU[session_updated
會話更新]
+ SU[session_updated
會話更新
🔊 觸發音效通知]
FR[feedback_received
回饋確認]
ST[status_update
狀態更新]
ASS[auto_submit_status
自動提交狀態]
- SH[session_history
會話歷史]
+ SH[session_history
會話歷史
📚 v2.4.3 增強]
+ AN[audio_notification
音效通知
🔊 v2.4.3 新增]
end
subgraph "客戶端 → 服務器"
@@ -615,7 +711,9 @@ graph LR
LS[language_switch
語言切換]
PM[prompt_management
提示詞管理]
ASC[auto_submit_control
自動提交控制]
- SM[session_management
會話管理]
+ SM[session_management
會話管理
📋 v2.4.3 重構]
+ AM[audio_management
音效管理
🎵 v2.4.3 新增]
+ HM[height_management
高度管理
📏 v2.4.3 新增]
end
```
@@ -742,8 +840,9 @@ async def wait_for_feedback(self, timeout: int = 600):
---
-**版本**: 2.3.0
-**最後更新**: 2024年12月
+**版本**: 2.4.3
+**最後更新**: 2025年6月14日
**維護者**: Minidoracat
**架構類型**: Web-Only 四層架構
**核心特性**: 持久化會話、智能環境適配、無縫狀態切換
+**v2.4.3 新功能**: 音效通知系統、會話管理重構、智能記憶功能
diff --git a/docs/architecture/system-overview.md b/docs/architecture/system-overview.md
index 969626a..5500e41 100644
--- a/docs/architecture/system-overview.md
+++ b/docs/architecture/system-overview.md
@@ -25,6 +25,9 @@ MCP Feedback Enhanced 採用**單一活躍會話 + 持久化 Web UI**的創新
- HTML5 + CSS3 (現代化 UI)
- JavaScript ES6+ (模組化架構)
- WebSocket API (雙向通信)
+- Web Audio API (音效通知系統)
+- localStorage API (本地數據存儲)
+- ResizeObserver API (元素尺寸監控)
- 響應式設計 (多設備支援)
**開發工具**:
@@ -66,8 +69,10 @@ graph TB
JS[JavaScript 模組
app.js + 功能模組]
CSS[樣式系統
響應式設計]
PROMPT[提示詞管理
PromptManager + UI 組件]
- SESSION_MGR[會話管理
SessionManager + 歷史追蹤]
+ SESSION_MGR[會話管理
SessionManager + 歷史追蹤
v2.4.3 重構增強]
AUTO_SUBMIT[自動提交
AutoSubmitManager + 倒數計時]
+ AUDIO_MGR[音效通知系統
AudioManager + 自訂音效
v2.4.3 新增]
+ MEMORY_MGR[智能記憶功能
高度管理 + 一鍵複製
v2.4.3 新增]
end
subgraph "工具層"
@@ -105,9 +110,13 @@ graph TB
JS --> PROMPT
JS --> SESSION_MGR
JS --> AUTO_SUBMIT
+ JS --> AUDIO_MGR
+ JS --> MEMORY_MGR
PROMPT --> WS
SESSION_MGR --> WS
AUTO_SUBMIT --> WS
+ AUDIO_MGR --> WS
+ MEMORY_MGR --> WS
I18N --> ROUTES
DEBUG --> SERVER
@@ -166,8 +175,10 @@ graph TB
- 實時 WebSocket 通信
- 豐富的用戶交互功能
- **提示詞管理系統**:常用提示詞的 CRUD 操作和快速選擇
-- **會話管理功能**:會話歷史追蹤和統計分析
+- **會話管理功能**:會話歷史追蹤和統計分析(v2.4.3 重構增強)
- **自動提交機制**:倒數計時器和自動回饋提交
+- **音效通知系統**:智能音效提醒和自訂音效管理(v2.4.3 新增)
+- **智能記憶功能**:輸入框高度記憶和一鍵複製(v2.4.3 新增)
### 3. 單一活躍會話模式
```mermaid
@@ -300,10 +311,17 @@ auto-refresh-manager → app
- prompt-modal.js (編輯彈窗)
- prompt-settings-ui.js (設定界面)
- prompt-input-buttons.js (快速選擇按鈕)
-- **會話管理模組群組**:
+- **會話管理模組群組(v2.4.3 重構增強)**:
- session-manager.js (會話控制器)
- - session-data-manager.js (數據管理器)
- - session-utils.js (工具函數)
+ - session-data-manager.js (數據管理器,新增本地存儲)
+ - session-ui-renderer.js (UI 渲染器,頁籤化設計)
+ - session-details-modal.js (詳情彈窗)
+- **音效通知模組群組(v2.4.3 新增)**:
+ - audio-manager.js (音效管理器)
+ - audio-settings-ui.js (音效設定界面)
+- **智能記憶功能(v2.4.3 新增)**:
+ - textarea-height-manager.js (輸入框高度管理)
+ - 一鍵複製功能整合在各 UI 組件中
- **自動提交功能**:
- 整合在 app.js 中的 AutoSubmitManager
- 與提示詞管理和設定管理的深度整合
@@ -364,21 +382,127 @@ auto-refresh-manager → app
- **併發控制**: 安全的多執行緒操作
- **數據驗證**: 嚴格的輸入驗證和清理
+## 🆕 v2.4.3 版本新功能架構
+
+### 1. 音效通知系統架構
+
+**系統組成**:
+```mermaid
+graph TB
+ subgraph "音效通知系統"
+ AM[AudioManager
音效管理器]
+ ASU[AudioSettingsUI
設定界面]
+ DA[DefaultAudios
內建音效]
+ CA[CustomAudios
自訂音效]
+ end
+
+ subgraph "Web Audio API"
+ AUDIO[Audio 物件]
+ BASE64[Base64 音效數據]
+ end
+
+ subgraph "設定存儲"
+ LS[localStorage]
+ SM[SettingsManager]
+ end
+
+ AM --> ASU
+ AM --> DA
+ AM --> CA
+ AM --> AUDIO
+ AUDIO --> BASE64
+ ASU --> SM
+ SM --> LS
+
+ WS[WebSocket] -->|會話更新事件| AM
+ AM -->|播放通知| AUDIO
+```
+
+**核心特性**:
+- **內建音效**: 經典提示音、通知鈴聲、輕柔鐘聲
+- **自訂音效**: 支援 MP3、WAV、OGG 格式上傳
+- **音量控制**: 0-100% 可調節音量
+- **測試播放**: 即時測試音效效果
+- **設定持久化**: 音效偏好自動保存
+
+### 2. 會話管理重構架構
+
+**從側邊欄到頁籤的遷移**:
+```mermaid
+graph LR
+ subgraph "v2.4.2 設計"
+ SIDEBAR[左側邊欄
會話管理]
+ COMPAT[瀏覽器相容性問題
小視窗按鈕無法點擊]
+ end
+
+ subgraph "v2.4.3 重構"
+ TAB[獨立頁籤
會話管理]
+ ENHANCED[增強功能
本地存儲 + 隱私控制]
+ end
+
+ SIDEBAR -->|重構| TAB
+ COMPAT -->|解決| ENHANCED
+```
+
+**新增功能模組**:
+- **session-ui-renderer.js**: 專門的 UI 渲染器
+- **session-details-modal.js**: 會話詳情彈窗
+- **本地歷史存儲**: 支援 72 小時可配置保存期限
+- **隱私控制**: 三級用戶訊息記錄設定
+- **數據管理**: 匯出和清理功能
+
+### 3. 智能記憶功能架構
+
+**輸入框高度管理**:
+```mermaid
+graph TB
+ subgraph "高度管理系統"
+ THM[TextareaHeightManager
高度管理器]
+ RO[ResizeObserver
尺寸監控]
+ DEBOUNCE[防抖機制
500ms 延遲]
+ end
+
+ subgraph "存儲機制"
+ SETTINGS[SettingsManager]
+ HEIGHT_KEY[combinedFeedbackTextHeight]
+ end
+
+ TEXTAREA[combinedFeedbackText] --> RO
+ RO --> THM
+ THM --> DEBOUNCE
+ DEBOUNCE --> SETTINGS
+ SETTINGS --> HEIGHT_KEY
+
+ THM -->|恢復高度| TEXTAREA
+```
+
+**一鍵複製功能**:
+- **專案路徑複製**: 點擊路徑文字即可複製
+- **會話ID複製**: 點擊會話ID即可複製
+- **複製反饋**: 視覺提示複製成功
+- **國際化支援**: 複製提示支援多語言
+
## 🔄 核心工作流程
-### AI 助手調用流程
+### AI 助手調用流程(v2.4.3 增強)
```mermaid
sequenceDiagram
participant AI as AI 助手
participant MCP as MCP 服務
participant WM as WebUIManager
participant UI as Web UI
+ participant AUDIO as 音效管理器
participant User as 用戶
AI->>MCP: interactive_feedback()
MCP->>WM: 創建/更新會話
WM->>UI: 啟動 Web 服務
WM->>User: 智能開啟瀏覽器
+
+ Note over UI,AUDIO: v2.4.3 新增音效通知
+ UI->>AUDIO: 會話更新事件
+ AUDIO->>User: 播放通知音效
+
User->>UI: 提交回饋
UI->>WM: WebSocket 傳送
WM->>MCP: 回饋完成
@@ -462,8 +586,9 @@ graph LR
---
-**版本**: 2.4.0
-**最後更新**: 2025年6月
+**版本**: 2.4.3
+**最後更新**: 2025年6月14日
**維護者**: Minidoracat
**架構類型**: Web-Only 四層架構
-**新功能**: 提示詞管理、自動提交、會話管理、語系切換優化
+**v2.4.3 新功能**: 音效通知系統、會話管理重構、智能記憶功能、一鍵複製
+**歷史功能**: 提示詞管理、自動提交、會話管理、語系切換優化