feat 專案設計規範
This commit is contained in:
@@ -20,8 +20,21 @@ alwaysApply: true
|
||||
|
||||
- 若需求可能影響多檔(導覽、首頁、共用 CSS):**先問**「是否只改 A,還是 B/C 也要一起?」再改。
|
||||
|
||||
## 站主版面與元件預設(設計大原則)
|
||||
|
||||
以下為全站/新區塊的**預設假設**,不必每個區域重複交代;若該次需求明講例外再打破。
|
||||
|
||||
- **同一列/並排多欄**:預設 **等高**(例如 flex 同列 `align-items: stretch`、grid 同列對齊高度),除非該次明講要頂對齊或其他非等高編排。
|
||||
- **同一層級、同類可重複元件**(例如多張 **CARD**、同一 pattern 的 tile):預設 **等寬**(同一 breakpoint 下寬度一致),除非明講破格。
|
||||
- **短字層**(站主慣稱「十字以內」——極短標、標籤、一句內等級,語意上不要硬拆成兩行):盡量 **單行、不換行**;**水平置中**(置中)。
|
||||
- **超過短字層的標題或內文**:允許自然換行;**置左**對齊。
|
||||
- **捲軸**:一般區塊 **不要**出現內嵌捲軸(避免預設 `overflow: auto/scroll` 把版面變成「盒子裡再拖條」);**只有**站主對該區曾**明講**要可捲動或強烈規定的例外才做捲動容器。
|
||||
|
||||
實作時仍以「只改被點名範圍」為上;若要拉一套新 grid/卡片列,優先在本區父層加 class,避免為了對齊去改未點名的全站共用規則。
|
||||
|
||||
## 文件與規則檔
|
||||
|
||||
- **不要**主動新增或長篇修改 `README`、`docs/*.md`、規則檔,除非使用者明講要寫入文件或規範。
|
||||
- **例外**:使用者要求「把約定寫死/規則講清楚/不要再做錯」時,得**精準**更新 `.cursor/rules`(與 `portal-nav.js` 頂部註解對齊),避免重複踩雷;仍避免無關長文。
|
||||
|
||||
(與導覽開放、頂欄 vs `site-guide` 相關條文以 **`user-scope-and-nav.mdc`** 為準。)
|
||||
(與導覽開放、頂欄 vs `site-guide` 相關條文以 **`user-scope-and-nav.mdc`**、**`portal-nav-rules.mdc`** 為準;實作前兩份都讀。)
|
||||
|
||||
@@ -9,12 +9,27 @@ alwaysApply: true
|
||||
|
||||
---
|
||||
|
||||
## 0. 站主同意(最高優先)
|
||||
## 0. 兩個世界(最高優先,實作前必讀)
|
||||
|
||||
- **未經站主明確同意**,不得自行:從 `COMING_SOON_PAGES` 移除檔名、擴充 `INDEX_NAV_OPEN_HASHES`、在 `buildPortalNavInnerHTML` **新增**導覽項目、**刪除站主已同意列入頂欄**的項目、或把籌備中連結改成可點(**例外見下**)。
|
||||
- 「檔案已在 repo 裡」**不代表**可以開放導覽或當成已上線。
|
||||
- **`extra/site-guide.html`(全站導覽索引頁)**:頂欄 `<nav>` 使用 **`data-portal-nav-all-open`** 時,腳本**不套用**籌備中,頂欄內連結**全部可點**(僅此頁;站內其他頁**禁止**加此屬性)。
|
||||
- 頂欄模板**不含**未同意掛列的頁;該頁仍可由 `site-guide` 卡片或網址直開。
|
||||
| 誰在看 | 哪一頁/哪塊 | 行為 |
|
||||
|--------|----------------|------|
|
||||
| **站主自己** | 僅 **`extra/site-guide.html`** | 頂欄必須 **`data-portal-nav data-portal-nav-all-open`**。腳本**不**對該頁頂欄套用籌備中;**不**對 `<main class="site-guide-main">` 內任何 `<a href>` 改寫。表上連結**全部要點得進**(由站主在 HTML 維護)。 |
|
||||
| **訪客/大家** | **除上列以外**的每一頁 | 頂欄一律套用 `applyComingSoonToNav`:`COMING_SOON_PAGES`、`INDEX_NAV_OPEN_HASHES` 說不能點就不能點。**禁止**在其他頁加 `data-portal-nav-all-open`。 |
|
||||
|
||||
**硬規則(違反=做錯)**
|
||||
|
||||
1. **未經站主逐句同意**:不得從 `COMING_SOON_PAGES` **刪**檔名、不得擴充 `INDEX_NAV_OPEN_HASHES`、不得在 `buildPortalNavInnerHTML` **新增**可點項、不得把籌備中改成真 `href`、不得刪站主已同意列入頂欄的項。
|
||||
2. **「檔案在 repo」≠「可開放導覽」**;不得自行推論。
|
||||
3. **`extra/totoga2.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` 主文或網址直開(站主自用)。
|
||||
|
||||
---
|
||||
|
||||
@@ -44,7 +59,7 @@ alwaysApply: true
|
||||
| 新頁要**正式開放** | 寫進 `buildPortalNavInnerHTML`(`assets/js/portal-nav.js`),並**確認檔名不在** `COMING_SOON_PAGES`。若曾暫時關閉,記得從 Set **刪除**該檔名。 |
|
||||
| 新頁先**占位、不開放** | 可選擇:仍寫進導覽,但把檔名**加進** `COMING_SOON_PAGES`;或暫時不要放進導覽。 |
|
||||
|
||||
(目前 Set 內含哪些檔,以 `assets/js/portal-nav.js` 為準;例如 `totoga2.html` 若已開放,就不應出現在 Set 裡。)
|
||||
(目前 Set 內含哪些檔,以 `assets/js/portal-nav.js` 為準;站主明講開放後才從 Set 移除該檔名,例如 `totoga2.html`。)
|
||||
|
||||
---
|
||||
|
||||
@@ -59,7 +74,7 @@ alwaysApply: true
|
||||
|
||||
## 3.1 索引頁頂欄全開(僅 `site-guide.html`)
|
||||
|
||||
- **`extra/site-guide.html`** 的 `<nav>` 使用 **`data-portal-nav data-portal-nav-all-open`** 時:注入後**不套用**籌備中,頂欄連結維持真實 `href`(含 `#story` 等)。
|
||||
- **`extra/site-guide.html`** 的 `<nav>` 使用 **`data-portal-nav data-portal-nav-all-open`** 時:注入後**不套用**籌備中,頂欄連結維持真實 `href`。主文 `main.site-guide-main` 內連結不由腳本改寫。
|
||||
- **禁止**在 `site-guide.html` 以外的頁面使用 `data-portal-nav-all-open`。
|
||||
|
||||
---
|
||||
|
||||
@@ -5,6 +5,16 @@ 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.html`**、**`variety.html`**:站主沒說「對外開放」→ **留在 `COMING_SOON_PAGES`**;不得自以為可以幫忙開放。
|
||||
4. **沒寫在指令裡的開放/連結/從 Set 移除/刪檔或刪導覽列**:**一律先問**,禁止推論;「刪除」未指明範圍(單檔 vs 頂欄整段 vs 資料夾)=必須先問。
|
||||
5. 技術細節與檢查清單:**`portal-nav-rules.mdc`**(與本檔一起讀)。
|
||||
|
||||
---
|
||||
|
||||
## 只做被交代的事
|
||||
|
||||
- **不得**在未被使用者**明確要求**的情況下:把導覽連結從「籌備中/尚無開放」改成可點、更換 `href` 成真實頁面、從 `COMING_SOON_PAGES` 移除、或把錨點加入 `INDEX_NAV_OPEN_HASHES`。
|
||||
@@ -15,10 +25,12 @@ alwaysApply: true
|
||||
- **不得**因為「內容已搬到某頁」就自行推論「導覽也應該開放」——導覽是否開放**只聽使用者口述**。
|
||||
- 若使用者只要求搬內容、刪檔、改站內某段文案,**預設不改** `assets/js/portal-nav.js` 的開放狀態與連結目標。
|
||||
|
||||
## 「傳奇的轉折」導覽(特別記牢)
|
||||
## 「傳奇的轉折」與 `extra/totoga2.html`(特別記牢)
|
||||
|
||||
- 使用者**沒有說要開放**時:導覽上的「傳奇的轉折」必須維持 **尚無開放**(例如維持 `index.html#story` 且 **`#story` 不在 `INDEX_NAV_OPEN_HASHES`**,或等價的籌備中處理)。
|
||||
- **禁止**在未獲使用者同意下,將該項改為連到 `totoga2.html` 或其他已上線頁面。
|
||||
- 頂欄模板裡「傳奇的轉折」連到 **`extra/totoga2.html`**(見 `buildPortalNavInnerHTML`)。
|
||||
- 使用者**沒有明講對外開放整合頁**時:`totoga2.html` **必須**在 **`COMING_SOON_PAGES`** 裡 → 訪客頂欄該項為籌備中、**不可點進**。
|
||||
- **禁止**在未獲同意下:從 Set **移除** `totoga2.html`、或改成連到其他頁並當成已開放。
|
||||
- 首頁錨點另依 **`INDEX_NAV_OPEN_HASHES`**;與「傳奇的轉折/totoga2」分開判斷。
|
||||
|
||||
## 實作前自檢
|
||||
|
||||
@@ -32,3 +44,24 @@ alwaysApply: true
|
||||
(變更哪些檔、可否動共用 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` 區塊是不同層級;不要因為畫面上還看到大標就以為「# 那段還在」。
|
||||
|
||||
**仍模糊時**
|
||||
|
||||
- 「刪除」沒寫清是單一錨點區、整檔、頂欄某一列還是資料夾:用**一句話**確認再改,不要猜;尤其接近深夜、站主已重複指令時。
|
||||
|
||||
Reference in New Issue
Block a user