From eb0d08c6ea7b76a79aac3afae0284ec825de1535 Mon Sep 17 00:00:00 2001 From: JekkiNoopy Date: Mon, 18 May 2026 19:34:48 +0800 Subject: [PATCH] =?UTF-8?q?docs=20=E5=90=88=E4=BD=B5cursor=E8=A6=8F?= =?UTF-8?q?=E5=89=87=E7=82=BA=E5=9B=9B=E6=AA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cursor/_fix_p_tags.py | 14 --- .cursor/collaboration-notes.md | 120 --------------------- .cursor/portal-nav-optimization-backlog.md | 40 ------- .cursor/rules/agent-must-ask.mdc | 57 ++++++---- .cursor/rules/ai-change-boundaries.mdc | 8 +- .cursor/rules/portal-nav-rules.mdc | 34 +++--- .cursor/rules/site-voice.mdc | 44 ++++---- .cursor/rules/user-scope-and-nav.mdc | 68 ------------ .cursor/session-notes-2026-05-13.md | 40 ------- .cursor/site-voice-notes.md | 37 ------- .cursor/totoga2-video-notes.md | 9 -- assets/js/portal-nav.js | 2 +- 12 files changed, 76 insertions(+), 397 deletions(-) delete mode 100644 .cursor/_fix_p_tags.py delete mode 100644 .cursor/collaboration-notes.md delete mode 100644 .cursor/portal-nav-optimization-backlog.md delete mode 100644 .cursor/rules/user-scope-and-nav.mdc delete mode 100644 .cursor/session-notes-2026-05-13.md delete mode 100644 .cursor/site-voice-notes.md delete mode 100644 .cursor/totoga2-video-notes.md diff --git a/.cursor/_fix_p_tags.py b/.cursor/_fix_p_tags.py deleted file mode 100644 index ca9a154..0000000 --- a/.cursor/_fix_p_tags.py +++ /dev/null @@ -1,14 +0,0 @@ -# -*- coding: utf-8 -*- -from pathlib import Path - -p = Path(r"d:\Developer\projects\sechskies\totoga2\readable copy.html") -s = p.read_text(encoding="utf-8") -s = s.replace( - '< class="intro-text"> class="ebook-intro-note">', - '

', -) -s = s.replace('< class="intro-text">>', '

') -if '< class="intro-text">' in s: - raise SystemExit("still broken intro-text tags") -p.write_text(s, encoding="utf-8", newline="\n") -print("fixed", s.count('class="intro-text"')) diff --git a/.cursor/collaboration-notes.md b/.cursor/collaboration-notes.md deleted file mode 100644 index 5b4d3ed..0000000 --- a/.cursor/collaboration-notes.md +++ /dev/null @@ -1,120 +0,0 @@ -# 站主與助手協作備忘 - -由對話整理;**程式真值**仍以 repo 與 `.cursor/rules/*.mdc` 為準。本檔僅記「這次講定的做事方式」,不取代規則檔。 - ---- - -## 1. 邊界(站主明講) - -- **沒有叫你做的,不要順手做**(含刪註解、順手整理、自訂「以後我都會……」流程)。 -- **看不懂先問**;你說「執行」再改檔。你說「檢查」就只對照回報,**不擅自改**。 -- **不要自己訂規則**代替站主(例如自創「只調樣式就保留註解」這類概括)。 - ---- - -## 2. 參考圖怎麼讀 - -- **畫線/粉線**:提醒「這一段要看」,**不是**「整段都要包 span」或「這裡一定要 `mark_b`」。 -- **實際標記**:對照圖裡**字重、黃標、一般內文**,再對應既有 class(`mark_y`、`mark_b`),自己判斷。 -- **開發者工具截圖**(勾選/刪除線):照**屬性開關**改 CSS;沒叫動註解就不要動註解。 - ---- - -## 3. 首頁 `#mission`(做法,非定稿內容) - -- 第一段:站主若只說調 span,**只**增刪 `` 與既有 class;未要求不改 CSS。實際哪些詞要 `mark_y`/`mark_b` **會變**,以當下 `index.html` 與站主圖為準,**不寫死**在筆記。 -- 第二段金句:未要求時**只改內文**、不改 span 結構。 -- devtools 截圖:照屬性開關改;沒叫動註解就不要動註解。 - ---- - -## 4. 籌備中連結(`portal-nav.js`,若後續對話有改動以檔案為準) - -- 頂欄與頁內按鈕:**`NAV_SOON_PHRASES` 隨機氣泡**(滑過);無障礙 aria「尚無開放」。 -- 頁內按鈕:**不加**可見「(籌備中)」後綴。 -- `totoga2/timeline.html` 在 `COMING_SOON_PAGES`(時間軸不公開);圖文好讀版為 `totoga2/readable.html`。 - ---- - -## 5. 2026-05 慘痛教訓(務必讀 `agent-must-ask.mdc`) - -- 用 PowerShell 批次改全站 HTML **沒 UTF-8** → 首頁中文全毀、`` 露出;已 `git checkout` 還原 HTML。 -- **擅自**把 `map-archive-header` 改成 `inner-page-header`(站主沒點頭、沒給名字)。 -- 站主說先電子書 + dev `center 78%`,助手卻自加 `clamp`/全站 `100vh`/又全站改掉。 -- 頂欄擅自「傳奇的轉折(六六歌2)」— 已改回「傳奇的轉折」;以後 nav 文案不自擴。 -- **擅自 `git push`**(站主只貼 push 失敗錯誤、沒說「幫我 push」)— 禁止再犯;修 push 問題只動本機,結尾給站主自己下的 `git push` 指令。 - ---- - -## 6. 改完就給 commit(站主訂) - -**每做完一項改動**,回覆末尾**直接附**一段(不要為此反覆跑 `git status`/`git diff` 確認;助手自己知道改了什麼): - -```bash -git add . -git commit -m "類型 修改重點" -``` - -| 項目 | 約定 | -|------|------| -| **類型** | 三選一,以本次修改**為主**的那一種:`feat`(新功能/新行為)、`fix`(修 bug/修壞掉的行为)、`style`(純樣式/排版,無新功能) | -| **格式** | 類型後**空一格**,再接修改重點;整段 `""` 內建議維持 `類型 + 空格 + 重點` 一行 | -| **字數** | 修改重點**15 字以內**(中文為主,標點計入字數;過長請精簡) | -| **`git add`** | **一律只寫 `git add .`**;**禁止** `git add 單一檔案路徑`(易漏同次改動的 `portal-nav.js` 等,側邊欄會留 **M**) | -| **側邊欄 M** | VS Code 檔名旁 **M = Modified(有未 commit 變更)**,與 `commit -m` 無關;`add` 後要 **commit** 才會消失 | - -**範例** - -```bash -git add . -git commit -m "feat 頂欄992px漢堡選單" -``` - -```bash -git add . -git commit -m "fix 三層子選單hover接軌" -``` - -```bash -git add . -git commit -m "style 內頁標題深灰配色" -``` - -- 站主若只說「檢查」、未說執行:**不附** commit(也沒有改檔)。 -- 一次對話若分多項獨立交辦,**每項做完各附一段** commit,不要合併成一句含糊帶過。 - ---- - -## 6.1 Git:只附 commit,**禁止擅自 push**(站主訂) - -| 可以做 | 不可以做 | -|--------|----------| -| 改檔後末尾附 `git add .` + `git commit -m "…"`(§6) | **`git push`**、**`git push -u origin …`**、代站主推遠端 | -| 站主貼 push 失敗:查原因、本機 amend/壓圖/改 `.gitignore`,**說明後請站主自己 push** | 以為「幫他推上去比較省事」就 push | -| 站主明講「幫我 push」「推上去」 | 用 push 當改完的預設收尾 | - -**結尾範例(修完 push 擋下時):** - -```bash -git push origin main -``` - -(由站主在本機執行;助手不代跑。) - -### 大檔/備份(2026-05 push 擋下) - -- GitHub 單檔 **> 100 MB** 會拒 push;`totoga2/readable/` 曾卡 `13-7_生氣在錫大頭版.png` 與 **`.png.bak`**。 -- 已加 repo 根 **`.gitignore`**:`*.png.bak`。**勿** `git add .` 把 `.bak` 送進 commit。 -- 壓圖只改工作區檔案時,若需改寫**已 commit 未 push** 的歷史,先問站主是否同意 amend/filter-branch;**仍不代 push**。 - ---- - -## 7. 相關規則檔 - -| 檔案 | 用途 | -|------|------| -| `.cursor/collaboration-notes.md` §6、§6.1 | **改完附 commit**;**禁止擅自 push** | -| `.cursor/rules/agent-must-ask.mdc` | **必問再改**、禁止批次毀 UTF-8、header/nav 勿擅自改名 | -| `.cursor/rules/ai-change-boundaries.mdc` | 變更範圍、共用 CSS | -| `.cursor/rules/user-scope-and-nav.mdc` | 導覽開放、錨點刪除 | -| `.cursor/rules/portal-nav-rules.mdc` | `portal-nav.js` 技術細節 | diff --git a/.cursor/portal-nav-optimization-backlog.md b/.cursor/portal-nav-optimization-backlog.md deleted file mode 100644 index 80721f7..0000000 --- a/.cursor/portal-nav-optimization-backlog.md +++ /dev/null @@ -1,40 +0,0 @@ -# 頂欄導覽 · 優化清單(助手用,不對讀者顯示) - -站主未要求上線;以下為自 `portal-nav.js` 移除的 `portal-nav__sub` 文案備份。 -**程式真值**:`assets/js/portal-nav.js` 的 `buildPortalNavInnerHTML`(僅主標 `portal-nav__label` 或純文字)。 -日後若站主明講要加回副標,只依本檔與當次指示改,勿自行推論。 - ---- - -## 已移除副標(對照主標) - -| 主標(`portal-nav__label`) | 原 `portal-nav__sub` | -|---------------------------|----------------------| -| 淪陷瞬間 | Hero、入坑敘事與站方初衷;LOGO 與跨時空軌跡 | -| 初心與軌跡 | Hero、入坑敘事與站方初衷;LOGO 與跨時空軌跡 | -| 傳奇的轉折(六六歌2) | 四種入口:時間軸、電子書、網頁版、影片 | -| 影片 | 無限挑戰 · 六六歌2 嵌入影片單頁 | -| 電子書 | 紀實電子書內容獨立成頁 | -| 時間軸 | 時間軸與紀實八章長文單頁 | -| 圖文好讀版 | 單頁整合:影片/電子書/長文與八章錨點 | -| 全員發瘋 | 原來我是個正常人啊!團綜與失控現場 | -| 隊長帶弟弟 | 控場與隊內互動 | -| 各自暴走 | 獨立內頁籌備中 | -| 新西遊記 | 成員介紹 · MEMBER GUIDE | -| 完整的六顆 | 六顆水晶 · 黑白分流 | -| 現場的震撼 | SECHSKIES CONCERT ARCHIVE | -| 集結水晶 | 團體演唱會 | -| 隊長的氣場 | 個人見面會與演唱會 | -| 黃色留聲機 | YELLOW PHONOGRAPH | -| 啟動新篇章 | 重啟後作品與單曲 | -| 輝煌全盛期 | 1997–1999 年表 | -| Yellow Note | 台灣行程表、成員行程篩選、搜尋與地圖主體 | -| 視覺進化論 | 從好奇到全端:自述與時間軸式章節 | -| 聖地巡禮 | 台灣行程表、成員行程篩選、搜尋與地圖 | - ---- - -## 約定(給助手) - -- **禁止**在未經站主明講時,於 `buildPortalNavInnerHTML` 加回 `` 或類似第二行說明。 -- 頂欄結構/開放與否仍以 `portal-nav-rules.mdc`、`user-scope-and-nav.mdc` 為準。 diff --git a/.cursor/rules/agent-must-ask.mdc b/.cursor/rules/agent-must-ask.mdc index 9b8b044..61da0a0 100644 --- a/.cursor/rules/agent-must-ask.mdc +++ b/.cursor/rules/agent-must-ask.mdc @@ -1,31 +1,52 @@ --- -description: 助手必問再改(站主明講);防擅自改名、批次改檔、編碼毀檔 +description: 必問再改、Git commit/禁 push、UTF-8、內頁 header、對圖與 devtools alwaysApply: true --- -# 必問再改(站主已多次強調) +# 必問再改與 Git(站主訂) -## 硬規則 +## 改檔 -1. **站主沒說「執行」→ 不改檔**(可先說明、對照、列計畫)。 -2. **站主說「先改一頁」→ 只改那一頁**,不得順手全站套用。 -3. **class 改名/全站換名**:先問站主**確切 class 字串**;全站內頁 banner 現用 **`inner-page-header`**(禁止再改回 `map-archive-header` 等單頁名);不得用 PowerShell 批次替換 HTML。 -4. **導覽文案**:不得自加括號、副標、路徑說明(例如禁止擅自「傳奇的轉折(六六歌2)」);`portal-nav.js` 改字前先對站主原句。 -5. **CSS 對齊 devtools**:站主給的勾選/數值照抄;若必須補 `min-height`、`padding` 等 devtools 沒有的值,**先寫明「這是我補的」**,等站主說執行再寫入。 +1. **沒說「執行」→ 不改檔**(可先說明、對照、列計畫)。**「檢查」→ 只回報**。 +2. **只改被點名的那一頁/區塊**;未寫到的檔不開、不刪、不重構。 +3. **class 全站換名**:先問確切字串。內頁 banner 用 **`inner-page-header`**(禁止改回 `map-archive-header` 等)。**禁止** PowerShell 批次改 `.html`(須 UTF-8 安全,如逐檔 `StrReplace`)。 +4. **頂欄文案**:禁止擅自加括號、副標(如「傳奇的轉折(六六歌2)」);改 `portal-nav.js` 前對站主原句。 +5. **devtools**:勾選/數值照抄;補 devtools 沒有的值須標「這是我補的」,等站主說執行再寫入。 +6. **參考圖**:粉線=看這段,不是整段包 span。`mark_y`/`mark_b` 對照圖裡實際字重。 +7. **首頁 `#mission`**:只調 span 時只動 ``;金句未要求時只改內文。沒叫動註解就不動註解。 -## 禁止(曾毀站) +## 內頁 header -- **禁止**用 PowerShell `Get-Content` / `Set-Content`(或未指定 `-Encoding utf8`)批次改 **`.html`** → 會把 UTF-8 中文弄成 `?`、標籤斷裂(如 `?/span>`)。 -- 若需批次改 HTML:只用 **UTF-8 安全**方式(例如逐檔 `StrReplace`、或 `git` 還原後手改),改完抽查 `index.html` 首屏中文是否正常。 +- 內頁:**`header.inner-page-header`**。首頁 Hero:**`header#origin`**。樣式以站主在電子書頁調過的為準;要套他頁須站主說執行。 -## 內頁 header(約定方向,名稱待站主定) +## Git:改完末尾附 commit -- 全站內頁 banner:**`header.inner-page-header`**(勿用 `map-archive-header` 等單頁名當全站 class)。 -- 首頁僅 **`header#origin`** 全屏 Hero,與內頁 header class 分開。 -- 樣式以站主在**電子書頁** devtools 調過的為準後,再談是否套其他內頁(須站主說執行)。 +每做完**一項**改動並已寫入檔案,回覆末尾附(**勿**為此反覆跑 `git status`/`git diff`): + +```bash +git add . +git commit -m "類型 修改重點" +``` + +| 項目 | 約定 | +|------|------| +| 類型 | `feat`|`fix`|`style` 三選一 | +| 重點 | **15 字以內**(標點計入) | +| add | **一律 `git add .`**,禁止只 add 單檔 | + +- 只說「檢查」、未改檔 → 不附 commit。多項獨立交辦 → 每項各附一段。 + +## Git:禁止擅自 push + +- **禁止 `git push`**,除非站主原句「幫我 push」等。只貼 push 錯誤 ≠ 同意 push。 +- 修 push 失敗:只動本機(壓圖、`.gitignore`、`amend`/filter-branch **先問**),末尾只給站主: + +```bash +git push origin main +``` + +- GitHub 單檔 **> 100 MB** 拒 push。`*.png.bak` 已在根 `.gitignore`,勿 `git add .` 送進備份檔。 ## 回覆 -- 站主說字太多時:**短句**,先答「做沒做、為什麼壞」,不要長篇道歉後又擅自改一輪。 -- **改完一項並已寫入檔案**:回覆末尾附 `git add .` + `git commit -m "feat|fix|style 重點"`(重點 **15 字以內**);細則見 `.cursor/collaboration-notes.md` §6。勿為附 commit 反覆查 git。 -- **禁止擅自 `git push`**:除非站主原句要求推遠端;修 push 失敗只改本機,末尾給站主自行的 `git push …` 即可。見 `.cursor/collaboration-notes.md` §6.1。 +- 站主要短句時:先答做沒做、為什麼壞,勿長篇道歉後又擅自改一輪。 diff --git a/.cursor/rules/ai-change-boundaries.mdc b/.cursor/rules/ai-change-boundaries.mdc index 307fca1..ea3a701 100644 --- a/.cursor/rules/ai-change-boundaries.mdc +++ b/.cursor/rules/ai-change-boundaries.mdc @@ -37,8 +37,6 @@ alwaysApply: true ## 文件與規則檔 -- **不要**主動新增或長篇修改 `README`、`docs/*.md`、規則檔,除非使用者明講要寫入文件或規範。 -- **助手自用筆記**(對話紀要、頁面編輯規格、實作備忘):只寫在 **`.cursor/`**(例如 `.cursor/*-notes.md`);**禁止**放在 `docs/`、`README` 或站主日常會開的目錄。回覆裡也不必貼長篇筆記內容。 -- **例外**:使用者要求「把約定寫死/規則講清楚/不要再做錯」時,得**精準**更新 `.cursor/rules`(與 `portal-nav.js` 頂部註解對齊),避免重複踩雷;仍避免無關長文。 - -(與導覽開放、頂欄 vs `site-guide` 相關條文以 **`user-scope-and-nav.mdc`**、**`portal-nav-rules.mdc`** 為準;實作前兩份都讀。) +- **不要**主動新增或長篇修改 `README`、`docs/*.md`,除非站主明講。 +- **約定只寫在** `.cursor/rules/*.mdc`(**合併進既有檔**,勿再新增散落 `*-notes.md`/目錄索引)。禁止放在 `docs/` 或站主日常會開的目錄。 +- 動導覽/籌備中/`site-guide`:**只讀** `portal-nav-rules.mdc`。 diff --git a/.cursor/rules/portal-nav-rules.mdc b/.cursor/rules/portal-nav-rules.mdc index 8201a77..3c81e44 100644 --- a/.cursor/rules/portal-nav-rules.mdc +++ b/.cursor/rules/portal-nav-rules.mdc @@ -1,5 +1,5 @@ --- -description: 全站頂欄導覽 portal-nav.js(buildPortalNavInnerHTML、COMING_SOON_PAGES、INDEX_NAV_OPEN_HASHES、籌備中、新頁檢查清單);與 user-scope-and-nav 搭配。 +description: 全站導覽與籌備中(portal-nav.js、site-guide、開放邊界、刪錨點) alwaysApply: true --- @@ -23,13 +23,7 @@ alwaysApply: true 3. **`totoga2/readable.html`(圖文好讀版,檔名 `readable.html`)**、**`variety/variety.html`**:站主**沒有明講對外開放**時,檔名**必須**留在 `COMING_SOON_PAGES`(訪客頂欄不可點進)。要開放時**只**能等站主說了再從 Set 移除。 4. **「刪除/拿掉/不要了」**:若未寫明是**單一檔案**、**頂欄某一列**、**整段子選單**還是**整個資料夾**,**一律先問站主**,禁止自行擴大刪除範圍。 5. **不確定**是否開放、連哪、是否例外:**先問站主再改**,不要猜。 -6. 站主說要刪的是 **`某頁#錨點`**(頁內區塊)時:先改該頁 DOM,再修死錨連結;**不要**只動導覽、也不要把「刪區塊」擴成刪頂欄整段。細節見 **`user-scope-and-nav.mdc`**(§ 頁面錨點刪除)。 - -## 0.1 站主同意(細項) - -- **未經站主明確同意**,不得自行:從 `COMING_SOON_PAGES` 移除檔名、擴充 `INDEX_NAV_OPEN_HASHES`、在 `buildPortalNavInnerHTML` **新增**導覽項目、**刪除站主已同意列入頂欄**的項目、或把籌備中連結改成可點(**全站導覽頁頂欄例外見 §0**)。 -- **`extra/site-guide.html`**:站主自用;條件同 §0 表格。(僅此頁可加 `data-portal-nav-all-open`。) -- 頂欄模板**不含**未同意掛列的頁;該頁仍可由 `site-guide` 主文或網址直開(站主自用)。 +6. 站主說刪 **`某頁#錨點`**:見下方 **§8 頁面錨點刪除**(先改 DOM,再修死鏈;禁止只動導覽)。 --- @@ -123,22 +117,18 @@ alwaysApply: true --- -## 7. 與使用者約定:開放範圍 +## 8. 頁面錨點刪除(`某頁.html#id`) -- **不要**在未經使用者**明確交代**的情況下,自行把導覽改為「可點進入」或更換目標頁(例如把「傳奇的轉折」改成連到 `totoga2.html`)。 -- 「傳奇的轉折」是否開放、連到哪裡,**只依使用者指示**;意圖與邊界亦見 **`.cursor/rules/user-scope-and-nav.mdc`**。 +指該 HTML 裡 **`id="…"` 的那一區**/`

`,不是刪整檔、不是刪資料夾、不是刪頂欄整段「全員發瘋」,也不是擅自改 `COMING_SOON_PAGES`(除非原句一併交代)。 ---- +1. **先**在目標頁拿掉該 DOM。 +2. **再**修仍指向死錨的 `href`(最小必要)。 +3. **禁止**只改 `portal-nav.js`/`site-guide.html` 卻不刪頁內區塊。 -## 相關檔案 +錨點拿掉後,書籤網址列仍可能顯示 `#…`,不代表 DOM 還在。header 大標 ≠ 已刪的 `#id` 區塊。「刪除」範圍不清 → **先問**。 -| 檔案 | 用途 | -|------|------| -| `assets/js/portal-nav.js` | `buildPortalNavInnerHTML`、`COMING_SOON_PAGES`、`INDEX_NAV_OPEN_HASHES`、籌備中邏輯 | -| `assets/css/style.css` | `.portal-nav`、子選單、`.nav-current` 等樣式 | -| `.cursor/rules/user-scope-and-nav.mdc` | 意圖與導覽開放(與本規則搭配) | -| `.cursor/rules/ai-change-boundaries.mdc` | 變更範圍與共用 CSS 邊界 | -| `docs/CHANGESET-review.md` | 歷次變更檢查清單筆記(非程式真值來源) | -| `docs/sql/` | SQL 練習/筆記(`sql_plan.md`、`.sql` 腳本與匯出) | +## 名詞 -(籌備中提示:`COMING_SOON_LABEL`=「籌備中」;頂欄氣泡與頁內按鈕後綴同文案。) +- **頂欄**:`portal-nav.js` 注入的 `