# Flow 需求清單

URL: https://flow.lanstar.dev/docs/requirements

> 依分類排列；`[x]` 表示完成。架構見 [`ARCHITECTURE.md`](/docs/architecture)。

## PLAY 播放

- [x] PLAY-01 以 FFmpeg demux + VideoToolbox 硬解播放 MP4／MOV
- [x] PLAY-02 開啟本機檔案（選單、拖放）
- [x] PLAY-03 播放、暫停、seek、音量、速度
- [ ] PLAY-04 MKV 等其他容器與軟解編碼（dav1d、libavcodec）
- [ ] PLAY-05 網路來源（SMB／WebDAV／HTTP／HLS）
- [ ] PLAY-06 Seek bar 縮圖預覽
- [ ] PLAY-07 音訊響度正規化與 passthrough

## VID 影像

- [x] VID-01 Metal 顯示，等比縮放、旋轉
- [ ] VID-02 HDR（HDR10／HLG）以 EDR 正確顯示
- [ ] VID-03 RenderNode 執行（hook 排程、暫存紋理）
- [ ] VID-04 內建高品質縮放器（供 PIPE-05 選用）
- [ ] VID-05 內建銳化
- [ ] VID-06 統計 OSD（解碼、色彩、丟幀、GPU 時間）
- [ ] VID-07 Dolby Vision（P5／P8）
- [ ] VID-08 Frame Graph runtime
- [ ] VID-09 色彩調整（亮度、對比、彩度、Gamma）

## SUB 字幕

- [ ] SUB-01 內嵌字幕軌選擇
- [ ] SUB-02 字幕渲染（SRT、ASS）
- [ ] SUB-03 字幕延遲、大小與位置調整

## AI 神經網路

- [ ] AI-01 神經網路超解析
- [ ] AI-02 神經網路降噪
- [ ] AI-03 依 GPU 預算自動切換品質（Governor）

## PIPE 渲染管線自訂

- [ ] PIPE-01 匯入 mpv 相容 GLSL 使用者 shader（`.glsl`）
- [ ] PIPE-02 匯入 Metal 使用者 shader（`.metal`，依 Flow Shader ABI）
- [ ] PIPE-03 GLSL 與 Metal shader 可混排（`render.user-shaders`）
- [ ] PIPE-04 播放中調整節點參數（含 `//!PARAM`），即時生效
- [ ] PIPE-05 選擇單選 hook 的實作：縮放器、tone mapping、dither
- [ ] PIPE-06 切換縮放光域（`render.scale-light`）
- [ ] PIPE-07 編輯 Frame Graph：加入、移除、排序、bypass 節點
- [ ] PIPE-08 VapourSynth 腳本節點（`.vpy`，於 helper 行程執行）
- [ ] PIPE-09 shader 編譯失敗、hook 未觸發、逾時 bypass 時提示，播放不中斷

## PLAT 平台

- [x] PLAT-01 macOS App
- [ ] PLAT-02 Now Playing、媒體鍵
- [ ] PLAT-03 子母畫面（PiP）
- [ ] PLAT-04 App Intents／捷徑
- [ ] PLAT-05 「關於」視窗顯示授權與第三方聲明
- [ ] PLAT-06 發行：GitHub Release（DMG，Developer ID 簽章與 notarization，附 LGPL 元件對應原始碼）與 Homebrew Cask
- [ ] PLAT-07 MCP server：AI agent 透過 Command／Property 控制播放器、讀取狀態與統計
- [ ] PLAT-08 鍵盤快捷鍵

## CFG 設定

- [ ] CFG-01 設定檔分層合併（預設 < 使用者 < Profile < 單檔 < 執行期）
- [ ] CFG-02 手改設定檔，存檔後即時生效
- [ ] CFG-03 `input.conf` 按鍵綁定
- [ ] CFG-04 設定視窗與設定檔雙向同步，保留手寫註解與順序
- [ ] CFG-05 條件式 Profile 自動套用（如 HDR、EDR headroom）

## UI 介面

- [ ] UI-01 控制列可拖動並記住位置
- [x] UI-02 Header 隨控制列自動顯示、隱藏（含視窗按鈕）
- [ ] UI-03 雙擊影片區進入、退出全螢幕
- [ ] UI-04 控制面板：播放中調整色彩、字幕等常用設定
- [ ] UI-05 設定視窗
- [ ] UI-06 i18n 多語言（String Catalog）
- [ ] UI-07 設定視窗快捷鍵分頁

## LIB 媒體庫

- [ ] LIB-01 播放紀錄與續播
- [ ] LIB-02 媒體庫

## PERF 效能

- [ ] PERF-01 4K HDR HEVC 60fps 播放 CPU < 5%（M4 Max）
- [ ] PERF-02 冷啟動到首幀 < 300ms
- [ ] PERF-03 8K HEVC／AV1 流暢播放（硬體支援時）
- [x] PERF-04 暫停時不渲染、不耗電
- [x] PERF-05 Benchmark 基礎設施：`FlowMetrics`、package-benchmark、size 報告
- [ ] PERF-06 CI 斷言 `DisplayPlan` pass 數與 zero-copy
- [ ] PERF-07 Minimal 情境 baseline 與抽象化稅預算
