- Add /products/, covering the one product actually in service. It is
written to match reality rather than padded out to look like a matrix.
- Add /services/, describing the work taken on and, deliberately, the
work that is not a good fit.
- Add the privacy policy and terms, linked from the footer. Both describe
what the site actually does — no cookies, no analytics — and carry
TODO notes for the parts needing legal review.
The old hero described a small open-source collective crafting tools for
developers, which no longer matches what the company sells.
- Replace the tagline with a value proposition and point the hero actions
at Services and Products instead of the GitHub organisation.
- Add four content bands: why us, the technology we use, selected work
and a contact band with an email address and WeChat QR.
- Point the feature cards at GitHub, and fix a dead link in the process:
delta-force-guide is now ahsarah-guide.
The old nav used bare lowercase slugs and leaned on filesystem order for
every sidebar.
- Replace the three existing nav entries with six labelled ones, keyed
through i18n.json so both locales resolve to their own text from
identical _nav.json files.
- Add _meta.json for blogs and opensource-projects, grouping entries by
topic instead of leaving them alphabetical.
- Rename the Blogs and Notifications pages so their titles match the nav
labels (Insights and News).
- Point the notification page's account-settings link at GitHub, as the
Gitea instance it referenced is retired.
- Split the config into a createConfig(target) factory plus a thin .cn
wrapper, so the two deployments differ in one place. The .cn build
points canonical, hreflang, og:url, sitemap and robots at that origin,
and omits social links that are not reachable from mainland China.
- Generate sitemap.xml and robots.txt per target. robots.txt is written
at build time because one static file cannot carry the right origin for
both domains.
- Emit per-page canonical, hreflang and Open Graph tags. og:title and
friends are left to the theme, which already emits them and does not
de-duplicate against site-level head entries.
- Redirect the retired /projects/ paths on Vercel, before the CN redirect
so those visitors get a single hop.
- Add SiteFooter, rendered through the Layout bottom slot so it appears on
every page type. themeConfig.footer is deliberately left unset: setting
it would render the built-in HomeFooter as well, on the home page only.
- Add a frontmatter-driven section system (advantages, contentGrid,
techStack, cases and cta) with a single ordered array, so bands can be
reordered or removed without touching code.
- Bands render only when they have content, so an unfilled page degrades
to its heading rather than showing empty boxes.
- Add a SHOW_COPY_PLACEHOLDERS flag for drafting, false by default.
Frees /products/ for the product page and makes the open-source archive
explicit, rather than leaving two sections that both look like "projects".
- Move the directory in both locales and update the 18 internal links
pointing into it.
- Rework helix for the GitHub layout: server/ and web/ are directories in
a single repository there, not the two separate repositories Gitea had.
The "fork both repositories" step and the section wording follow.
- Correct helix's stated Java version to 21, which is what the build
actually targets.
- Pin TypeScript as a direct dependency. It was only present transitively
via typescript-eslint, so nothing enforced tsconfig.json and nine
latent type errors had gone unnoticed.
- Add `pnpm typecheck` (`tsc --noEmit`) and document it.
- Add .npmrc with engine-strict, so the declared Node and pnpm ranges
are actually enforced.
- Ignore doc_build/ in ESLint. It was unignored and reported 1650 errors
from build output, which made lint unusable as a gate.
- Refresh README, CLAUDE.md, AGENTS.md and CONTRIBUTING.md to match the
current structure, build targets and navigation rules.
Both pipelines are unused — GitLab CI is no longer in use, and the Gitea
workflow was never enabled. Deployment is currently run by hand, so no
replacement automation is added here.
- Add @JsonUnwrapped and @JsonAnyGetter usage examples with code
- Include comparison table for choosing between annotations
- Sync content across zh-hans and en-gb versions
- Add en-gb and zh-hans project pages covering installation, usage, and marketplace creation
- Add CCSM entry to projects index under new Developer Tools section
Add a Kbd component with macOS special key support (⌘, ⌥, ⌃, ⇧, etc.),
export it from theme/index.tsx for use in MDX files.
Add blog posts (EN + ZH) documenting the IntelliJ IDEA application.yaml
schema validation bug caused by an overly broad fileMatch pattern in
SchemaStore, along with the quick fix.
Add English and Chinese docs for the OnixByte Toolbox monorepo covering
all six modules: common-toolbox, crypto-toolbox, math-toolbox, tuple,
identity-generator, and version-catalogue.
Add English and Chinese docs for the Delta Force Guide full-stack app
(Spring Boot backend + React frontend) with architecture, API reference,
and live site link.