mirror of
https://github.com/matrix-org/matrix-spec
synced 2026-04-28 05:14:10 +02:00
Compare commits
11 commits
635bbcd0b0
...
1df058a909
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1df058a909 | ||
|
|
fa78688f57 | ||
|
|
2cc7e13c09 | ||
|
|
70c7d59caa | ||
|
|
43c65786eb | ||
|
|
f2b68c7163 | ||
|
|
fb2221aad7 | ||
|
|
5a9f3c3bca | ||
|
|
690c41e33b | ||
|
|
d55acfda2e | ||
|
|
2f6867348f |
80
.github/workflows/main.yml
vendored
80
.github/workflows/main.yml
vendored
|
|
@ -195,6 +195,8 @@ jobs:
|
||||||
needs: [calculate-baseurl, build-openapi, generate-changelog]
|
needs: [calculate-baseurl, build-openapi, generate-changelog]
|
||||||
# run even if generate-changelog was skipped
|
# run even if generate-changelog was skipped
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
|
env:
|
||||||
|
baseURL: "${{ needs.calculate-baseurl.outputs.baseURL }}"
|
||||||
steps:
|
steps:
|
||||||
- name: "➕ Setup Node"
|
- name: "➕ Setup Node"
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
|
|
@ -217,8 +219,10 @@ jobs:
|
||||||
with:
|
with:
|
||||||
name: changelog-artifact
|
name: changelog-artifact
|
||||||
path: content/changelog
|
path: content/changelog
|
||||||
|
|
||||||
- name: "⚙️ hugo"
|
- name: "⚙️ hugo"
|
||||||
run: hugo --baseURL "${{ needs.calculate-baseurl.outputs.baseURL }}" -d "spec"
|
run: hugo --baseURL "${baseURL}" -d "spec${baseURL}"
|
||||||
|
|
||||||
# We manually unpack the spec OpenAPI definition JSON to the website tree
|
# We manually unpack the spec OpenAPI definition JSON to the website tree
|
||||||
# to make it available to the world in a canonical place:
|
# to make it available to the world in a canonical place:
|
||||||
# https://spec.matrix.org/latest/client-server-api/api.json
|
# https://spec.matrix.org/latest/client-server-api/api.json
|
||||||
|
|
@ -229,10 +233,13 @@ jobs:
|
||||||
name: openapi-artifact
|
name: openapi-artifact
|
||||||
- name: "📝 Unpack the OpenAPI definitions in the right location"
|
- name: "📝 Unpack the OpenAPI definitions in the right location"
|
||||||
run: |
|
run: |
|
||||||
tar -xzf openapi.tar.gz
|
tar -C "spec${baseURL}" --strip-components=1 -xzf openapi.tar.gz
|
||||||
|
|
||||||
- name: "📦 Tarball creation"
|
- name: "📦 Tarball creation"
|
||||||
run: tar -czf spec.tar.gz spec
|
run: |
|
||||||
|
cd spec
|
||||||
|
tar -czf ../spec.tar.gz *
|
||||||
|
|
||||||
- name: "📤 Artifact upload"
|
- name: "📤 Artifact upload"
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
|
|
@ -243,6 +250,14 @@ jobs:
|
||||||
name: "🔎 Validate generated HTML"
|
name: "🔎 Validate generated HTML"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [calculate-baseurl, build-spec]
|
needs: [calculate-baseurl, build-spec]
|
||||||
|
# Run even if `generate-changelog` was skipped.
|
||||||
|
#
|
||||||
|
# `build-spec` has a dependency on `generate-changelog` to ensure order of execution
|
||||||
|
# and to access `needs.generate-changelog.result`. However, `generate-changelog` is
|
||||||
|
# skipped on tag builds; even a transient dependency on `generate-changelog` is then
|
||||||
|
# enough for this step to also be skipped by default on tag builds. Hence the need for
|
||||||
|
# this explicit `if`.
|
||||||
|
if: ${{ !failure() && !cancelled() }}
|
||||||
steps:
|
steps:
|
||||||
- name: "📥 Source checkout"
|
- name: "📥 Source checkout"
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
@ -253,14 +268,9 @@ jobs:
|
||||||
name: spec-artifact
|
name: spec-artifact
|
||||||
|
|
||||||
- name: "📝 Unpack the spec"
|
- name: "📝 Unpack the spec"
|
||||||
# we have to unpack it into the right path given the baseurl, so that the
|
|
||||||
# links are correct.
|
|
||||||
# eg if baseurl is `/unstable`, we want to put the site in `spec/unstable`.
|
|
||||||
run: |
|
run: |
|
||||||
mkdir -p "spec${baseURL}"
|
mkdir spec
|
||||||
tar -C "spec${baseURL}" --strip-components=1 -xvzf spec.tar.gz
|
tar -C spec -xvzf spec.tar.gz
|
||||||
env:
|
|
||||||
baseURL: "${{ needs.calculate-baseurl.outputs.baseURL }}"
|
|
||||||
|
|
||||||
- name: "Run htmltest"
|
- name: "Run htmltest"
|
||||||
uses: wjdp/htmltest-action@master
|
uses: wjdp/htmltest-action@master
|
||||||
|
|
@ -270,8 +280,10 @@ jobs:
|
||||||
build-historical-spec:
|
build-historical-spec:
|
||||||
name: "📖 Build the historical backup spec"
|
name: "📖 Build the historical backup spec"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [build-openapi]
|
needs: [calculate-baseurl, build-openapi]
|
||||||
if: ${{ startsWith(github.ref, 'refs/tags/') }}
|
if: ${{ startsWith(github.ref, 'refs/tags/') }}
|
||||||
|
env:
|
||||||
|
baseURL: "${{ needs.calculate-baseurl.outputs.baseURL }}"
|
||||||
steps:
|
steps:
|
||||||
- name: "➕ Setup Node"
|
- name: "➕ Setup Node"
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
|
|
@ -291,9 +303,8 @@ jobs:
|
||||||
- name: "⚙️ hugo"
|
- name: "⚙️ hugo"
|
||||||
env:
|
env:
|
||||||
HUGO_PARAMS_VERSION_STATUS: "historical"
|
HUGO_PARAMS_VERSION_STATUS: "historical"
|
||||||
# Create a baseURL like `/v1.2` out of the `v1.2` tag
|
|
||||||
run: |
|
run: |
|
||||||
hugo --baseURL "/${GITHUB_REF/refs\/tags\//}" -d "spec"
|
hugo --baseURL "${baseURL}" -d "spec${baseURL}"
|
||||||
|
|
||||||
- name: "📥 Spec definition download"
|
- name: "📥 Spec definition download"
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
|
|
@ -301,12 +312,51 @@ jobs:
|
||||||
name: openapi-artifact
|
name: openapi-artifact
|
||||||
- name: "📝 Unpack the OpenAPI definitions in the right location"
|
- name: "📝 Unpack the OpenAPI definitions in the right location"
|
||||||
run: |
|
run: |
|
||||||
tar -xzf openapi.tar.gz
|
tar -C "spec${baseURL}" --strip-components=1 -xzf openapi.tar.gz
|
||||||
|
|
||||||
- name: "📦 Tarball creation"
|
- name: "📦 Tarball creation"
|
||||||
run: tar -czf spec-historical.tar.gz spec
|
run: |
|
||||||
|
cd spec
|
||||||
|
tar -czf ../spec-historical.tar.gz *
|
||||||
|
|
||||||
- name: "📤 Artifact upload"
|
- name: "📤 Artifact upload"
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: spec-historical-artifact
|
name: spec-historical-artifact
|
||||||
path: spec-historical.tar.gz
|
path: spec-historical.tar.gz
|
||||||
|
|
||||||
|
# If we're building a tag, create a release and publish the artifacts
|
||||||
|
create_release:
|
||||||
|
name: "Create release"
|
||||||
|
if: ${{ !failure() && !cancelled() && startsWith(github.ref, 'refs/tags/') }}
|
||||||
|
needs:
|
||||||
|
- build-spec
|
||||||
|
- build-historical-spec
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: "📥 Check out changelogs"
|
||||||
|
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
||||||
|
with:
|
||||||
|
sparse-checkout: |
|
||||||
|
content/changelog
|
||||||
|
- name: "📥 Download built spec"
|
||||||
|
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
|
||||||
|
with:
|
||||||
|
name: spec-artifact
|
||||||
|
- name: "📥 Download historical spec artifact"
|
||||||
|
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
|
||||||
|
with:
|
||||||
|
name: spec-historical-artifact
|
||||||
|
- name: "✨ Create draft release"
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: |
|
||||||
|
# Remove front-matter from changelog
|
||||||
|
sed '1,/^---$/d' "content/changelog/${{ github.ref_name }}.md" > changelog.md
|
||||||
|
|
||||||
|
# Create a draft release, using the changelog as release notes, and attaching the spec artifacts.
|
||||||
|
gh release create -d -t "${{ github.ref_name }}" \
|
||||||
|
-F "changelog.md" \
|
||||||
|
"${{ github.ref_name }}" \
|
||||||
|
spec.tar.gz \
|
||||||
|
spec-historical.tar.gz
|
||||||
|
|
|
||||||
4
.github/workflows/netlify.yaml
vendored
4
.github/workflows/netlify.yaml
vendored
|
|
@ -45,7 +45,9 @@ jobs:
|
||||||
name: spec-artifact
|
name: spec-artifact
|
||||||
|
|
||||||
- name: "📦 Extract Artifacts"
|
- name: "📦 Extract Artifacts"
|
||||||
run: tar -xzvf spec.tar.gz && rm spec.tar.gz
|
run: |
|
||||||
|
mkdir spec
|
||||||
|
tar -C spec -xzvf spec.tar.gz && rm spec.tar.gz
|
||||||
|
|
||||||
- name: "📤 Deploy to Netlify"
|
- name: "📤 Deploy to Netlify"
|
||||||
id: netlify
|
id: netlify
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Update non-historic mentions of matrix-doc repo to matrix-spec/-proposals. Contributed by @HarHarLinks.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Remove unintended TeX formatting. Contributed by @HarHarLinks.
|
||||||
1
changelogs/client_server/newsfragments/2291.feature
Normal file
1
changelogs/client_server/newsfragments/2291.feature
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Add `m.recent_emoji` account data event to track recently used emoji as per [MSC4356](https://github.com/matrix-org/matrix-spec-proposals/pull/4356).
|
||||||
1
changelogs/internal/newsfragments/2222.clarification
Normal file
1
changelogs/internal/newsfragments/2222.clarification
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Clarify vendor prefixing requirements.
|
||||||
1
changelogs/internal/newsfragments/2275.clarification
Normal file
1
changelogs/internal/newsfragments/2275.clarification
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Auto-create draft releases when building release tags.
|
||||||
1
changelogs/internal/newsfragments/2276.feature
Normal file
1
changelogs/internal/newsfragments/2276.feature
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Include the spec release version in the filenames in the tarballs generated by CI.
|
||||||
1
changelogs/internal/newsfragments/2282.clarification
Normal file
1
changelogs/internal/newsfragments/2282.clarification
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Replace the Twitter link in the footer with our BlueSky and Mastodon socials.
|
||||||
1
changelogs/internal/newsfragments/2289.clarification
Normal file
1
changelogs/internal/newsfragments/2289.clarification
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Updates to the release documentation.
|
||||||
1
changelogs/internal/newsfragments/2290.clarification
Normal file
1
changelogs/internal/newsfragments/2290.clarification
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Remove unused leftover CSS files.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Specify that callers of `/_matrix/federation/v1/openid/userinfo` must validate the returned user ID.
|
||||||
|
|
@ -106,25 +106,30 @@ sidebar_menu_compact = true
|
||||||
# desc = "Matrix on GitHub"
|
# desc = "Matrix on GitHub"
|
||||||
# Custom links shown in the center of the footer. (Only supported by our fork of docsy's 'footer/central' partial.)
|
# Custom links shown in the center of the footer. (Only supported by our fork of docsy's 'footer/central' partial.)
|
||||||
[[params.links.bottom]]
|
[[params.links.bottom]]
|
||||||
name = "GitHub"
|
name = "GitHub"
|
||||||
url = "https://github.com/matrix-org"
|
url = "https://github.com/matrix-org"
|
||||||
icon = "fab fa-github"
|
icon = "fab fa-github"
|
||||||
desc = "Matrix on GitHub"
|
desc = "Matrix on GitHub"
|
||||||
[[params.links.bottom]]
|
[[params.links.bottom]]
|
||||||
name = "GitLab"
|
name = "GitLab"
|
||||||
url = "https://gitlab.matrix.org/matrix-org"
|
url = "https://gitlab.matrix.org/matrix-org"
|
||||||
icon = "fab fa-gitlab"
|
icon = "fab fa-gitlab"
|
||||||
desc = "Matrix on GitLab"
|
desc = "Matrix on GitLab"
|
||||||
[[params.links.bottom]]
|
[[params.links.bottom]]
|
||||||
name = "YouTube"
|
name = "YouTube"
|
||||||
url = "https://www.youtube.com/channel/UCVFkW-chclhuyYRbmmfwt6w"
|
url = "https://www.youtube.com/channel/UCVFkW-chclhuyYRbmmfwt6w"
|
||||||
icon = "fab fa-youtube"
|
icon = "fab fa-youtube"
|
||||||
desc = "Matrix YouTube channel"
|
desc = "Matrix YouTube channel"
|
||||||
[[params.links.bottom]]
|
[[params.links.bottom]]
|
||||||
name = "Twitter"
|
name = "Mastodon"
|
||||||
url = "https://twitter.com/matrixdotorg"
|
url = "https://mastodon.matrix.org/@matrix"
|
||||||
icon = "fab fa-x-twitter"
|
icon = "fab fa-mastodon"
|
||||||
desc = "Matrix on Twitter"
|
desc = "Matrix on Mastodon"
|
||||||
|
[[params.links.bottom]]
|
||||||
|
name = "Bluesky"
|
||||||
|
url = "https://bsky.app/profile/matrix.org"
|
||||||
|
icon = "fab fa-bluesky"
|
||||||
|
desc = "Matrix on Bluesky"
|
||||||
|
|
||||||
|
|
||||||
# configuration for the hugo development server
|
# configuration for the hugo development server
|
||||||
|
|
|
||||||
|
|
@ -3898,6 +3898,7 @@ that profile.
|
||||||
| [Guest Access](#guest-access) | Optional | Optional | Optional | Optional | Optional |
|
| [Guest Access](#guest-access) | Optional | Optional | Optional | Optional | Optional |
|
||||||
| [Moderation Policy Lists](#moderation-policy-lists) | Optional | Optional | Optional | Optional | Optional |
|
| [Moderation Policy Lists](#moderation-policy-lists) | Optional | Optional | Optional | Optional | Optional |
|
||||||
| [OpenID](#openid) | Optional | Optional | Optional | Optional | Optional |
|
| [OpenID](#openid) | Optional | Optional | Optional | Optional | Optional |
|
||||||
|
| [Recently used emoji](#recently-used-emoji) | Optional | Optional | Optional | Optional | Optional |
|
||||||
| [Reference Relations](#reference-relations) | Optional | Optional | Optional | Optional | Optional |
|
| [Reference Relations](#reference-relations) | Optional | Optional | Optional | Optional | Optional |
|
||||||
| [Reporting Content](#reporting-content) | Optional | Optional | Optional | Optional | Optional |
|
| [Reporting Content](#reporting-content) | Optional | Optional | Optional | Optional | Optional |
|
||||||
| [Rich replies](#rich-replies) | Optional | Optional | Optional | Optional | Optional |
|
| [Rich replies](#rich-replies) | Optional | Optional | Optional | Optional | Optional |
|
||||||
|
|
@ -3999,5 +4000,6 @@ systems.
|
||||||
{{% cs-module name="Spaces" filename="spaces" %}}
|
{{% cs-module name="Spaces" filename="spaces" %}}
|
||||||
{{% cs-module name="Event replacements" filename="event_replacements" %}}
|
{{% cs-module name="Event replacements" filename="event_replacements" %}}
|
||||||
{{% cs-module name="Event annotations and reactions" filename="event_annotations" %}}
|
{{% cs-module name="Event annotations and reactions" filename="event_annotations" %}}
|
||||||
|
{{% cs-module name="Recently used emoji" filename="recent_emoji" %}}
|
||||||
{{% cs-module name="Threading" filename="threading" %}}
|
{{% cs-module name="Threading" filename="threading" %}}
|
||||||
{{% cs-module name="Reference relations" filename="reference_relations" %}}
|
{{% cs-module name="Reference relations" filename="reference_relations" %}}
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ Matrix 1.12 is expected to be released in the July-September 2024 calendar quart
|
||||||
The homeserver SHOULD be able to supply thumbnails for uploaded images
|
The homeserver SHOULD be able to supply thumbnails for uploaded images
|
||||||
and videos. The exact file types which can be thumbnailed are not
|
and videos. The exact file types which can be thumbnailed are not
|
||||||
currently specified - see [Issue
|
currently specified - see [Issue
|
||||||
\#1938](https://github.com/matrix-org/matrix-doc/issues/1938) for more
|
\#1938](https://github.com/matrix-org/matrix-spec/issues/453) for more
|
||||||
information.
|
information.
|
||||||
|
|
||||||
The thumbnail methods are "crop" and "scale". "scale" tries to return an
|
The thumbnail methods are "crop" and "scale". "scale" tries to return an
|
||||||
|
|
|
||||||
|
|
@ -921,7 +921,7 @@ collaborate to create a common set of translations for all languages.
|
||||||
|
|
||||||
{{% boxes/note %}}
|
{{% boxes/note %}}
|
||||||
Known translations for the emoji are available from
|
Known translations for the emoji are available from
|
||||||
<https://github.com/matrix-org/matrix-doc/blob/master/data-definitions/>
|
<https://github.com/matrix-org/matrix-spec/tree/main/data-definitions/>
|
||||||
and can be translated online:
|
and can be translated online:
|
||||||
<https://translate.riot.im/projects/matrix-doc/sas-emoji-v1>
|
<https://translate.riot.im/projects/matrix-doc/sas-emoji-v1>
|
||||||
{{% /boxes/note %}}
|
{{% /boxes/note %}}
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ Clients SHOULD verify the structure of incoming events to ensure that
|
||||||
the expected keys exist and that they are of the right type. Clients can
|
the expected keys exist and that they are of the right type. Clients can
|
||||||
discard malformed events or display a placeholder message to the user.
|
discard malformed events or display a placeholder message to the user.
|
||||||
Redacted `m.room.message` events MUST be removed from the client. This
|
Redacted `m.room.message` events MUST be removed from the client. This
|
||||||
can either be replaced with placeholder text (e.g. "\[REDACTED\]") or
|
can either be replaced with placeholder text (e.g. "[REDACTED]") or
|
||||||
the redacted message can be removed entirely from the messages view.
|
the redacted message can be removed entirely from the messages view.
|
||||||
|
|
||||||
Events which have attachments (e.g. `m.image`, `m.file`) SHOULD be
|
Events which have attachments (e.g. `m.image`, `m.file`) SHOULD be
|
||||||
|
|
|
||||||
40
content/client-server-api/modules/recent_emoji.md
Normal file
40
content/client-server-api/modules/recent_emoji.md
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
### Recently used emoji
|
||||||
|
|
||||||
|
{{% added-in v="1.18" %}}
|
||||||
|
|
||||||
|
This module enables clients to track a user's cumulated emoji usage across different
|
||||||
|
devices. The data is stored in the [`m.recent_emoji`](#mrecent_emoji)
|
||||||
|
global [account data](#client-config) and can, among other things, be used to
|
||||||
|
generate recommendations in emoji pickers.
|
||||||
|
|
||||||
|
#### Events
|
||||||
|
|
||||||
|
{{% event event="m.recent_emoji" %}}
|
||||||
|
|
||||||
|
#### Client behaviour
|
||||||
|
|
||||||
|
What exactly constitutes trackable emoji usage is left as an implementation detail
|
||||||
|
for clients. It is RECOMMENDED to include sending emoji in both messages and
|
||||||
|
annotations.
|
||||||
|
|
||||||
|
When an emoji is used, the sending client moves (or adds) it to the beginning of
|
||||||
|
the `recent_emoji` array and increments (or initializes) its counter. This keeps
|
||||||
|
the array ordered by last usage time which facilitates evaluating the data. How
|
||||||
|
exactly the client evaluates and uses the collected data is deliberately left
|
||||||
|
unspecified.
|
||||||
|
|
||||||
|
To prevent excessive growth of the event as new emoji are being used, clients
|
||||||
|
SHOULD limit the length of the `recent_emoji` array by dropping elements from
|
||||||
|
its end. A RECOMMENDED maximum length is 100 emoji.
|
||||||
|
|
||||||
|
To enable future extension, clients MUST tolerate and preserve array elements
|
||||||
|
within `recent_emoji` regardless of whether they understand or support the
|
||||||
|
contained `emoji` value. This means ignoring entries with unrecognised values
|
||||||
|
of `emoji` when deciding what to display to the user while retaining them when
|
||||||
|
modifying the array (unless the modification is for truncation).
|
||||||
|
|
||||||
|
To prevent undefined behavior, clients SHOULD remove array elements that
|
||||||
|
don't conform to the event schema such as elements with negative counters.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -408,41 +408,9 @@ development or testing data.
|
||||||
that a particular MSC works) do not have to follow this process.
|
that a particular MSC works) do not have to follow this process.
|
||||||
|
|
||||||
1. Have an idea for a feature.
|
1. Have an idea for a feature.
|
||||||
1. Implement the feature using unstable endpoints, vendor prefixes, and
|
1. Implement the feature using [unstable endpoints, vendor prefixes, and
|
||||||
unstable feature flags as appropriate.
|
unstable feature flags](#unstable-endpoints-features-and-vendor-prefixes)
|
||||||
- When using unstable endpoints, they MUST include a vendor
|
as appropriate.
|
||||||
prefix. For example:
|
|
||||||
`/_matrix/client/unstable/com.example/login`. Vendor prefixes
|
|
||||||
throughout Matrix always use the Java package naming convention.
|
|
||||||
The MSC for the feature should identify which preferred vendor
|
|
||||||
prefix is to be used by early adopters.
|
|
||||||
- Note that unstable namespaces do not automatically inherit
|
|
||||||
endpoints from stable namespaces: for example, the fact that
|
|
||||||
`/_matrix/client/r0/sync` exists does not imply that
|
|
||||||
`/_matrix/client/unstable/com.example/sync` exists.
|
|
||||||
- If the client needs to be sure the server supports the feature,
|
|
||||||
an unstable feature flag that MUST be vendor prefixed is to be
|
|
||||||
used. This kind of flag shows up in the `unstable_features`
|
|
||||||
section of `/versions` as, for example, `com.example.new_login`.
|
|
||||||
The MSC for the feature should identify which preferred feature
|
|
||||||
flag is to be used by early adopters.
|
|
||||||
- When using this approach correctly, the implementation can
|
|
||||||
ship/release the feature at any time, so long as the
|
|
||||||
implementation is able to accept the technical debt that results
|
|
||||||
from needing to provide adequate backwards and forwards
|
|
||||||
compatibility. The implementation MUST support the flag (and
|
|
||||||
server-side implementation) disappearing and be generally safe
|
|
||||||
for users. Note that implementations early in the MSC review
|
|
||||||
process may also be required to provide backwards compatibility
|
|
||||||
with earlier editions of the proposal.
|
|
||||||
- If the implementation cannot support the technical debt (or if
|
|
||||||
it's impossible to provide forwards/backwards compatibility -
|
|
||||||
e.g. a user authentication change which can't be safely rolled
|
|
||||||
back), the implementation should not attempt to implement the
|
|
||||||
feature and should instead wait for a spec release.
|
|
||||||
- If at any point after early release, the idea changes in a
|
|
||||||
backwards-incompatible way, the feature flag should also change
|
|
||||||
so that implementations can adapt as needed.
|
|
||||||
1. In parallel, or ahead of implementation, open an MSC and solicit
|
1. In parallel, or ahead of implementation, open an MSC and solicit
|
||||||
review per above.
|
review per above.
|
||||||
1. Before FCP can be called, the Spec Core Team will require evidence
|
1. Before FCP can be called, the Spec Core Team will require evidence
|
||||||
|
|
@ -452,10 +420,7 @@ that a particular MSC works) do not have to follow this process.
|
||||||
forwards/backwards compatibility concerns mentioned here.
|
forwards/backwards compatibility concerns mentioned here.
|
||||||
1. The FCP process is completed, and assuming nothing is flagged the
|
1. The FCP process is completed, and assuming nothing is flagged the
|
||||||
MSC lands.
|
MSC lands.
|
||||||
1. Implementations can now switch to using stable prefixes
|
1. Implementations can now switch to using stable prefixes, assuming that the change
|
||||||
(for example, for an endpoint, moving from
|
|
||||||
`/unstable/org.matrix.mscxxxx/frobnicate`
|
|
||||||
to `/v1/frobnicate`), assuming that the change
|
|
||||||
is backwards compatible with older implementations. In the rare occasion
|
is backwards compatible with older implementations. In the rare occasion
|
||||||
where backwards compatibility is not possible without a new spec release,
|
where backwards compatibility is not possible without a new spec release,
|
||||||
implementations should continue to use unstable prefixes.
|
implementations should continue to use unstable prefixes.
|
||||||
|
|
@ -471,13 +436,6 @@ that a particular MSC works) do not have to follow this process.
|
||||||
started supporting the new spec release, some noise should be raised
|
started supporting the new spec release, some noise should be raised
|
||||||
in the general direction of the implementation.
|
in the general direction of the implementation.
|
||||||
|
|
||||||
{{% boxes/note %}}
|
|
||||||
MSCs MUST still describe what the stable endpoints/feature looks like
|
|
||||||
with a note towards the bottom for what the unstable feature
|
|
||||||
flag/prefixes are. For example, an MSC would propose `/_matrix/client/r0/new/endpoint`, not `/_matrix/client/unstable/
|
|
||||||
com.example/new/endpoint`.
|
|
||||||
{{% /boxes/note %}}
|
|
||||||
|
|
||||||
In summary:
|
In summary:
|
||||||
|
|
||||||
- Implementations MUST NOT use stable endpoints before the MSC has
|
- Implementations MUST NOT use stable endpoints before the MSC has
|
||||||
|
|
@ -489,14 +447,90 @@ In summary:
|
||||||
- Implementations SHOULD be wary of the technical debt they are
|
- Implementations SHOULD be wary of the technical debt they are
|
||||||
incurring by moving faster than the spec.
|
incurring by moving faster than the spec.
|
||||||
- The vendor prefix is chosen by the developer of the feature, using
|
- The vendor prefix is chosen by the developer of the feature, using
|
||||||
the Java package naming convention. The foundation's preferred
|
the Java package naming convention.
|
||||||
vendor prefix is `org.matrix`.
|
|
||||||
- The vendor prefixes, unstable feature flags, and unstable endpoints
|
- The vendor prefixes, unstable feature flags, and unstable endpoints
|
||||||
should be included in the MSC, though the MSC MUST be written in a
|
should be included in the MSC, though the MSC MUST be written in a
|
||||||
way that proposes new stable endpoints. Typically this is solved by
|
way that proposes new stable endpoints. Typically this is solved by
|
||||||
a small table at the bottom mapping the various values from stable
|
a small table at the bottom mapping the various values from stable
|
||||||
to unstable.
|
to unstable.
|
||||||
|
|
||||||
|
#### Unstable endpoints, features and vendor prefixes
|
||||||
|
|
||||||
|
Unstable endpoints MUST use `/unstable` as the endpoint version and a
|
||||||
|
vendor prefix in Java package naming format. For example:
|
||||||
|
`/_matrix/client/unstable/com.example.mscxxxx/login`.
|
||||||
|
|
||||||
|
{{% boxes/note %}}
|
||||||
|
Proposal authors operating with a Matrix.org Foundation mandate SHOULD use
|
||||||
|
a vendor prefix within the `org.matrix` namespace. This namespace is otherwise
|
||||||
|
restricted. Authors who don't own a domain MAY use the `io.github` namespace
|
||||||
|
instead.
|
||||||
|
{{% /boxes/note %}}
|
||||||
|
|
||||||
|
Note that unstable namespaces do not automatically inherit endpoints from
|
||||||
|
stable namespaces: for example, the fact that `/_matrix/client/v3/sync`
|
||||||
|
exists does not imply that `/_matrix/client/unstable/com.example.mscxxxx/sync`
|
||||||
|
exists.
|
||||||
|
|
||||||
|
Vendor prefixes MUST also be used for:
|
||||||
|
|
||||||
|
- New parameters on existing endpoints. For example:
|
||||||
|
`/_matrix/client/v3/publicRooms?com.example.mscxxxx.ordered_by=member_count`.
|
||||||
|
- New properties in existing JSON objects. For example:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"avatar_url": "mxc://matrix.org/SDGdghriugerRg",
|
||||||
|
"displayname": "Alice Margatroid",
|
||||||
|
"com.example.mscxxxx.phone": [{
|
||||||
|
"type": "landline",
|
||||||
|
"number": "+1-206-555-7000"
|
||||||
|
}],
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- New values for existing parameters or properties. For example:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"errcode": "COM.EXAMPLE.MSCXXXX.M_INVALID_EMAIL",
|
||||||
|
"error": "The email address you provided is invalid."
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
If the client needs to be sure the server supports the feature, an
|
||||||
|
unstable feature flag that MUST also be vendor prefixed is to be used.
|
||||||
|
This flag shows up in the `unstable_features` section of
|
||||||
|
[`/_matrix/client/versions`](/client-server-api/#get_matrixclientversions)
|
||||||
|
as, for example, `com.example.mscxxxx.new_login`.
|
||||||
|
|
||||||
|
{{% boxes/note %}}
|
||||||
|
MSCs MUST still describe what the stable endpoints/feature looks like
|
||||||
|
with a note towards the bottom for what the unstable feature
|
||||||
|
flag/prefixes are. For example, an MSC would propose `/_matrix/client/v1/new/endpoint`,
|
||||||
|
not `/_matrix/client/unstable/com.example.mscxxxx/new/endpoint`.
|
||||||
|
{{% /boxes/note %}}
|
||||||
|
|
||||||
|
When using this approach correctly, the implementation can release
|
||||||
|
the feature at any time, so long as the implementation is able to
|
||||||
|
accept the technical debt that results from needing to provide
|
||||||
|
adequate backwards and forwards compatibility. The implementation
|
||||||
|
MUST support the flag (and server-side implementation) disappearing
|
||||||
|
and be generally safe for users. Note that implementations early in
|
||||||
|
the MSC review process may also be required to provide backwards
|
||||||
|
compatibility with earlier editions of the proposal.
|
||||||
|
|
||||||
|
If the implementation cannot support the technical debt (or if it's
|
||||||
|
impossible to provide forwards/backwards compatibility - e.g. a user
|
||||||
|
authentication change which can't be safely rolled back), the
|
||||||
|
implementation should not attempt to implement the feature and should
|
||||||
|
instead wait for a spec release.
|
||||||
|
|
||||||
|
If at any point after early release, the idea changes in a
|
||||||
|
backwards-incompatible way, the feature flag should also change so
|
||||||
|
that implementations can adapt as needed.
|
||||||
|
|
||||||
### Placeholder MSCs
|
### Placeholder MSCs
|
||||||
|
|
||||||
Some proposals may contain security-sensitive or private context which can't be
|
Some proposals may contain security-sensitive or private context which can't be
|
||||||
|
|
|
||||||
29
data/api/client-server/definitions/recent_emoji.yaml
Normal file
29
data/api/client-server/definitions/recent_emoji.yaml
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
# Copyright 2026 The Matrix.org Foundation C.I.C.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
title: Recent Emoji
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
emoji:
|
||||||
|
type: string
|
||||||
|
description: The Unicode emoji as string.
|
||||||
|
example: 🚀
|
||||||
|
total:
|
||||||
|
type: number
|
||||||
|
description: |-
|
||||||
|
The number of times the emoji has been used.
|
||||||
|
MUST be non-negative and smaller than 2^53.
|
||||||
|
required:
|
||||||
|
- emoji
|
||||||
|
- total
|
||||||
|
|
@ -223,7 +223,7 @@ paths:
|
||||||
type: string
|
type: string
|
||||||
# XXX: As mentioned in MSC1227, replacing `[not_]membership` with a JSON
|
# XXX: As mentioned in MSC1227, replacing `[not_]membership` with a JSON
|
||||||
# filter might be a better alternative.
|
# filter might be a better alternative.
|
||||||
# See https://github.com/matrix-org/matrix-doc/issues/1337
|
# See https://github.com/matrix-org/matrix-doc/issues/1227
|
||||||
- in: query
|
- in: query
|
||||||
name: membership
|
name: membership
|
||||||
description: |-
|
description: |-
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,7 @@ paths:
|
||||||
},
|
},
|
||||||
"room": {
|
"room": {
|
||||||
"regexp": "[^\\s]+\\/[^\\s]+",
|
"regexp": "[^\\s]+\\/[^\\s]+",
|
||||||
"placeholder": "matrix-org/matrix-doc"
|
"placeholder": "matrix-org/matrix-spec"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"instances": [
|
"instances": [
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,12 @@ paths:
|
||||||
properties:
|
properties:
|
||||||
sub:
|
sub:
|
||||||
type: string
|
type: string
|
||||||
description: The Matrix User ID who generated the token.
|
description: |
|
||||||
|
The Matrix User ID who generated the token.
|
||||||
|
|
||||||
|
The caller MUST validate that the returned user ID is on the server they
|
||||||
|
called (i.e. if you make a request to example.com and it returns
|
||||||
|
`@alice:matrix.org`, the result is invalid).
|
||||||
example: "@alice:example.com"
|
example: "@alice:example.com"
|
||||||
required:
|
required:
|
||||||
- sub
|
- sub
|
||||||
|
|
|
||||||
16
data/event-schemas/examples/m.recent_emoji.yaml
Normal file
16
data/event-schemas/examples/m.recent_emoji.yaml
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"$ref": "core/event.json",
|
||||||
|
"type": "m.recent_emoji",
|
||||||
|
"content": {
|
||||||
|
"recent_emoji": [{
|
||||||
|
"emoji": "🤔",
|
||||||
|
"total": 19
|
||||||
|
}, {
|
||||||
|
"emoji": "👍",
|
||||||
|
"total": 7
|
||||||
|
}, {
|
||||||
|
"emoji": "😅",
|
||||||
|
"total": 84
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}
|
||||||
29
data/event-schemas/schema/m.recent_emoji.yaml
Normal file
29
data/event-schemas/schema/m.recent_emoji.yaml
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"type": "object",
|
||||||
|
"title": "Recent Emoji Event",
|
||||||
|
"description": "Lets clients maintain a list of recently used emoji.",
|
||||||
|
"allOf": [{
|
||||||
|
"$ref": "core-event-schema/event.yaml"
|
||||||
|
}],
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["m.recent_emoji"]
|
||||||
|
},
|
||||||
|
"content": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"recent_emoji": {
|
||||||
|
"description": "The list of recently used emoji. Elements in the list are ordered descendingly by last usage time.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "../../api/client-server/definitions/recent_emoji.yaml"
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": ["recent_emoji"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": ["type", "content"]
|
||||||
|
}
|
||||||
|
|
@ -50,11 +50,6 @@ First, can we even release the spec? This stage is mostly preparation work neede
|
||||||
to ensure a consistent and reliable specification.
|
to ensure a consistent and reliable specification.
|
||||||
|
|
||||||
1. Ensure `main` is committed with all the spec changes you expect to be there.
|
1. Ensure `main` is committed with all the spec changes you expect to be there.
|
||||||
2. Review the changelog to look for typos, wording inconsistencies, or lines which
|
|
||||||
can be merged. For example, "Fix typos" and "Fix spelling" can be condensed to
|
|
||||||
"Fix various typos throughout the specification".
|
|
||||||
3. Do a quick skim to ensure changelogs reference the MSCs which brought the changes
|
|
||||||
in. They should be linked to the GitHub MSC PR (not the markdown document).
|
|
||||||
|
|
||||||
## The release
|
## The release
|
||||||
|
|
||||||
|
|
@ -79,20 +74,24 @@ release.
|
||||||
2. Run `./scripts/generate-changelog.sh v1.2` (using the correct version number).
|
2. Run `./scripts/generate-changelog.sh v1.2` (using the correct version number).
|
||||||
The script will use the current date. If that date is wrong, correct the document
|
The script will use the current date. If that date is wrong, correct the document
|
||||||
by using the same `YYYY-MM-DD` date format.
|
by using the same `YYYY-MM-DD` date format.
|
||||||
3. Commit the result.
|
3. Review the changelog to look for typos, wording inconsistencies, or lines which
|
||||||
|
can be merged. For example, "Fix typos" and "Fix spelling" can be condensed to
|
||||||
|
"Fix various typos throughout the specification".
|
||||||
|
4. Do a quick skim to ensure changelogs reference the MSCs which brought the changes
|
||||||
|
in. They should be linked to the GitHub MSC PR (not the markdown document).
|
||||||
|
5. Commit the result.
|
||||||
|
6. Now is a good time to have someone else review the changelog.
|
||||||
5. Tag the branch with the spec release with a format of `v1.2` (if releasing Matrix 1.2).
|
5. Tag the branch with the spec release with a format of `v1.2` (if releasing Matrix 1.2).
|
||||||
6. Push the release branch and the tag.
|
6. Push the release branch and the tag.
|
||||||
7. GitHub Actions will run its build steps. Wait until these are successful. If fixes
|
7. GitHub Actions will run its build steps. Wait until these are successful. If fixes
|
||||||
need to be made to repair the pipeline or spec build, delete and re-tag the release.
|
need to be made to repair the pipeline or spec build, delete and re-tag the release.
|
||||||
You may need to fix up the changelog file by hand in this case.
|
You may need to fix up the changelog file by hand in this case.
|
||||||
8. Check out and fast-forward `main` to the release branch.
|
8. GitHub Actions should have drafted a release based on the new tag. Find it
|
||||||
9. Create a new release on GitHub from the newly created tag.
|
at https://github.com/matrix-org/matrix-spec/releases.
|
||||||
* The title should be just "v1.2" (for example).
|
1. Double-check the generated release notes, and check that `spec-artifact.zip` and
|
||||||
* The description should be a copy/paste of the changelog. The generated changelog
|
`spec-historical-artifact.zip` are both attached to the draft release.
|
||||||
will be at `content/changelog/v1.2.md` - copy/paste verbatim.
|
2. Publish the draft release.
|
||||||
* Upload the artifacts of the GitHub Actions build for the release to the GitHub
|
9. Check out and fast-forward `main` to the release branch.
|
||||||
release as artifacts themselves. This should be the tarball that will be deployed
|
|
||||||
to spec.matrix.org.
|
|
||||||
10. Commit a reversion to `params.version` of `./config/_default/hugo.toml` on `main`:
|
10. Commit a reversion to `params.version` of `./config/_default/hugo.toml` on `main`:
|
||||||
```toml
|
```toml
|
||||||
[params.version]
|
[params.version]
|
||||||
|
|
@ -103,7 +102,8 @@ release.
|
||||||
```
|
```
|
||||||
11. Push pending commits and ensure the unstable spec updates accordingly from the
|
11. Push pending commits and ensure the unstable spec updates accordingly from the
|
||||||
GitHub Actions pipeline.
|
GitHub Actions pipeline.
|
||||||
12. Deploy the release on the webserver. See internal wiki.
|
12. Deploy the release on the webserver. See "Spec release process" in the
|
||||||
|
internal handbook.
|
||||||
|
|
||||||
## Patching a release
|
## Patching a release
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,572 +0,0 @@
|
||||||
/*
|
|
||||||
* basic.css
|
|
||||||
* ~~~~~~~~~
|
|
||||||
*
|
|
||||||
* Sphinx stylesheet -- basic theme.
|
|
||||||
*
|
|
||||||
* :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
|
|
||||||
* :license: BSD, see LICENSE for details.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* -- main layout ----------------------------------------------------------- */
|
|
||||||
|
|
||||||
div.clearer {
|
|
||||||
clear: both;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- relbar ---------------------------------------------------------------- */
|
|
||||||
|
|
||||||
div.related {
|
|
||||||
width: 100%;
|
|
||||||
font-size: 90%;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.related h3 {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.related ul {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 0 0 10px;
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.related li {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.related li.right {
|
|
||||||
float: right;
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- sidebar --------------------------------------------------------------- */
|
|
||||||
|
|
||||||
div.sphinxsidebarwrapper {
|
|
||||||
padding: 10px 5px 0 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar {
|
|
||||||
float: left;
|
|
||||||
width: 230px;
|
|
||||||
margin-left: -100%;
|
|
||||||
font-size: 90%;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar ul {
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar ul ul,
|
|
||||||
div.sphinxsidebar ul.want-points {
|
|
||||||
margin-left: 20px;
|
|
||||||
list-style: square;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar ul ul {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar form {
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar input {
|
|
||||||
border: 1px solid #98dbcc;
|
|
||||||
font-family: sans-serif;
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
img {
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- search page ----------------------------------------------------------- */
|
|
||||||
|
|
||||||
ul.search {
|
|
||||||
margin: 10px 0 0 20px;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.search li {
|
|
||||||
padding: 5px 0 5px 20px;
|
|
||||||
background-image: url(file.png);
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: 0 7px;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.search li a {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.search li div.context {
|
|
||||||
color: #888;
|
|
||||||
margin: 2px 0 0 30px;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul.keywordmatches li.goodmatch a {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- index page ------------------------------------------------------------ */
|
|
||||||
|
|
||||||
table.contentstable {
|
|
||||||
width: 90%;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.contentstable p.biglink {
|
|
||||||
line-height: 150%;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.biglink {
|
|
||||||
font-size: 1.3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
span.linkdescr {
|
|
||||||
font-style: italic;
|
|
||||||
padding-top: 5px;
|
|
||||||
font-size: 90%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- general index --------------------------------------------------------- */
|
|
||||||
|
|
||||||
table.indextable {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.indextable td {
|
|
||||||
text-align: left;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.indextable dl, table.indextable dd {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.indextable tr.pcap {
|
|
||||||
height: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.indextable tr.cap {
|
|
||||||
margin-top: 10px;
|
|
||||||
background-color: #f2f2f2;
|
|
||||||
}
|
|
||||||
|
|
||||||
img.toggler {
|
|
||||||
margin-right: 3px;
|
|
||||||
margin-top: 3px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.modindex-jumpbox {
|
|
||||||
border-top: 1px solid #ddd;
|
|
||||||
border-bottom: 1px solid #ddd;
|
|
||||||
margin: 1em 0 1em 0;
|
|
||||||
padding: 0.4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.genindex-jumpbox {
|
|
||||||
border-top: 1px solid #ddd;
|
|
||||||
border-bottom: 1px solid #ddd;
|
|
||||||
margin: 1em 0 1em 0;
|
|
||||||
padding: 0.4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- general body styles --------------------------------------------------- */
|
|
||||||
|
|
||||||
a.headerlink {
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1:hover > a.headerlink,
|
|
||||||
h2:hover > a.headerlink,
|
|
||||||
h3:hover > a.headerlink,
|
|
||||||
h4:hover > a.headerlink,
|
|
||||||
h5:hover > a.headerlink,
|
|
||||||
h6:hover > a.headerlink,
|
|
||||||
dt:hover > a.headerlink {
|
|
||||||
visibility: visible;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document p.caption {
|
|
||||||
text-align: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document td {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.field-list ul {
|
|
||||||
padding-left: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.first {
|
|
||||||
margin-top: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
p.rubric {
|
|
||||||
margin-top: 30px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.align-left {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
.align-center {
|
|
||||||
clear: both;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.align-right {
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- sidebars -------------------------------------------------------------- */
|
|
||||||
|
|
||||||
div.sidebar {
|
|
||||||
margin: 0 0 0.5em 1em;
|
|
||||||
border: 1px solid #ddb;
|
|
||||||
padding: 7px 7px 0 7px;
|
|
||||||
background-color: #ffe;
|
|
||||||
width: 40%;
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
p.sidebar-title {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- topics ---------------------------------------------------------------- */
|
|
||||||
|
|
||||||
div.topic {
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
padding: 7px 7px 0 7px;
|
|
||||||
margin: 10px 0 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
p.topic-title {
|
|
||||||
font-size: 1.1em;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- admonitions ----------------------------------------------------------- */
|
|
||||||
|
|
||||||
div.admonition {
|
|
||||||
margin-top: 10px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
padding: 7px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.admonition dt {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.admonition dl {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
p.admonition-title {
|
|
||||||
margin: 0px 10px 5px 0px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document p.centered {
|
|
||||||
text-align: center;
|
|
||||||
margin-top: 25px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- tables ---------------------------------------------------------------- */
|
|
||||||
|
|
||||||
table.docutils {
|
|
||||||
border: 0;
|
|
||||||
border-collapse: collapse;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.docutils td, table.docutils th {
|
|
||||||
padding: 1px 8px 1px 5px;
|
|
||||||
border-top: 0;
|
|
||||||
border-left: 0;
|
|
||||||
border-right: 0;
|
|
||||||
border-bottom: 1px solid #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.field-list td, table.field-list th {
|
|
||||||
border: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.footnote td, table.footnote th {
|
|
||||||
border: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
th {
|
|
||||||
text-align: left;
|
|
||||||
padding-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.citation {
|
|
||||||
border-left: solid 1px gray;
|
|
||||||
margin-left: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.citation td {
|
|
||||||
border-bottom: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.colwidths-auto caption {
|
|
||||||
font-family: 'Inconsolata', monospace;
|
|
||||||
font-weight: 800;
|
|
||||||
font-size: 120%;
|
|
||||||
padding: 5px;
|
|
||||||
text-align: left;
|
|
||||||
margin-bottom: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section ol, .section li {
|
|
||||||
margin: 0px 0px 0px 30px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
p.httpheaders {
|
|
||||||
font-weight: 800;
|
|
||||||
font-size: 120%;
|
|
||||||
padding: 5px;
|
|
||||||
text-align: left;
|
|
||||||
margin-bottom: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.colwidths-auto {
|
|
||||||
width:100%;
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.colwidths-auto tr td:nth-child(1) {
|
|
||||||
width: 15%;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.colwidths-auto tr td:nth-child(2) {
|
|
||||||
width: 15%;
|
|
||||||
font-family: 'Inconsolata', monospace;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.colwidths-auto tr td:nth-child(3) {
|
|
||||||
width: 70%;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* -- other body styles ----------------------------------------------------- */
|
|
||||||
|
|
||||||
ol.arabic {
|
|
||||||
list-style: decimal;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol.loweralpha {
|
|
||||||
list-style: lower-alpha;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol.upperalpha {
|
|
||||||
list-style: upper-alpha;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol.lowerroman {
|
|
||||||
list-style: lower-roman;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol.upperroman {
|
|
||||||
list-style: upper-roman;
|
|
||||||
}
|
|
||||||
|
|
||||||
dl {
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
dd p {
|
|
||||||
margin-top: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
dd ul, dd table {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
dd {
|
|
||||||
margin-top: 3px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
margin-left: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
dt:target, .highlighted {
|
|
||||||
background-color: #fbe54e;
|
|
||||||
}
|
|
||||||
|
|
||||||
dl.glossary dt {
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 1.1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.field-list ul {
|
|
||||||
margin: 0;
|
|
||||||
padding-left: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.field-list p {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.refcount {
|
|
||||||
color: #060;
|
|
||||||
}
|
|
||||||
|
|
||||||
.optional {
|
|
||||||
font-size: 1.3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.versionmodified {
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
.system-message {
|
|
||||||
background-color: #fda;
|
|
||||||
padding: 5px;
|
|
||||||
border: 3px solid red;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footnote:target {
|
|
||||||
background-color: #ffa
|
|
||||||
}
|
|
||||||
|
|
||||||
.line-block {
|
|
||||||
display: block;
|
|
||||||
margin-top: 1em;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.line-block .line-block {
|
|
||||||
margin-top: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
margin-left: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.guilabel, .menuselection {
|
|
||||||
font-family: sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
.accelerator {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.classifier {
|
|
||||||
font-style: oblique;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- proposals page -------------------------------------------------------- */
|
|
||||||
|
|
||||||
#tables-of-tracked-proposals h2 {
|
|
||||||
padding-left: 10px;
|
|
||||||
position: -webkit-sticky;
|
|
||||||
position: sticky;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Move sticky headers below header bar on desktop */
|
|
||||||
@media all and (min-width:980px) {
|
|
||||||
#tables-of-tracked-proposals h2 {
|
|
||||||
top: 52px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Sticky headers stick to the top on mobile */
|
|
||||||
@media all and (min-width:0px) and (max-width: 980px) {
|
|
||||||
#tables-of-tracked-proposals h2 {
|
|
||||||
top: 0px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- code displays --------------------------------------------------------- */
|
|
||||||
|
|
||||||
pre {
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
td.linenos pre {
|
|
||||||
padding: 5px 0px;
|
|
||||||
border: 0;
|
|
||||||
background-color: transparent;
|
|
||||||
color: #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.highlighttable {
|
|
||||||
margin-left: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table.highlighttable td {
|
|
||||||
padding: 0 0.5em 0 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
tt.descname {
|
|
||||||
background-color: transparent;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 1.2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
tt.descclassname {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
tt.xref, a tt {
|
|
||||||
background-color: transparent;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.viewcode-link {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.viewcode-back {
|
|
||||||
float: right;
|
|
||||||
font-family: sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.viewcode-block:target {
|
|
||||||
margin: -1px -10px;
|
|
||||||
padding: 0 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- math display ---------------------------------------------------------- */
|
|
||||||
|
|
||||||
img.math {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document div.math p {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
span.eqno {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- printout stylesheet --------------------------------------------------- */
|
|
||||||
|
|
||||||
@media print {
|
|
||||||
div.document,
|
|
||||||
div.documentwrapper,
|
|
||||||
div.bodywrapper {
|
|
||||||
margin: 0 !important;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar,
|
|
||||||
div.related,
|
|
||||||
div.footer,
|
|
||||||
#top-link {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
blockquote {
|
|
||||||
margin: 20px 0 30px;
|
|
||||||
padding-left: 20px;
|
|
||||||
}
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
pre.code .comment, code .comment { color: green }
|
|
||||||
pre.code .keyword, code .keyword { color: darkred; font-weight: bold }
|
|
||||||
pre.code .name.builtin, code .name.builtin { color: darkred; font-weight: bold }
|
|
||||||
pre.code .name.tag, code .name.tag { color: darkgreen }
|
|
||||||
pre.code .literal, code .literal { color: darkblue }
|
|
||||||
pre.code .literal.number, code .literal.number { color: blue }
|
|
||||||
|
|
||||||
|
|
||||||
/* HTTP Methods have class "name function" */
|
|
||||||
pre.code.http .name.function, code.http .name.function { color: black; font-weight: bold }
|
|
||||||
/* HTTP Paths have class "name namespace" */
|
|
||||||
pre.code.http .name.namespace, code.http .name.namespace { color: darkgreen }
|
|
||||||
/* HTTP "HTTP" strings have class "keyword reserved" */
|
|
||||||
pre.code.http .keyword.reserved, code.http .keyword.reserved { color: black; font-weight: bold }
|
|
||||||
/* HTTP Header names have class "name attribute" */
|
|
||||||
pre.code.http .name.attribute, code.http .name.attribute { color: black; font-weight: bold }
|
|
||||||
|
|
@ -1,295 +0,0 @@
|
||||||
/*
|
|
||||||
* nature.css_t
|
|
||||||
* ~~~~~~~~~~~~
|
|
||||||
*
|
|
||||||
* Sphinx stylesheet -- nature theme.
|
|
||||||
*
|
|
||||||
* :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
|
|
||||||
* :license: BSD, see LICENSE for details.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* -- page layout ----------------------------------------------------------- */
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
font-size: 100%;
|
|
||||||
/*background-color: #111;*/
|
|
||||||
color: #555;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.documentwrapper {
|
|
||||||
float: left;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.bodywrapper {
|
|
||||||
margin: 0 0 0 230px;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr {
|
|
||||||
border: 1px solid #B1B4B6;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
div.document {
|
|
||||||
background-color: #eee;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
div.document {
|
|
||||||
background-color: #ffffff;
|
|
||||||
color: #3E4349;
|
|
||||||
padding: 0 30px 30px 30px;
|
|
||||||
font-size: 0.9em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.footer {
|
|
||||||
color: #555;
|
|
||||||
width: 100%;
|
|
||||||
padding: 13px 0;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 75%;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.footer a {
|
|
||||||
color: #444;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.related {
|
|
||||||
background-color: #6BA81E;
|
|
||||||
line-height: 32px;
|
|
||||||
color: #fff;
|
|
||||||
text-shadow: 0px 1px 0 #444;
|
|
||||||
font-size: 0.9em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.related a {
|
|
||||||
color: #E2F3CC;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar {
|
|
||||||
font-size: 0.75em;
|
|
||||||
line-height: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebarwrapper{
|
|
||||||
padding: 20px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar h3,
|
|
||||||
div.sphinxsidebar h4 {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
color: #222;
|
|
||||||
font-size: 1.2em;
|
|
||||||
font-weight: normal;
|
|
||||||
margin: 0;
|
|
||||||
padding: 5px 10px;
|
|
||||||
background-color: #ddd;
|
|
||||||
text-shadow: 1px 1px 0 white
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar h4{
|
|
||||||
font-size: 1.1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar h3 a {
|
|
||||||
color: #444;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
div.sphinxsidebar p {
|
|
||||||
color: #888;
|
|
||||||
padding: 5px 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar p.topless {
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar ul {
|
|
||||||
margin: 10px 20px;
|
|
||||||
padding: 0;
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar a {
|
|
||||||
color: #444;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar input {
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
font-family: sans-serif;
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.sphinxsidebar input[type=text]{
|
|
||||||
margin-left: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -- body styles ----------------------------------------------------------- */
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: #005B81;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover {
|
|
||||||
color: #E32E00;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document h1,
|
|
||||||
div.document h2,
|
|
||||||
div.document h3,
|
|
||||||
div.document h4,
|
|
||||||
div.document h5,
|
|
||||||
div.document h6 {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
background-color: #BED4EB;
|
|
||||||
font-weight: normal;
|
|
||||||
color: #212224;
|
|
||||||
margin: 30px 0px 10px 0px;
|
|
||||||
padding: 5px 0 5px 10px;
|
|
||||||
text-shadow: 0px 1px 0 white
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; }
|
|
||||||
div.document h2 { font-size: 150%; background-color: #C8D5E3; }
|
|
||||||
div.document h3 { font-size: 120%; background-color: #D8DEE3; }
|
|
||||||
div.document h4 { font-size: 110%; background-color: #D8DEE3; }
|
|
||||||
div.document h5 { font-size: 100%; background-color: #D8DEE3; }
|
|
||||||
div.document h6 { font-size: 100%; background-color: #D8DEE3; }
|
|
||||||
|
|
||||||
a.headerlink {
|
|
||||||
color: #c60f0f;
|
|
||||||
font-size: 0.8em;
|
|
||||||
padding: 0 4px 0 4px;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.headerlink:hover {
|
|
||||||
background-color: #c60f0f;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.document p, div.document dd, div.document li {
|
|
||||||
line-height: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.admonition p.admonition-title + p {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.highlight{
|
|
||||||
background-color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.note {
|
|
||||||
background-color: #eee;
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.seealso {
|
|
||||||
background-color: #ffc;
|
|
||||||
border: 1px solid #ff6;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.topic {
|
|
||||||
background-color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.warning {
|
|
||||||
background-color: #ffe4e4;
|
|
||||||
border: 1px solid #f66;
|
|
||||||
}
|
|
||||||
|
|
||||||
p.admonition-title {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
p.admonition-title:after {
|
|
||||||
content: ":";
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
padding: 10px;
|
|
||||||
background-color: White;
|
|
||||||
color: #222;
|
|
||||||
line-height: 1.2em;
|
|
||||||
border: 1px solid #C6C9CB;
|
|
||||||
font-size: 1.1em;
|
|
||||||
margin: 1.5em 0 1.5em 0;
|
|
||||||
-webkit-box-shadow: 1px 1px 1px #d8d8d8;
|
|
||||||
-moz-box-shadow: 1px 1px 1px #d8d8d8;
|
|
||||||
}
|
|
||||||
|
|
||||||
tt {
|
|
||||||
background-color: #ecf0f3;
|
|
||||||
color: #222;
|
|
||||||
/* padding: 1px 2px; */
|
|
||||||
font-size: 1.1em;
|
|
||||||
font-family: monospace;
|
|
||||||
}
|
|
||||||
|
|
||||||
.viewcode-back {
|
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.viewcode-block:target {
|
|
||||||
background-color: #f4debf;
|
|
||||||
border-top: 1px solid #ac9;
|
|
||||||
border-bottom: 1px solid #ac9;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul li dd {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul li dl {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
li dl dd {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dd ul {
|
|
||||||
padding-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
li dd ul {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
margin-top: 10px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
border: 0;
|
|
||||||
border-collapse: collapse;
|
|
||||||
}
|
|
||||||
|
|
||||||
td[colspan]:not([colspan="1"]) {
|
|
||||||
background: #eeeeee;
|
|
||||||
text-transform: capitalize;
|
|
||||||
}
|
|
||||||
|
|
||||||
thead {
|
|
||||||
background: #eeeeee;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.admonition-rationale {
|
|
||||||
background-color: #efe;
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.admonition-example {
|
|
||||||
background-color: #eef;
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
}
|
|
||||||
|
|
||||||
div#table-of-contents ul {
|
|
||||||
list-style-type: none;
|
|
||||||
}
|
|
||||||
|
|
@ -1,83 +0,0 @@
|
||||||
/*
|
|
||||||
Original styles generated from:
|
|
||||||
pygmentize -f html -S colorful -a pre.code > ./scripts/css/pygments.css
|
|
||||||
|
|
||||||
Rules for which we don't want the syntax highlighter to kick in are commented
|
|
||||||
out at the bottom.
|
|
||||||
|
|
||||||
Windows users: if you regenerate this file, you'll need to re-save it as utf-8
|
|
||||||
to make docutils happy.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* DIFFS */
|
|
||||||
pre.code .gd { color: #A00000 } /* Generic.Deleted */
|
|
||||||
pre.code .gi { color: #00A000 } /* Generic.Inserted */
|
|
||||||
|
|
||||||
/* UNUSED */
|
|
||||||
/*pre.code .hll { background-color: #ffffcc }*/
|
|
||||||
/*pre.code { background: #ffffff; }*/
|
|
||||||
/*pre.code .c { color: #888888 } !* Comment *!*/
|
|
||||||
/*pre.code .err { color: #FF0000; background-color: #FFAAAA } !* Error *!*/
|
|
||||||
/*pre.code .k { color: #008800; font-weight: bold } !* Keyword *!*/
|
|
||||||
/*pre.code .o { color: #333333 } !* Operator *!*/
|
|
||||||
/*pre.code .ch { color: #888888 } !* Comment.Hashbang *!*/
|
|
||||||
/*pre.code .cm { color: #888888 } !* Comment.Multiline *!*/
|
|
||||||
/*pre.code .cp { color: #557799 } !* Comment.Preproc *!*/
|
|
||||||
/*pre.code .cpf { color: #888888 } !* Comment.PreprocFile *!*/
|
|
||||||
/*pre.code .c1 { color: #888888 } !* Comment.Single *!*/
|
|
||||||
/*pre.code .cs { color: #cc0000; font-weight: bold } !* Comment.Special *!*/
|
|
||||||
/*pre.code .ge { font-style: italic } !* Generic.Emph *!*/
|
|
||||||
/*pre.code .gr { color: #FF0000 } !* Generic.Error *!*/
|
|
||||||
/*pre.code .gh { color: #000080; font-weight: bold } !* Generic.Heading *!*/
|
|
||||||
/*pre.code .go { color: #888888 } !* Generic.Output *!*/
|
|
||||||
/*pre.code .gp { color: #c65d09; font-weight: bold } !* Generic.Prompt *!*/
|
|
||||||
/*pre.code .gs { font-weight: bold } !* Generic.Strong *!*/
|
|
||||||
/*pre.code .gu { color: #800080; font-weight: bold } !* Generic.Subheading *!*/
|
|
||||||
/*pre.code .gt { color: #0044DD } !* Generic.Traceback *!*/
|
|
||||||
/*pre.code .kc { color: #008800; font-weight: bold } !* Keyword.Constant *!*/
|
|
||||||
/*pre.code .kd { color: #008800; font-weight: bold } !* Keyword.Declaration *!*/
|
|
||||||
/*pre.code .kn { color: #008800; font-weight: bold } !* Keyword.Namespace *!*/
|
|
||||||
/*pre.code .kp { color: #003388; font-weight: bold } !* Keyword.Pseudo *!*/
|
|
||||||
/*pre.code .kr { color: #008800; font-weight: bold } !* Keyword.Reserved *!*/
|
|
||||||
/*pre.code .kt { color: #333399; font-weight: bold } !* Keyword.Type *!*/
|
|
||||||
/*pre.code .m { color: #6600EE; font-weight: bold } !* Literal.Number *!*/
|
|
||||||
/*pre.code .s { background-color: #fff0f0 } !* Literal.String *!*/
|
|
||||||
/*pre.code .na { color: #0000CC } !* Name.Attribute *!*/
|
|
||||||
/*pre.code .nb { color: #007020 } !* Name.Builtin *!*/
|
|
||||||
/*pre.code .nc { color: #BB0066; font-weight: bold } !* Name.Class *!*/
|
|
||||||
/*pre.code .no { color: #003366; font-weight: bold } !* Name.Constant *!*/
|
|
||||||
/*pre.code .nd { color: #555555; font-weight: bold } !* Name.Decorator *!*/
|
|
||||||
/*pre.code .ni { color: #880000; font-weight: bold } !* Name.Entity *!*/
|
|
||||||
/*pre.code .ne { color: #FF0000; font-weight: bold } !* Name.Exception *!*/
|
|
||||||
/*pre.code .nf { color: #0066BB; font-weight: bold } !* Name.Function *!*/
|
|
||||||
/*pre.code .nl { color: #997700; font-weight: bold } !* Name.Label *!*/
|
|
||||||
/*pre.code .nn { color: #0e84b5; font-weight: bold } !* Name.Namespace *!*/
|
|
||||||
/*pre.code .nt { color: #007700 } !* Name.Tag *!*/
|
|
||||||
/*pre.code .nv { color: #996633 } !* Name.Variable *!*/
|
|
||||||
/*pre.code .ow { color: #000000; font-weight: bold } !* Operator.Word *!*/
|
|
||||||
/*pre.code .w { color: #bbbbbb } !* Text.Whitespace *!*/
|
|
||||||
/*pre.code .mb { color: #6600EE; font-weight: bold } !* Literal.Number.Bin *!*/
|
|
||||||
/*pre.code .mf { color: #6600EE; font-weight: bold } !* Literal.Number.Float *!*/
|
|
||||||
/*pre.code .mh { color: #005588; font-weight: bold } !* Literal.Number.Hex *!*/
|
|
||||||
/*pre.code .mi { color: #0000DD; font-weight: bold } !* Literal.Number.Integer *!*/
|
|
||||||
/*pre.code .mo { color: #4400EE; font-weight: bold } !* Literal.Number.Oct *!*/
|
|
||||||
/*pre.code .sa { background-color: #fff0f0 } !* Literal.String.Affix *!*/
|
|
||||||
/*pre.code .sb { background-color: #fff0f0 } !* Literal.String.Backtick *!*/
|
|
||||||
/*pre.code .sc { color: #0044DD } !* Literal.String.Char *!*/
|
|
||||||
/*pre.code .dl { background-color: #fff0f0 } !* Literal.String.Delimiter *!*/
|
|
||||||
/*pre.code .sd { color: #DD4422 } !* Literal.String.Doc *!*/
|
|
||||||
/*pre.code .s2 { background-color: #fff0f0 } !* Literal.String.Double *!*/
|
|
||||||
/*pre.code .se { color: #666666; font-weight: bold; background-color: #fff0f0 } !* Literal.String.Escape *!*/
|
|
||||||
/*pre.code .sh { background-color: #fff0f0 } !* Literal.String.Heredoc *!*/
|
|
||||||
/*pre.code .si { background-color: #eeeeee } !* Literal.String.Interpol *!*/
|
|
||||||
/*pre.code .sx { color: #DD2200; background-color: #fff0f0 } !* Literal.String.Other *!*/
|
|
||||||
/*pre.code .sr { color: #000000; background-color: #fff0ff } !* Literal.String.Regex *!*/
|
|
||||||
/*pre.code .s1 { background-color: #fff0f0 } !* Literal.String.Single *!*/
|
|
||||||
/*pre.code .ss { color: #AA6600 } !* Literal.String.Symbol *!*/
|
|
||||||
/*pre.code .bp { color: #007020 } !* Name.Builtin.Pseudo *!*/
|
|
||||||
/*pre.code .fm { color: #0066BB; font-weight: bold } !* Name.Function.Magic *!*/
|
|
||||||
/*pre.code .vc { color: #336699 } !* Name.Variable.Class *!*/
|
|
||||||
/*pre.code .vg { color: #dd7700; font-weight: bold } !* Name.Variable.Global *!*/
|
|
||||||
/*pre.code .vi { color: #3333BB } !* Name.Variable.Instance *!*/
|
|
||||||
/*pre.code .vm { color: #996633 } !* Name.Variable.Magic *!*/
|
|
||||||
/*pre.code .il { color: #0000DD; font-weight: bold } !* Literal.Number.Integer.Long *!*/
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
/* Column with header cells */
|
|
||||||
table.docutils tbody th.stub {
|
|
||||||
background: #eeeeee;
|
|
||||||
}
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
* in the specification.
|
* in the specification.
|
||||||
*
|
*
|
||||||
* In detail, it:
|
* In detail, it:
|
||||||
* - fetches all GitHub issues from matrix-doc that have the `proposal` label
|
* - fetches all GitHub issues from matrix-spec-proposals that have the `proposal` label
|
||||||
* - groups them by their state in the MSC process
|
* - groups them by their state in the MSC process
|
||||||
* - does some light massaging of them so it's easier for the Hugo template to work with them
|
* - does some light massaging of them so it's easier for the Hugo template to work with them
|
||||||
* - store them at /data/msc
|
* - store them at /data/msc
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue