
kiwi-walk停掉每日連載之後,把月曆搬到 Archives,看見每個月的累積
kiwi-daily 停掉之後,把月曆搬到 Archives 頁首:桌機是一年 12 格的月份熱度長條加一篇一個 icon 的月曆,手機改成左右滑的月份滑桿,日格的底色和列表的縮圖則在看過預覽後拿掉。

kiwi-daily 停掉之後,把月曆搬到 Archives 頁首:桌機是一年 12 格的月份熱度長條加一篇一個 icon 的月曆,手機改成左右滑的月份滑桿,日格的底色和列表的縮圖則在看過預覽後拿掉。

PaperMod 讓文章表格在桌機只撐到內容寬、中文在手機不斷行。這篇記錄先量全站 101 張表、在建好的站上試 CSS,最後用 table render hook 把每張表包進可橫捲的框,以及一路踩到的斷字和選擇器權重問題。

/blogs/ 那 8 隻奇異鳥 logo 只顯示 108px,卻每隻都是 200 多 KB 的 PNG。這篇記錄怎麼換成 R2 上 128px/256px 的 WebP、為什麼沒用 srcset,以及讓上傳腳本以後自動把文章圖縮到 1400px 並轉 WebP。

PageSpeed 給 kiwi-walk 的無障礙分數是 95,扣分來自文字對比不足和 role=presentation 衝突。這篇記錄怎麼找到真正失敗的那一組顏色:對比在文章頁是過的,失敗的是 PaperMod 讓列表頁換了一個底色;怎麼在不改整體色系的前提下挑新的次要文字色和程式碼註解色,以及 logo 上一個 aria-label 為什麼會讓圖片「角色衝突」。四個頁面都升到 100。

PageSpeed 說我有 72 KiB 沒用到的 JavaScript、10 KiB 舊式 JavaScript。把 GA 的 gtag/js 移到 window load 之後、只在正式 build 載入,load 提早約 1.1 秒、FCP 小幅改善;但 Lighthouse 照樣量到 72 KiB,而那 10 KiB 根本是 Cloudflare 的 beacon。第一次拿兩個不同 host 比出來的 LCP 進步,換成同條件 A/B 也不見了。

kiwi-walk 的 /tags/ 有 159 個 tag,其中 115 個只有一篇文章。這篇記錄怎麼用一個參數 tagsMinCount(預設 2)把總覽縮到 44 個,同時讓單篇 tag 的頁面照樣存在、文章底下的 tag 照樣點得進去,以及驗證時被壓縮 HTML 和一個帶斜線的 tag 騙到的兩次。

kiwi-walk 的 Cloudflare Pages preview 上,首頁 22 個站內連結全部指向 https://kiwi-walk.com/,點一下就離開 preview。原因是 hugo.yml 寫死的 baseURL;改用一支 build script 讀 CF_PAGES_BRANCH 與 CF_PAGES_URL,在 preview 上換成部署自己的網址,並用逐檔 diff 確認正式站輸出不變。

kiwi-walk 的文章底部加了分享列。桌機是 LINE、Threads、Facebook 和複製連結四顆圓形 icon,手機只留「分享這篇」「複製連結」兩顆按鈕,交給系統分享選單。這篇記錄為什麼按鈕要少、手機和桌機怎麼切、瀏覽器不支援 navigator.share 或沒有 JS 時退回什麼,以及上線前把通用圖示換成官方 logo 的經過。

部落格的想法先記成一句話的 GitHub issue,AI 確認過 codebase 再把它補完,我在 issue 留言裡跟 AI 來回,而且一定要有 mermaid 流程圖與 mockup。三個狀態 label 分工:ai-enhanced 是 AI 負責,approved 只有我能設,進入 approve 就代表我認可這份 plan,交給新的 Claude Code session 實作、發 PR 附上驗證。approved 的 issue 一次開三個 session、各自一個 worktree 平行做,做完再請同一個 session 把過程寫成文章。

kiwi-walk 的 HTTP 安全標頭在 Mozilla HTTP Observatory 拿 D(30 分)。這篇記錄怎麼補上 X-Frame-Options、Permissions-Policy 和 CSP,把全站 18 段 inline script 搬成檔案,讓 CSP 可以強制執行,再開 HSTS,Observatory 升到 A−(85 分)、securityheaders.com 從 D 升到 A+;也記錄三個只在正式網域才出現、預覽網址完全抓不到的問題,以及清單上標成完成、實際卻還沒生效的 HSTS。