Skip to content

Release v2.3.0

Choose a tag to compare

@CXPhoenix CXPhoenix released this 06 Sep 07:10
· 28 commits to main since this release
80f5910

這一版讓題目「發得出去」:每題有一個改名也帶不走的編號,短連結變成畫面上看得到、按一下就複製得到的東西——在這之前,發連結只能靠老師憑記憶打字。

✨ 新增 (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