- Replace the techStack band with project-type capabilities
- Delete the TechStack component and its section type
- Give grid cards an optional status badge
- Pad --big buttons, which Rspress ships with none
- Revise the home, services and products copy
Overriding DocContent took the upstream module out of the bundle, and
with it the `doc.css` it imports as a side effect. Every page rendering
through DocLayout lost its article typography, table scroll container
and heading anchors — while the rest of the theme stayed intact, which
is why only some styles went missing.
The sole reference to the upstream component was a `typeof`, erased at
compile time, so the bundler saw a module it could drop.
- Delegate to the upstream component when a page has no hoisted bands,
which keeps that module and its stylesheet in the dependency graph.
- Move the hoisting variant into its own component, so useScrollAfterNav
is not called after a conditional return. DocContent survives
client-side navigation, so its hook count has to stay constant.
- Add `placement: top|bottom` to the section frontmatter
- Override `DocContent` to render hoisted bands under the page title
- Derive the zebra stripe from list position so split bands stay continuous
- Opt marketing bands out of doc typography with `rp-not-doc`
- Point the legal and privacy contact address at legal@onixbyte.com
- Condense the products pages' body copy into their section frontmatter
The site exists to be read, not reused. It is no longer licensed for
anything, and external contributions have moved to issues only.
- Replace the MIT + CC-BY-4.0 dual licence with an all-rights-reserved
notice. No permission is granted to copy, modify or distribute any part
of the repository; reading and linking stay free.
- Carve out third-party components explicitly. Rspress, React, Rsbuild and
Tailwind CSS keep their own licences, and an all-rights-reserved notice
that did not say so would be wrong.
- Rewrite CONTRIBUTING around issues rather than pull requests, and say
plainly that PRs will be closed without review.
- Mark the package UNLICENSED, the npm convention for proprietary code.
Note: this makes the repository source-available, not open source — a
licence that forbids all reuse cannot meet the OSI definition. The README
no longer calls it open source.
Closing PRs for real also needs the "Pull requests" feature switched off
in the repository's GitHub settings; that is not something this commit can
do.
The .cn site exists for Chinese readers, so the unprefixed routes should
serve Chinese there. Rspress omits the prefix for the default locale, so
this also moves the routes:
.com .cn
English / /en-gb/
Chinese /zh-hans/ /
- Make the default locale a per-target value rather than a constant, and
move the localePrefix helper inside createConfig so a prefix can no
longer be hardcoded elsewhere.
- Build the sitemap priority map from localePrefix. The keys are full
route paths, so the previous hardcoded "/zh-hans/..." entries would
have silently stopped matching on .cn.
- Widen the nav Home activeMatch to cover either prefixed home, since the
two targets put a different locale behind the prefix.
Note: README.md also carries the licence wording changed in the next
commit — a single file's hunks cannot be split non-interactively.
These files were already out of step with the project's Prettier config
before this branch of work; running `pnpm format` finally swept them up.
No semantic changes.
Kept separate from the functional commits so the reformatting does not
bury them in diff noise.
Both URLs in the tip were dead. The GitHub one referenced an account that
does not exist, and the Gitea one is retired.
Point at the upstream SCWS project instead, and stop promising a
pre-built Windows binary — upstream publishes source only, and the 1.2.3
the dead link referenced was OnixByte's own build.
- 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 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.
Replace Rspress documentation template with an organization homepage
featuring OnixByte's key projects: Toolbox, Dev Lab, Helix, and Delta
Force Guide. Bilingual content for en-gb and zh-hans.