docs 合併cursor規則為四檔

This commit is contained in:
2026-05-18 19:34:48 +08:00
parent 958c091291
commit eb0d08c6ea
12 changed files with 76 additions and 397 deletions
-14
View File
@@ -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">',
'<p class="ebook-intro-note">',
)
s = s.replace('< class="intro-text">>', '<p 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"'))
-120
View File
@@ -1,120 +0,0 @@
# 站主與助手協作備忘
由對話整理;**程式真值**仍以 repo 與 `.cursor/rules/*.mdc` 為準。本檔僅記「這次講定的做事方式」,不取代規則檔。
---
## 1. 邊界(站主明講)
- **沒有叫你做的,不要順手做**(含刪註解、順手整理、自訂「以後我都會……」流程)。
- **看不懂先問**;你說「執行」再改檔。你說「檢查」就只對照回報,**不擅自改**。
- **不要自己訂規則**代替站主(例如自創「只調樣式就保留註解」這類概括)。
---
## 2. 參考圖怎麼讀
- **畫線/粉線**:提醒「這一段要看」,**不是**「整段都要包 span」或「這裡一定要 `mark_b`」。
- **實際標記**:對照圖裡**字重、黃標、一般內文**,再對應既有 class(`mark_y``mark_b`),自己判斷。
- **開發者工具截圖**(勾選/刪除線):照**屬性開關**改 CSS;沒叫動註解就不要動註解。
---
## 3. 首頁 `#mission`(做法,非定稿內容)
- 第一段:站主若只說調 span,**只**增刪 `<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** → 首頁中文全毀、`</span>` 露出;已 `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** 的歷史,先問站主是否同意 amendfilter-branch**仍不代 push**。
---
## 7. 相關規則檔
| 檔案 | 用途 |
|------|------|
| `.cursor/collaboration-notes.md` §6、§6.1 | **改完附 commit****禁止擅自 push** |
| `.cursor/rules/agent-must-ask.mdc` | **必問再改**、禁止批次毀 UTF-8、headernav 勿擅自改名 |
| `.cursor/rules/ai-change-boundaries.mdc` | 變更範圍、共用 CSS |
| `.cursor/rules/user-scope-and-nav.mdc` | 導覽開放、錨點刪除 |
| `.cursor/rules/portal-nav-rules.mdc` | `portal-nav.js` 技術細節 |
@@ -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 |
| 啟動新篇章 | 重啟後作品與單曲 |
| 輝煌全盛期 | 19971999 年表 |
| Yellow Note | 台灣行程表、成員行程篩選、搜尋與地圖主體 |
| 視覺進化論 | 從好奇到全端:自述與時間軸式章節 |
| 聖地巡禮 | 台灣行程表、成員行程篩選、搜尋與地圖 |
---
## 約定(給助手)
- **禁止**在未經站主明講時,於 `buildPortalNavInnerHTML` 加回 `<span class="portal-nav__sub">` 或類似第二行說明。
- 頂欄結構/開放與否仍以 `portal-nav-rules.mdc``user-scope-and-nav.mdc` 為準。
+39 -18
View File
@@ -1,31 +1,52 @@
--- ---
description: 助手必問再改(站主明講);防擅自改名、批次改檔、編碼毀檔 description: 必問再改、Git commit/禁 push、UTF-8、內頁 header、對圖與 devtools
alwaysApply: true alwaysApply: true
--- ---
# 必問再改(站主已多次強調 # 必問再改與 Git(站主訂
## 硬規則 ## 改檔
1. **站主沒說「執行」→ 不改檔**(可先說明、對照、列計畫)。 1. **沒說「執行」→ 不改檔**(可先說明、對照、列計畫)。**「檢查」→ 只回報**。
2. **站主說「先改一頁」→ 只改那一頁**,不得順手全站套用 2. **只改被點名的那一頁/區塊**;未寫到的檔不開、不刪、不重構
3. **class 改名/全站換名**:先問站主**確切 class 字串**;全站內頁 banner 用 **`inner-page-header`**(禁止改回 `map-archive-header` 等單頁名);不得用 PowerShell 批次替換 HTML 3. **class 全站換名**:先問確切字串。內頁 banner 用 **`inner-page-header`**(禁止改回 `map-archive-header` 等)。**禁止** PowerShell 批次改 `.html`(須 UTF-8 安全,如逐檔 `StrReplace`
4. **導覽文案**不得自加括號、副標、路徑說明(例如禁止擅自「傳奇的轉折(六六歌2)」);`portal-nav.js` 改字前先對站主原句。 4. **頂欄文案**禁止擅自加括號、副標(如「傳奇的轉折(六六歌2)」);`portal-nav.js` 對站主原句。
5. **CSS 對齊 devtools**站主給的勾選/數值照抄;若必須補 `min-height`、`padding` 等 devtools 沒有的值**先寫明「這是我補的」**,等站主說執行再寫入。 5. **devtools**:勾選/數值照抄; devtools 沒有的值須標「這是我補的」,等站主說執行再寫入。
6. **參考圖**:粉線=看這段,不是整段包 span。`mark_y``mark_b` 對照圖裡實際字重。
7. **首頁 `#mission`**:只調 span 時只動 `<span>`;金句未要求時只改內文。沒叫動註解就不動註解。
## 禁止(曾毀站) ## 內頁 header
- **禁止**用 PowerShell `Get-Content` / `Set-Content`(或未指定 `-Encoding utf8`)批次改 **`.html`** → 會把 UTF-8 中文弄成 `?`、標籤斷裂(如 `?/span>` - 內頁:**`header.inner-page-header`**。首頁 Hero**`header#origin`**。樣式以站主在電子書頁調過的為準;要套他頁須站主說執行
- 若需批次改 HTML:只用 **UTF-8 安全**方式(例如逐檔 `StrReplace`、或 `git` 還原後手改),改完抽查 `index.html` 首屏中文是否正常。
## 內頁 header(約定方向,名稱待站主定) ## Git:改完末尾附 commit
- 全站內頁 banner**`header.inner-page-header`**(勿用 `map-archive-header` 等單頁名當全站 class)。 每做完**一項**改動並已寫入檔案,回覆末尾附(**勿**為此反覆跑 `git status``git diff`):
- 首頁僅 **`header#origin`** 全屏 Hero,與內頁 header class 分開。
- 樣式以站主在**電子書頁** devtools 調過的為準後,再談是否套其他內頁(須站主說執行)。 ```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。
+3 -5
View File
@@ -37,8 +37,6 @@ alwaysApply: true
## 文件與規則檔 ## 文件與規則檔
- **不要**主動新增或長篇修改 `README`、`docs/*.md`、規則檔,除非使用者明講要寫入文件或規範 - **不要**主動新增或長篇修改 `README`、`docs/*.md`,除非站主明講
- **助手自用筆記**(對話紀要、頁面編輯規格、實作備忘):只寫在 **`.cursor/`**(例如 `.cursor/*-notes.md`);**禁止**放在 `docs/`、`README` 或站主日常會開的目錄。回覆裡也不必貼長篇筆記內容。 - **約定只寫在** `.cursor/rules/*.mdc`**合併進既有檔**,勿再新增散落 `*-notes.md`/目錄索引)。禁止放在 `docs/` 或站主日常會開的目錄。
- **例外**:使用者要求「把約定寫死/規則講清楚/不要再做錯」時,得**精準**更新 `.cursor/rules`(與 `portal-nav.js` 頂部註解對齊),避免重複踩雷;仍避免無關長文 - 動導覽/籌備中/`site-guide`**只讀** `portal-nav-rules.mdc`
(與導覽開放、頂欄 vs `site-guide` 相關條文以 **`user-scope-and-nav.mdc`**、**`portal-nav-rules.mdc`** 為準;實作前兩份都讀。)
+12 -22
View File
@@ -1,5 +1,5 @@
--- ---
description: 全站頂欄導覽 portal-nav.jsbuildPortalNavInnerHTML、COMING_SOON_PAGES、INDEX_NAV_OPEN_HASHES、籌備中、新頁檢查清單);與 user-scope-and-nav 搭配。 description: 全站導覽與籌備中(portal-nav.js、site-guide、開放邊界、刪錨點)
alwaysApply: true alwaysApply: true
--- ---
@@ -23,13 +23,7 @@ alwaysApply: true
3. **`totoga2/readable.html`(圖文好讀版,檔名 `readable.html`**、**`variety/variety.html`**:站主**沒有明講對外開放**時,檔名**必須**留在 `COMING_SOON_PAGES`(訪客頂欄不可點進)。要開放時**只**能等站主說了再從 Set 移除。 3. **`totoga2/readable.html`(圖文好讀版,檔名 `readable.html`**、**`variety/variety.html`**:站主**沒有明講對外開放**時,檔名**必須**留在 `COMING_SOON_PAGES`(訪客頂欄不可點進)。要開放時**只**能等站主說了再從 Set 移除。
4. **「刪除/拿掉/不要了」**:若未寫明是**單一檔案**、**頂欄某一列**、**整段子選單**還是**整個資料夾**,**一律先問站主**,禁止自行擴大刪除範圍。 4. **「刪除/拿掉/不要了」**:若未寫明是**單一檔案**、**頂欄某一列**、**整段子選單**還是**整個資料夾**,**一律先問站主**,禁止自行擴大刪除範圍。
5. **不確定**是否開放、連哪、是否例外:**先問站主再改**,不要猜。 5. **不確定**是否開放、連哪、是否例外:**先問站主再改**,不要猜。
6. 站主說要刪的是 **`某頁#錨點`**(頁內區塊)時:先改該頁 DOM,再修死錨連結;**不要**只動導覽、也不要把「刪區塊」擴成刪頂欄整段。細節見 **`user-scope-and-nav.mdc`**(§ 頁面錨點刪除)。 6. 站主說 **`某頁#錨點`**:見下方 **§8 頁面錨點刪除**(先改 DOM,再修死鏈;禁止只動導覽)。
## 0.1 站主同意(細項)
- **未經站主明確同意**,不得自行:從 `COMING_SOON_PAGES` 移除檔名、擴充 `INDEX_NAV_OPEN_HASHES`、在 `buildPortalNavInnerHTML` **新增**導覽項目、**刪除站主已同意列入頂欄**的項目、或把籌備中連結改成可點(**全站導覽頁頂欄例外見 §0**)。
- **`extra/site-guide.html`**:站主自用;條件同 §0 表格。(僅此頁可加 `data-portal-nav-all-open`。)
- 頂欄模板**不含**未同意掛列的頁;該頁仍可由 `site-guide` 主文或網址直開(站主自用)。
--- ---
@@ -123,22 +117,18 @@ alwaysApply: true
--- ---
## 7. 與使用者約定:開放範圍 ## 8. 頁面錨點刪除(`某頁.html#id`)
- **不要**在未經使用者**明確交代**的情況下,自行把導覽改為「可點進入」或更換目標頁(例如把「傳奇的轉折」改成連到 `totoga2.html`)。 指該 HTML 裡 **`id="…"` 的那一區**`<section>`,不是刪整檔、不是刪資料夾、不是刪頂欄整段「全員發瘋」,也不是擅自改 `COMING_SOON_PAGES`(除非原句一併交代)。
- 「傳奇的轉折」是否開放、連到哪裡,**只依使用者指示**;意圖與邊界亦見 **`.cursor/rules/user-scope-and-nav.mdc`**。
--- 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` 注入的 `<nav class="portal-nav" data-portal-nav>`。
- **全站索引**`extra/site-guide.html`(可列草稿;**不等於**頂欄要掛)。
- **程式真值**`assets/js/portal-nav.js``COMING_SOON_LABEL`=「籌備中」)。
+21 -23
View File
@@ -5,43 +5,41 @@ alwaysApply: true
# 全站文案調性 # 全站文案調性
撰寫或改寫**給訪客看的內文**時,語感對齊下列母本(站主指定範圍): 撰寫或改寫**給訪客看的內文**時,語感對齊母本(站主指定範圍):
## 母本範圍 ## 母本
**檔案**`index.html` **檔案** `index.html``<body>` 起 → `#timeline` 內 **`article[data-era="2016.05"]` 全文止**(含錨點句)。
**起點**`<body>` 從開頭讀起。
**終點**`#timeline` 內 `article[data-era="2016.05"]` **全文為止**(含錨點句)。
依 **DOM 由上而下** 納入:
| 區塊 | 說明 | | 區塊 | 說明 |
|------|------| |------|------|
| `header#origin` | Hero 標語(六顆水晶、傳奇) | | `header#origin` | Hero |
| `nav.portal-nav` | 頂欄導覽(主標/副標,在 body 內依序出現) | | `nav.portal-nav` | 頂欄 |
| `#start` | 好奇的開端、2016 四月入坑、黃色奇蹟、路人→坑底 | | `#start` | 入坑 |
| `#mission` | 成立的初衷、LOGO/黃色海洋瞬間、追星與創作 | | `#mission` | 初衷 |
| `#timeline` `2016.05` | `1997``2000``2016`(合體)→ `2016.05`(夢境進現實+錨點句) | | `#timeline` | 至 1997 → 2000 → 2016 → **2016.05** |
**截止線**(站主指定):`#timeline` 內 **`data-era="2016.05"` 之後**的節點;該篇之後的 body 內容 **不納入** 2016.05 之後的 timeline 與 body 後段
## 錨點句(`2016.05` 末段 ## 錨點句(2016.05
> 原來大家只是換個方式一起變老,這份情誼早已超越了表演。 > 原來大家只是換個方式一起變老,這份情誼早已超越了表演。
是整條閱讀軸的收束之一;須能承接 **入坑自述 → 初衷 → 1997→2000→2016→2016.05**,勿只複誦此句。 須承接入坑 → 初衷 → 四節時間軸,勿只複誦此句。
## 語感要點 ## 語感
- 站主視角:2016 因《無限挑戰》入坑、好奇到淪陷;網站像藝廊、把喜愛化為創作。 站主 2016 入坑、藝廊式創作;盛世 → 休止 → 合體 → 落地。溫柔、具體、遺憾與釋懷並寫。
- 時間軸:盛世 → 休止凍結 → 合體 → 現實落地(簽約、四/九月、空位、《超回》)。
- 溫柔、具體場景、遺憾與釋懷並寫;黃色海洋、十六年、羈絆、奇蹟、完整。
## 避免 ## 避免
- 只 timeline 末段或只抄錨點句。 - 只 timeline 末段或錨點句。
- 2016.05 之後的 timeline 或 body 後段當母本。 - 2016.05 之後當母本。
- 讀者向技術說明(除非站主明講)。 - 讀者向技術說明(除非站主明講)。
- **單頁 intro**(如電子書)把首頁時間軸/入坑/錨點句硬拼進一段;該頁先說**該頁主題**(如六六歌2 跨頁書),語感對齊母本即可。 - 單頁 intro 硬拼整條首頁時間軸;該頁先說**該頁主題**(如六六歌2 電子書),語感對齊即可。
細項:`.cursor/site-voice-notes.md`。 ## 六六歌2 單頁 intro
- 採用版見 `totoga2/ebook.html`(「四月那場重逢…」)。
- 勿 FlipHTML5PDF 操作說明。
- 四入口順序:**時間軸 → 電子書 → 圖文好讀版 → 影片**。
-68
View File
@@ -1,68 +0,0 @@
---
description: 未經使用者明確交代,不得擅自開放導覽、改連結或擴充需求範圍(本 repo 含全站導覽與 totoga2 等)。
alwaysApply: true
---
# 使用者意圖與導覽(sechskies
## 速記(每次動導覽或 `portal-nav.js` 前先對齊)
1. **`extra/site-guide.html`**:站主自用;該頁頂欄 `data-portal-nav-all-open` → **全部連結可點**;主文 `<main class="site-guide-main">` 的 `<a>` **不准**用腳本改成籌備中。
2. **其他每一頁**:未公開=**籌備中**(頂欄+頁內連結皆鎖、須寫出「籌備中」);依 **`COMING_SOON_PAGES` / `INDEX_NAV_OPEN_HASHES`**;不准在其他頁加 `all-open`。
3. **`totoga2/readable.html`**(檔名 `readable.html`)、**`variety.html`**:站主沒說「對外開放」→ **留在 `COMING_SOON_PAGES`**;不得自以為可以幫忙開放。
4. **沒寫在指令裡的開放/連結/從 Set 移除/刪檔或刪導覽列**:**一律先問**,禁止推論;「刪除」未指明範圍(單檔 vs 頂欄整段 vs 資料夾)=必須先問。
5. 技術細節與檢查清單:**`portal-nav-rules.mdc`**(與本檔一起讀)。
6. **頂欄 `portal-nav`header**:文案與巢狀結構對齊 `extra/site-guide.html` **主選單樹**(有連結者);`site-guide-nav-nolink` 與 `COMING_SOON_PAGES` 維持籌備中、**不准擅自開放或改未列開放之頁內容**。勿把此句誤做成 `extra/` 分頁列或全站 `nav` 黑底規則。
---
## 只做被交代的事
- **不得**在未被使用者**明確要求**的情況下:把導覽連結從「籌備中/尚無開放」改成可點、更換 `href` 成真實頁面、從 `COMING_SOON_PAGES` 移除、或把錨點加入 `INDEX_NAV_OPEN_HASHES`。
- **不得**在未被使用者**明確要求**的情況下:從 `buildPortalNavInnerHTML` **刪除**站主**已同意**列入頂欄的項目。
- 使用者**明確要求**移除某列(例如不同意掛頂欄的「六顆水晶」)時,依指示從模板刪除即可。
- **不得**在未被使用者**明確要求**的情況下:在 `buildPortalNavInnerHTML` **新增**任何頂欄導覽項目或子選單連結(即使目標頁面已存在於 repo)。
- **不得**在 **`site-guide.html` 以外**的頁面加上 **`data-portal-nav-all-open`**(該屬性僅用於索引頁頂欄「全連結可點」;其他頁頂欄須套用籌備中規則)。
- **不得**因為「內容已搬到某頁」就自行推論「導覽也應該開放」——導覽是否開放**只聽使用者口述**。
- 若使用者只要求搬內容、刪檔、改站內某段文案,**預設不改** `assets/js/portal-nav.js` 的開放狀態與連結目標。
## 「傳奇的轉折」與 `totoga2/readable.html`(特別記牢)
- 頂欄「圖文好讀版」連到 **`totoga2/readable.html`**(見 `buildPortalNavInnerHTML`)。
- 使用者**沒有明講對外開放整合頁**時:`readable.html` **必須**在 **`COMING_SOON_PAGES`** 裡 → 訪客頂欄該項為籌備中、**不可點進**。
- **禁止**在未獲同意下:從 Set **移除** `readable.html`、或改成連到其他頁並當成已開放。
- 首頁錨點另依 **`INDEX_NAV_OPEN_HASHES`**;與「傳奇的轉折/totoga2」分開判斷。
## 實作前自檢
- 若變更會影響 `assets/js/portal-nav.js``buildPortalNavInnerHTML`、`COMING_SOON_PAGES`、`INDEX_NAV_OPEN_HASHES`):**對照使用者原句**,確認每一項連結的開/關都有被明確交代。
## 名詞對齊(避免做錯檔)
- **頂部橫列導覽(常稱 navbar**`assets/js/portal-nav.js` 注入的 `<nav class="portal-nav" data-portal-nav>`。已同意列入者不得擅自刪除;**新增**備份稿/未公開頁至上列須站主明講。**`extra/site-guide.html`** 可加 **`data-portal-nav-all-open`** 略過籌備中(僅該頁)。
- **全站頁面索引**`site-guide.html`(自行開網址),用來列檔案與錨點;**不影響**頂欄是否出現該連結。使用者說「留在全站導覽」常指保留在 **site-guide** 或站內說明,**不等於**要掛進頂欄。
(變更哪些檔、可否動共用 CSS:見 **`ai-change-boundaries.mdc`**。)
全站導覽的**技術細節與檢查清單****`portal-nav-rules.mdc`**(與本檔同目錄)。
---
## 頁面錨點刪除(`某頁.html#某id`)
站主若說「刪 `#stage`」「刪 `variety.html#stage`」等,指的是 **該 HTML 裡 `id="…"` 的那一區塊/`<section>`**,不是刪整份檔、不是刪 `variety/` 資料夾、不是刪頂欄一整段「全員發瘋」、也不是擅自改 `COMING_SOON_PAGES` 開放與否(除非原句一併交代)。
**實作順序(曾做錯順序=站主會火大)**
1. **先**在目標頁面拿掉對應 DOM(含該 `id` 的區塊)。
2. **再**做最小必要連結修正:站內若還有指到已不存在錨點的 `href`,改成仍存在的錨點或去掉 hash;這是避免壞錨點,**不**等於「重構導覽」或「刪頂欄列」。
3. **禁止**只改 `portal-nav.js` / `site-guide.html` 卻不刪頁內區塊;也**禁止**把「刪錨點」擴大成刪站主未點名的頂欄項目。
**和瀏覽器行為對齊(避免說站主幻覺)**
- 錨點從 HTML 拿掉後,書籤或舊連結上的網址列仍可能顯示 `#…`,**不代表**頁面還有該 `id`。
- 頁頂大標(例如 `header` 裡的 `h1`「瘋子與天才」)與下面各區 `id` 區塊是不同層級;不要因為畫面上還看到大標就以為「# 那段還在」。
**仍模糊時**
- 「刪除」沒寫清是單一錨點區、整檔、頂欄某一列還是資料夾:用**一句話**確認再改,不要猜;尤其接近深夜、站主已重複指令時。
-40
View File
@@ -1,40 +0,0 @@
# 對話紀要 · 2026-05-13(深夜)
供之後自己或助手對齊脈絡用;**程式真值**仍以 repo 內檔案與 `.cursor/rules` 為準。
---
## 1. 需求:`variety/variety.html` 刪除 `#stage`
- **意圖**:刪除該頁內 **`id="stage"` 的整個 `<section>`**(「隊長的氣場」),**不是**刪整頁、不是刪 `variety/` 資料夾、不是刪頂欄「全員發瘋」整段。
- **實作**:已從 `variety/variety.html` 移除該區塊;站內原指向 `variety.html#stage` 的連結改為仍存在的錨點(例如 `#variety`),見 `assets/js/portal-nav.js``extra/site-guide.html`
- **誤會澄清**:瀏覽器網址列若仍顯示 `#stage`,多半是舊書籤/歷史網址,**不代表** HTML 裡還有該 `id`。畫面上的「瘋子與天才」是 **header 大標**,不是已刪除的 `#stage` 區內文。
---
## 2. 寫入規則(給「明天的電腦」)
已更新 Cursor 規則(`alwaysApply`):
| 檔案 | 補充內容 |
|------|----------|
| `.cursor/rules/user-scope-and-nav.mdc` | **頁面錨點刪除**:先改頁面 DOM,再修死錨;禁止只改導覽不刪區塊、禁止擅自擴大刪頂欄/整頁。 |
| `.cursor/rules/portal-nav-rules.mdc` | §0 加第 6 點,指回上一條。 |
| `.cursor/rules/ai-change-boundaries.mdc` | **站主版面與元件預設**:同行預設等高、同類 CARD 等預設等寬;短字層單行置中、長文換行置左;預設不出現區塊內捲軸除非站主明講。 |
---
## 3. 站主口述的設計大原則(摘要)
- 同一列:除非特別說,**等高**。
- 同屬性(如 CARD):**等寬**。
- 「十字以內」等級的短標:**盡量不換行、置中**;超過則**內文層(body)可換行、置左**(規則與 CSS 依 `body.頁面類名 … p`,不依 `*-intro-lead` class 名)。
- **不要**隨便出現內嵌捲軸;除非站主對該區有強烈/明確規定。
細節與實作注意已寫在 `ai-change-boundaries.mdc` 該節。
---
## 4. 本檔說明
- 由 2026-05-13 對話整理;若與後續 commit 不一致,以 git 與規則檔為準。
-37
View File
@@ -1,37 +0,0 @@
# 全站文案調性(助手用)
## 母本(一句話)
**`index.html`:從 `<body>` 開頭依 DOM 往下讀,讀到 `#timeline``data-era="2016.05"` 止(含)。**
## 納入(由上而下)
1. **`header#origin`** — Hero
2. **`nav.portal-nav`** — 頂欄導覽(主標/副標)
3. **`#start`** — 好奇的開端
4. **`#mission`** — 成立的初衷、LOGO/黃色海洋
5. **`#timeline`** — 至 `1997``2000``2016`**`2016.05`**(含錨點句)
## 截止線(站主指定)
- `#timeline`**2016.05 之後**(後段 `data-era="2016"``2019``NOW` 等)
- 該線之後的 body 內容
## 錨點句
> 原來大家只是換個方式一起變老,這份情誼早已超越了表演。
## 檢查
- 有沒有接到 **入坑(#start)+初衷(#mission)+四節時間軸**
- 有沒有誤用截止線之後的段落?
## 六六歌2 電子書 intro
- 站主採用版:第一次感性改寫(「四月那場重逢…」開頭),見 `totoga2/ebook.html`
- **勿**再改成 FlipHTML5PDF 技術說明,也**勿**把 `#start`+整條 timeline 名詞塞滿一段(東拼西湊版)。
## 其他
- 六六歌2 分頁(site-guide/頂欄/四鈕列):時間軸 → 電子書 → 圖文好讀版→ 影片
- 規則:`.cursor/rules/site-voice.mdc`
-9
View File
@@ -1,9 +0,0 @@
# 筆記:`extra/totoga2-video.html`(助手用,不對讀者顯示)
對應檔案:`extra/totoga2-video.html`
- 以下為 Bilibili 嵌入播放器(16:9)。請用上集/中集/下集分頁切換;若無法播放請至站內搜尋同一 BV 號。中集、下集可將 iframe 的 `bvid` 換成分集連結。
- 中集、下集 iframe 使用 `data-src`,第一次切到該分頁時由頁內 script 寫入 `src`;改連結時請改 `data-src`(或已寫入後的 `src`)。
- 目前中/下集預設與上集同一 BV,僅作占位;正式替換時改各分頁 iframe 的 `data-src` 即可。
- 此頁 `body.totoga2-video-copy-page``inner-page-header`(影片頁無黃色 banner)(`100vh``100dvh`),避免與導覽、影片疊加後出現整頁直向捲軸;其他全屏 banner 頁不受影響。
- 資訊架構:頂部黃色列僅 **上集/中集/下集**`role="tab"`);四入口為 `totoga2/``timeline.html``ebook.html``readable.html``video.html`,頁內四鈕列共用 `split-nav.css`
+1 -1
View File
@@ -8,7 +8,7 @@
* 【未公開】href 改 #、不可點。頂欄與頁內按鈕:NAV_SOON_PHRASES 滑過隨機氣泡(同 ::after);無障礙 aria「尚無開放」;不加可見「(籌備中)」文字後綴。 * 【未公開】href 改 #、不可點。頂欄與頁內按鈕:NAV_SOON_PHRASES 滑過隨機氣泡(同 ::after);無障礙 aria「尚無開放」;不加可見「(籌備中)」文字後綴。
* 【totoga2 開放】`totoga2/ebook.html`、`totoga2/video.html` 可點;`timeline.html` 與 `totoga2/readable.html` 在 Set 內。 * 【totoga2 開放】`totoga2/ebook.html`、`totoga2/video.html` 可點;`timeline.html` 與 `totoga2/readable.html` 在 Set 內。
* 頂欄勿加 `portal-nav__sub`(站主未要求);曾用副標見 `.cursor/portal-nav-optimization-backlog.md`。 * 頂欄勿加 `portal-nav__sub`(站主未要求);曾用副標見 `.cursor/portal-nav-optimization-backlog.md`。
* 完整條文:`.cursor/rules/portal-nav-rules.mdc` + `user-scope-and-nav.mdc` * 完整條文:`.cursor/rules/portal-nav-rules.mdc`
*/ */
const NAV_SOON_PHRASES = [ const NAV_SOON_PHRASES = [
"奇蹟醞釀中", "奇蹟醞釀中",