1
0
Fork
You've already forked docs-matrix-spec
0
[WIP] Matrix Spec (MSC) 的中文翻译, 派生自 https://github.com/matrix-org/matrix-spec, 在此查看: https://msc.d10n.wholetrans.org
  • HTML 48.6%
  • Python 19%
  • CSS 12.6%
  • SCSS 11%
  • JavaScript 6.7%
  • Other 2.1%
Find a file
cdn0x12 bd4971e79d
All checks were successful
Deploy / Build and Deploy (push) Successful in 2m17s
Enable analytics
2025年04月21日 07:33:51 +08:00
.github [skip ci] Add deploy ci 2025年04月20日 08:54:41 +08:00
assets Use a proper favicon ( #2001 ) 2024年11月19日 22:08:45 +00:00
attic Add a hyphen between third and party when used as an adjective ( #1447 ) 2023年03月08日 09:58:29 +00:00
changelogs v1.14 2025年03月27日 10:28:55 -06:00
config Enable multilingual support 2025年04月20日 15:29:54 +08:00
content v1.14 2025年03月27日 10:28:55 -06:00
data Add a v6 event format with correct depth limits ( #2114 ) 2025年03月27日 10:23:09 -06:00
data-definitions Update data-definitions 2023年08月22日 12:04:56 -06:00
informal Update idp-brands.md ( #1140 ) 2022年06月30日 15:58:22 -06:00
layouts Enable analytics 2025年04月21日 07:33:51 +08:00
locales/zh-Hans Update translations 2025年04月20日 16:13:37 +08:00
meta Remove unused release_date from Hugo config ( #2042 ) 2025年01月14日 12:34:29 -07:00
packages/npm Create @matrix-org/spec npm package containing sas-emoji.json ( #1620 ) 2023年08月18日 09:56:55 -06:00
scripts Add link to git commit for unstable changelog too ( #2078 ) 2025年03月05日 09:43:27 +00:00
static Update Inter font and set display: swap ( #2000 ) 2024年11月19日 22:01:27 +00:00
.gitignore Optimize generated CSS by removing unused selectors ( #2008 ) 2024年12月10日 22:55:14 +00:00
.htmltest.yml Rename .htmltest.yaml to .htmltest.yml ( #1985 ) 2024年10月28日 14:21:20 +00:00
CONTRIBUTING.rst update DCO, no legal name needed ( #1914 ) 2024年07月25日 17:41:12 -06:00
go.mod Upgrade docsy to 0.11.0 and hugo to 0.139.0 ( #1996 ) 2024年11月19日 21:40:34 +00:00
go.sum Upgrade docsy to 0.11.0 and hugo to 0.139.0 ( #1996 ) 2024年11月19日 21:40:34 +00:00
LICENSE Add a license to the spec 2016年07月12日 17:28:30 +01:00
openapi_extensions.md Rename custom-formats.yaml to string-formats.yaml ( #1977 ) 2024年10月30日 22:30:31 +00:00
package-lock.json Optimize generated CSS by removing unused selectors ( #2008 ) 2024年12月10日 22:55:14 +00:00
package.json Optimize generated CSS by removing unused selectors ( #2008 ) 2024年12月10日 22:55:14 +00:00
postcss.config.js Fix syntax highlighting and click-to-copy buttons for code blocks ( #2049 ) 2025年01月14日 18:34:50 +00:00
README.md Upgrade docsy to 0.11.0 and hugo to 0.139.0 ( #1996 ) 2024年11月19日 21:40:34 +00:00
redocly.yaml Simplify uses of resolve-refs partial ( #1773 ) 2024年04月09日 18:06:53 +01:00

Matrix Specification

This repository contains the Matrix Specification. The current release version is rendered at https://spec.matrix.org, while the latest available build of the main branch is at https://spec.matrix.org/unstable.

Developers looking to use Matrix should join #matrix-dev:matrix.org on Matrix for help.

Spec authors and proposal writers are welcome to join #matrix-spec:matrix.org. We welcome contributions! See CONTRIBUTING.rst for details.

Structure

The Matrix spec is compiled with Hugo (a static site generator) with the following structure:

  • /assets: assets that need postprocessing using Hugo Pipes. For example, Sass files would go here.

  • /content: files that will become pages in the site go here. Typically these are Markdown files with some YAML front matter indicating, among other things, what layout should be applied to this page. The organization of files under /content determines the organization of pages in the built site.

  • /data: this can contain TOML, YAML, or JSON files. Files kept here are directly available to template code as data objects, so templates don't need to load them from a file and parse them. This is also where our OpenAPI definitions and schemas are.

  • /layouts: this contains Hugo templates. Some templates define the overall layout of a page: for example, whether it has header, footer, sidebar, and so on.

    • /layouts/partials: these templates can be called from other templates, so they can be used to factor out template code that's used in more than one template. An obvious example here is something like a sidebar, where several different page layouts might all include the sidebar. But also, partial templates can return values: this means they can be used like functions, that can be called by multiple templates to do some common processing.
    • /layouts/shortcodes: these templates can be called directly from files in /content.
  • /static: static files which don't need preprocessing. JS or CSS files could live here.

  • /themes: you can use just Hugo or use it with a theme. Themes primarily provide additional templates, which are supplied in a /themes/$theme_name/layouts directory. You can use a theme but customise it by providing your own versions of any of the theme layouts in the base /layouts directory. That is, if a theme provides /themes/$theme_name/layouts/sidebar.html and you provide /layouts/sidebar.html, then your version of the template will be used.

It also has the following top-level file:

  • config.toml: site-wide configuration settings. Some of these are built-in and you can add your own. Config settings defined here are available in templates. All these directories above are configurable via config.toml settings.

Additionally, the following directories may be of interest:

  • /attic: Here contains historical sections of specification and legacy drafts for the specification.
  • /changelogs: Various bits of changelog for the specification areas.
  • /data-definitions: Bits of structured data consumable by Matrix implementations.
  • /meta: Documentation relating to the spec's processes that are otherwise untracked (release instructions, etc).
  • /scripts: Various scripts for generating the spec and validating its contents.
  • /packages: Various packages for shipping spec files like OpenAPI bindings and data definitions.

Authoring changes to the spec

Please read CONTRIBUTING.rst before authoring a change to the spec. Note that spec authoring takes place after an MSC has been accepted, not as part of a proposal itself.

  1. Install the extended version (often the OS default) of Hugo: https://gohugo.io/getting-started/installing. Note that at least Hugo v0.123.1 is required.

    Alternatively, use the Docker image at https://hub.docker.com/r/klakegg/hugo/. (The "extended edition" is required to process the SCSS.)

  2. Run npm i to install the dependencies. Note that this will require NodeJS to be installed.

  3. Run npm run get-proposals to seed proposal data. This is merely for populating the content of the "Spec Change Proposals" page and is not required.

  4. Run hugo serve (or docker run --rm -it -v $(pwd):/src -p 1313:1313 klakegg/hugo:ext serve) to run a local webserver which builds whenever a file change is detected. If watching doesn't appear to be working for you, try adding --disableFastRender to the commandline.

  5. Edit the specification 🙂

We use a highly customized Docsy theme for our generated site, which uses Bootstrap and Font Awesome. If you're looking at making design-related changes to the spec site, please coordinate with us in #matrix-docs:matrix.org before opening a PR.

Building the specification

If for some reason you're not a CI/CD system and want to render a static version of the spec for yourself, follow the above steps for authoring changes to the specification and instead of hugo serve run hugo -d "spec" - this will generate the spec to /spec. If you'd like to serve the spec off a path instead of a domain root (eg: /unstable), add --baseURL "/unstable" to the hugo -d "spec" command.

For building the OpenAPI definitions, create a python3 virtualenv and activate it. Then run pip install -r ./scripts/requirements.txt and finally python ./scripts/dump-openapi.py to generate it to ./scripts/openapi/api-docs.json. To make use of the generated file, there are a number of options:

  • You can open ./scripts/openapi-preview.html in your browser, and then open the file by clicking on Local JSON File.
  • You can run a local HTTP server by running ./scripts/openapi-http-server.py, and then view the documentation by opening ./scripts/openapi-preview.html in your browser.

Issue tracking

Specification issues are tracked on github at https://github.com/matrix-org/matrix-spec/issues.

See meta/github-labels.rst for information on what the labels mean.