Merge branch 'develop' into iceshrimp_mastodon
This commit is contained in:
commit
0d561cfdb4
36 changed files with 739 additions and 568 deletions
|
@ -42,7 +42,7 @@ variables:
|
|||
CARGO_PROFILE_DEV_LTO: 'off'
|
||||
CARGO_PROFILE_DEV_DEBUG: 'none'
|
||||
CARGO_TERM_COLOR: 'always'
|
||||
GIT_CLEAN_FLAGS: -ffdx -e node_modules/ -e built/ -e target/ -e packages/backend-rs/built/
|
||||
GIT_CLEAN_FLAGS: -ffdx -e node_modules/ -e built/ -e target/ -e packages/backend-rs/built/ -e ci/target-msrv/
|
||||
|
||||
default:
|
||||
before_script:
|
||||
|
@ -246,6 +246,7 @@ cargo:check:msrv:
|
|||
- apt-get update && apt-get -y upgrade
|
||||
- apt-get install -y --no-install-recommends build-essential clang mold python3 perl nodejs postgresql-client
|
||||
- cp ci/cargo/config.toml /usr/local/cargo/config.toml
|
||||
- export CARGO_TARGET_DIR='ci/target-msrv'
|
||||
script:
|
||||
- cargo fetch --locked --manifest-path Cargo.toml
|
||||
- cargo check --locked --frozen --all-features
|
||||
|
@ -320,6 +321,20 @@ cargo:doc:
|
|||
- cd target/doc
|
||||
- npx --yes netlify-cli deploy --prod --site="${CARGO_DOC_SITE_ID}" --dir=.
|
||||
|
||||
cargo:test:miri:
|
||||
stage: test
|
||||
rules:
|
||||
- if: $MIRI
|
||||
script:
|
||||
- export RUST_BACKTRACE=1
|
||||
- export CARGO_TARGET_DIR='ci/target-miri'
|
||||
- export MIRI_NIGHTLY=nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri)
|
||||
- curl -LsSf https://get.nexte.st/latest/linux | tar zxf - -C /usr/local/cargo/bin
|
||||
- rustup set profile minimal
|
||||
- rustup override set "${MIRI_NIGHTLY}"
|
||||
- rustup component add miri
|
||||
- MIRIFLAGS='-Zmiri-disable-isolation' cargo miri nextest run -j$(nproc --all)
|
||||
|
||||
renovate:
|
||||
stage: dependency
|
||||
image:
|
||||
|
|
164
Cargo.lock
generated
164
Cargo.lock
generated
|
@ -92,7 +92,7 @@ checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -143,18 +143,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "async-trait"
|
||||
version = "0.1.80"
|
||||
version = "0.1.81"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca"
|
||||
checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -368,9 +368,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "built"
|
||||
version = "0.7.3"
|
||||
version = "0.7.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c6a6c0b39c38fd754ac338b00a88066436389c0f029da5d37d1e01091d9b7c17"
|
||||
checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4"
|
||||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
|
@ -410,9 +410,9 @@ checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6"
|
|||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.104"
|
||||
version = "1.0.105"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "74b6a57f98764a267ff415d50a25e6e166f3831a5071af4995296ea97d210490"
|
||||
checksum = "5208975e568d83b6b05cc0a063c8e7e9acc2b43bee6da15616a5b73e109d7437"
|
||||
dependencies = [
|
||||
"jobserver",
|
||||
"libc",
|
||||
|
@ -447,7 +447,7 @@ dependencies = [
|
|||
"num-traits",
|
||||
"serde",
|
||||
"wasm-bindgen",
|
||||
"windows-targets 0.52.5",
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -629,7 +629,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -772,7 +772,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1388,7 +1388,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1467,7 +1467,7 @@ checksum = "0122b7114117e64a63ac49f752a5ca4624d534c7b1c7de796ac196381cd2d947"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1496,7 +1496,7 @@ checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1647,7 +1647,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"windows-targets 0.52.5",
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1744,7 +1744,7 @@ dependencies = [
|
|||
"convert_case",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1808,9 +1808,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "napi"
|
||||
version = "3.0.0-alpha.3"
|
||||
version = "3.0.0-alpha.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "53112614847625adf534655b35b7adcc66c4f6ca407284cca73fd5bb0cf8cde5"
|
||||
checksum = "2e5a69ce63aa1e68c939c5afa3f7be80d0c37eb3755022b064792dc019f08d8e"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"chrono",
|
||||
|
@ -1831,23 +1831,23 @@ checksum = "e1c0f5d67ee408a4685b61f5ab7e58605c8ae3f2b4189f0127d804ff13d5560a"
|
|||
|
||||
[[package]]
|
||||
name = "napi-derive"
|
||||
version = "3.0.0-alpha.3"
|
||||
version = "3.0.0-alpha.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "823fb2987af2446a2b4055604a920f2c1f1a028743c72adc8872d92da7e30d2b"
|
||||
checksum = "5e82f3209766c72466e28f05d8e55931cfda1652877b2cadf4011034890a2770"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"convert_case",
|
||||
"napi-derive-backend",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "napi-derive-backend"
|
||||
version = "2.0.0-alpha.3"
|
||||
version = "2.0.0-alpha.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "abd42151b3c26b5cdde9cf9a8fc5f7240de0919f234e14c6f54e3571d56e4dab"
|
||||
checksum = "5b17d6c84ea7366a126d850e2010f2d8354be1d3f2c62bc20751b08ba5b0a774"
|
||||
dependencies = [
|
||||
"convert_case",
|
||||
"once_cell",
|
||||
|
@ -1855,7 +1855,7 @@ dependencies = [
|
|||
"quote",
|
||||
"regex",
|
||||
"semver",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1984,7 +1984,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2076,7 +2076,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2137,7 +2137,7 @@ dependencies = [
|
|||
"proc-macro-error",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2196,7 +2196,7 @@ dependencies = [
|
|||
"libc",
|
||||
"redox_syscall 0.5.2",
|
||||
"smallvec",
|
||||
"windows-targets 0.52.5",
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2295,7 +2295,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2468,7 +2468,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2664,9 +2664,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "rgb"
|
||||
version = "0.8.40"
|
||||
version = "0.8.42"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a7439be6844e40133eda024efd85bf07f59d0dd2f59b10c00dd6cfb92cc5c741"
|
||||
checksum = "3eeba50c58624afb3be6d04abad8cb7a259d52017068c9f828975aa870a5daf5"
|
||||
dependencies = [
|
||||
"bytemuck",
|
||||
]
|
||||
|
@ -2839,7 +2839,7 @@ dependencies = [
|
|||
"proc-macro-error",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -2878,7 +2878,7 @@ dependencies = [
|
|||
"proc-macro2",
|
||||
"quote",
|
||||
"sea-bae",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
|
@ -2940,22 +2940,22 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
|
|||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.203"
|
||||
version = "1.0.204"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094"
|
||||
checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.203"
|
||||
version = "1.0.204"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"
|
||||
checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -3406,9 +3406,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.68"
|
||||
version = "2.0.69"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9"
|
||||
checksum = "201fcda3845c23e8212cd466bfebf0bd20694490fc0356ae8e428e0824a915a6"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
@ -3435,7 +3435,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -3500,7 +3500,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -3566,9 +3566,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tinyvec"
|
||||
version = "1.6.1"
|
||||
version = "1.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c55115c6fbe2d2bef26eb09ad74bde02d8255476fc0c7b515ef09fbb35742d82"
|
||||
checksum = "ce6b6a2fb3a985e99cebfaefa9faa3024743da73304ca1c683a36429613d3d22"
|
||||
dependencies = [
|
||||
"tinyvec_macros",
|
||||
]
|
||||
|
@ -3605,7 +3605,7 @@ checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -3699,7 +3699,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -3911,7 +3911,7 @@ dependencies = [
|
|||
"once_cell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
|
@ -3933,7 +3933,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
@ -4016,7 +4016,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
|
||||
dependencies = [
|
||||
"windows-core",
|
||||
"windows-targets 0.52.5",
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -4025,7 +4025,7 @@ version = "0.52.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
|
||||
dependencies = [
|
||||
"windows-targets 0.52.5",
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -4043,7 +4043,7 @@ version = "0.52.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
|
||||
dependencies = [
|
||||
"windows-targets 0.52.5",
|
||||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -4063,18 +4063,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "windows-targets"
|
||||
version = "0.52.5"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
|
||||
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
|
||||
dependencies = [
|
||||
"windows_aarch64_gnullvm 0.52.5",
|
||||
"windows_aarch64_msvc 0.52.5",
|
||||
"windows_i686_gnu 0.52.5",
|
||||
"windows_aarch64_gnullvm 0.52.6",
|
||||
"windows_aarch64_msvc 0.52.6",
|
||||
"windows_i686_gnu 0.52.6",
|
||||
"windows_i686_gnullvm",
|
||||
"windows_i686_msvc 0.52.5",
|
||||
"windows_x86_64_gnu 0.52.5",
|
||||
"windows_x86_64_gnullvm 0.52.5",
|
||||
"windows_x86_64_msvc 0.52.5",
|
||||
"windows_i686_msvc 0.52.6",
|
||||
"windows_x86_64_gnu 0.52.6",
|
||||
"windows_x86_64_gnullvm 0.52.6",
|
||||
"windows_x86_64_msvc 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -4085,9 +4085,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
|
|||
|
||||
[[package]]
|
||||
name = "windows_aarch64_gnullvm"
|
||||
version = "0.52.5"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
|
||||
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
|
||||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
|
@ -4097,9 +4097,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
|
|||
|
||||
[[package]]
|
||||
name = "windows_aarch64_msvc"
|
||||
version = "0.52.5"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
|
||||
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
|
@ -4109,15 +4109,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
|
|||
|
||||
[[package]]
|
||||
name = "windows_i686_gnu"
|
||||
version = "0.52.5"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
|
||||
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_gnullvm"
|
||||
version = "0.52.5"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
|
||||
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
|
||||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
|
@ -4127,9 +4127,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
|
|||
|
||||
[[package]]
|
||||
name = "windows_i686_msvc"
|
||||
version = "0.52.5"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
|
||||
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
|
@ -4139,9 +4139,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
|
|||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnu"
|
||||
version = "0.52.5"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
|
||||
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
|
@ -4151,9 +4151,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
|
|||
|
||||
[[package]]
|
||||
name = "windows_x86_64_gnullvm"
|
||||
version = "0.52.5"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
|
||||
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
|
||||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
|
@ -4163,9 +4163,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
|
|||
|
||||
[[package]]
|
||||
name = "windows_x86_64_msvc"
|
||||
version = "0.52.5"
|
||||
version = "0.52.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
|
||||
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
||||
|
||||
[[package]]
|
||||
name = "winnow"
|
||||
|
@ -4214,7 +4214,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
"synstructure 0.13.1",
|
||||
]
|
||||
|
||||
|
@ -4235,7 +4235,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -4255,7 +4255,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
"synstructure 0.13.1",
|
||||
]
|
||||
|
||||
|
@ -4284,7 +4284,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.68",
|
||||
"syn 2.0.69",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
10
Cargo.toml
10
Cargo.toml
|
@ -6,12 +6,12 @@ resolver = "2"
|
|||
macros = { path = "packages/macro-rs/macros" }
|
||||
macros-impl = { path = "packages/macro-rs/macros-impl" }
|
||||
|
||||
napi = "3.0.0-alpha.3"
|
||||
napi-derive = "3.0.0-alpha.3"
|
||||
napi = "3.0.0-alpha.6"
|
||||
napi-derive = "3.0.0-alpha.5"
|
||||
napi-build = "2.1.3"
|
||||
|
||||
argon2 = { version = "0.5.3", default-features = false }
|
||||
async-trait = { version = "0.1.80", default-features = false }
|
||||
async-trait = { version = "0.1.81", default-features = false }
|
||||
basen = { version = "0.1.0", default-features = false }
|
||||
bb8 = { version = "0.8.5", default-features = false }
|
||||
bcrypt = { version = "0.15.1", default-features = false }
|
||||
|
@ -32,10 +32,10 @@ redis = { version = "0.25.4", default-features = false }
|
|||
regex = { version = "1.10.5", default-features = false }
|
||||
rmp-serde = { version = "1.3.0", default-features = false }
|
||||
sea-orm = { version = "0.12.15", default-features = false }
|
||||
serde = { version = "1.0.203", default-features = false }
|
||||
serde = { version = "1.0.204", default-features = false }
|
||||
serde_json = { version = "1.0.120", default-features = false }
|
||||
serde_yaml = { version = "0.9.34", default-features = false }
|
||||
syn = { version = "2.0.68", default-features = false }
|
||||
syn = { version = "2.0.69", default-features = false }
|
||||
sysinfo = { version = "0.30.12", default-features = false }
|
||||
thiserror = { version = "1.0.61", default-features = false }
|
||||
tokio = { version = "1.38.0", default-features = false }
|
||||
|
|
2
ci/.gitignore
vendored
Normal file
2
ci/.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
target-msrv/
|
||||
target-miri/
|
|
@ -2168,7 +2168,6 @@ addRe: Afegeix "re:" al començament del comentari quant responguis a un missatg
|
|||
confirm: Confirmar
|
||||
importZip: Importar ZIP
|
||||
exportZip: Exportar ZIP
|
||||
emojiPackCreator: Creador de paquets Emoji
|
||||
detectPostLanguage: Detecta l'idioma automàticament i mostra un botó per els articles
|
||||
en altres idiomes
|
||||
indexableDescription: Permet al cercador intern mostrar els missatges públics
|
||||
|
@ -2324,3 +2323,4 @@ cancelScheduledPost: Elimina la planificació
|
|||
addAlt4MeTag: "Afegeix automàticament l'etiqueta #Alt4Me a les teves publicacions
|
||||
que tinguin un fitxer adjunt sense descripció"
|
||||
strongPassword: Bona contrasenya
|
||||
turnOffCatLanguage: Desactiva la conversió al llenguatge de gat
|
||||
|
|
|
@ -2186,7 +2186,6 @@ addRe: Ein "re:" am Anfang des Kommentars hinzufügen, um einem Beitrag mit eine
|
|||
zu antworten
|
||||
confirm: Bestätigen
|
||||
importZip: ZIP Importieren
|
||||
emojiPackCreator: Emoji-Pack Ersteller
|
||||
exportZip: ZIP exportieren
|
||||
detectPostLanguage: Sprache automatisch erkennen und eine Schaltfläche zum Übersetzen
|
||||
von Beiträgen in Fremdsprachen anzeigen
|
||||
|
|
|
@ -1167,7 +1167,6 @@ exportZip: "Export ZIP"
|
|||
getQrCode: "Show QR code"
|
||||
remoteFollow: "Remote follow"
|
||||
copyRemoteFollowUrl: "Copy remote follow URL"
|
||||
emojiPackCreator: "Emoji pack creator"
|
||||
indexable: "Indexable"
|
||||
indexableDescription: "Allow built-in search to show your public posts"
|
||||
languageForTranslation: "Post translation language"
|
||||
|
|
|
@ -1 +1,11 @@
|
|||
_lang_: "Esperanto"
|
||||
introFirefish: Bonvenon Firefish estas malfermkoda, ne centra socia platformo kiu
|
||||
estos senpage ĉiam! 🚀
|
||||
headlineFirefish: Malfermkoda, ne centra socia platformo kiu estos senpage ĉiam 🚀
|
||||
monthAndDay: '{monato}/{tago}'
|
||||
search: Serĉi
|
||||
searchPlaceholder: Serĉi Firefish
|
||||
notifications: Sciigoj
|
||||
username: Uzantnomo
|
||||
password: Pasvorto
|
||||
forgotPassword: Forgesa pasvorto
|
||||
|
|
|
@ -1937,7 +1937,7 @@ manageGroups: Administrar grupos
|
|||
replayTutorial: Repetir Tutorial
|
||||
privateMode: Modo privado
|
||||
addInstance: Añadir un servidor
|
||||
renoteMute: Silenciar impulsos
|
||||
renoteMute: Silenciar impulsos en la línea de tiempo
|
||||
renoteUnmute: Dejar de silenciar impulsos
|
||||
flagSpeakAsCat: Habla como un gato
|
||||
selectInstance: Selecciona un servidor
|
||||
|
@ -2152,7 +2152,6 @@ detectPostLanguage: Detectar automáticamente el idioma y mostrar el botón de t
|
|||
indexableDescription: Permitir que el buscador integrado muestre tus publicaciones
|
||||
reactions: Reacciones
|
||||
exportZip: Exportar ZIP
|
||||
emojiPackCreator: Creador de pack de Emoji
|
||||
importZip: Importar ZIP
|
||||
vibrate: Reproducir vibraciones
|
||||
openServerInfo: Mostrar información del servidor al presionar el simbolo del servidor
|
||||
|
@ -2176,3 +2175,10 @@ moreUrlsDescription: 'Ingrese los enlaces de las páginas que desea Fijar en el
|
|||
de ayuda, ubicado en la esquina inferior izquierda, usando este formato de notación:
|
||||
["Nombre para mostrar": https://su-enlace.com/]'
|
||||
quotes: Citaciónes
|
||||
markLocalFilesNsfwByDefault: Marcar todo nuevo archivo local como sensible por defecto
|
||||
toReply: Respuesta
|
||||
toPost: Publicar
|
||||
sentFollowRequests: Enviar solicitudes de seguimiento
|
||||
toQuote: Cita
|
||||
replyMute: Silenciar respuestas en la linea de tiempo
|
||||
replyUnmute: Anular respuestas en las lineas de tiempo
|
||||
|
|
|
@ -2193,7 +2193,6 @@ addRe: Ajouter « re: » au début d'un avertissement de contenu (CW) en répo
|
|||
confirm: Confirmer
|
||||
importZip: Importer ZIP
|
||||
exportZip: Exporter ZIP
|
||||
emojiPackCreator: Créateur de pack d'émoji
|
||||
detectPostLanguage: Détecter automatiquement la langue et afficher un bouton de traduction
|
||||
pour les publications en langues étrangères
|
||||
indexableDescription: Permettre à la recherche interne d'afficher vos publications
|
||||
|
|
|
@ -2147,7 +2147,6 @@ addRe: Tambahkan "re:" pada awal komentar balasan postingan dengan peringatan ko
|
|||
confirm: Konfirmasi
|
||||
importZip: Impor ZIP
|
||||
exportZip: Ekspor ZIP
|
||||
emojiPackCreator: Pembuat paket emoji
|
||||
detectPostLanguage: Deteksi bahasa secara otomatis dan tampilkan tombol terjemahkan
|
||||
untuk kiriman dalam bahasa asing
|
||||
indexableDescription: Perbolehkan pencarian di sini untuk menampilkan kiriman publikmu
|
||||
|
|
|
@ -2132,7 +2132,6 @@ _messaging:
|
|||
confirm: Conferma
|
||||
importZip: Importa ZIP
|
||||
exportZip: Esporta ZIP
|
||||
emojiPackCreator: Creazione di un pacchetto Emoji
|
||||
addRe: Aggiungi "re:" all'inizio di un commento in risposta a un post che ha un content
|
||||
warning
|
||||
detectPostLanguage: Riconosci la lingua automaticamente e mostra il bottone per tradurre
|
||||
|
|
|
@ -2011,7 +2011,6 @@ delete2faConfirm: これで、このアカウントの2要素認証は完全に
|
|||
inputNotMatch: 入力が一致しません
|
||||
deletePasskeysConfirm: これで、このアカウントのパスキーは完全に削除されます。続行しますか?
|
||||
importZip: ZIPをインポート
|
||||
emojiPackCreator: 絵文字パックの作者
|
||||
confirm: 確認
|
||||
exportZip: ZIPをエクスポート
|
||||
openServerInfo: "投稿内のサーバー名をクリックでサーバー情報を開く"
|
||||
|
@ -2090,3 +2089,4 @@ cancelScheduledPost: 予約を解除する
|
|||
scheduledPostAt: '{time}に投稿されます'
|
||||
strongPassword: 強いパスワード
|
||||
addAlt4MeTag: '説明の無いファイルを投稿する際に自動で #Alt4Me のハッシュタグをつける'
|
||||
turnOffCatLanguage: 猫語への変換を無効化する
|
||||
|
|
|
@ -1980,7 +1980,6 @@ _feeds:
|
|||
_dialog:
|
||||
charactersExceeded: 글자 수 제한을 초과했습니다! 현재 {current}자 / 최대 {max}자
|
||||
charactersBelow: 최소 글자 수 보다 작습니다! 현재 {current}자 / 최소 {max}자
|
||||
emojiPackCreator: 이모지 팩 만든이
|
||||
objectStorageS3ForcePathStyleDesc: Endpoint URL을 '<bucket>.s3.amazonaws.com'가 아닌 's3.amazonaws.com/<bucket>/'와
|
||||
같은 형식으로 사용할 경우에 활성화해 주세요.
|
||||
confirm: 확인
|
||||
|
|
|
@ -1859,7 +1859,6 @@ enterSendsMessage: Trykk enter for å sende meldinger. (Hvis avslått må du try
|
|||
confirmToUnclipAlreadyClippedNote: Denne posten er allerede en del av utklippet "{name}".
|
||||
Vil du fjerne den fra dette utklippet i stedet?
|
||||
showWithSparkles: Vis med gnister
|
||||
emojiPackCreator: Emoji-pakke-bygger
|
||||
importZip: Importer zip-fil
|
||||
pushNotificationAlreadySubscribed: Push-varsler er allerede påslått
|
||||
ratio: Forhold
|
||||
|
|
|
@ -2113,7 +2113,6 @@ removeMember: Удалить участника
|
|||
confirm: Подтвердить
|
||||
importZip: Импортировать ZIP
|
||||
exportZip: Экспортировать ZIP
|
||||
emojiPackCreator: Генератор паков эмодзи
|
||||
objectStorageS3ForcePathStyle: Использовать путь вместо домена в URL
|
||||
objectStorageS3ForcePathStyleDesc: Включите, если хотите, чтобы URL был в формате
|
||||
's3.amazonaws.com/<bucket>/' вместо '<bucket>.s3.amazonaws.com'.
|
||||
|
|
|
@ -2123,7 +2123,6 @@ indexableDescription: Yerleşik aramanın herkese açık gönderilerinizi göste
|
|||
addRe: İçerik uyarısına sahip bir gönderiye yanıt olarak paylaşılan gönderinin başına
|
||||
"re:" ekle
|
||||
exportZip: ZIP dışa aktar
|
||||
emojiPackCreator: Emoji paketi oluşturucu
|
||||
importZip: ZIP içe aktar
|
||||
indexable: Endekslenebilir
|
||||
languageForTranslation: Çeviri sonrası dili
|
||||
|
|
|
@ -2126,4 +2126,3 @@ addRe: Додати "re:" на початку коментаря у відпов
|
|||
confirm: Підтвердити
|
||||
importZip: Імпортувати ZIP
|
||||
exportZip: Експортувати ZIP
|
||||
emojiPackCreator: Генератор паків емодзі
|
||||
|
|
|
@ -1993,7 +1993,6 @@ exportZip: 导出 ZIP
|
|||
getQrCode: "获取二维码"
|
||||
remoteFollow: "远程关注"
|
||||
copyRemoteFollowUrl: "复制远程关注 URL"
|
||||
emojiPackCreator: 表情包创建工具
|
||||
objectStorageS3ForcePathStyleDesc: 打开此选项可构建格式为 "s3.amazonaws.com/<bucket>/" 而非 "<bucket>.s3.amazonaws.com"
|
||||
的端点 URL。
|
||||
objectStorageS3ForcePathStyle: 使用基于路径的端点 URL
|
||||
|
|
|
@ -1972,7 +1972,6 @@ _feeds:
|
|||
rss: RSS
|
||||
copyFeed: 複製訂閱URL
|
||||
jsonFeed: JSON Feed
|
||||
emojiPackCreator: 表情包的作者
|
||||
importZip: 匯入ZIP
|
||||
delete2fa: 停用二階段認證(2FA)
|
||||
confirm: 確認
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"type": "git",
|
||||
"url": "https://firefish.dev/firefish/firefish.git"
|
||||
},
|
||||
"packageManager": "pnpm@9.4.0",
|
||||
"packageManager": "pnpm@9.5.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"rebuild": "pnpm run clean && pnpm run build",
|
||||
|
@ -47,8 +47,8 @@
|
|||
"@biomejs/cli-darwin-x64": "1.8.3",
|
||||
"@biomejs/cli-linux-arm64": "1.8.3",
|
||||
"@biomejs/cli-linux-x64": "1.8.3",
|
||||
"@types/node": "20.14.9",
|
||||
"@types/node": "20.14.10",
|
||||
"execa": "9.3.0",
|
||||
"pnpm": "9.4.0"
|
||||
"pnpm": "9.5.0"
|
||||
}
|
||||
}
|
||||
|
|
114
packages/backend-rs/README.md
Normal file
114
packages/backend-rs/README.md
Normal file
|
@ -0,0 +1,114 @@
|
|||
A work-in-progress Firefish backend written in Rust
|
||||
|
||||
Minimum supported Rust version (MSRV): 1.74
|
||||
|
||||
Auto-generated documentation is at <https://docs.firefish.dev/backend_rs>
|
||||
|
||||
# How to write the code
|
||||
|
||||
Currently, there is no entrypoint in this project, and all functions are executed via Node-API.
|
||||
|
||||
You need to apply the [`macros::export`] proc macro to export a function to the Node.js backend:
|
||||
|
||||
```rust,ignore
|
||||
#[macros::export]
|
||||
pub fn to_be_exported(value: &str) -> i32 {
|
||||
// You can also call other functions that are not exported
|
||||
do_something();
|
||||
42
|
||||
}
|
||||
|
||||
fn do_something() {
|
||||
do_other_thing();
|
||||
}
|
||||
```
|
||||
|
||||
this code will be translated into this TypeScript code:
|
||||
|
||||
```typescript
|
||||
export declare function toBeExported(value: string): number {
|
||||
/* executes the compiled Rust function */
|
||||
}
|
||||
```
|
||||
|
||||
You can also export `async` functions:
|
||||
|
||||
```rust,ignore
|
||||
#[macros::export]
|
||||
pub async fn async_function() -> i32 {
|
||||
some_async_task().await
|
||||
}
|
||||
```
|
||||
|
||||
```typescript
|
||||
export declare function asyncFunction(): Promise<number> {
|
||||
/* executes the compiled Rust function */
|
||||
}
|
||||
```
|
||||
|
||||
You need to specify `object` attribute to export `struct`s:
|
||||
|
||||
```rust,ignore
|
||||
#[macros::export(object)]
|
||||
pub struct Thing {
|
||||
pub field_one: String,
|
||||
pub field_two: Option<String>,
|
||||
}
|
||||
```
|
||||
|
||||
```typescript
|
||||
export interface Thing {
|
||||
fieldOne: string
|
||||
fieldTwo: string | null
|
||||
}
|
||||
```
|
||||
|
||||
# Update auto-generated files
|
||||
|
||||
These files are auto-generated and are not intended for manual editing:
|
||||
- `packages/backend-rs/index.js`
|
||||
- `packages/backend-rs/index.d.ts`
|
||||
- [`packages/backend-rs/src/model/entity/*`](crate::model::entity)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
1. `dev/config.env` (see `dev/config.example.env` for reference)
|
||||
2. PostgreSQL database listening on port `25432`
|
||||
3. Dev dependencies
|
||||
- [GNU Make](<https://www.gnu.org/software/make/>)
|
||||
- [sea-orm-cli](<https://www.sea-ql.org/SeaORM/docs/generate-entity/sea-orm-cli/>)
|
||||
|
||||
## Update database entity
|
||||
|
||||
Run the following command in the repository root directory
|
||||
|
||||
```sh
|
||||
make entities
|
||||
```
|
||||
|
||||
## Update `index.js` and `index.d.ts`
|
||||
|
||||
Run the following command in the repository root directory
|
||||
|
||||
```sh
|
||||
make napi
|
||||
```
|
||||
|
||||
# Unit tests
|
||||
|
||||
It is highly encouraged that you write unit tests and test the code yourself (there is no integration test at this point).
|
||||
|
||||
## Prerequisites
|
||||
|
||||
1. `dev/config.env` (see `dev/config.example.env` for reference)
|
||||
2. Firefish config file (`.config/default.yml`)
|
||||
3. Dev dependency
|
||||
- [cargo-nextest](<https://nexte.st/>)
|
||||
|
||||
## Run unit tests
|
||||
|
||||
Run the following command in the repository root directory
|
||||
|
||||
```sh
|
||||
pnpm run test:rs
|
||||
```
|
22
packages/backend-rs/index.d.ts
vendored
22
packages/backend-rs/index.d.ts
vendored
|
@ -1147,18 +1147,16 @@ export type PushNotificationKind = 'generic'|
|
|||
'readAllNotifications'|
|
||||
'mastodon';
|
||||
|
||||
export enum PushSubscriptionType {
|
||||
AdminReport = 'adminReport',
|
||||
AdminSignUp = 'adminSignUp',
|
||||
Favourite = 'favourite',
|
||||
Follow = 'follow',
|
||||
FollowRequest = 'followRequest',
|
||||
Mention = 'mention',
|
||||
Poll = 'poll',
|
||||
Reblog = 'reblog',
|
||||
Status = 'status',
|
||||
Update = 'update'
|
||||
}
|
||||
export type PushSubscriptionType = 'adminReport'|
|
||||
'adminSignUp'|
|
||||
'favourite'|
|
||||
'follow'|
|
||||
'followRequest'|
|
||||
'mention'|
|
||||
'poll'|
|
||||
'reblog'|
|
||||
'status'|
|
||||
'update';
|
||||
|
||||
export interface RedisConfig {
|
||||
host: string
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
#![doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/README.md"))]
|
||||
|
||||
pub mod config;
|
||||
pub mod database;
|
||||
pub mod federation;
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
"archiver": "7.0.1",
|
||||
"async-lock": "1.4.0",
|
||||
"async-mutex": "0.5.0",
|
||||
"aws-sdk": "2.1654.0",
|
||||
"aws-sdk": "2.1655.0",
|
||||
"axios": "1.7.2",
|
||||
"backend-rs": "workspace:*",
|
||||
"blurhash": "2.0.5",
|
||||
|
@ -140,7 +140,7 @@
|
|||
"@types/koa__multer": "2.0.7",
|
||||
"@types/koa__router": "12.0.4",
|
||||
"@types/mocha": "10.0.7",
|
||||
"@types/node": "20.14.9",
|
||||
"@types/node": "20.14.10",
|
||||
"@types/node-fetch": "2.6.11",
|
||||
"@types/nodemailer": "6.4.15",
|
||||
"@types/oauth": "0.9.5",
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
"check-password-strength": "2.0.10",
|
||||
"city-timezones": "1.2.1",
|
||||
"compare-versions": "6.1.0",
|
||||
"cropperjs": "2.0.0-rc.0",
|
||||
"cropperjs": "2.0.0-rc.1",
|
||||
"date-fns": "3.6.0",
|
||||
"emojilib": "3.0.12",
|
||||
"eventemitter3": "5.0.1",
|
||||
|
|
|
@ -58,6 +58,7 @@ import { userPage } from "@/filters/user";
|
|||
import { i18n } from "@/i18n";
|
||||
import { pageWindow } from "@/os";
|
||||
import icon from "@/scripts/icon";
|
||||
import { me, isSignedIn } from "@/me";
|
||||
|
||||
const props = defineProps<{
|
||||
note: entities.Note;
|
||||
|
@ -71,6 +72,8 @@ const showTicker =
|
|||
|
||||
function openServerInfo() {
|
||||
if (!props.canOpenServerInfo || !defaultStore.state.openServerInfo) return;
|
||||
if (props.note.user.host != null && !isSignedIn(me)) return;
|
||||
|
||||
const instanceInfoUrl =
|
||||
props.note.user.host == null
|
||||
? "/about"
|
||||
|
|
|
@ -322,13 +322,6 @@ const menu = (ev: MouseEvent) => {
|
|||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
icon: `${icon("ph-info")}`,
|
||||
text: i18n.ts.emojiPackCreator,
|
||||
action: () => {
|
||||
window.open("https://firefish.dev/firefish/emoji-gen", "_blank");
|
||||
},
|
||||
},
|
||||
],
|
||||
ev.currentTarget ?? ev.target,
|
||||
);
|
||||
|
|
195
packages/client/src/pages/settings/accessibility.vue
Normal file
195
packages/client/src/pages/settings/accessibility.vue
Normal file
|
@ -0,0 +1,195 @@
|
|||
<template>
|
||||
<div class="_formRoot">
|
||||
<FormSection>
|
||||
<FormSwitch v-model="showNoAltTextWarning" class="_formBlock">{{
|
||||
i18n.ts.showNoAltTextWarning
|
||||
}}</FormSwitch>
|
||||
<FormSwitch v-if="showNoAltTextWarning" v-model="showAddFileDescriptionAtFirstPost" class="_formBlock">{{
|
||||
i18n.ts.showAddFileDescriptionAtFirstPost
|
||||
}}</FormSwitch>
|
||||
<FormSwitch v-model="addAlt4MeTag" class="_formBlock">{{
|
||||
i18n.ts.addAlt4MeTag
|
||||
}}</FormSwitch>
|
||||
<FormSwitch v-model="expandOnNoteClick" class="_formBlock"
|
||||
>{{ i18n.ts.expandOnNoteClick
|
||||
}}<template #caption>{{
|
||||
i18n.ts.expandOnNoteClickDesc
|
||||
}}</template>
|
||||
</FormSwitch>
|
||||
<FormSwitch v-model="turnOffCatLanguage" @update:modelValue="save()" class="_formBlock"
|
||||
>{{ i18n.ts.turnOffCatLanguage }}<template #caption>{{
|
||||
i18n.ts.reflectMayTakeTime
|
||||
}}</template>
|
||||
</FormSwitch>
|
||||
<FormSwitch v-model="advancedMfm" class="_formBlock">
|
||||
{{ i18n.ts._mfm.advanced
|
||||
}}<template #caption>{{
|
||||
i18n.ts._mfm.advancedDescription
|
||||
}}</template>
|
||||
</FormSwitch>
|
||||
<FormSwitch v-model="autoplayMfm" class="_formBlock">
|
||||
{{ i18n.ts._mfm.alwaysPlay }}
|
||||
<template #caption>
|
||||
<i
|
||||
:class="icon('ph-warning')"
|
||||
style="color: var(--warn)"
|
||||
></i>
|
||||
{{ i18n.ts._mfm.warn }}
|
||||
</template>
|
||||
</FormSwitch>
|
||||
<FormSwitch v-model="reduceAnimation" class="_formBlock">{{
|
||||
i18n.ts.reduceUiAnimation
|
||||
}}</FormSwitch>
|
||||
<FormSwitch
|
||||
v-model="disableShowingAnimatedImages"
|
||||
class="_formBlock"
|
||||
>{{ i18n.ts.disableShowingAnimatedImages }}</FormSwitch
|
||||
>
|
||||
<FormSwitch v-model="useSystemFont" class="_formBlock">{{
|
||||
i18n.ts.useSystemFont
|
||||
}}</FormSwitch>
|
||||
<FormSwitch v-model="useOsNativeEmojis" class="_formBlock">
|
||||
{{ i18n.ts.useOsNativeEmojis }}
|
||||
<div>
|
||||
<Mfm :key="useOsNativeEmojis" text="🍮🍦🍭🍩🍰🍫🍬🥞🍪" />
|
||||
</div>
|
||||
</FormSwitch>
|
||||
<FormSwitch
|
||||
v-model="vibrate"
|
||||
class="_formBlock"
|
||||
@click="demoVibrate"
|
||||
>{{ i18n.ts.vibrate }}
|
||||
</FormSwitch>
|
||||
<FormRadios v-model="fontSize" class="_formBlock">
|
||||
<template #label>{{ i18n.ts.fontSize }}</template>
|
||||
<option :value="null">
|
||||
<span style="font-size: 14px">14</span>
|
||||
</option>
|
||||
<option value="15">
|
||||
<span style="font-size: 15px">15</span>
|
||||
</option>
|
||||
<option value="16">
|
||||
<span style="font-size: 16px">16</span>
|
||||
</option>
|
||||
<option value="17">
|
||||
<span style="font-size: 17px">17</span>
|
||||
</option>
|
||||
<option value="18">
|
||||
<span style="font-size: 18px">18</span>
|
||||
</option>
|
||||
</FormRadios>
|
||||
|
||||
<!-- <FormRange
|
||||
v-model="fontSize"
|
||||
:min="12"
|
||||
:max="18"
|
||||
:step="1"
|
||||
:value="fontSize ? fontSize : 14"
|
||||
easing
|
||||
:showTicks="true"
|
||||
class="_formBlock"
|
||||
>
|
||||
<template #label>{{ i18n.ts.fontSize }}</template>
|
||||
</FormRange> -->
|
||||
</FormSection>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, ref, watch } from "vue";
|
||||
import { me } from "@/me";
|
||||
import FormSwitch from "@/components/form/switch.vue";
|
||||
import FormRadios from "@/components/form/radios.vue";
|
||||
import FormSection from "@/components/form/section.vue";
|
||||
import { ColdDeviceStorage, defaultStore } from "@/store";
|
||||
import * as os from "@/os";
|
||||
import { unisonReload } from "@/scripts/unison-reload";
|
||||
import { i18n } from "@/i18n";
|
||||
import { definePageMetadata } from "@/scripts/page-metadata";
|
||||
import icon from "@/scripts/icon";
|
||||
|
||||
const fontSize = ref(localStorage.getItem("fontSize"));
|
||||
const useSystemFont = ref(localStorage.getItem("useSystemFont") !== "f");
|
||||
const turnOffCatLanguage = ref(!me?.readCatLanguage);
|
||||
|
||||
function save() {
|
||||
os.api("i/update", {
|
||||
readCatLanguage: !turnOffCatLanguage.value,
|
||||
});
|
||||
}
|
||||
|
||||
async function reloadAsk() {
|
||||
const { canceled } = await os.confirm({
|
||||
type: "info",
|
||||
text: i18n.ts.reloadToApplySetting,
|
||||
});
|
||||
if (canceled) return;
|
||||
|
||||
unisonReload();
|
||||
}
|
||||
|
||||
function demoVibrate() {
|
||||
window.navigator.vibrate(100);
|
||||
}
|
||||
|
||||
const reduceAnimation = computed(
|
||||
defaultStore.makeGetterSetter(
|
||||
"animation",
|
||||
(v) => !v,
|
||||
(v) => !v,
|
||||
),
|
||||
);
|
||||
const advancedMfm = computed(defaultStore.makeGetterSetter("advancedMfm"));
|
||||
const autoplayMfm = computed(
|
||||
defaultStore.makeGetterSetter(
|
||||
"animatedMfm",
|
||||
(v) => !v,
|
||||
(v) => !v,
|
||||
),
|
||||
);
|
||||
const useOsNativeEmojis = computed(
|
||||
defaultStore.makeGetterSetter("useOsNativeEmojis"),
|
||||
);
|
||||
const disableShowingAnimatedImages = computed(
|
||||
defaultStore.makeGetterSetter("disableShowingAnimatedImages"),
|
||||
);
|
||||
const vibrate = computed(ColdDeviceStorage.makeGetterSetter("vibrate"));
|
||||
const expandOnNoteClick = computed(
|
||||
defaultStore.makeGetterSetter("expandOnNoteClick"),
|
||||
);
|
||||
const showNoAltTextWarning = computed(
|
||||
defaultStore.makeGetterSetter("showNoAltTextWarning"),
|
||||
);
|
||||
const showAddFileDescriptionAtFirstPost = computed(
|
||||
defaultStore.makeGetterSetter("showAddFileDescriptionAtFirstPost"),
|
||||
);
|
||||
const addAlt4MeTag = computed(defaultStore.makeGetterSetter("addAlt4MeTag"));
|
||||
|
||||
watch(fontSize, () => {
|
||||
if (fontSize.value == null) {
|
||||
localStorage.removeItem("fontSize");
|
||||
} else {
|
||||
localStorage.setItem("fontSize", fontSize.value);
|
||||
}
|
||||
});
|
||||
|
||||
watch(useSystemFont, () => {
|
||||
if (useSystemFont.value) {
|
||||
localStorage.setItem("useSystemFont", "t");
|
||||
} else {
|
||||
localStorage.setItem("useSystemFont", "f");
|
||||
}
|
||||
});
|
||||
|
||||
watch(
|
||||
[fontSize, useSystemFont, advancedMfm, autoplayMfm, expandOnNoteClick],
|
||||
async () => {
|
||||
await reloadAsk();
|
||||
},
|
||||
);
|
||||
|
||||
definePageMetadata({
|
||||
title: i18n.ts.accessibility,
|
||||
icon: `${icon("ph-person-arms-spread")}`,
|
||||
});
|
||||
</script>
|
|
@ -183,91 +183,6 @@
|
|||
</FormSelect>
|
||||
</FormSection>
|
||||
|
||||
<FormSection>
|
||||
<template #label>{{ i18n.ts.accessibility }}</template>
|
||||
<FormSwitch v-model="showNoAltTextWarning" class="_formBlock">{{
|
||||
i18n.ts.showNoAltTextWarning
|
||||
}}</FormSwitch>
|
||||
<FormSwitch v-if="showNoAltTextWarning" v-model="showAddFileDescriptionAtFirstPost" class="_formBlock">{{
|
||||
i18n.ts.showAddFileDescriptionAtFirstPost
|
||||
}}</FormSwitch>
|
||||
<FormSwitch v-model="addAlt4MeTag" class="_formBlock">{{
|
||||
i18n.ts.addAlt4MeTag
|
||||
}}</FormSwitch>
|
||||
<FormSwitch v-model="expandOnNoteClick" class="_formBlock"
|
||||
>{{ i18n.ts.expandOnNoteClick
|
||||
}}<template #caption>{{
|
||||
i18n.ts.expandOnNoteClickDesc
|
||||
}}</template>
|
||||
</FormSwitch>
|
||||
<FormSwitch v-model="turnOffCatLanguage" @update:modelValue="save()" class="_formBlock"
|
||||
>{{ i18n.ts.turnOffCatLanguage }}<template #caption>{{
|
||||
i18n.ts.reflectMayTakeTime
|
||||
}}</template>
|
||||
</FormSwitch>
|
||||
<FormSwitch v-model="advancedMfm" class="_formBlock">
|
||||
{{ i18n.ts._mfm.advanced
|
||||
}}<template #caption>{{
|
||||
i18n.ts._mfm.advancedDescription
|
||||
}}</template>
|
||||
</FormSwitch>
|
||||
<FormSwitch v-model="autoplayMfm" class="_formBlock">
|
||||
{{ i18n.ts._mfm.alwaysPlay }}
|
||||
<template #caption>
|
||||
<i
|
||||
:class="icon('ph-warning')"
|
||||
style="color: var(--warn)"
|
||||
></i>
|
||||
{{ i18n.ts._mfm.warn }}
|
||||
</template>
|
||||
</FormSwitch>
|
||||
<FormSwitch v-model="reduceAnimation" class="_formBlock">{{
|
||||
i18n.ts.reduceUiAnimation
|
||||
}}</FormSwitch>
|
||||
<FormSwitch
|
||||
v-model="disableShowingAnimatedImages"
|
||||
class="_formBlock"
|
||||
>{{ i18n.ts.disableShowingAnimatedImages }}</FormSwitch
|
||||
>
|
||||
<FormSwitch
|
||||
v-model="vibrate"
|
||||
class="_formBlock"
|
||||
@click="demoVibrate"
|
||||
>{{ i18n.ts.vibrate }}
|
||||
</FormSwitch>
|
||||
<FormRadios v-model="fontSize" class="_formBlock">
|
||||
<template #label>{{ i18n.ts.fontSize }}</template>
|
||||
<option :value="null">
|
||||
<span style="font-size: 14px">14</span>
|
||||
</option>
|
||||
<option value="15">
|
||||
<span style="font-size: 15px">15</span>
|
||||
</option>
|
||||
<option value="16">
|
||||
<span style="font-size: 16px">16</span>
|
||||
</option>
|
||||
<option value="17">
|
||||
<span style="font-size: 17px">17</span>
|
||||
</option>
|
||||
<option value="18">
|
||||
<span style="font-size: 18px">18</span>
|
||||
</option>
|
||||
</FormRadios>
|
||||
|
||||
<!-- <FormRange
|
||||
v-model="fontSize"
|
||||
:min="12"
|
||||
:max="18"
|
||||
:step="1"
|
||||
:value="fontSize ? fontSize : 14"
|
||||
easing
|
||||
:showTicks="true"
|
||||
class="_formBlock"
|
||||
>
|
||||
<template #label>{{ i18n.ts.fontSize }}</template>
|
||||
</FormRange> -->
|
||||
</FormSection>
|
||||
|
||||
<FormSection>
|
||||
<template #label>{{ i18n.ts.appearance }}</template>
|
||||
<FormSwitch v-model="showAds" class="_formBlock">{{
|
||||
|
@ -299,15 +214,6 @@
|
|||
<FormSwitch v-model="seperateRenoteQuote" class="_formBlock">{{
|
||||
i18n.ts.seperateRenoteQuote
|
||||
}}</FormSwitch>
|
||||
<FormSwitch v-model="useSystemFont" class="_formBlock">{{
|
||||
i18n.ts.useSystemFont
|
||||
}}</FormSwitch>
|
||||
<FormSwitch v-model="useOsNativeEmojis" class="_formBlock">
|
||||
{{ i18n.ts.useOsNativeEmojis }}
|
||||
<div>
|
||||
<Mfm :key="useOsNativeEmojis" text="🍮🍦🍭🍩🍰🍫🍬🥞🍪" />
|
||||
</div>
|
||||
</FormSwitch>
|
||||
<FormSwitch v-model="disableDrawer" class="_formBlock">{{
|
||||
i18n.ts.disableDrawer
|
||||
}}</FormSwitch>
|
||||
|
@ -415,7 +321,7 @@ import FormSection from "@/components/form/section.vue";
|
|||
import FormLink from "@/components/form/link.vue";
|
||||
import MkLink from "@/components/MkLink.vue";
|
||||
import { langs } from "@/config";
|
||||
import { ColdDeviceStorage, defaultStore } from "@/store";
|
||||
import { defaultStore } from "@/store";
|
||||
import * as os from "@/os";
|
||||
import { unisonReload } from "@/scripts/unison-reload";
|
||||
import { i18n } from "@/i18n";
|
||||
|
@ -426,15 +332,6 @@ import icon from "@/scripts/icon";
|
|||
const lang = ref(localStorage.getItem("lang"));
|
||||
const serverLang = ref(me?.lang);
|
||||
const translateLang = ref(localStorage.getItem("translateLang"));
|
||||
const fontSize = ref(localStorage.getItem("fontSize"));
|
||||
const useSystemFont = ref(localStorage.getItem("useSystemFont") !== "f");
|
||||
const turnOffCatLanguage = ref(!me?.readCatLanguage);
|
||||
|
||||
function save() {
|
||||
os.api("i/update", {
|
||||
readCatLanguage: !turnOffCatLanguage.value,
|
||||
});
|
||||
}
|
||||
|
||||
async function reloadAsk() {
|
||||
const { canceled } = await os.confirm({
|
||||
|
@ -446,23 +343,12 @@ async function reloadAsk() {
|
|||
unisonReload();
|
||||
}
|
||||
|
||||
function demoVibrate() {
|
||||
window.navigator.vibrate(100);
|
||||
}
|
||||
|
||||
const overridedDeviceKind = computed(
|
||||
defaultStore.makeGetterSetter("overridedDeviceKind"),
|
||||
);
|
||||
const serverDisconnectedBehavior = computed(
|
||||
defaultStore.makeGetterSetter("serverDisconnectedBehavior"),
|
||||
);
|
||||
const reduceAnimation = computed(
|
||||
defaultStore.makeGetterSetter(
|
||||
"animation",
|
||||
(v) => !v,
|
||||
(v) => !v,
|
||||
),
|
||||
);
|
||||
const useBlurEffectForModal = computed(
|
||||
defaultStore.makeGetterSetter("useBlurEffectForModal"),
|
||||
);
|
||||
|
@ -471,31 +357,13 @@ const showGapBetweenNotesInTimeline = computed(
|
|||
defaultStore.makeGetterSetter("showGapBetweenNotesInTimeline"),
|
||||
);
|
||||
const showAds = computed(defaultStore.makeGetterSetter("showAds"));
|
||||
const advancedMfm = computed(defaultStore.makeGetterSetter("advancedMfm"));
|
||||
const autoplayMfm = computed(
|
||||
defaultStore.makeGetterSetter(
|
||||
"animatedMfm",
|
||||
(v) => !v,
|
||||
(v) => !v,
|
||||
),
|
||||
);
|
||||
const useOsNativeEmojis = computed(
|
||||
defaultStore.makeGetterSetter("useOsNativeEmojis"),
|
||||
);
|
||||
const disableDrawer = computed(defaultStore.makeGetterSetter("disableDrawer"));
|
||||
const disableShowingAnimatedImages = computed(
|
||||
defaultStore.makeGetterSetter("disableShowingAnimatedImages"),
|
||||
);
|
||||
const vibrate = computed(ColdDeviceStorage.makeGetterSetter("vibrate"));
|
||||
const loadRawImages = computed(defaultStore.makeGetterSetter("loadRawImages"));
|
||||
const imageNewTab = computed(defaultStore.makeGetterSetter("imageNewTab"));
|
||||
const nsfw = computed(defaultStore.makeGetterSetter("nsfw"));
|
||||
const disablePagesScript = computed(
|
||||
defaultStore.makeGetterSetter("disablePagesScript"),
|
||||
);
|
||||
const expandOnNoteClick = computed(
|
||||
defaultStore.makeGetterSetter("expandOnNoteClick"),
|
||||
);
|
||||
const showFixedPostForm = computed(
|
||||
defaultStore.makeGetterSetter("showFixedPostForm"),
|
||||
);
|
||||
|
@ -565,12 +433,6 @@ const enablePullToRefresh = computed(
|
|||
const pullToRefreshThreshold = computed(
|
||||
defaultStore.makeGetterSetter("pullToRefreshThreshold"),
|
||||
);
|
||||
const showNoAltTextWarning = computed(
|
||||
defaultStore.makeGetterSetter("showNoAltTextWarning"),
|
||||
);
|
||||
const showAddFileDescriptionAtFirstPost = computed(
|
||||
defaultStore.makeGetterSetter("showAddFileDescriptionAtFirstPost"),
|
||||
);
|
||||
const autocorrectNoteLanguage = computed(
|
||||
defaultStore.makeGetterSetter("autocorrectNoteLanguage"),
|
||||
);
|
||||
|
@ -583,7 +445,6 @@ const mergeThreadInTimeline = computed(
|
|||
const mergeRenotesInTimeline = computed(
|
||||
defaultStore.makeGetterSetter("mergeRenotesInTimeline"),
|
||||
);
|
||||
const addAlt4MeTag = computed(defaultStore.makeGetterSetter("addAlt4MeTag"));
|
||||
|
||||
// This feature (along with injectPromo) is currently disabled
|
||||
// function onChangeInjectFeaturedNote(v) {
|
||||
|
@ -619,28 +480,10 @@ watch(translateLang, () => {
|
|||
localStorage.setItem("translateLang", translateLang.value as string);
|
||||
});
|
||||
|
||||
watch(fontSize, () => {
|
||||
if (fontSize.value == null) {
|
||||
localStorage.removeItem("fontSize");
|
||||
} else {
|
||||
localStorage.setItem("fontSize", fontSize.value);
|
||||
}
|
||||
});
|
||||
|
||||
watch(useSystemFont, () => {
|
||||
if (useSystemFont.value) {
|
||||
localStorage.setItem("useSystemFont", "t");
|
||||
} else {
|
||||
localStorage.setItem("useSystemFont", "f");
|
||||
}
|
||||
});
|
||||
|
||||
watch(
|
||||
[
|
||||
lang,
|
||||
translateLang,
|
||||
fontSize,
|
||||
useSystemFont,
|
||||
enableInfiniteScroll,
|
||||
squareAvatars,
|
||||
showGapBetweenNotesInTimeline,
|
||||
|
@ -652,9 +495,6 @@ watch(
|
|||
swipeOnDesktop,
|
||||
seperateRenoteQuote,
|
||||
showAdminUpdates,
|
||||
advancedMfm,
|
||||
autoplayMfm,
|
||||
expandOnNoteClick,
|
||||
iconSet,
|
||||
useEmojiCdn,
|
||||
enableTimelineStreaming,
|
||||
|
|
|
@ -106,12 +106,6 @@ const menuDef = computed(() => [
|
|||
to: "/settings/drive",
|
||||
active: currentPage.value?.route.name === "drive",
|
||||
},
|
||||
{
|
||||
icon: `${icon("ph-bell")}`,
|
||||
text: i18n.ts.notifications,
|
||||
to: "/settings/notifications",
|
||||
active: currentPage.value?.route.name === "notifications",
|
||||
},
|
||||
{
|
||||
icon: `${icon("ph-envelope-simple-open")}`,
|
||||
text: i18n.ts.email,
|
||||
|
@ -141,6 +135,18 @@ const menuDef = computed(() => [
|
|||
to: "/settings/theme",
|
||||
active: currentPage.value?.route.name === "theme",
|
||||
},
|
||||
{
|
||||
icon: `${icon("ph-person-arms-spread")}`,
|
||||
text: i18n.ts.accessibility,
|
||||
to: "/settings/accessibility",
|
||||
active: currentPage.value?.route.name === "accessibility",
|
||||
},
|
||||
{
|
||||
icon: `${icon("ph-bell")}`,
|
||||
text: i18n.ts.notifications,
|
||||
to: "/settings/notifications",
|
||||
active: currentPage.value?.route.name === "notifications",
|
||||
},
|
||||
{
|
||||
icon: `${icon("ph-list")}`,
|
||||
text: i18n.ts.navbar,
|
||||
|
@ -170,18 +176,6 @@ const menuDef = computed(() => [
|
|||
{
|
||||
title: i18n.ts.otherSettings,
|
||||
items: [
|
||||
{
|
||||
icon: `${icon("ph-airplane-takeoff")}`,
|
||||
text: i18n.ts.migration,
|
||||
to: "/settings/migration",
|
||||
active: currentPage.value?.route.name === "migration",
|
||||
},
|
||||
{
|
||||
icon: `${icon("ph-package")}`,
|
||||
text: i18n.ts.importAndExport,
|
||||
to: "/settings/import-export",
|
||||
active: currentPage.value?.route.name === "import-export",
|
||||
},
|
||||
{
|
||||
icon: `${icon("ph-speaker-none")}`,
|
||||
text: i18n.ts.instanceMute,
|
||||
|
@ -212,6 +206,18 @@ const menuDef = computed(() => [
|
|||
to: "/settings/webhook",
|
||||
active: currentPage.value?.route.name === "webhook",
|
||||
},
|
||||
{
|
||||
icon: `${icon("ph-package")}`,
|
||||
text: i18n.ts.importAndExport,
|
||||
to: "/settings/import-export",
|
||||
active: currentPage.value?.route.name === "import-export",
|
||||
},
|
||||
{
|
||||
icon: `${icon("ph-airplane-takeoff")}`,
|
||||
text: i18n.ts.migration,
|
||||
to: "/settings/migration",
|
||||
active: currentPage.value?.route.name === "migration",
|
||||
},
|
||||
{
|
||||
icon: `${icon("ph-dots-three-outline")}`,
|
||||
text: i18n.ts.other,
|
||||
|
|
|
@ -91,6 +91,11 @@ export const routes: RouteDef[] = [
|
|||
name: "notifications",
|
||||
component: page(() => import("./pages/settings/notifications.vue")),
|
||||
},
|
||||
{
|
||||
path: "/accessibility",
|
||||
name: "accessibility",
|
||||
component: page(() => import("./pages/settings/accessibility.vue")),
|
||||
},
|
||||
{
|
||||
path: "/email",
|
||||
name: "email",
|
||||
|
|
|
@ -455,7 +455,7 @@ export const defaultStore = markRaw(
|
|||
},
|
||||
autocorrectNoteLanguage: {
|
||||
where: "account",
|
||||
default: true,
|
||||
default: false,
|
||||
},
|
||||
foldNotification: {
|
||||
where: "deviceAccount",
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "29.5.12",
|
||||
"@types/node": "20.14.9",
|
||||
"@types/node": "20.14.10",
|
||||
"jest": "29.7.0",
|
||||
"jest-fetch-mock": "3.0.3",
|
||||
"jest-websocket-mock": "2.5.0",
|
||||
|
|
|
@ -51,7 +51,7 @@ define_wrapper_proc_macro_attributes! {
|
|||
/// #[cfg_attr(feature = "napi", macros::napi(attr))]
|
||||
/// # fn f() {} // to work around doc test compilation error
|
||||
/// ```
|
||||
/// where `attr` is given attribute(s). See [macro@napi] for more details.
|
||||
/// where `attr` is given attribute(s). See [macro@napi] and [macros_impl::napi::napi] for more details.
|
||||
export(attr, item) {
|
||||
#[cfg_attr(feature = "napi", macros::napi(#attr))]
|
||||
#item
|
||||
|
|
508
pnpm-lock.yaml
508
pnpm-lock.yaml
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue