Merge branch 'main' into docs-msc4190-appservice-devices

This commit is contained in:
Quentin Gliech
2026-09-03 19:54:58 +02:00
committed by GitHub
20 changed files with 157 additions and 123 deletions
+12
View File
@@ -1,3 +1,4 @@
# Copyright 2025, 2026 Element Creations Ltd.
# Copyright 2025 New Vector Ltd.
#
# SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
@@ -43,6 +44,17 @@ updates:
cooldown:
default-days: 14
# Rust releases every six weeks; the cooldown lets the .1 point release land first.
- package-ecosystem: "rust-toolchain"
directory: "/"
labels:
- "A-Dependencies"
- "Z-Deps-Backend"
schedule:
interval: "weekly"
cooldown:
default-days: 14
- package-ecosystem: "github-actions"
directory: "/"
labels:
+2 -2
View File
@@ -1,3 +1,4 @@
# Copyright 2025, 2026 Element Creations Ltd.
# Copyright 2025 New Vector Ltd.
#
# SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
@@ -123,9 +124,8 @@ jobs:
persist-credentials: false
- name: Install Rust toolchain
# Install the minimal toolchain, which includes rustc, rustdoc, and cargo.
run: |
rustup toolchain install stable --profile minimal
rustup toolchain install
rustup target add ${{ matrix.target }}
- name: Setup sccache
+8 -19
View File
@@ -153,15 +153,12 @@ jobs:
persist-credentials: false
- name: Install Rust toolchain
# Install the minimal toolchain, which includes rustc, rustdoc, and cargo.
# Then install rustfmt for `cargo fmt`.
#
# --override sets this as the default rust toolchain version in this directory.
# rustfmt runs on nightly because .rustfmt.toml uses nightly-only options.
run: |
rustup toolchain install nightly --profile minimal --component rustfmt --override
rustup toolchain install nightly --profile minimal --component rustfmt
- name: Check style
run: cargo fmt --all -- --check
run: cargo +nightly fmt --all -- --check
cargo-deny:
name: Run `cargo deny` checks
@@ -182,8 +179,6 @@ jobs:
- name: Run `cargo-deny`
uses: EmbarkStudios/cargo-deny-action@3c6349835b2b7b196a839186cb8b78e02f7b5f25 # v2.1.1
with:
rust-version: stable
check-schema:
name: Check schema
@@ -200,7 +195,7 @@ jobs:
- name: Install Rust toolchain
run: |
rustup toolchain install stable
rustup toolchain install
- name: Setup sccache
uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
@@ -241,11 +236,7 @@ jobs:
persist-credentials: false
- name: Install Rust toolchain
# Install the minimal toolchain with clippy, pinned to a version kept in
# sync with Dockerfile.
#
# --override sets this as the default rust toolchain version in this directory.
run: rustup toolchain install 1.96.0 --profile minimal --component clippy --override
run: rustup toolchain install
- uses: ./.github/actions/build-policies
@@ -270,8 +261,7 @@ jobs:
persist-credentials: false
- name: Install Rust toolchain
# Install the minimal toolchain, which includes rustc, rustdoc, and cargo.
run: rustup toolchain install stable --profile minimal
run: rustup toolchain install
- name: Install nextest
uses: taiki-e/install-action@b6ff580856c41316412a0b9b60540fbc6f8c82cc # v2
@@ -293,7 +283,7 @@ jobs:
path: nextest-archive.tar.zst
test:
name: Run test suite with Rust stable
name: Run test suite
needs: [rustfmt, opa-lint, compile-test-artifacts]
runs-on: ubuntu-24.04
@@ -326,8 +316,7 @@ jobs:
persist-credentials: false
- name: Install Rust toolchain
# Install the minimal toolchain, which includes rustc, rustdoc, and cargo.
run: rustup toolchain install stable --profile minimal
run: rustup toolchain install
- name: Install nextest
uses: taiki-e/install-action@b6ff580856c41316412a0b9b60540fbc6f8c82cc # v2
+4 -3
View File
@@ -1,3 +1,4 @@
# Copyright 2025, 2026 Element Creations Ltd.
# Copyright 2025 New Vector Ltd.
#
# SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
@@ -107,11 +108,11 @@ jobs:
persist-credentials: false
- name: Install Rust toolchain
# Install the minimal toolchain, which includes rustc, rustdoc, and cargo.
#
# llvm-tools-preview installs some llvm tools, which are needed for `grcov` below.
# See https://github.com/rust-lang/rust/issues/85658 for stability tracking issue.
run: rustup toolchain install stable --profile minimal --component llvm-tools-preview
run: |
rustup toolchain install
rustup component add llvm-tools-preview
- name: Setup sccache
uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
+2 -2
View File
@@ -1,3 +1,4 @@
# Copyright 2025, 2026 Element Creations Ltd.
# Copyright 2025 New Vector Ltd.
#
# SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
@@ -30,8 +31,7 @@ jobs:
persist-credentials: false
- name: Install Rust toolchain
# Install the minimal toolchain, which includes rustc, rustdoc, and cargo
run: rustup toolchain install stable --profile minimal
run: rustup toolchain install
- name: Setup sccache
uses: mozilla-actions/sccache-action@9e7fa8a12102821edf02ca5dbea1acd0f89a2696 # v0.0.10
+2 -2
View File
@@ -1,3 +1,4 @@
# Copyright 2025, 2026 Element Creations Ltd.
# Copyright 2025 New Vector Ltd.
#
# SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
@@ -39,8 +40,7 @@ jobs:
persist-credentials: false
- name: Install Rust toolchain
# Only the minimal profile is required here to run `cargo metadata`
run: rustup toolchain install stable --profile minimal
run: rustup toolchain install
- name: Install pnpm
uses: pnpm/action-setup@v6.0.9
+2 -2
View File
@@ -1,3 +1,4 @@
# Copyright 2025, 2026 Element Creations Ltd.
# Copyright 2025 New Vector Ltd.
#
# SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
@@ -38,8 +39,7 @@ jobs:
persist-credentials: false
- name: Install Rust toolchain
# Only the minimal profile is required here to run `cargo`
run: rustup toolchain install stable --profile minimal
run: rustup toolchain install
- name: Install pnpm
uses: pnpm/action-setup@v6.0.9
+2 -2
View File
@@ -1,3 +1,4 @@
# Copyright 2025, 2026 Element Creations Ltd.
# Copyright 2025 New Vector Ltd.
#
# SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
@@ -35,8 +36,7 @@ jobs:
persist-credentials: false
- name: Install Rust toolchain
# Only the minimal profile is required here to run `cargo metadata`
run: rustup toolchain install stable --profile minimal
run: rustup toolchain install
- name: Set the crates version
env:
+1 -4
View File
@@ -1,11 +1,8 @@
# Copyright 2025, 2026 Element Creations Ltd.
# Copyright 2025 New Vector Ltd.
#
# SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
# Please see LICENSE files in the repository root for full details.
max_width = 100
comment_width = 80
wrap_comments = true
imports_granularity = "Crate"
use_small_heuristics = "Default"
group_imports = "StdExternalCrate"
Generated
+28 -28
View File
@@ -3198,7 +3198,7 @@ dependencies = [
[[package]]
name = "mas-axum-utils"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"anyhow",
"axum",
@@ -3233,7 +3233,7 @@ dependencies = [
[[package]]
name = "mas-cli"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"anyhow",
"axum",
@@ -3308,7 +3308,7 @@ dependencies = [
[[package]]
name = "mas-config"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"anyhow",
"camino",
@@ -3339,7 +3339,7 @@ dependencies = [
[[package]]
name = "mas-context"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"console",
"opentelemetry",
@@ -3356,7 +3356,7 @@ dependencies = [
[[package]]
name = "mas-data-model"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"base64ct",
"chrono",
@@ -3378,7 +3378,7 @@ dependencies = [
[[package]]
name = "mas-email"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"async-trait",
"lettre",
@@ -3389,7 +3389,7 @@ dependencies = [
[[package]]
name = "mas-handlers"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"aide",
"anyhow",
@@ -3472,7 +3472,7 @@ dependencies = [
[[package]]
name = "mas-http"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"futures-util",
"headers",
@@ -3492,7 +3492,7 @@ dependencies = [
[[package]]
name = "mas-i18n"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"camino",
"icu_datetime",
@@ -3512,7 +3512,7 @@ dependencies = [
[[package]]
name = "mas-i18n-scan"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"camino",
"clap",
@@ -3526,7 +3526,7 @@ dependencies = [
[[package]]
name = "mas-iana"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"schemars 1.2.1",
"serde",
@@ -3534,7 +3534,7 @@ dependencies = [
[[package]]
name = "mas-iana-codegen"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"anyhow",
"async-trait",
@@ -3551,7 +3551,7 @@ dependencies = [
[[package]]
name = "mas-jose"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"base64ct",
"chrono",
@@ -3581,7 +3581,7 @@ dependencies = [
[[package]]
name = "mas-keystore"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"aead",
"base64ct",
@@ -3609,7 +3609,7 @@ dependencies = [
[[package]]
name = "mas-listener"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"anyhow",
"bytes",
@@ -3633,7 +3633,7 @@ dependencies = [
[[package]]
name = "mas-matrix"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"anyhow",
"async-trait",
@@ -3643,7 +3643,7 @@ dependencies = [
[[package]]
name = "mas-matrix-synapse"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"anyhow",
"async-trait",
@@ -3660,7 +3660,7 @@ dependencies = [
[[package]]
name = "mas-oidc-client"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"assert_matches",
"async-trait",
@@ -3696,7 +3696,7 @@ dependencies = [
[[package]]
name = "mas-policy"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"anyhow",
"arc-swap",
@@ -3713,7 +3713,7 @@ dependencies = [
[[package]]
name = "mas-router"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"axum",
"serde",
@@ -3724,7 +3724,7 @@ dependencies = [
[[package]]
name = "mas-spa"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"camino",
"serde",
@@ -3733,7 +3733,7 @@ dependencies = [
[[package]]
name = "mas-storage"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"async-trait",
"chrono",
@@ -3755,7 +3755,7 @@ dependencies = [
[[package]]
name = "mas-storage-pg"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"async-trait",
"chrono",
@@ -3787,7 +3787,7 @@ dependencies = [
[[package]]
name = "mas-tasks"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"anyhow",
"async-trait",
@@ -3819,7 +3819,7 @@ dependencies = [
[[package]]
name = "mas-templates"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"anyhow",
"arc-swap",
@@ -3851,7 +3851,7 @@ dependencies = [
[[package]]
name = "mas-tower"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"http",
"opentelemetry",
@@ -4103,7 +4103,7 @@ dependencies = [
[[package]]
name = "oauth2-types"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"assert_matches",
"base64ct",
@@ -6279,7 +6279,7 @@ dependencies = [
[[package]]
name = "syn2mas"
version = "1.24.0-rc.1"
version = "1.24.0"
dependencies = [
"anyhow",
"arc-swap",
+30 -30
View File
@@ -9,7 +9,7 @@ members = ["crates/*"]
resolver = "2"
# Updated in the CI with a `sed` command
package.version = "1.24.0-rc.1"
package.version = "1.24.0"
package.license = "AGPL-3.0-only OR LicenseRef-Element-Commercial"
package.authors = ["Element Backend Team"]
package.edition = "2024"
@@ -42,35 +42,35 @@ broken_intra_doc_links = "deny"
[workspace.dependencies]
# Workspace crates
mas-axum-utils = { path = "./crates/axum-utils/", version = "=1.24.0-rc.1" }
mas-cli = { path = "./crates/cli/", version = "=1.24.0-rc.1" }
mas-config = { path = "./crates/config/", version = "=1.24.0-rc.1" }
mas-context = { path = "./crates/context/", version = "=1.24.0-rc.1" }
mas-data-model = { path = "./crates/data-model/", version = "=1.24.0-rc.1" }
mas-email = { path = "./crates/email/", version = "=1.24.0-rc.1" }
mas-graphql = { path = "./crates/graphql/", version = "=1.24.0-rc.1" }
mas-handlers = { path = "./crates/handlers/", version = "=1.24.0-rc.1" }
mas-http = { path = "./crates/http/", version = "=1.24.0-rc.1" }
mas-i18n = { path = "./crates/i18n/", version = "=1.24.0-rc.1" }
mas-i18n-scan = { path = "./crates/i18n-scan/", version = "=1.24.0-rc.1" }
mas-iana = { path = "./crates/iana/", version = "=1.24.0-rc.1" }
mas-iana-codegen = { path = "./crates/iana-codegen/", version = "=1.24.0-rc.1" }
mas-jose = { path = "./crates/jose/", version = "=1.24.0-rc.1" }
mas-keystore = { path = "./crates/keystore/", version = "=1.24.0-rc.1" }
mas-listener = { path = "./crates/listener/", version = "=1.24.0-rc.1" }
mas-matrix = { path = "./crates/matrix/", version = "=1.24.0-rc.1" }
mas-matrix-synapse = { path = "./crates/matrix-synapse/", version = "=1.24.0-rc.1" }
mas-oidc-client = { path = "./crates/oidc-client/", version = "=1.24.0-rc.1" }
mas-policy = { path = "./crates/policy/", version = "=1.24.0-rc.1" }
mas-router = { path = "./crates/router/", version = "=1.24.0-rc.1" }
mas-spa = { path = "./crates/spa/", version = "=1.24.0-rc.1" }
mas-storage = { path = "./crates/storage/", version = "=1.24.0-rc.1" }
mas-storage-pg = { path = "./crates/storage-pg/", version = "=1.24.0-rc.1" }
mas-tasks = { path = "./crates/tasks/", version = "=1.24.0-rc.1" }
mas-templates = { path = "./crates/templates/", version = "=1.24.0-rc.1" }
mas-tower = { path = "./crates/tower/", version = "=1.24.0-rc.1" }
oauth2-types = { path = "./crates/oauth2-types/", version = "=1.24.0-rc.1" }
syn2mas = { path = "./crates/syn2mas", version = "=1.24.0-rc.1" }
mas-axum-utils = { path = "./crates/axum-utils/", version = "=1.24.0" }
mas-cli = { path = "./crates/cli/", version = "=1.24.0" }
mas-config = { path = "./crates/config/", version = "=1.24.0" }
mas-context = { path = "./crates/context/", version = "=1.24.0" }
mas-data-model = { path = "./crates/data-model/", version = "=1.24.0" }
mas-email = { path = "./crates/email/", version = "=1.24.0" }
mas-graphql = { path = "./crates/graphql/", version = "=1.24.0" }
mas-handlers = { path = "./crates/handlers/", version = "=1.24.0" }
mas-http = { path = "./crates/http/", version = "=1.24.0" }
mas-i18n = { path = "./crates/i18n/", version = "=1.24.0" }
mas-i18n-scan = { path = "./crates/i18n-scan/", version = "=1.24.0" }
mas-iana = { path = "./crates/iana/", version = "=1.24.0" }
mas-iana-codegen = { path = "./crates/iana-codegen/", version = "=1.24.0" }
mas-jose = { path = "./crates/jose/", version = "=1.24.0" }
mas-keystore = { path = "./crates/keystore/", version = "=1.24.0" }
mas-listener = { path = "./crates/listener/", version = "=1.24.0" }
mas-matrix = { path = "./crates/matrix/", version = "=1.24.0" }
mas-matrix-synapse = { path = "./crates/matrix-synapse/", version = "=1.24.0" }
mas-oidc-client = { path = "./crates/oidc-client/", version = "=1.24.0" }
mas-policy = { path = "./crates/policy/", version = "=1.24.0" }
mas-router = { path = "./crates/router/", version = "=1.24.0" }
mas-spa = { path = "./crates/spa/", version = "=1.24.0" }
mas-storage = { path = "./crates/storage/", version = "=1.24.0" }
mas-storage-pg = { path = "./crates/storage-pg/", version = "=1.24.0" }
mas-tasks = { path = "./crates/tasks/", version = "=1.24.0" }
mas-templates = { path = "./crates/templates/", version = "=1.24.0" }
mas-tower = { path = "./crates/tower/", version = "=1.24.0" }
oauth2-types = { path = "./crates/oauth2-types/", version = "=1.24.0" }
syn2mas = { path = "./crates/syn2mas", version = "=1.24.0" }
# OpenAPI schema generation and validation
[workspace.dependencies.aide]
+36 -16
View File
@@ -13,8 +13,7 @@
# The Debian version and version name must be in sync
ARG DEBIAN_VERSION=13
ARG DEBIAN_VERSION_NAME=trixie
# Keep in sync with .github/workflows/ci.yaml
ARG RUSTC_VERSION=1.96.0
ARG RUSTUP_VERSION=1.29.0
# Keep in sync with .node-version
ARG NODEJS_VERSION=24.15.0
# Keep in sync with .github/actions/build-policies/action.yml and policies/Makefile
@@ -76,10 +75,42 @@ RUN --network=none \
########################################
## Build stage that builds the binary ##
########################################
FROM --platform=${BUILDPLATFORM} docker.io/library/rust:${RUSTC_VERSION}-${DEBIAN_VERSION_NAME} AS builder
FROM --platform=${BUILDPLATFORM} docker.io/library/buildpack-deps:${DEBIAN_VERSION_NAME} AS builder
ARG BUILDARCH
ARG CARGO_AUDITABLE_VERSION
ARG RUSTC_VERSION
ARG RUSTUP_VERSION
ENV RUSTUP_HOME=/usr/local/rustup \
CARGO_HOME=/usr/local/cargo \
PATH=/usr/local/cargo/bin:$PATH
# Checksums come from https://static.rust-lang.org/rustup/archive/<version>/<triple>/rustup-init.sha256
# Network access: to download rustup
RUN --network=default \
case "${BUILDARCH}" in \
amd64) RUSTUP_TRIPLE="x86_64-unknown-linux-gnu"; RUSTUP_SHA256="4acc9acc76d5079515b46346a485974457b5a79893cfb01112423c89aeb5aa10" ;; \
arm64) RUSTUP_TRIPLE="aarch64-unknown-linux-gnu"; RUSTUP_SHA256="9732d6c5e2a098d3521fca8145d826ae0aaa067ef2385ead08e6feac88fa5792" ;; \
*) echo "unsupported architecture: ${BUILDARCH}" >&2; exit 1 ;; \
esac && \
curl -fsSLo rustup-init "https://static.rust-lang.org/rustup/archive/${RUSTUP_VERSION}/${RUSTUP_TRIPLE}/rustup-init" && \
echo "${RUSTUP_SHA256} *rustup-init" | sha256sum -c - && \
chmod +x rustup-init && \
./rustup-init -y --no-modify-path --default-toolchain none && \
rm rustup-init
# Set the working directory
WORKDIR /app
# Copied on its own so the toolchain layer is cached independently of the source tree
COPY rust-toolchain.toml ./
# Network access: to download the toolchain and the cross-compilation targets
RUN --network=default \
rustup toolchain install && \
rustup target add \
x86_64-unknown-linux-gnu \
aarch64-unknown-linux-gnu
# Install pinned versions of cargo-auditable
# Network access: to fetch dependencies
@@ -87,14 +118,6 @@ RUN --network=default \
cargo install --locked \
cargo-auditable@=${CARGO_AUDITABLE_VERSION}
# Install all cross-compilation targets
# Network access: to download the targets
RUN --network=default \
rustup target add \
--toolchain "${RUSTC_VERSION}" \
x86_64-unknown-linux-gnu \
aarch64-unknown-linux-gnu
RUN --network=none \
dpkg --add-architecture arm64 && \
dpkg --add-architecture amd64
@@ -120,9 +143,6 @@ ENV \
CC_x86_64_unknown_linux_gnu=x86_64-linux-gnu-gcc \
CXX_x86_64_unknown_linux_gnu=x86_64-linux-gnu-g++
# Set the working directory
WORKDIR /app
# Copy the code
COPY ./ /app
ENV SQLX_OFFLINE=true
@@ -134,7 +154,7 @@ ARG TARGETARCH
# Network access: cargo auditable needs it
RUN --network=default \
--mount=type=cache,target=/root/.cargo/registry \
--mount=type=cache,target=/usr/local/cargo/registry \
--mount=type=cache,target=/app/target \
RUST_TARGET=$(case "${TARGETARCH}" in \
amd64) echo "x86_64-unknown-linux-gnu" ;; \
+3
View File
@@ -27,6 +27,9 @@ ignore = [
# Engine/Store, and as the advisory says explicitly:
# > This bug is not triggerable by guest WebAssembly programs.
"RUSTSEC-2026-0222",
# A bug in wasmtime, but we are not affected as we're not using the WASI
# capabilities and filesystem APIs
"RUSTSEC-2026-0269",
]
# Only warn about unmaintained crates in direct dependencies of the workspace,
+2 -2
View File
@@ -19,7 +19,7 @@ There are two main ways to contribute to MAS:
To get MAS running locally from source you will need to:
- [Install Rust and Cargo](https://www.rust-lang.org/learn/get-started). We recommend using the latest stable version of Rust.
- [Install Rust and Cargo](https://www.rust-lang.org/learn/get-started). The exact version is pinned in `rust-toolchain.toml`; rustup installs it automatically when you run cargo in the repo.
- [Install Node.js](https://nodejs.org/). We recommend using the latest LTS version of Node.js. The frontend uses pnpm, which is installed automatically via corepack — see below.
- [Install Open Policy Agent](https://www.openpolicyagent.org/docs#1-download-opa)
@@ -79,7 +79,7 @@ Most of them can be updated by running `sh misc/update.sh` at the root of the pr
Make sure your code adheres to our Rust and TypeScript code style by running:
- `cargo +nightly fmt` (with the nightly toolchain installed)
- `cargo +nightly fmt` (`.rustfmt.toml` uses nightly-only options, so this needs the nightly toolchain installed)
- `pnpm run format` in the `frontend` directory
- `make fmt` in the `policies` directory (if changed)
+1 -1
View File
@@ -63,7 +63,7 @@ The image can also be built from the source:
Building from the source requires:
- The latest stable [Rust toolchain](https://www.rust-lang.org/learn/get-started)
- The [Rust toolchain](https://www.rust-lang.org/learn/get-started) pinned by `rust-toolchain.toml` (installed automatically by rustup)
- [Node.js (24 and later)](https://nodejs.org/en/), with [corepack](https://nodejs.org/api/corepack.html) enabled so pnpm@11 is provisioned automatically
- the [Open Policy Agent](https://www.openpolicyagent.org/docs/latest/#running-opa) binary (or alternatively, Docker)
+3 -3
View File
@@ -145,14 +145,14 @@
"current_password_label": "Senine salasõna",
"failure": {
"description": {
"account_locked": "Sinu kasutajakonto on lukustatud ning salasõna taastamist ei ole hetkel võimalik teha. Kui antud olukord tundub sulle kahtlane, siis palun teavita sellest sinu serveri haldajat.",
"account_locked": "Sinu kasutajakonto on lukustatud ning salasõna taastamist ei ole hetkel võimalik teha. Kui antud olukord tundub sulle kahtlane, siis palun teavita sellest sinu teenusepakkujat.",
"expired_recovery_ticket": "Salasõna taastamiseks mõeldud link on aegunud. Palun alusta taastamisprotsessi algusest.",
"invalid_new_password": "Sinu sisestatud uus salasõna pole korrektne, ta ilmselt ei vasta seadistatud turvareeglitele.",
"no_current_password": "Sul on hetkel kehtiv salasõna määramata.",
"no_such_recovery_ticket": "Salasõna taastamiseks mõeldud link on vigane. Kui sa kopeerisid ja e-kirjast, siis palun kontrolli, et kopeerisid kogu lingi ühe tervikuna.",
"password_changes_disabled": "Salasõnade muutmine pole lubatud.",
"recovery_ticket_already_used": "Sa oled salasõna taastamiseks mõeldud linki juba kasutanud ja seda ei saa uuesti teha.",
"unspecified": "See ilmselt on ajutine probleem, palun proovi mõne aja pärast uuesti. Kui viga ei kao, siis abi saad serveri haldajalt.",
"unspecified": "See ilmselt on ajutine probleem, palun proovi mõne aja pärast uuesti. Kui viga ei kao, siis abi saad oma teenusepakkujalt.",
"wrong_password": "Sinu sisestatud salasõna ei vasta hetkel kehtivale salasõnale. Palun proovi uuesti.,"
},
"title": "Salasõna uuendamine ei õnnestunud"
@@ -239,7 +239,7 @@
"positive_1": "Sinu kasutajakonto andmed, kontaktid, eelistused ja vestluste loendid jäävad muutmata"
},
"failure": {
"description": "See ilmselt on ajutine probleem, palun proovi mõne aja pärast uuesti. Kui viga ei kao, siis abi saad serveri haldajalt.",
"description": "See ilmselt on ajutine probleem, palun proovi mõne aja pärast uuesti. Kui viga ei kao, siis abi saad oma teenusepakkujalt.",
"heading": "Krüptoidentiteedi lähtestamise lubamine ei õnnestunud"
},
"finish_reset": "Lõpeta lähtestamine",
+2 -2
View File
@@ -76,7 +76,7 @@
"password_confirmation": "Potwierdź hasło do swojego konta, aby dodać ten adres e-mail"
},
"browser_session_details": {
"current_badge": "Aktualny"
"current_badge": "Aktualne"
},
"browser_sessions_overview": {
"body:one": "{{count}} aktywna sesja",
@@ -254,7 +254,7 @@
},
"session": {
"client_id_label": "Identyfikator klienta",
"current": "Aktualny",
"current": "Aktualne",
"device_id_label": "Identyfikator urządzenia",
"finished_label": "Zakończone",
"generic_browser_session": "Sesja przeglądarki",
+3 -2
View File
@@ -1,5 +1,6 @@
#!/bin/sh
# Copyright 2025, 2026 Element Creations Ltd.
# Copyright 2025 New Vector Ltd.
#
# SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
@@ -22,8 +23,8 @@ if [ "${CF_PAGES:-""}" = "1" ]; then
# Source the environment variables to add cargo to the path
. "$HOME/.cargo/env"
# Install the minimal toolchain, which includes rustc, rustdoc, and cargo
rustup toolchain install stable --profile minimal
# Install the toolchain pinned in rust-toolchain.toml
rustup toolchain install
# Install mdbook
MDBOOK_URL="https://github.com/rust-lang/mdBook/releases/download/v${MDBOOK_VERSION}/mdbook-v${MDBOOK_VERSION}-$(uname -m)-unknown-linux-gnu.tar.gz"
+11
View File
@@ -0,0 +1,11 @@
# Copyright 2026 Element Creations Ltd.
#
# SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
# Please see LICENSE files in the repository root for full details.
[toolchain]
channel = "1.96.0"
profile = "minimal"
# No rustfmt: .rustfmt.toml uses nightly-only options, so formatting runs as `cargo +nightly fmt`.
# No cross-compilation targets: the Dockerfile and build.yaml add the ones they need.
components = ["clippy"]
+3 -3
View File
@@ -39,11 +39,11 @@
"mas": {
"account": {
"deactivated": {
"description": "See kasutajakonto (<em>%(mxid)s</em>) on kustutatud. Kui see nii ei peaks olema, siis palun võta ühendust oma serveri haldajaga.",
"description": "See kasutajakonto (<em>%(mxid)s</em>) on kustutatud. Kui see nii ei peaks olema, siis palun võta ühendust oma teenusepakkujaga.",
"heading": "Kasutajakonto on kustutatud"
},
"locked": {
"description": "See kasutajakonto (<em>%(mxid)s</em>) on lukustatud. Kui see nii ei peaks olema, siis palun võta ühendust oma serveri haldajaga.",
"description": "See kasutajakonto (<em>%(mxid)s</em>) on lukustatud. Kui see nii ei peaks olema, siis palun võta ühendust oma teenusepakkujaga.",
"heading": "Kasutajakonto on lukustatud"
},
"logged_out": {
@@ -226,7 +226,7 @@
"terms_of_service": "Ma nõustun <a href=\"%s\" data-kind=\"primary\" class=\"cpd-link\">teenuse kasutustingimustega</a>"
},
"registration_token": {
"description": "Palun sisesta registreerimise tunnusluba, mille serveri haldaja on sulle andnud.",
"description": "Palun sisesta registreerimise tunnusluba, mille sinu teenusepakkuja on sulle andnud.",
"field": "Registreerimise tunnusluba",
"headline": "Registreerimise tunnusluba"
},