Merge branch 'develop' into iceshrimp_mastodon

This commit is contained in:
naskya 2024-07-09 00:42:27 +09:00
commit 0d561cfdb4
No known key found for this signature in database
GPG key ID: 712D413B3A9FED5C
36 changed files with 739 additions and 568 deletions

View file

@ -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
View file

@ -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]]

View file

@ -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
View file

@ -0,0 +1,2 @@
target-msrv/
target-miri/

View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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: 猫語への変換を無効化する

View file

@ -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: 확인

View file

@ -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

View file

@ -2113,7 +2113,6 @@ removeMember: Удалить участника
confirm: Подтвердить
importZip: Импортировать ZIP
exportZip: Экспортировать ZIP
emojiPackCreator: Генератор паков эмодзи
objectStorageS3ForcePathStyle: Использовать путь вместо домена в URL
objectStorageS3ForcePathStyleDesc: Включите, если хотите, чтобы URL был в формате
's3.amazonaws.com/<bucket>/' вместо '<bucket>.s3.amazonaws.com'.

View file

@ -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

View file

@ -2126,4 +2126,3 @@ addRe: Додати "re:" на початку коментаря у відпов
confirm: Підтвердити
importZip: Імпортувати ZIP
exportZip: Експортувати ZIP
emojiPackCreator: Генератор паків емодзі

View file

@ -1993,7 +1993,6 @@ exportZip: 导出 ZIP
getQrCode: "获取二维码"
remoteFollow: "远程关注"
copyRemoteFollowUrl: "复制远程关注 URL"
emojiPackCreator: 表情包创建工具
objectStorageS3ForcePathStyleDesc: 打开此选项可构建格式为 "s3.amazonaws.com/<bucket>/" 而非 "<bucket>.s3.amazonaws.com"
的端点 URL。
objectStorageS3ForcePathStyle: 使用基于路径的端点 URL

View file

@ -1972,7 +1972,6 @@ _feeds:
rss: RSS
copyFeed: 複製訂閱URL
jsonFeed: JSON Feed
emojiPackCreator: 表情包的作者
importZip: 匯入ZIP
delete2fa: 停用二階段認證(2FA)
confirm: 確認

View file

@ -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"
}
}

View 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
```

View file

@ -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

View file

@ -1,3 +1,5 @@
#![doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/README.md"))]
pub mod config;
pub mod database;
pub mod federation;

View file

@ -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",

View file

@ -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",

View file

@ -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"

View file

@ -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,
);

View 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>

View file

@ -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,

View file

@ -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,

View file

@ -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",

View file

@ -455,7 +455,7 @@ export const defaultStore = markRaw(
},
autocorrectNoteLanguage: {
where: "account",
default: true,
default: false,
},
foldNotification: {
where: "deviceAccount",

View file

@ -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",

View file

@ -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

File diff suppressed because it is too large Load diff