Release v2.3.0
這一版讓題目「發得出去」:每題有一個改名也帶不走的編號,短連結變成畫面上看得到、按一下就複製得到的東西——在這之前,發連結只能靠老師憑記憶打字。
✨ 新增 (Added)
- 每題有一個永久編號,短連結改用它。
/c/001與/zh/c/001直接開該題,而且題目改名之後仍然指向同一題——這正是編號存在的理由:slug 是題目「叫什麼」,改名之後參數化規則會跟著改名走,於是印在講義上、已經發出去的那條連結就靜默失效了。既有七題依上架日期拿到 1 到 7。編號一經指派就凍結,已下架題目的號碼永久保留、不重新發出。只提供補零的正式寫法,/c/1不是本站提供的形式 (#62) - 題目列表每一列與題目頁標題旁,都能看到並複製該題的短連結。畫面上顯示的是去掉協定的位址、按下複製鈕拿到的是完整絕對網址;繁體中文語系顯示與複製的都是
/zh/c/形式。網址本身是可以反白選取的文字,複製鈕只是捷徑 (#62) - 剪貼簿寫不進去的時候,訊息會指向畫面上那段網址。非安全來源、權限被拒、舊瀏覽器都會讓複製失敗,而只回報「失敗」會讓人無路可走。網址之所以用文字呈現,就是為了讓這個分支有去處 (#62)
🔄 變更 (Changed)
docs/public/_redirects不再手寫,改由腳本從題目樹產生,並掛進建置流程。手動改動會被守門測試擋下:它比對 committed 的檔案與從題目樹重新產生的內容是否逐字相同。每題兩條數字規則排在既有兩條參數化規則之前——Cloudflare 第一個命中者勝,而/c/:slug也吃得下數字,順序寫反會靜默失效 (#62)pnpm create:challenge產出的 frontmatter 自動帶編號,值取所有已指派編號的最大值加一,計算範圍含已下架的題目 (#62)- 題目驗證多了四項檢查:缺號、不是大於零的整數、兩個語系樹數值不一致、與其他題目重號,四種情形各自被擋下並指名是哪一題 (#62)
- 既有的
/c/<slug>與/zh/c/<slug>行為完全不變,已經發出去的 slug 連結繼續有效 (#62)
🗑️ 內部 (Internal)
- 規格變更
challenge-numbering-and-sharing已歸檔,四份 delta 套進 live spec。使用者不可見 (#62)
What's Changed
- ✨ feat: 題目改用永久編號,短連結由題目樹產生並可一鍵複製 by @CXPhoenix in #62
- 🔧 chore: 版號推進 2.3.0 by @CXPhoenix in #63
- 🚀 release: 2.3.0 上 production by @CXPhoenix in #64
Full Changelog: v2.2.0...v2.3.0