Compare commits
20 Commits
101ebb1c15
...
fix/404-on
Author | SHA1 | Date | |
---|---|---|---|
cc65e7d5ff
|
|||
1f42eaa37c | |||
acbe15ed69
|
|||
4671a5ee51
|
|||
9e7ba84576
|
|||
a8a7b16e9f
|
|||
8684086c74
|
|||
cd0a763c0a
|
|||
4d6d6d3515
|
|||
2bdd0b6a6d
|
|||
a9996d448c
|
|||
d5e92f282a
|
|||
285d4ba590
|
|||
6b8cef176f
|
|||
60756b7e72
|
|||
18ee33d512
|
|||
e2c20e4c64
|
|||
28aa250f58
|
|||
d29a3a0821
|
|||
570c792bf4
|
18
.woodpecker/.audit.yaml
Normal file
18
.woodpecker/.audit.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
variables:
|
||||||
|
- shared-config: &shared-config
|
||||||
|
image: rg.fr-par.scw.cloud/asr-projects/beau-gosse-du-92/ci-lint-audit:latest
|
||||||
|
pull: true
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: dependencies
|
||||||
|
<<: *shared-config
|
||||||
|
commands: |
|
||||||
|
cargo deny check
|
||||||
|
# Not ready to block PR on fail
|
||||||
|
failure: ignore
|
||||||
|
|
||||||
|
when:
|
||||||
|
- event: pull_request
|
||||||
|
|
||||||
|
depends_on:
|
||||||
|
- lint
|
@@ -2,7 +2,6 @@ steps:
|
|||||||
- name: renovate
|
- name: renovate
|
||||||
image: renovate/renovate
|
image: renovate/renovate
|
||||||
pull: true
|
pull: true
|
||||||
settings:
|
|
||||||
commands:
|
commands:
|
||||||
- renovate $${CI_REPO}
|
- renovate $${CI_REPO}
|
||||||
environment:
|
environment:
|
||||||
|
17
.woodpecker/.lint-audit-image.yaml
Normal file
17
.woodpecker/.lint-audit-image.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
steps:
|
||||||
|
dockerize:
|
||||||
|
image: woodpeckerci/plugin-kaniko
|
||||||
|
settings:
|
||||||
|
registry: rg.fr-par.scw.cloud
|
||||||
|
repo: asr-projects/beau-gosse-du-92/ci-lint-audit
|
||||||
|
dockerfile: ./docker/Dockerfile.ci-lint-audit
|
||||||
|
tags: latest
|
||||||
|
auto_tag: false
|
||||||
|
cache: false
|
||||||
|
username: nologin
|
||||||
|
password:
|
||||||
|
from_secret: registry-password
|
||||||
|
|
||||||
|
when:
|
||||||
|
- event: push
|
||||||
|
path: ./docker/Dockerfile.ci-lint-audit
|
45
.woodpecker/.lint.yaml
Normal file
45
.woodpecker/.lint.yaml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
variables:
|
||||||
|
- shared-config: &shared-config
|
||||||
|
image: rg.fr-par.scw.cloud/asr-projects/beau-gosse-du-92/ci-lint-audit:latest
|
||||||
|
pull: true
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: format
|
||||||
|
<<: *shared-config
|
||||||
|
commands: |
|
||||||
|
cargo fmt --all --check
|
||||||
|
|
||||||
|
- name: sort derives
|
||||||
|
<<: *shared-config
|
||||||
|
commands: |
|
||||||
|
cargo sort-derives --check
|
||||||
|
|
||||||
|
- name: clippy
|
||||||
|
<<: *shared-config
|
||||||
|
commands: |
|
||||||
|
cargo clippy --all --all-features -- -D warnings
|
||||||
|
# Not ready to block PR on fail
|
||||||
|
failure: ignore
|
||||||
|
|
||||||
|
- name: spellcheck
|
||||||
|
<<: *shared-config
|
||||||
|
commands: |
|
||||||
|
cargo spellcheck
|
||||||
|
|
||||||
|
- name: dependencies
|
||||||
|
<<: *shared-config
|
||||||
|
commands: |
|
||||||
|
cargo udeps
|
||||||
|
|
||||||
|
- name: dockerizable (web)
|
||||||
|
image: woodpeckerci/plugin-kaniko
|
||||||
|
settings:
|
||||||
|
registry: rg.fr-par.scw.cloud
|
||||||
|
repo: asr-projects/beau-gosse-du-92-web
|
||||||
|
username: nologin
|
||||||
|
password:
|
||||||
|
from_secret: registry-password
|
||||||
|
dry-run: true
|
||||||
|
|
||||||
|
when:
|
||||||
|
- event: pull_request
|
@@ -1,28 +0,0 @@
|
|||||||
steps:
|
|
||||||
- name: format
|
|
||||||
image: rust:latest
|
|
||||||
commands:
|
|
||||||
- rustup component add rustfmt
|
|
||||||
- cargo fmt --all --check
|
|
||||||
|
|
||||||
- name: clippy
|
|
||||||
image: rust:latest
|
|
||||||
commands:
|
|
||||||
- apt update && apt install -y libgtk-3-dev libjavascriptcoregtk-4.1-dev libwebkit2gtk-4.1-dev
|
|
||||||
- rustup component add clippy
|
|
||||||
- cargo clippy --all --all-features -- -D warnings
|
|
||||||
# Not ready for clippy validation
|
|
||||||
failure: ignore
|
|
||||||
|
|
||||||
# - name: build
|
|
||||||
# image: rust:latest
|
|
||||||
# commands:
|
|
||||||
# - cargo install dioxus-cli --locked -j ${JOBS_NB:-default}
|
|
||||||
# - rustup target add wasm32-unknown-unknown
|
|
||||||
# - cargo install -f wasm-bindgen-cli --version 0.2.93
|
|
||||||
# - dx build -r --platform web -- -j ${JOBS_NB:-default}
|
|
||||||
|
|
||||||
when:
|
|
||||||
- event: pull_request
|
|
||||||
# - event: push
|
|
||||||
# branch: ${CI_REPO_DEFAULT_BRANCH}
|
|
@@ -2,10 +2,14 @@
|
|||||||
name = "beau-gosse-du-92"
|
name = "beau-gosse-du-92"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
license = "AGPL-3.0-or-later"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = []
|
default = []
|
||||||
|
|
||||||
|
[package.metadata.spellcheck]
|
||||||
|
config = "./spellcheck.toml"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
# Errors
|
# Errors
|
||||||
anyhow = "1.0.75"
|
anyhow = "1.0.75"
|
||||||
@@ -46,9 +50,6 @@ turf = "0.9.3"
|
|||||||
dioxus-free-icons = { version = "0.9", features = ["ionicons", "font-awesome-solid"] }
|
dioxus-free-icons = { version = "0.9", features = ["ionicons", "font-awesome-solid"] }
|
||||||
modx = "0.1.4"
|
modx = "0.1.4"
|
||||||
|
|
||||||
# Matrix rich text editor
|
|
||||||
wysiwyg = { git = "https://github.com/matrix-org/matrix-rich-text-editor.git" }
|
|
||||||
|
|
||||||
[target.'cfg(target_family = "wasm")'.dependencies]
|
[target.'cfg(target_family = "wasm")'.dependencies]
|
||||||
# Logging/tracing
|
# Logging/tracing
|
||||||
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
|
tracing-subscriber = { version = "0.3.18", features = ["env-filter"] }
|
||||||
|
10
Dockerfile
10
Dockerfile
@@ -1,7 +1,4 @@
|
|||||||
FROM rust:1.86 AS builder
|
FROM rg.fr-par.scw.cloud/asr-projects/dioxus-cli-0.6.3:latest AS builder
|
||||||
|
|
||||||
# Homemade docker image providing the dioxus-cli
|
|
||||||
COPY --from=rg.fr-par.scw.cloud/asr-projects/dioxus-cli:asr-0.6.3 /usr/local/bin/dx /usr/local/bin/dx
|
|
||||||
|
|
||||||
ARG JOBS_NB=${JOBS_NB:-default}
|
ARG JOBS_NB=${JOBS_NB:-default}
|
||||||
# Disable incremental compilation
|
# Disable incremental compilation
|
||||||
@@ -10,6 +7,11 @@ ARG CARGO_INCREMENTAL=0
|
|||||||
|
|
||||||
WORKDIR /usr/src/beau-gosse-du-92
|
WORKDIR /usr/src/beau-gosse-du-92
|
||||||
|
|
||||||
|
# git is required by the git-version crate
|
||||||
|
RUN apt update \
|
||||||
|
&& apt install -y --no-install-recommends git \
|
||||||
|
&& apt clean
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN dx build -r --platform web -- -j ${JOBS_NB}
|
RUN dx build -r --platform web -- -j ${JOBS_NB}
|
||||||
|
12
README.md
12
README.md
@@ -14,8 +14,8 @@ reinvent the wheel. This solution provides:
|
|||||||
- [Open-source protocol](https://spec.matrix.org/v1.9/).
|
- [Open-source protocol](https://spec.matrix.org/v1.9/).
|
||||||
- Features expected for a messaging solution in 2024 (multi-devices management, emojis, integrations, redaction,
|
- Features expected for a messaging solution in 2024 (multi-devices management, emojis, integrations, redaction,
|
||||||
spaces, ...).
|
spaces, ...).
|
||||||
- Multi-platforms clients (Android, iOS and Webclient).
|
- Multi-platforms clients (Android, iOS and web-client).
|
||||||
- SDK available for each platform and a new Rust sdk supporting all the previously listed platforms.
|
- SDK available for each platform and a new Rust SDK supporting all the previously listed platforms.
|
||||||
- Conference stack ([Element Call](https://github.com/element-hq/element-call)).
|
- Conference stack ([Element Call](https://github.com/element-hq/element-call)).
|
||||||
- End-to-end encryption.
|
- End-to-end encryption.
|
||||||
- Federation management.
|
- Federation management.
|
||||||
@@ -28,16 +28,16 @@ API)](https://spec.matrix.org/v1.9/client-server-api/) protocol.
|
|||||||
|
|
||||||
Even if the Rust SDK is still in beta, it seems to be the future one (cf. [Element X - experience the future of
|
Even if the Rust SDK is still in beta, it seems to be the future one (cf. [Element X - experience the future of
|
||||||
Element!](https://element.io/blog/element-x-experience-the-future-of-element/)) and a good choice for someone starting a
|
Element!](https://element.io/blog/element-x-experience-the-future-of-element/)) and a good choice for someone starting a
|
||||||
new client... from my point of vue.
|
new client... from my point of view.
|
||||||
|
|
||||||
The SDK choosen, a Rust (to avoid to use the bindings provided by the matrix-rust-sdk and mostly because I want to
|
The SDK chosen, a Rust (to avoid to use the bindings provided by the matrix-rust-sdk and mostly because I want to
|
||||||
learn Rust) graphical library should be selected. The [Dioxus](https://dioxuslabs.com/) one seems to do the job:
|
learn Rust) graphical library should be selected. The [Dioxus](https://dioxuslabs.com/) one seems to do the job:
|
||||||
|
|
||||||
- React-inspired library for Rust.
|
- React-inspired library for Rust.
|
||||||
- Multi-platforms (use of Webview or WGPU-enabled renderers).
|
- Multi-platforms (use of Web-view or WGPU-enabled renderers).
|
||||||
|
|
||||||
# TODO
|
# TODO
|
||||||
|
|
||||||
- [ ] Test dioxus-radio.
|
- [ ] Test dioxus-radio.
|
||||||
- [ ] Design system ?
|
- [ ] Design system ?
|
||||||
- [ ] Implement MSN messenger features using Matrix.org sdk...
|
- [ ] Implement MSN messenger features using Matrix.org SDK...
|
||||||
|
298
deny.toml
Normal file
298
deny.toml
Normal file
@@ -0,0 +1,298 @@
|
|||||||
|
# This template contains all of the possible sections and their default values
|
||||||
|
|
||||||
|
# Note that all fields that take a lint level have these possible values:
|
||||||
|
# * deny - An error will be produced and the check will fail
|
||||||
|
# * warn - A warning will be produced, but the check will not fail
|
||||||
|
# * allow - No warning or error will be produced, though in some cases a note
|
||||||
|
# will be
|
||||||
|
|
||||||
|
# The values provided in this template are the default values that will be used
|
||||||
|
# when any section or field is not specified in your own configuration
|
||||||
|
|
||||||
|
# Root options
|
||||||
|
|
||||||
|
# The graph table configures how the dependency graph is constructed and thus
|
||||||
|
# which crates the checks are performed against
|
||||||
|
[graph]
|
||||||
|
# If 1 or more target triples (and optionally, target_features) are specified,
|
||||||
|
# only the specified targets will be checked when running `cargo deny check`.
|
||||||
|
# This means, if a particular package is only ever used as a target specific
|
||||||
|
# dependency, such as, for example, the `nix` crate only being used via the
|
||||||
|
# `target_family = "unix"` configuration, that only having windows targets in
|
||||||
|
# this list would mean the nix crate, as well as any of its exclusive
|
||||||
|
# dependencies not shared by any other crates, would be ignored, as the target
|
||||||
|
# list here is effectively saying which targets you are building for.
|
||||||
|
targets = [
|
||||||
|
# The triple can be any string, but only the target triples built in to
|
||||||
|
# rustc (as of 1.40) can be checked against actual config expressions
|
||||||
|
#"x86_64-unknown-linux-musl",
|
||||||
|
# You can also specify which target_features you promise are enabled for a
|
||||||
|
# particular target. target_features are currently not validated against
|
||||||
|
# the actual valid features supported by the target architecture.
|
||||||
|
#{ triple = "wasm32-unknown-unknown", features = ["atomics"] },
|
||||||
|
]
|
||||||
|
# When creating the dependency graph used as the source of truth when checks are
|
||||||
|
# executed, this field can be used to prune crates from the graph, removing them
|
||||||
|
# from the view of cargo-deny. This is an extremely heavy hammer, as if a crate
|
||||||
|
# is pruned from the graph, all of its dependencies will also be pruned unless
|
||||||
|
# they are connected to another crate in the graph that hasn't been pruned,
|
||||||
|
# so it should be used with care. The identifiers are [Package ID Specifications]
|
||||||
|
# (https://doc.rust-lang.org/cargo/reference/pkgid-spec.html)
|
||||||
|
#exclude = []
|
||||||
|
# If true, metadata will be collected with `--all-features`. Note that this can't
|
||||||
|
# be toggled off if true, if you want to conditionally enable `--all-features` it
|
||||||
|
# is recommended to pass `--all-features` on the cmd line instead
|
||||||
|
all-features = false
|
||||||
|
# If true, metadata will be collected with `--no-default-features`. The same
|
||||||
|
# caveat with `all-features` applies
|
||||||
|
no-default-features = false
|
||||||
|
# If set, these feature will be enabled when collecting metadata. If `--features`
|
||||||
|
# is specified on the cmd line they will take precedence over this option.
|
||||||
|
#features = []
|
||||||
|
|
||||||
|
# The output table provides options for how/if diagnostics are outputted
|
||||||
|
[output]
|
||||||
|
# When outputting inclusion graphs in diagnostics that include features, this
|
||||||
|
# option can be used to specify the depth at which feature edges will be added.
|
||||||
|
# This option is included since the graphs can be quite large and the addition
|
||||||
|
# of features from the crate(s) to all of the graph roots can be far too verbose.
|
||||||
|
# This option can be overridden via `--feature-depth` on the cmd line
|
||||||
|
feature-depth = 1
|
||||||
|
|
||||||
|
# This section is considered when running `cargo deny check advisories`
|
||||||
|
# More documentation for the advisories section can be found here:
|
||||||
|
# https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html
|
||||||
|
[advisories]
|
||||||
|
# The path where the advisory databases are cloned/fetched into
|
||||||
|
#db-path = "$CARGO_HOME/advisory-dbs"
|
||||||
|
# The url(s) of the advisory databases to use
|
||||||
|
#db-urls = ["https://github.com/rustsec/advisory-db"]
|
||||||
|
# A list of advisory IDs to ignore. Note that ignored advisories will still
|
||||||
|
# output a note when they are encountered.
|
||||||
|
ignore = [
|
||||||
|
#"RUSTSEC-0000-0000",
|
||||||
|
#{ id = "RUSTSEC-0000-0000", reason = "you can specify a reason the advisory is ignored" },
|
||||||
|
#"a-crate-that-is-yanked@0.1.1", # you can also ignore yanked crate versions if you wish
|
||||||
|
#{ crate = "a-crate-that-is-yanked@0.1.1", reason = "you can specify why you are ignoring the yanked crate" },
|
||||||
|
]
|
||||||
|
# If this is true, then cargo deny will use the git executable to fetch advisory database.
|
||||||
|
# If this is false, then it uses a built-in git library.
|
||||||
|
# Setting this to true can be helpful if you have special authentication requirements that cargo-deny does not support.
|
||||||
|
# See Git Authentication for more information about setting up git authentication.
|
||||||
|
#git-fetch-with-cli = true
|
||||||
|
|
||||||
|
# This section is considered when running `cargo deny check licenses`
|
||||||
|
# More documentation for the licenses section can be found here:
|
||||||
|
# https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html
|
||||||
|
[licenses]
|
||||||
|
version = 2
|
||||||
|
# List of explicitly allowed licenses
|
||||||
|
# See https://spdx.org/licenses/ for list of possible licenses
|
||||||
|
# [possible values: any SPDX 3.11 short identifier (+ optional exception)].
|
||||||
|
allow = [
|
||||||
|
# Free software licenses compatible with (A)GPL.
|
||||||
|
# List extracted from: https://www.gnu.org/licenses/license-list.en.html#GPLCompatibleLicenses
|
||||||
|
# "GPL-3.0",
|
||||||
|
# "GPL-2.0",
|
||||||
|
"LGPL-3.0",
|
||||||
|
# "LGPL-2.1",
|
||||||
|
"AGPL-3.0",
|
||||||
|
# "FSFAP",
|
||||||
|
"Apache-2.0",
|
||||||
|
"Apache-2.0 WITH LLVM-exception",
|
||||||
|
# "Artistic-2.0",
|
||||||
|
# "ClArtistic",
|
||||||
|
# "Sleepycat",
|
||||||
|
"BSL-1.0",
|
||||||
|
"BSD-3-Clause",
|
||||||
|
# "CECILL-2.0",
|
||||||
|
# "BSD-3-Clause-Clear",
|
||||||
|
# "ECL-2.0",
|
||||||
|
# "EFL-2.0",
|
||||||
|
# "EUDatagrid",
|
||||||
|
"MIT",
|
||||||
|
"BSD-2-Clause",
|
||||||
|
# "FTL",
|
||||||
|
# "HPND",
|
||||||
|
# "iMatix",
|
||||||
|
# "Imlib2",
|
||||||
|
# "IJG",
|
||||||
|
# "Intel",
|
||||||
|
"ISC",
|
||||||
|
"MPL-2.0",
|
||||||
|
"NCSA",
|
||||||
|
# "OLDAP-2.7",
|
||||||
|
# "NIST-PD",
|
||||||
|
# "CC-PDDC",
|
||||||
|
"CC0-1.0",
|
||||||
|
# "Python-2.0",
|
||||||
|
# "Ruby",
|
||||||
|
# "SGI-B-2.0",
|
||||||
|
# "SMLNJ",
|
||||||
|
# "UPL-1.0",
|
||||||
|
"Unlicense",
|
||||||
|
# "Vim",
|
||||||
|
# "W3C",
|
||||||
|
# "WTFPL",
|
||||||
|
# "X11",
|
||||||
|
# "XFree86-1.1",
|
||||||
|
"Zlib",
|
||||||
|
# "zlib-acknowledgement",
|
||||||
|
# "ZPL-2.0",
|
||||||
|
# "ZPL-2.1",
|
||||||
|
# Not expressely listed as (A)GPL compatible in the page above, but
|
||||||
|
# according to https://opensource.org/licenses/0BSD it is a modification
|
||||||
|
# of the ISC license, which is compatible. Its text is also extremely
|
||||||
|
# simple and allows using the code for any purpose
|
||||||
|
"0BSD",
|
||||||
|
# Permissive license used by the Unicode consortium, similar in spirit
|
||||||
|
# to other permissive licenses:
|
||||||
|
# https://spdx.org/licenses/Unicode-DFS-2016.html
|
||||||
|
"Unicode-DFS-2016",
|
||||||
|
# Permissive license used by the Unicode consortium, similar in spirit
|
||||||
|
# to other permissive licenses:
|
||||||
|
# https://spdx.org/licenses/Unicode-3.0.html
|
||||||
|
"Unicode-3.0",
|
||||||
|
]
|
||||||
|
# The confidence threshold for detecting a license from license text.
|
||||||
|
# The higher the value, the more closely the license text must be to the
|
||||||
|
# canonical license text of a valid SPDX license file.
|
||||||
|
# [possible values: any between 0.0 and 1.0].
|
||||||
|
confidence-threshold = 0.8
|
||||||
|
# Allow 1 or more licenses on a per-crate basis, so that particular licenses
|
||||||
|
# aren't accepted for every possible crate as with the normal allow list
|
||||||
|
exceptions = [
|
||||||
|
# Each entry is the crate and version constraint, and its specific allow
|
||||||
|
# list
|
||||||
|
#{ allow = ["Zlib"], crate = "adler32" },
|
||||||
|
]
|
||||||
|
|
||||||
|
# Some crates don't have (easily) machine readable licensing information,
|
||||||
|
# adding a clarification entry for it allows you to manually specify the
|
||||||
|
# licensing information
|
||||||
|
# [[licenses.clarify]]
|
||||||
|
# The package spec the clarification applies to
|
||||||
|
# crate = "ring"
|
||||||
|
# The SPDX expression for the license requirements of the crate
|
||||||
|
# expression = "MIT AND ISC AND OpenSSL"
|
||||||
|
# One or more files in the crate's source used as the "source of truth" for
|
||||||
|
# the license expression. If the contents match, the clarification will be used
|
||||||
|
# when running the license check, otherwise the clarification will be ignored
|
||||||
|
# and the crate will be checked normally, which may produce warnings or errors
|
||||||
|
# depending on the rest of your configuration
|
||||||
|
# license-files = [
|
||||||
|
#Each entry is a crate relative path, and the (opaque) hash of its contents
|
||||||
|
# { path = "LICENSE", hash = 0xbd0eed23 }
|
||||||
|
# ]
|
||||||
|
|
||||||
|
[licenses.private]
|
||||||
|
# If true, ignores workspace crates that aren't published, or are only
|
||||||
|
# published to private registries.
|
||||||
|
# To see how to mark a crate as unpublished (to the official registry),
|
||||||
|
# visit https://doc.rust-lang.org/cargo/reference/manifest.html#the-publish-field.
|
||||||
|
ignore = false
|
||||||
|
# One or more private registries that you might publish crates to, if a crate
|
||||||
|
# is only published to private registries, and ignore is true, the crate will
|
||||||
|
# not have its license(s) checked
|
||||||
|
registries = [
|
||||||
|
#"https://sekretz.com/registry
|
||||||
|
]
|
||||||
|
|
||||||
|
# This section is considered when running `cargo deny check bans`.
|
||||||
|
# More documentation about the 'bans' section can be found here:
|
||||||
|
# https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html
|
||||||
|
[bans]
|
||||||
|
# Lint level for when multiple versions of the same crate are detected
|
||||||
|
multiple-versions = "warn"
|
||||||
|
# Lint level for when a crate version requirement is `*`
|
||||||
|
wildcards = "allow"
|
||||||
|
# The graph highlighting used when creating dotgraphs for crates
|
||||||
|
# with multiple versions
|
||||||
|
# * lowest-version - The path to the lowest versioned duplicate is highlighted
|
||||||
|
# * simplest-path - The path to the version with the fewest edges is highlighted
|
||||||
|
# * all - Both lowest-version and simplest-path are used
|
||||||
|
highlight = "all"
|
||||||
|
# The default lint level for `default` features for crates that are members of
|
||||||
|
# the workspace that is being checked. This can be overridden by allowing/denying
|
||||||
|
# `default` on a crate-by-crate basis if desired.
|
||||||
|
workspace-default-features = "allow"
|
||||||
|
# The default lint level for `default` features for external crates that are not
|
||||||
|
# members of the workspace. This can be overridden by allowing/denying `default`
|
||||||
|
# on a crate-by-crate basis if desired.
|
||||||
|
external-default-features = "allow"
|
||||||
|
# List of crates that are allowed. Use with care!
|
||||||
|
allow = [
|
||||||
|
#"ansi_term@0.11.0",
|
||||||
|
#{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is allowed" },
|
||||||
|
]
|
||||||
|
# List of crates to deny
|
||||||
|
deny = [
|
||||||
|
#"ansi_term@0.11.0",
|
||||||
|
#{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is banned" },
|
||||||
|
# Wrapper crates can optionally be specified to allow the crate when it
|
||||||
|
# is a direct dependency of the otherwise banned crate
|
||||||
|
#{ crate = "ansi_term@0.11.0", wrappers = ["this-crate-directly-depends-on-ansi_term"] },
|
||||||
|
]
|
||||||
|
|
||||||
|
# List of features to allow/deny
|
||||||
|
# Each entry the name of a crate and a version range. If version is
|
||||||
|
# not specified, all versions will be matched.
|
||||||
|
#[[bans.features]]
|
||||||
|
#crate = "reqwest"
|
||||||
|
# Features to not allow
|
||||||
|
#deny = ["json"]
|
||||||
|
# Features to allow
|
||||||
|
#allow = [
|
||||||
|
# "rustls",
|
||||||
|
# "__rustls",
|
||||||
|
# "__tls",
|
||||||
|
# "hyper-rustls",
|
||||||
|
# "rustls",
|
||||||
|
# "rustls-pemfile",
|
||||||
|
# "rustls-tls-webpki-roots",
|
||||||
|
# "tokio-rustls",
|
||||||
|
# "webpki-roots",
|
||||||
|
#]
|
||||||
|
# If true, the allowed features must exactly match the enabled feature set. If
|
||||||
|
# this is set there is no point setting `deny`
|
||||||
|
#exact = true
|
||||||
|
|
||||||
|
# Certain crates/versions that will be skipped when doing duplicate detection.
|
||||||
|
skip = [
|
||||||
|
#"ansi_term@0.11.0",
|
||||||
|
#{ crate = "ansi_term@0.11.0", reason = "you can specify a reason why it can't be updated/removed" },
|
||||||
|
]
|
||||||
|
# Similarly to `skip` allows you to skip certain crates during duplicate
|
||||||
|
# detection. Unlike skip, it also includes the entire tree of transitive
|
||||||
|
# dependencies starting at the specified crate, up to a certain depth, which is
|
||||||
|
# by default infinite.
|
||||||
|
skip-tree = [
|
||||||
|
#"ansi_term@0.11.0", # will be skipped along with _all_ of its direct and transitive dependencies
|
||||||
|
#{ crate = "ansi_term@0.11.0", depth = 20 },
|
||||||
|
]
|
||||||
|
|
||||||
|
# This section is considered when running `cargo deny check sources`.
|
||||||
|
# More documentation about the 'sources' section can be found here:
|
||||||
|
# https://embarkstudios.github.io/cargo-deny/checks/sources/cfg.html
|
||||||
|
[sources]
|
||||||
|
# Lint level for what to happen when a crate from a crate registry that is not
|
||||||
|
# in the allow list is encountered
|
||||||
|
unknown-registry = "warn"
|
||||||
|
# Lint level for what to happen when a crate from a git repository that is not
|
||||||
|
# in the allow list is encountered
|
||||||
|
unknown-git = "warn"
|
||||||
|
# List of URLs for allowed crate registries. Defaults to the crates.io index
|
||||||
|
# if not specified. If it is specified but empty, no registries are allowed.
|
||||||
|
allow-registry = ["https://github.com/rust-lang/crates.io-index"]
|
||||||
|
# List of URLs for allowed Git repositories
|
||||||
|
allow-git = [
|
||||||
|
"https://github.com/matrix-org/matrix-rust-sdk.git"
|
||||||
|
]
|
||||||
|
|
||||||
|
[sources.allow-org]
|
||||||
|
# github.com organizations to allow git sources for
|
||||||
|
github = []
|
||||||
|
# gitlab.com organizations to allow git sources for
|
||||||
|
gitlab = []
|
||||||
|
# bitbucket.org organizations to allow git sources for
|
||||||
|
bitbucket = []
|
26
docker/Dockerfile.ci-lint-audit
Normal file
26
docker/Dockerfile.ci-lint-audit
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
FROM rust:1.86 AS builder
|
||||||
|
|
||||||
|
RUN apt update \
|
||||||
|
&& apt install -y --no-install-recommends libclang-dev hunspell \
|
||||||
|
&& apt clean
|
||||||
|
|
||||||
|
RUN rustup default nightly \
|
||||||
|
&& rustup component add rustfmt clippy
|
||||||
|
|
||||||
|
RUN cargo install cargo-binstall
|
||||||
|
|
||||||
|
RUN cargo binstall cargo-sort-derives cargo-spellcheck cargo-udeps cargo-deny
|
||||||
|
|
||||||
|
|
||||||
|
FROM debian:trixie-slim
|
||||||
|
|
||||||
|
RUN apt update \
|
||||||
|
&& apt install -y --no-install-recommends ca-certificates git rustup build-essential \
|
||||||
|
libssl-dev pkg-config libglib2.0-0 libpango-1.0-0 libatk1.0-dev libgdk-pixbuf-2.0-dev \
|
||||||
|
libcairo2-dev libgtk-3-dev libsoup-3.0-dev libwebkit2gtk-4.1-dev \
|
||||||
|
&& apt clean
|
||||||
|
|
||||||
|
COPY --from=builder /usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/ /root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/
|
||||||
|
COPY --from=builder /usr/local/cargo/bin /root/.cargo/bin/
|
||||||
|
|
||||||
|
RUN rustup default nightly
|
@@ -220,25 +220,5 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="module" async>
|
|
||||||
import init from "{base_path}/wasm/beau-gosse-du-92.js";
|
|
||||||
|
|
||||||
// Ensure that everything needed to render preloader has been downloaded
|
|
||||||
// before fetching the wasm bundle.
|
|
||||||
window.onload=function() {
|
|
||||||
init("{base_path}/wasm/beau-gosse-du-92_bg.wasm").then(
|
|
||||||
wasm => {
|
|
||||||
const preloader = document.getElementById("preloader");
|
|
||||||
if (preloader !== undefined) {
|
|
||||||
preloader.style.display = 'none';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (wasm.__wbindgen_start == undefined) {
|
|
||||||
wasm.main();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
6
spellcheck.dic
Normal file
6
spellcheck.dic
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
5
|
||||||
|
Dioxus
|
||||||
|
MSN
|
||||||
|
renderers
|
||||||
|
SDK
|
||||||
|
TODO
|
10
spellcheck.toml
Normal file
10
spellcheck.toml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Also take into account developer comments
|
||||||
|
dev_comments = false
|
||||||
|
|
||||||
|
# Skip the README.md file as defined in the cargo manifest
|
||||||
|
skip_readme = false
|
||||||
|
|
||||||
|
[Hunspell]
|
||||||
|
lang = "en_US"
|
||||||
|
search_dirs = [ "." ]
|
||||||
|
extra_dictionaries = [ "./spellcheck.dic" ]
|
@@ -21,7 +21,7 @@ use crate::infrastructure::services::mozaik_builder::create_mozaik;
|
|||||||
|
|
||||||
pub type RoomId = OwnedRoomId;
|
pub type RoomId = OwnedRoomId;
|
||||||
|
|
||||||
#[derive(PartialEq, Clone)]
|
#[derive(Clone, PartialEq)]
|
||||||
pub struct Invitation {
|
pub struct Invitation {
|
||||||
invitee_id: UserId,
|
invitee_id: UserId,
|
||||||
sender_id: UserId,
|
sender_id: UserId,
|
||||||
|
@@ -43,7 +43,7 @@ use super::{
|
|||||||
};
|
};
|
||||||
use crate::utils::oneshot;
|
use crate::utils::oneshot;
|
||||||
|
|
||||||
#[derive(thiserror::Error, Debug)]
|
#[derive(Debug, thiserror::Error)]
|
||||||
pub enum ClientError {
|
pub enum ClientError {
|
||||||
#[error("Matrix client error: {0}")]
|
#[error("Matrix client error: {0}")]
|
||||||
Matrix(#[from] matrix_sdk::Error),
|
Matrix(#[from] matrix_sdk::Error),
|
||||||
|
@@ -15,7 +15,7 @@ cfg_if! {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Eq, PartialEq, Hash)]
|
#[derive(Eq, Hash, PartialEq)]
|
||||||
pub enum AvatarFeeling {
|
pub enum AvatarFeeling {
|
||||||
Ok,
|
Ok,
|
||||||
Warning,
|
Warning,
|
||||||
|
@@ -3,7 +3,7 @@ use dioxus_free_icons::{Icon, IconShape};
|
|||||||
|
|
||||||
turf::style_sheet!("src/ui/components/button.scss");
|
turf::style_sheet!("src/ui/components/button.scss");
|
||||||
|
|
||||||
#[derive(PartialEq, Clone, Props)]
|
#[derive(Clone, PartialEq, Props)]
|
||||||
struct _ButtonProps {
|
struct _ButtonProps {
|
||||||
children: Element,
|
children: Element,
|
||||||
#[props(default = false)]
|
#[props(default = false)]
|
||||||
@@ -15,7 +15,7 @@ struct _ButtonProps {
|
|||||||
|
|
||||||
macro_rules! svg_text_icon {
|
macro_rules! svg_text_icon {
|
||||||
($name:ident,$text:literal) => {
|
($name:ident,$text:literal) => {
|
||||||
#[derive(Copy, Clone, PartialEq)]
|
#[derive(Clone, Copy, PartialEq)]
|
||||||
struct $name;
|
struct $name;
|
||||||
impl IconShape for $name {
|
impl IconShape for $name {
|
||||||
fn view_box(&self) -> &str {
|
fn view_box(&self) -> &str {
|
||||||
@@ -67,7 +67,7 @@ macro_rules! svg_text_button {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(PartialEq, Clone, Props)]
|
#[derive(Clone, PartialEq, Props)]
|
||||||
pub struct ButtonProps {
|
pub struct ButtonProps {
|
||||||
#[props(default = false)]
|
#[props(default = false)]
|
||||||
focus: bool,
|
focus: bool,
|
||||||
|
@@ -87,7 +87,7 @@ const _PYRAMID_VIEWBOX_HEIGHT: i64 = (_PYRAMID_CENTRAL_EDGE_E2_Y + _PYRAMID_STRO
|
|||||||
const _PYRAMID_VIEWBOX_WIDTH: i64 = (_PYRAMID_RIGHT_EDGE_E2_X + _PYRAMID_STROKE_WIDTH) as i64;
|
const _PYRAMID_VIEWBOX_WIDTH: i64 = (_PYRAMID_RIGHT_EDGE_E2_X + _PYRAMID_STROKE_WIDTH) as i64;
|
||||||
const _PYRAMID_VIEWBOX: &str = formatcp!("0 0 {_PYRAMID_VIEWBOX_WIDTH} {_PYRAMID_VIEWBOX_HEIGHT}");
|
const _PYRAMID_VIEWBOX: &str = formatcp!("0 0 {_PYRAMID_VIEWBOX_WIDTH} {_PYRAMID_VIEWBOX_HEIGHT}");
|
||||||
|
|
||||||
#[derive(PartialEq, Clone)]
|
#[derive(Clone, PartialEq)]
|
||||||
struct PyramidShape {
|
struct PyramidShape {
|
||||||
color: String,
|
color: String,
|
||||||
ratio: f64,
|
ratio: f64,
|
||||||
@@ -154,7 +154,7 @@ impl IconShape for PyramidShape {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(PartialEq, Clone, Props)]
|
#[derive(Clone, PartialEq, Props)]
|
||||||
pub struct PyramidProps {
|
pub struct PyramidProps {
|
||||||
color: Option<String>,
|
color: Option<String>,
|
||||||
#[props(default = 0.5)]
|
#[props(default = 0.5)]
|
||||||
|
@@ -15,7 +15,7 @@ use style::{COLOR_CRITICAL_100, COLOR_SUCCESS_100, COLOR_WARNING_100};
|
|||||||
|
|
||||||
turf::style_sheet!("src/ui/components/modal.scss");
|
turf::style_sheet!("src/ui/components/modal.scss");
|
||||||
|
|
||||||
#[derive(Clone, Copy, Eq, PartialEq, Hash)]
|
#[derive(Clone, Copy, Eq, Hash, PartialEq)]
|
||||||
pub enum Severity {
|
pub enum Severity {
|
||||||
Ok,
|
Ok,
|
||||||
Warning,
|
Warning,
|
||||||
@@ -42,7 +42,7 @@ fn avatar_configs() -> &'static HashMap<Severity, AvatarConfig<'static>> {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Props, Clone, PartialEq)]
|
#[derive(Clone, PartialEq, Props)]
|
||||||
pub struct ModalProps {
|
pub struct ModalProps {
|
||||||
pub severity: Severity,
|
pub severity: Severity,
|
||||||
#[props(optional)]
|
#[props(optional)]
|
||||||
|
@@ -5,7 +5,7 @@ use crate::ui::components::icons::LogoShape;
|
|||||||
|
|
||||||
turf::style_sheet!("src/ui/components/spinner.scss");
|
turf::style_sheet!("src/ui/components/spinner.scss");
|
||||||
|
|
||||||
#[derive(PartialEq, Clone, Props)]
|
#[derive(Clone, PartialEq, Props)]
|
||||||
pub struct SpinnerProps {
|
pub struct SpinnerProps {
|
||||||
#[props(default = true)]
|
#[props(default = true)]
|
||||||
animate: bool,
|
animate: bool,
|
||||||
|
@@ -9,7 +9,7 @@ turf::style_sheet!("src/ui/components/text_input.scss");
|
|||||||
|
|
||||||
pub trait InputPropsData {}
|
pub trait InputPropsData {}
|
||||||
|
|
||||||
#[derive(Props, Clone, PartialEq)]
|
#[derive(Clone, PartialEq, Props)]
|
||||||
pub struct InputProps<D: InputPropsData + 'static + std::cmp::PartialEq + std::clone::Clone> {
|
pub struct InputProps<D: InputPropsData + 'static + std::cmp::PartialEq + std::clone::Clone> {
|
||||||
value: Option<String>,
|
value: Option<String>,
|
||||||
placeholder: Option<String>,
|
placeholder: Option<String>,
|
||||||
@@ -97,7 +97,7 @@ pub fn TextInput(props: InputProps<TextInputState>) -> Element {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Props, Clone, PartialEq)]
|
#[derive(Clone, PartialEq, Props)]
|
||||||
pub struct PasswordInputState {
|
pub struct PasswordInputState {
|
||||||
text_input_state: TextInputState,
|
text_input_state: TextInputState,
|
||||||
#[props(default = 0.0)]
|
#[props(default = 0.0)]
|
||||||
|
Reference in New Issue
Block a user