32 Commits

Author SHA1 Message Date
JianMiau 40cb2f01d7 功能:新增更新紀錄分頁、勝利後鎖記分與結算後自動選隊、報分語音改唸個位數
摘要:
- 新增「更新紀錄」分頁,依 git commit 自動產生日誌(scripts/generate-changelog.mjs → src/data/changelog.json)
- 比賽分出勝負後鎖住記分按鈕,需先結算才能開下一場
- 結算(上傳或不上傳)完成後自動打開選隊伍面板並清空已選,方便直接排下一場
- 得分播報只唸個位數(10→0、19→9、20→0),同分改唸「N 平」

根本原因:
- 想在 App 內直接看到版本更新內容,原本沒有頁面
- 勝利後仍可繼續點加分,容易誤觸超過該局比分
- 一場打完要手動回去重設下一場對戰,流程多一步
- 報分連十位數一起唸(十九、二十)冗長,現場聽不直覺

影響:
- 新增 scripts/generate-changelog.mjs、src/pages/ChangelogPage.tsx;package.json 加 predev/prebuild/gen:changelog;tsconfig.app.json 開 resolveJsonModule;.gitignore 排除產生的 changelog.json
- src/types.ts 新增 ChangelogEntry/ChangelogData;src/App.tsx 加導覽與路由、結算後發 nextMatchSignal、recordPoint 加勝負防呆
- src/lib/match.ts 將 hasWonGame 抽出並 export 供記分板共用
- src/pages/ScoreboardPage.tsx:勝負時 canScore=false、收到 nextMatchSignal 自動清空並打開選隊 picker、報分組字改個位數與「平」
- src/App.css 新增更新紀錄卡片樣式

修法:
- changelog 於 dev/build 前自動產生,正式版讀打包後的 JSON 顯示
- hasWonGame 統一判斷(達標分/Deuce 領先 2 分/30 分上限),App 與記分板共用
- 結算成功才遞增 nextMatchSignal,記分板以「render 期間依 prop 變化調整 state」開啟選隊面板
- 報分以 servingScore % 10 / opponentScore % 10 組字,同分輸出「N 平」

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 12:15:28 +08:00
JianMiau 304bcaeedd 修正:dev 環境改善(vite 對網路磁碟啟用 polling、Service Worker 僅正式版註冊)
摘要:
- vite dev server 啟用 watch.usePolling,讓 W: 網路磁碟(RaiDrive)的檔案變更能觸發 HMR
- Service Worker 改為僅在正式版(import.meta.env.PROD)才註冊,dev 不再註冊

根本原因:
- 專案放在 RaiDrive 掛載的網路磁碟,不會發出 fs 事件,vite 預設的檔案監看抓不到變更,HMR 失效
- dev 也註冊 SW 會用快取卡住舊版 bundle,改了程式看不到效果

影響:
- vite.config.ts:server.watch 加上 usePolling 與 interval
- src/main.tsx:SW 註冊條件加上 import.meta.env.PROD

修法:
- 開發時靠 polling 監看檔案;SW 只在 build 後的正式環境啟用

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 17:42:22 +08:00
JianMiau 9eb60baa37 功能:記分板語音改為報比分、發球區、賽末點與獲勝隊伍
摘要:
- 得分播報改為「比分(發球方先報)+ 發球者左右發球區」
- 發球方到賽末點(再得 1 分即獲勝)時,比分後加唸「賽末點」
- 賽末點得分獲勝時,整段改播「<獲勝隊伍> 贏得比賽」
- 發球區左右一律用實際球場方向,取消上方隊伍鏡像;畫面「發球區」顯示同步改為不鏡像,與語音一致

根本原因:
- 現場記分需要即時聽到比分與發球位置,原本只唸「誰得分、誰發球」較不直覺
- 先前發球區對上方隊伍做鏡像,導致語音與實際球場方向相反

影響:
- src/App.tsx:recordPoint 計算發球方比分、發球區、賽末點與獲勝隊伍,重整 voiceAnnouncement 欄位
- src/pages/ScoreboardPage.tsx:語音組字改為「X比Y(賽末點)」「OO左/右邊發球」、獲勝改播「贏得比賽」;發球區顯示移除鏡像;語音設定「播報誰得分」更名「播報比分」

修法:
- 發球方分數先報;賽末點僅在發球方再得 1 分就獲勝時觸發;發球區統一用 getServiceCourt 實際方向

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 17:42:05 +08:00
JianMiau 091e654bdb 功能:首頁日期預設當天、記分板語音改為報比分與發球區
摘要:
- 首頁「指定日期」每次進入都預設為當天
- 記分板語音得分播報改為「比分(發球方先)+ 發球者左右發球區」,賽末點獲勝時整段改播「贏得比賽」

根本原因:
- 日期原本從 localStorage 讀上次選的值,重開會停在舊日期
- 語音原本只唸「誰得分、誰發球」,現場較不直覺,球敘想聽到即時比分與發球位置

影響:
- src/App.tsx:targetDate 改為直接用當天、移除日期的 localStorage 記憶;recordPoint 算出發球方比分與發球區,重整 voiceAnnouncement 欄位
- src/pages/ScoreboardPage.tsx:語音組字改為「X比Y」「OO左/右邊發球」,獲勝時改播「贏得比賽」;語音設定「播報誰得分」更名「播報比分」

修法:
- 發球方分數先報;上方(左側)隊伍發球區做左右鏡像以對齊畫面,下方隊伍不鏡像

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 15:33:22 +08:00
JianMiau 3677162747 修正記分板在 iPad 尺寸的版面與修復 dev server 啟動問題 2026-05-18 17:40:58 +08:00
JianMiau 30a8e1a44c 調整記分板手機滿版模式並更新說明 2026-04-28 18:17:41 +08:00
JianMiau f3e51ea83d 調整發球鏡像規則並更新說明文件 2026-04-28 08:52:47 +08:00
JianMiau edab74f125 強化房間清理與比賽中分頁限制 2026-04-19 18:05:33 +08:00
JianMiau 2d1ad0600e 補上房間關閉通知與列表重取 2026-04-19 13:02:00 +08:00
JianMiau ab3647587e 調整結算通知與全站防選字 2026-04-19 12:54:18 +08:00
JianMiau 896c24547b 新增即時觀戰房間並整理 README 2026-04-19 12:46:59 +08:00
JianMiau c097ceb9ad 更新圖示與部署更新機制並整理 README 2026-04-16 20:35:31 +08:00
JianMiau 36a39f0b8f 調整比賽結算長按回饋並更新 README 2026-04-16 20:06:26 +08:00
JianMiau 975732017f 新增 PWA 更新提示並整理 README 2026-04-16 19:57:08 +08:00
JianMiau 0cfcdc3b0a 調整歷史戰績刪除提示並更新 README 2026-04-16 18:14:56 +08:00
JianMiau d5fee1d299 補上歷史戰績刪除二次確認 2026-04-16 17:22:23 +08:00
JianMiau b2494fff17 調整語音設定介面並更新 README 2026-04-16 17:11:11 +08:00
JianMiau 860e7adc0e 新增連勝與獲勝特效並更新 README 2026-04-16 16:54:59 +08:00
JianMiau b3809b5d4f 補上先攻勾選顯示並更新 README 2026-04-16 16:49:02 +08:00
JianMiau af7ebda9f4 新增歷史戰績關閉按鈕並更新 README 2026-04-16 15:23:09 +08:00
JianMiau f50b11600e 調整分組卡片版面並更新 README 2026-04-16 14:37:32 +08:00
JianMiau 4a66f37e1f 調整選隊伍頁操作並更新 README 2026-04-16 12:37:38 +08:00
JianMiau 98c289ea5b 精簡選隊伍頁提示並更新 README 2026-04-16 10:55:41 +08:00
JianMiau bbedb70e7e 新增歷史戰績刪除功能並更新 README 2026-04-16 10:26:58 +08:00
JianMiau 31168e830b 整理設定隊伍介面並更新 README 2026-04-16 10:19:23 +08:00
JianMiau a1e0e0f16e 調整設定隊伍流程並支援勝利分數設定 2026-04-16 08:53:05 +08:00
JianMiau e903d3ae52 調整歷史戰績彈窗顯示文字 2026-04-16 07:48:15 +08:00
JianMiau 7965c234df 修正 SSL 憑證拼接換行問題 2026-04-16 07:34:13 +08:00
JianMiau 7a8436db47 調整 Docker SSL 入口與部署說明 2026-04-15 23:15:52 +08:00
JianMiau b0908b4d3c 補上歷史戰績列表與 NAS 部署說明 2026-04-15 23:04:16 +08:00
JianMiau 7fc8e2698b Refine scoreboard flow and update ports 2026-04-15 22:56:50 +08:00
JianMiau 8f4411d97e chore: initialize Vite React TypeScript app 2026-04-15 16:55:54 +08:00