diff --git a/docs/project-state.md b/docs/project-state.md index d8d6105..2581f6f 100644 --- a/docs/project-state.md +++ b/docs/project-state.md @@ -262,6 +262,29 @@ One session spent making a Synology NAS read, write and chart spreadsheets produ - **Done when:** ✅ 6 pages 200 with expected content, language switch links both ways, 6 images served as `image/png`, archive order still monotonic on `/posts/`, the homepage and `/zh/`. +**Step B2h — (unplanned) Audit + backdate of the six posts that landed on 2026-09-29.** ✅ Done 2026-09-29 +One publishing day put **six** EN posts on the same `pubDate`, so `/posts/` opened with a single-day dump. Each was +checked for date-, month- and version-pinned prose before its frontmatter was touched; two carried no pins and were +moved into the archive's empty months with `updatedDate: 2026-09-29` holding the real date: + +| Slug | Category | pubDate → updatedDate | Why it was safe / blocked | +|---|---|---|---| +| `adding-english-mode-to-a-chinese-only-web-app` | `engineering` | 2025-06-11 → 2026-09-29 | no absolute date, month name, version or relative-time phrasing anywhere in EN or ZH; fills the empty 2025-06 | +| `authentik-forward-auth-gate-wasnt-live` | `devops` | 2026-08-12 → 2026-09-29 | no pins. `nocodb-sso-is-a-licensed-feature` links *back* to it, so it must stay dated earlier than 2026-09-29 (it does), and the "licensing story in its own write-up" forward reference now reads as weeks rather than months. Fills the empty 2026-08 | + +- **The four that had to stay on 2026-09-29, and the exact sentence that pins them:** + - `read-only-nocodb-dashboard-for-a-remote-database` — image tag `nocodb/nocodb:2026.09.0` **and** a returned row + timestamp `2026-09-27 01:54:16+00:00` → floor 2026-09-27. + - `nocodb-sso-is-a-licensed-feature` — same `2026.09.0` image tag → floor 2026-09-01. + - `vetting-an-open-source-dependency-before-you-bet-on-it` — quotes the GitHub API as "last push 2026-09-10" + → floor 2026-09-11. + - `why-chrome-forgets-its-tabs-in-a-container` — the setup table names `Chrome 154` (≈ Oct 2026 on Chrome's + cadence) and the post links back to `scraping-bot-walled-marketplace-warm-browser-session` (2026-09-13) as + something already written → floor 2026-09-13. +- **Still empty, and therefore the spare slots for the next batch:** 2024-10 → 2025-02 (five months) and 2025-04/05. +- **Done when:** ✅ build clean, `lastmod` = 2026-09-29 for all four URLs (EN + ZH), listing order still monotonic + on `/posts/`, the homepage and `/zh/`, both article pages render the historical date. + ### Phase C — Discovery & structure (Tier 2) **Step C1 — Per-post custom OG images (at least for case studies).** diff --git a/src/content/posts/adding-english-mode-to-a-chinese-only-web-app.md b/src/content/posts/adding-english-mode-to-a-chinese-only-web-app.md index 100caed..53ba0fc 100644 --- a/src/content/posts/adding-english-mode-to-a-chinese-only-web-app.md +++ b/src/content/posts/adding-english-mode-to-a-chinese-only-web-app.md @@ -1,7 +1,8 @@ --- title: "No API for Browser Translation: Adding an English Mode to a Chinese-Only Web App" description: "Browsers expose no JavaScript API to trigger translation — and my app declared English while being Chinese. How I injected an English mode at the reverse proxy." -pubDate: 2026-09-29 +pubDate: 2025-06-11 +updatedDate: 2026-09-29 category: engineering tags: ["i18n", "nginx", "vue", "javascript", "self-hosting"] ogImage: "/og/adding-english-mode-to-a-chinese-only-web-app.png" diff --git a/src/content/posts/authentik-forward-auth-gate-wasnt-live.md b/src/content/posts/authentik-forward-auth-gate-wasnt-live.md index 56d86f6..ce52087 100644 --- a/src/content/posts/authentik-forward-auth-gate-wasnt-live.md +++ b/src/content/posts/authentik-forward-auth-gate-wasnt-live.md @@ -1,7 +1,8 @@ --- title: "The Forward-Auth Gate That Verified Perfectly — and Wasn't Live" description: "My authentik forward-auth gate returned a clean 302 to the login page from the host itself, while the public URL still served the app. The hostname had two ingress layers, and I had only changed one." -pubDate: 2026-09-29 +pubDate: 2026-08-12 +updatedDate: 2026-09-29 category: devops tags: ["authentik", "forward-auth", "cloudflare", "nginx", "docker", "self-hosting"] ogImage: /og/authentik-forward-auth-gate-wasnt-live.png diff --git a/src/content/posts/zh/adding-english-mode-to-a-chinese-only-web-app.md b/src/content/posts/zh/adding-english-mode-to-a-chinese-only-web-app.md index 5bf0d3e..3f3cc4e 100644 --- a/src/content/posts/zh/adding-english-mode-to-a-chinese-only-web-app.md +++ b/src/content/posts/zh/adding-english-mode-to-a-chinese-only-web-app.md @@ -1,7 +1,8 @@ --- title: "浏览器翻译没有 API:我给一个纯中文网页应用加上了英文模式" description: "浏览器不提供触发翻译的 JavaScript API,而我的应用明明是中文却声明自己是英文。于是我改用反向代理,把一个英文模式注入进去。" -pubDate: 2026-09-29 +pubDate: 2025-06-11 +updatedDate: 2026-09-29 category: engineering tags: ["i18n", "nginx", "vue", "javascript", "self-hosting"] ogImage: "/og/adding-english-mode-to-a-chinese-only-web-app.png" diff --git a/src/content/posts/zh/authentik-forward-auth-gate-wasnt-live.md b/src/content/posts/zh/authentik-forward-auth-gate-wasnt-live.md index 06da22c..843ac9a 100644 --- a/src/content/posts/zh/authentik-forward-auth-gate-wasnt-live.md +++ b/src/content/posts/zh/authentik-forward-auth-gate-wasnt-live.md @@ -1,7 +1,8 @@ --- title: "验证完全正确的 Forward-Auth 网关——其实并未上线" description: "我的 authentik forward-auth 网关在宿主机上返回了干净的 302 跳转到登录页,公网 URL 却仍然直接服务应用。这个主机名有两条入口层,而我只改了其中一条。" -pubDate: 2026-09-29 +pubDate: 2026-08-12 +updatedDate: 2026-09-29 category: devops tags: ["authentik", "forward-auth", "cloudflare", "nginx", "docker", "self-hosting"] ogImage: /og/authentik-forward-auth-gate-wasnt-live.png