From 2febc8d9cd22d8e1caa2ae57b24ec0210af373fd Mon Sep 17 00:00:00 2001 From: Toni Seas <83423392+ToniSeas@users.noreply.github.com> Date: Sun, 11 Oct 2026 10:20:06 -0600 Subject: [PATCH 1/4] Rewrite community files to match Udon Test Kit Signed-off-by: Toni Seas <83423392+ToniSeas@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/config.yml | 5 ++ .github/ISSUE_TEMPLATE/doc_issue.yml | 35 ++------ .github/PULL_REQUEST_TEMPLATE.md | 11 --- AGENTS.md | 8 +- CONTRIBUTING.md | 114 +++++++++++++-------------- README.md | 59 ++++---------- SECURITY.md | 22 +++--- docs/core/add-to-your-project.md | 6 +- 8 files changed, 103 insertions(+), 157 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..ebaa089 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: true +contact_links: + - name: Ask a question + url: https://github.com/orgs/tsvrc/discussions + about: Questions go in Discussions, not the issue tracker. diff --git a/.github/ISSUE_TEMPLATE/doc_issue.yml b/.github/ISSUE_TEMPLATE/doc_issue.yml index 1e3ec08..4f15989 100644 --- a/.github/ISSUE_TEMPLATE/doc_issue.yml +++ b/.github/ISSUE_TEMPLATE/doc_issue.yml @@ -1,35 +1,16 @@ name: Documentation issue -description: A page is wrong, unclear, or missing something. +description: A page is wrong, unclear or missing something. labels: [documentation] body: - - type: input - id: page-url - attributes: - label: Page URL - description: The tsvrc.com URL of the page, if it exists yet. - validations: - required: false - - type: input - id: project - attributes: - label: Project - description: Which project's docs this is about (e.g. tsvrc or udon-test-kit). - validations: - required: true - - type: dropdown - id: kind - attributes: - label: What's wrong? - options: - - Incorrect - - Unclear - - Missing - validations: - required: true - type: textarea id: details attributes: - label: Details - description: What's wrong, and what would fix it? + label: What's wrong? + description: What the page says or leaves out, and what would fix it. validations: required: true + - type: input + id: page-url + attributes: + label: Page URL + description: The tsvrc.com address of the page, if it exists. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 38731c5..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,11 +0,0 @@ -## What does this change - - - -## Checklist - -- [ ] Commits are signed off (`git commit -s`) per the [DCO](https://developercertificate.org/) — this certifies you wrote the change or otherwise have the right to submit it under this project's license. -- [ ] If AI tooling helped write part of this PR, that's disclosed in this description (see `CONTRIBUTING.md`), and you've personally reviewed, understood, and checked it renders correctly. -- [ ] `npm run build` passes locally (`onBrokenLinks: 'throw'` catches broken links this way). -- [ ] The change follows `STYLE_GUIDE.md`. -- [ ] If this documents `tsvrc-core` behavior, it matches what the code actually does. diff --git a/AGENTS.md b/AGENTS.md index 2c14abf..0e64939 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -13,8 +13,8 @@ link, which `npm start` doesn't catch. ## Gotchas - `sidebars.ts` is written by hand. A `dirName` pointed at a leaf folder returns an unlabeled flat - list, so a category's `label` comes from its wrapping `{type: 'category', ...}` node, not a + list, so the `label` of a category comes from its wrapping `{type: 'category', ...}` node, not a `_category_.json`. -- Each project's code lives in its own repo (`tsvrc-core`, `udon-test-kit`), and nothing keeps it in - sync with this one. When a project's public behavior changes, check its pages here, and the Core - testing pages too when Udon Test Kit changes. +- The code of each project lives in its own repo (`tsvrc-core`, `udon-test-kit`), and nothing + keeps it in sync with this one. When the public behavior of a project changes, check its pages + here, and the Core testing pages too when Udon Test Kit changes. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d0e51aa..92cc83e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,78 +1,76 @@ # Contributing to TsVRC docs +Fixes, new pages and translations are welcome. Before you add a page or change how the site is +organized, open an issue to agree on it. Questions go in +[GitHub Discussions](https://github.com/orgs/tsvrc/discussions). + ## Setup -- **Node 20+** (see `engines` in `package.json`). -- `npm install`, then `npm start` for a hot-reloading dev server at - `http://localhost:3000`. Config changes (`docusaurus.config.ts`) need a server restart, - content changes don't. -- `npm run build` before calling any doc change done. `onBrokenLinks: 'throw'` means a - broken link fails the build, so this catches mistakes `npm start` won't. +You need Node 20 or later. + +```bash +npm install +npm start +``` + +`npm start` serves the site at `http://localhost:3000` and reloads it when content changes. Restart +it after changing `docusaurus.config.ts`. Before you open a pull request, run `npm run build`: it +builds both languages and fails on a broken link, which `npm start` doesn't catch. Every push to +`main` deploys the site. -## Writing docs +## Writing a page -This site follows the [Diátaxis framework](https://diataxis.fr/) (tutorial / how-to / -reference / explanation) and a house writing style aimed at not reading like AI-generated -prose. Read [STYLE_GUIDE.md](STYLE_GUIDE.md) before writing or editing any page: which of -the four categories a page belongs to, section conventions, linking instead of -duplicating, words/phrases to avoid, sentence shape, formatting rules. +Pages follow the [Diátaxis framework](https://diataxis.fr/) and [STYLE_GUIDE.md](STYLE_GUIDE.md). +Read the style guide before you write or edit a page. A page about a project must match what its +code does. ## Multi-project layout -Each project under the `tsvrc` org gets its own `docs//` folder here rather than -its own docs repo. Adding docs for a new project means adding a folder here and a -matching top-level category in `sidebars.ts`, not creating a new repo. Every project shares -one sidebar, so a category whose label another project already uses, such as "Reference", -needs a unique `key`; without one, the Spanish build fails on a duplicate translation key. -`docs/udon-test-kit/` is set up this way. +Each TsVRC project gets its own `docs//` folder here instead of its own docs repo, plus a +top-level category in `sidebars.ts`. Every project shares one sidebar, so a category whose label +another project already uses, such as "Reference", needs a unique `key`. Without one, the Spanish +build fails on a duplicate translation key. `docs/udon-test-kit/` is set up this way. -A page every project shares, such as [Install a TsVRC package](docs/install-a-package.md), -sits at the root of `docs/` instead. Each project's own install page links to it and adds only -what's specific to that project: the package name, requirements, and how to check that it -worked. +A page every project shares, such as [Install a TsVRC package](docs/install-a-package.md), sits at +the root of `docs/`. Each project install page links to it and adds only what's specific to that +project: the package name, requirements, and how to check that it worked. -A project's docs stand on their own. When one project depends on another, as TsVRC does on -Udon Test Kit, the dependent project's pages link to the other's where a reader needs it, and -the project depended on never mentions its consumers. +The docs of a project stand on their own. When one project depends on another, as Core does on Udon +Test Kit, the dependent project links to the other where a reader needs it, and the project +depended on never mentions its consumers. ## Adding a translation -Docs content stays English-only and unversioned under `docs//`. A translation -lives in a parallel tree at -`i18n//docusaurus-plugin-content-docs/current//`, mirroring the same -relative paths and filenames; adding a language never touches the English files. See -`docs/core/intro.md` and its Spanish counterpart for a worked example to copy. -`src/pages/` translates differently: via `@docusaurus/Translate` in the component source, -with strings in `i18n//code.json`. - -A heading another page links to by anchor needs a stable id that survives translation, -since translating the heading text changes the anchor. The Docusaurus MDX v3 syntax for this -is a comment, not `{#id}`: `## Play Mode tests {/* #play-mode-tests */}`. Sidebar category -labels live in `sidebars.ts` itself, not a translatable file, so they render in English for -every locale regardless of translated content underneath. Don't override the Docusaurus -theme chrome (pagination, admonition labels, sidebar buttons) in this site's own -`code.json`; it ships its own translated defaults per locale. The search plugin -(`@easyops-cn/docusaurus-search-local`) ships no Spanish, so its `theme.SearchBar.*` and -`theme.SearchPage.*` strings are the exception and live in `code.json`. - -Before translating a technical term, check how the target language's own community or -official docs (the localized Unity manual, the GitHub glossary, the VRChat community) actually -render it rather than translating literally. Some terms stay in English even in translated -prose, others have a real idiomatic equivalent that isn't the literal word-for-word choice. -This repo's own code identifiers (`_ts.Memory`, `TsStart`) are never translated, including -inside prose. +English pages live in `docs//`. A translation mirrors the same paths and file names under +`i18n//docusaurus-plugin-content-docs/current//`, so adding a language never +touches the English files. `docs/core/intro.md` and its Spanish counterpart are a worked example. +Pages in `src/pages/` translate through `@docusaurus/Translate` instead, with their strings in +`i18n//code.json`. + +- A heading that another page links to by anchor needs an id that survives translation. In + Docusaurus MDX v3 that's a comment, not `{#id}`: `## Play Mode tests {/* #play-mode-tests */}`. +- Sidebar category labels live in `sidebars.ts`, which isn't translated, so they stay English in + every locale. +- Don't override the Docusaurus theme strings (pagination, admonition labels, sidebar buttons) in + `code.json`: the theme ships its own translations. The search plugin + (`@easyops-cn/docusaurus-search-local`) ships no Spanish, so its `theme.SearchBar.*` and + `theme.SearchPage.*` strings are the exception. +- Before translating a technical term, check how the localized Unity manual, the GitHub glossary + or the VRChat community writes it. Some terms stay in English. Code identifiers such as + `_ts.Memory` and `TsStart` are never translated, in prose either. ## Submitting a pull request -1. Sign off every commit (`git commit -s`) per the [Developer Certificate of - Origin](https://developercertificate.org/). This certifies you wrote the change, or - otherwise have the right to submit it under this project's license (CC BY 4.0 for - docs content, see [README.md](README.md#license) for the code/content split). -2. If AI tooling helped write part of your change, say so in the PR description, briefly. - You're still fully responsible for the contribution, read, understand, and check it - renders correctly before submitting, the same as if you'd written it yourself. -3. Fill in the PR template's checklist and open the PR. Community conduct is covered by - the [org-wide Code of Conduct](https://github.com/tsvrc/.github/blob/main/CODE_OF_CONDUCT.md). +1. Sign off every commit (`git commit -s`) per the + [Developer Certificate of Origin](https://developercertificate.org/). It certifies you wrote the + change, or otherwise have the right to submit it under the CC BY 4.0 license, so only you can + add it, never a tool. A check fails the pull request if any of its commits isn't signed off. +2. If AI tools helped, say which parts and how in the pull request description. You're the author + either way: read, understand and check all of it in the built site before you submit it, and be + ready to explain it in review. A pull request that's mostly unreviewed AI output, and would take + longer to review than it saves, will be closed. +3. Open the pull request, describing what it changes and why. Community conduct is covered by the + [org-wide Code of Conduct](https://github.com/tsvrc/.github/blob/main/CODE_OF_CONDUCT.md). ## Reporting a security vulnerability diff --git a/README.md b/README.md index fadb4a5..629ed81 100644 --- a/README.md +++ b/README.md @@ -3,54 +3,25 @@ [![Deploy](https://github.com/tsvrc/docs/actions/workflows/deploy.yml/badge.svg)](https://github.com/tsvrc/docs/actions/workflows/deploy.yml) [![License: CC BY 4.0](https://img.shields.io/badge/license-CC%20BY%204.0-58a6ff?labelColor=161b22)](LICENSE) -The [Docusaurus](https://docusaurus.io/) site behind [tsvrc.com](https://tsvrc.com), -documenting every project under the `tsvrc` GitHub org. Each project's code lives in its own -repository, such as [`tsvrc/tsvrc-core`](https://github.com/tsvrc/tsvrc-core) for -Core and [`tsvrc/udon-test-kit`](https://github.com/tsvrc/udon-test-kit) for Udon Test -Kit; this repo is docs and content only. - -## Development - -```bash -npm install -npm start -``` - -`npm start` runs a hot-reloading dev server at `http://localhost:3000`. Content changes -reload live; changes to `docusaurus.config.ts` need a server restart. - -```bash -npm run build -``` - -Builds the static site into `build/`. `onBrokenLinks: 'throw'` means a broken internal -link fails this command, so run it before calling a doc change done. - -## Deployment - -Every push to `main` builds and deploys to GitHub Pages automatically via -[`.github/workflows/deploy.yml`](.github/workflows/deploy.yml). There's no manual deploy -step. - -## Support - -Support TsVRC at [tsvrc.com/support](https://tsvrc.com/support). +The [Docusaurus](https://docusaurus.io/) site behind [tsvrc.com](https://tsvrc.com), with the docs +for every TsVRC project. The code of each project lives in its own repository, such as +[tsvrc/tsvrc-core](https://github.com/tsvrc/tsvrc-core) for Core and +[tsvrc/udon-test-kit](https://github.com/tsvrc/udon-test-kit) for Udon Test Kit. ## Contributing -See [CONTRIBUTING.md](CONTRIBUTING.md) for the writing style guide, the multi-project -layout, and how to submit a change. Community conduct is covered by the -[org-wide Code of Conduct](https://github.com/tsvrc/.github/blob/main/CODE_OF_CONDUCT.md), -and [GOVERNANCE.md](https://github.com/tsvrc/.github/blob/main/GOVERNANCE.md) covers how -decisions get made. Found a security issue? See [SECURITY.md](SECURITY.md) rather than -opening a public issue. +Fixes, new pages and translations are welcome. [CONTRIBUTING.md](CONTRIBUTING.md) covers running +the site locally, writing a page, and opening a pull request. Ask questions in +[GitHub Discussions](https://github.com/orgs/tsvrc/discussions) rather than in an issue. -## License +Found a security issue? Follow [SECURITY.md](SECURITY.md) instead of opening a public issue. +Community conduct is covered by the +[org-wide Code of Conduct](https://github.com/tsvrc/.github/blob/main/CODE_OF_CONDUCT.md), and +[GOVERNANCE.md](https://github.com/tsvrc/.github/blob/main/GOVERNANCE.md) covers how decisions get +made. -This repository is licensed under [CC BY 4.0](LICENSE). Code samples embedded in a -project's doc pages (under `docs//`) that are drawn directly from that project's -own repository keep that project's license, not this repository's, since they originate -there. Check the linked project's own `LICENSE` for the specific terms. +## License -The TsVRC name and logo are governed separately, see +CC BY 4.0, see [LICENSE](LICENSE). A code sample taken from a project repository keeps the license +of that project. The TsVRC name and logo are governed separately, see [TRADEMARK.md](https://github.com/tsvrc/.github/blob/main/TRADEMARK.md). diff --git a/SECURITY.md b/SECURITY.md index be8d482..9c2af70 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,22 +2,24 @@ ## Reporting a vulnerability -Don't open a public issue. Use [GitHub private vulnerability -reporting](https://github.com/tsvrc/docs/security/advisories/new) for this repository -instead, so the report isn't visible before a fix is available. +Don't open a public issue. Use +[GitHub private vulnerability reporting](https://github.com/tsvrc/docs/security/advisories/new) +for this repository instead, so the report isn't visible before a fix is available. If that's not accessible to you for some reason, contact [@ToniSeas](https://github.com/ToniSeas) directly. ## Scope -This covers this repository: the Docusaurus site's own code and its dependencies (for -example, a vulnerable npm package, or an XSS-style issue in the site itself). It doesn't -cover `tsvrc-core`, see [that repo's SECURITY.md](https://github.com/tsvrc/tsvrc-core/blob/main/SECURITY.md) -instead. Factually wrong documentation content is a normal bug report, not a security -issue, open a regular issue for that. +This covers the site itself: its code and its npm dependencies, such as a vulnerable package or a +cross-site scripting issue on a page. The code of each project has its own security policy, in its +repository. A page with wrong information is a normal bug, so open an issue for it. + +## Supported versions + +Only the live site, built from `main`, is supported. ## Response -This project is maintained by one person in their spare time. There's no guaranteed -response time or SLA, but security reports get priority over other issues. +This project is maintained by one person in their spare time. There's no guaranteed response time, +but security reports get priority over other issues. diff --git a/docs/core/add-to-your-project.md b/docs/core/add-to-your-project.md index f27a073..a115593 100644 --- a/docs/core/add-to-your-project.md +++ b/docs/core/add-to-your-project.md @@ -21,8 +21,8 @@ Install **TsVRC Core** (`com.tsvrc.core`) as described in Core depends on [Udon Test Kit](/docs/udon-test-kit/intro) (`com.tsvrc.udon-test-kit`) for its testing helpers. The Creator Companion installs it along with Core. With the `.unitypackage`, -import [the kit's](/docs/udon-test-kit/add-to-your-project) too, unless your project already has -it. +import the [Udon Test Kit](/docs/udon-test-kit/add-to-your-project) one too, unless your project +already has the kit. You'll know it worked when the Unity menu bar gains a **Tsvrc** menu. Everything Core does from here runs from there. @@ -31,7 +31,7 @@ from here runs from there. The Core manifest description sums it up: structured initialization, dependency wiring, and editor codegen tooling for building VRChat worlds with UdonSharp. Concretely, the -package compiles as one runtime assembly (`Tsvrc.Runtime`), the base classes your world's +package compiles as one runtime assembly (`Tsvrc.Runtime`), the base classes your world scripts extend and call into, and one editor-only assembly (`Tsvrc.Editor`) holding all the codegen and Configure-window tooling. See [How Core fits together](./core-concepts/how-it-fits-together) for how those two halves relate. From f72737e274b4f7b8eb131cce88029c483f26d3f2 Mon Sep 17 00:00:00 2001 From: Toni Seas <83423392+ToniSeas@users.noreply.github.com> Date: Sun, 11 Oct 2026 10:20:06 -0600 Subject: [PATCH 2/4] Link the name on the homepage to GitHub Signed-off-by: Toni Seas <83423392+ToniSeas@users.noreply.github.com> --- src/components/homepage/Hero.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/components/homepage/Hero.tsx b/src/components/homepage/Hero.tsx index 822712c..c2c14d8 100644 --- a/src/components/homepage/Hero.tsx +++ b/src/components/homepage/Hero.tsx @@ -19,7 +19,15 @@ export default function Hero() {

Toni }}> + values={{ + name: ( + + Toni + + ), + }}> {"Hi, I'm {name}"}

From 2a436d79854929f2a699d71ef304c02f9a7ac30f Mon Sep 17 00:00:00 2001 From: Toni Seas <83423392+ToniSeas@users.noreply.github.com> Date: Sun, 11 Oct 2026 10:23:58 -0600 Subject: [PATCH 3/4] Remove the one-copy warning from the kit install page Signed-off-by: Toni Seas <83423392+ToniSeas@users.noreply.github.com> --- docs/udon-test-kit/add-to-your-project.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/docs/udon-test-kit/add-to-your-project.md b/docs/udon-test-kit/add-to-your-project.md index e73fe71..196f5dc 100644 --- a/docs/udon-test-kit/add-to-your-project.md +++ b/docs/udon-test-kit/add-to-your-project.md @@ -18,17 +18,11 @@ Install the kit in a VRChat world project, then create the test assemblies your ## Install the package Install **Udon Test Kit** (`com.tsvrc.udon-test-kit`) as described in -[Install a TsVRC package](/docs/install-a-package). Its `.unitypackage` is on the kit's -[GitHub releases](https://github.com/tsvrc/udon-test-kit/releases). +[Install a TsVRC package](/docs/install-a-package). Its `.unitypackage` is on the +[releases page](https://github.com/tsvrc/udon-test-kit/releases). You'll know it worked when the Unity menu bar has **Tools > TsVRC > Udon Test Kit**. -:::warning -A project can hold only one copy of the kit. Two copies mean two assemblies named `Tsvrc.UdonTestKit`, -which stop the whole project compiling. Don't import the `.unitypackage` into a project that -already has the kit, including a copy another package installed as its dependency. -::: - ## Create your test assemblies Unity Test Framework finds tests in test assemblies, and the kit creates the three a world needs. From cd1c9ce4f3567eb5f37486a2f4bc00a5bde8057a Mon Sep 17 00:00:00 2001 From: Toni Seas <83423392+ToniSeas@users.noreply.github.com> Date: Sun, 11 Oct 2026 10:55:17 -0600 Subject: [PATCH 4/4] Name Antony Seas as the copyright holder Signed-off-by: Toni Seas <83423392+ToniSeas@users.noreply.github.com> --- README.md | 6 +++--- docusaurus.config.ts | 2 +- i18n/es/docusaurus-theme-classic/footer.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 629ed81..8ab80d8 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,6 @@ made. ## License -CC BY 4.0, see [LICENSE](LICENSE). A code sample taken from a project repository keeps the license -of that project. The TsVRC name and logo are governed separately, see -[TRADEMARK.md](https://github.com/tsvrc/.github/blob/main/TRADEMARK.md). +Copyright 2026 Antony Seas, licensed under CC BY 4.0, see [LICENSE](LICENSE). A code sample taken +from a project repository keeps the license of that project. The TsVRC name and logo are governed +separately, see [TRADEMARK.md](https://github.com/tsvrc/.github/blob/main/TRADEMARK.md). diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 866a7d9..19c394d 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -121,7 +121,7 @@ const config: Config = { to: '/support', }, ], - copyright: `Copyright © ${new Date().getFullYear()} TsVRC. Not affiliated with or endorsed by VRChat Inc.`, + copyright: `Copyright © ${new Date().getFullYear()} Antony Seas. Not affiliated with or endorsed by VRChat Inc.`, }, prism: { theme: prismThemes.github, diff --git a/i18n/es/docusaurus-theme-classic/footer.json b/i18n/es/docusaurus-theme-classic/footer.json index a124e50..452dea0 100644 --- a/i18n/es/docusaurus-theme-classic/footer.json +++ b/i18n/es/docusaurus-theme-classic/footer.json @@ -12,7 +12,7 @@ "description": "The label of footer link with label=Support linking to /support" }, "copyright": { - "message": "Copyright © 2026 TsVRC. No afiliado ni respaldado por VRChat Inc.", + "message": "Copyright © 2026 Antony Seas. No afiliado ni respaldado por VRChat Inc.", "description": "The footer copyright" } } \ No newline at end of file