diff --git a/.autogen/check_pr.jq b/.autogen/check_pr.jq deleted file mode 100644 index 0adb0b503d..0000000000 --- a/.autogen/check_pr.jq +++ /dev/null @@ -1,3 +0,0 @@ -.[] -.head -.label diff --git a/.autogen/next_url.jq b/.autogen/next_url.jq deleted file mode 100644 index b4c3b819a5..0000000000 --- a/.autogen/next_url.jq +++ /dev/null @@ -1,2 +0,0 @@ -.links -.next diff --git a/.autogen/patreon.jq b/.autogen/patreon.jq deleted file mode 100644 index c761d587b8..0000000000 --- a/.autogen/patreon.jq +++ /dev/null @@ -1,39 +0,0 @@ -( - .data | - map( - select( - .relationships - .currently_entitled_tiers - .data[] - ) - ) | - map( - .relationships - .user - .data - .id - ) -) as $data | -.included | -map( - select( - .id as $id | - $data | - contains( - [ - $id - ] - ) - ) -) | -map( - .attributes | - [ - .full_name, - .thumb_url, - .url - ] | - @tsv -) | -.[] | -@text diff --git a/.autogen/update_readme_patreon.sh b/.autogen/update_readme_patreon.sh deleted file mode 100755 index 7a108c2b67..0000000000 --- a/.autogen/update_readme_patreon.sh +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env bash -# __MISSKEY_BEARER_TOKEN= -# __MISSKEY_CAMPAIGN_ID= -# __MISSKEY_GITHUB_TOKEN= -# __MISSKEY_HEAD=syuilo:patch-autogen -# __MISSKEY_REPO=syuilo/misskey -# __MISSKEY_BRANCH=develop -test "$(curl -LSs -w '\n' -- "https://api.github.com/repos/$REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN" | jq -r -f check_pr.jq | grep $__MISSKEY_HEAD)" && exit 1 -cd "$(dirname $0)/.." && \ -touch null.cache && \ -rm *.cache && \ -git checkout $__MISSKEY_BRANCH && \ -git pull origin $__MISSKEY_BRANCH && \ -git pull upstream $__MISSKEY_BRANCH && \ -git stash && \ -git rebase -f upstream/$__MISSKEY_BRANCH && \ -git branch patch-autogen && \ -git checkout patch-autogen && \ -git reset --hard HEAD || \ -exit 1 -touch patreon.md.cache && \ -rm patreon.md.cache && \ -echo '' > patreon.md.cache && \ -url="https://www.patreon.com/api/oauth2/v2/campaigns/$__MISSKEY_CAMPAIGN_ID/members?include=currently_entitled_tiers,user&fields%5Btier%5D=title&fields%5Buser%5D=full_name,thumb_url,url,hide_pledges" -while : - do - touch patreon.raw.cache && \ - rm patreon.raw.cache && \ - curl -LSs -w '\n' -H "Authorization: Bearer $__MISSKEY_BEARER_TOKEN" -- $url > patreon.raw.cache && \ - touch patreon.cache && \ - rm patreon.cache && \ - cat patreon.raw.cache | \ - jq -r -f patreon.jq >> patreon.cache && \ - echo '' >> patreon.md.cache && \ - cat patreon.cache | \ - awk -F'\t' '{print $2,$1}' | \ - sed -e 's/ /\\" alt=\\"/' | \ - xargs -I% echo '' >> patreon.md.cache && \ - echo '' >> patreon.md.cache && \ - cat patreon.cache | \ - awk -F'\t' '{print $3,$1}' | \ - sed -e 's/ /\\">/' | \ - xargs -I% echo '
" >> patreon.md.cache && \ -touch README.md && \ -touch .autogen/README.md && \ -rm .autogen/README.md && \ -mv README.md .autogen/README.md && \ -cat .autogen/README.md | while IFS= read line; - do - if [[ -z "$ignore" ]] - then - if [[ "$line" = '' ]] - then - ignore='PATREON_INSIDE' - else - echo "$line" >> README.md - fi - else - if [[ "$LINE" = '' ]] - then - ignore= - cat patreon.md.cache >> README.md - fi - fi -done -cat patreon.md.cache -touch null.cache && \ -rm *.cache && \ -diff .autogen/README.md README.md > diff.cache -cat diff.cache && \ -test 4 -lt $(cat diff.cache | wc -l) && \ -git add README.md && \ -git commit -m 'Update README.md [AUTOGEN]' && \ -git push -f origin patch-autogen && \ -curl -LSs -w '\n' -X POST -d '{"title":"[AUTOMATED] Update README.md","body":"*This pull request was created by a tool.*","head":"'$__MISSKEY_HEAD'","base":"'$__MISSKEY_BRANCH'"}' -- "https://api.github.com/repos/$__MISSKEY_REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN" -git stash -git checkout $__MISSKEY_BRANCH -git branch -D patch-autogen diff --git a/.eslintrc b/.eslintrc index 3a220319e5..3e5b59cb04 100644 --- a/.eslintrc +++ b/.eslintrc @@ -3,29 +3,11 @@ "parser": "@typescript-eslint/parser" }, "extends": [ - "eslint:recommended", - "plugin:vue/recommended" + "eslint:recommended" ], "rules": { - "vue/require-v-for-key": 0, - "vue/max-attributes-per-line": 0, - "vue/html-indent": 0, - "vue/html-self-closing": 0, - "vue/no-unused-vars": 0, - "vue/attributes-order": 0, - "vue/require-prop-types": 0, - "vue/require-default-prop": 0, - "vue/html-closing-bracket-spacing": 0, - "vue/singleline-html-element-content-newline": 0, - "vue/no-v-html": 0, "no-console": 0, "no-unused-vars": 0, "no-empty": 0 - }, - "globals": { - "ENV": true, - "VERSION": true, - "API": true, - "LANGS": true } } diff --git a/.node-version b/.node-version index 9a0c3d3f45..ab155ce138 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -v14.15.4 +v14.15.5 diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000..1fd048e8ea --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1 @@ +see [releases](https://github.com/syuilo/misskey/releases) diff --git a/Dockerfile b/Dockerfile index eba3a833bc..c1745fc215 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:14.15.4-alpine AS base +FROM node:14.15.5-alpine3.13 AS base ENV NODE_ENV=production @@ -10,7 +10,6 @@ RUN apk add --no-cache \ autoconf \ automake \ file \ - git \ g++ \ gcc \ libc-dev \ @@ -18,8 +17,10 @@ RUN apk add --no-cache \ make \ nasm \ pkgconfig \ - python \ - zlib-dev + python3 \ + zlib-dev \ + vips-dev \ + vips COPY package.json yarn.lock ./ RUN yarn install @@ -30,8 +31,9 @@ FROM base AS runner RUN apk add --no-cache \ ffmpeg \ - tini -RUN npm i -g web-push + tini \ + vips + ENTRYPOINT ["/sbin/tini", "--"] COPY --from=builder /misskey/node_modules ./node_modules diff --git a/src/client/assets/about-icon.png b/assets/client/about-icon.png similarity index 100% rename from src/client/assets/about-icon.png rename to assets/client/about-icon.png diff --git a/src/client/assets/fedi.jpg b/assets/client/fedi.jpg similarity index 100% rename from src/client/assets/fedi.jpg rename to assets/client/fedi.jpg diff --git a/src/client/assets/label-red.svg b/assets/client/label-red.svg similarity index 100% rename from src/client/assets/label-red.svg rename to assets/client/label-red.svg diff --git a/src/client/assets/label.svg b/assets/client/label.svg similarity index 100% rename from src/client/assets/label.svg rename to assets/client/label.svg diff --git a/src/client/assets/manifest.json b/assets/client/manifest.json similarity index 82% rename from src/client/assets/manifest.json rename to assets/client/manifest.json index f5a1d47a8a..48030a2980 100644 --- a/src/client/assets/manifest.json +++ b/assets/client/manifest.json @@ -7,12 +7,12 @@ "theme_color": "#86b300", "icons": [ { - "src": "/assets/icons/192.png", + "src": "/static-assets/icons/192.png", "sizes": "192x192", "type": "image/png" }, { - "src": "/assets/icons/512.png", + "src": "/static-assets/icons/512.png", "sizes": "512x512", "type": "image/png" } diff --git a/src/client/assets/misskey.svg b/assets/client/misskey.svg similarity index 100% rename from src/client/assets/misskey.svg rename to assets/client/misskey.svg diff --git a/src/client/assets/remove.png b/assets/client/remove.png similarity index 100% rename from src/client/assets/remove.png rename to assets/client/remove.png diff --git a/src/client/assets/room/furnitures/banknote/banknote.blend b/assets/client/room/furnitures/banknote/banknote.blend similarity index 100% rename from src/client/assets/room/furnitures/banknote/banknote.blend rename to assets/client/room/furnitures/banknote/banknote.blend diff --git a/src/client/assets/room/furnitures/banknote/banknote.glb b/assets/client/room/furnitures/banknote/banknote.glb similarity index 100% rename from src/client/assets/room/furnitures/banknote/banknote.glb rename to assets/client/room/furnitures/banknote/banknote.glb diff --git a/src/client/assets/room/furnitures/banknote/tex.png b/assets/client/room/furnitures/banknote/tex.png similarity index 100% rename from src/client/assets/room/furnitures/banknote/tex.png rename to assets/client/room/furnitures/banknote/tex.png diff --git a/src/client/assets/room/furnitures/bed/bed.blend b/assets/client/room/furnitures/bed/bed.blend similarity index 100% rename from src/client/assets/room/furnitures/bed/bed.blend rename to assets/client/room/furnitures/bed/bed.blend diff --git a/src/client/assets/room/furnitures/bed/bed.glb b/assets/client/room/furnitures/bed/bed.glb similarity index 100% rename from src/client/assets/room/furnitures/bed/bed.glb rename to assets/client/room/furnitures/bed/bed.glb diff --git a/src/client/assets/room/furnitures/bin/bin.blend b/assets/client/room/furnitures/bin/bin.blend similarity index 100% rename from src/client/assets/room/furnitures/bin/bin.blend rename to assets/client/room/furnitures/bin/bin.blend diff --git a/src/client/assets/room/furnitures/bin/bin.glb b/assets/client/room/furnitures/bin/bin.glb similarity index 100% rename from src/client/assets/room/furnitures/bin/bin.glb rename to assets/client/room/furnitures/bin/bin.glb diff --git a/src/client/assets/room/furnitures/book/book.blend b/assets/client/room/furnitures/book/book.blend similarity index 100% rename from src/client/assets/room/furnitures/book/book.blend rename to assets/client/room/furnitures/book/book.blend diff --git a/src/client/assets/room/furnitures/book/book.glb b/assets/client/room/furnitures/book/book.glb similarity index 100% rename from src/client/assets/room/furnitures/book/book.glb rename to assets/client/room/furnitures/book/book.glb diff --git a/src/client/assets/room/furnitures/book2/barcode.png b/assets/client/room/furnitures/book2/barcode.png similarity index 100% rename from src/client/assets/room/furnitures/book2/barcode.png rename to assets/client/room/furnitures/book2/barcode.png diff --git a/src/client/assets/room/furnitures/book2/book2.blend b/assets/client/room/furnitures/book2/book2.blend similarity index 100% rename from src/client/assets/room/furnitures/book2/book2.blend rename to assets/client/room/furnitures/book2/book2.blend diff --git a/src/client/assets/room/furnitures/book2/book2.glb b/assets/client/room/furnitures/book2/book2.glb similarity index 100% rename from src/client/assets/room/furnitures/book2/book2.glb rename to assets/client/room/furnitures/book2/book2.glb diff --git a/src/client/assets/room/furnitures/book2/texture.afdesign b/assets/client/room/furnitures/book2/texture.afdesign similarity index 100% rename from src/client/assets/room/furnitures/book2/texture.afdesign rename to assets/client/room/furnitures/book2/texture.afdesign diff --git a/src/client/assets/room/furnitures/book2/texture.png b/assets/client/room/furnitures/book2/texture.png similarity index 100% rename from src/client/assets/room/furnitures/book2/texture.png rename to assets/client/room/furnitures/book2/texture.png diff --git a/src/client/assets/room/furnitures/book2/uv.png b/assets/client/room/furnitures/book2/uv.png similarity index 100% rename from src/client/assets/room/furnitures/book2/uv.png rename to assets/client/room/furnitures/book2/uv.png diff --git a/src/client/assets/room/furnitures/cardboard-box/cardboard-box.blend b/assets/client/room/furnitures/cardboard-box/cardboard-box.blend similarity index 100% rename from src/client/assets/room/furnitures/cardboard-box/cardboard-box.blend rename to assets/client/room/furnitures/cardboard-box/cardboard-box.blend diff --git a/src/client/assets/room/furnitures/cardboard-box/cardboard-box.glb b/assets/client/room/furnitures/cardboard-box/cardboard-box.glb similarity index 100% rename from src/client/assets/room/furnitures/cardboard-box/cardboard-box.glb rename to assets/client/room/furnitures/cardboard-box/cardboard-box.glb diff --git a/src/client/assets/room/furnitures/cardboard-box2/cardboard-box2.blend b/assets/client/room/furnitures/cardboard-box2/cardboard-box2.blend similarity index 100% rename from src/client/assets/room/furnitures/cardboard-box2/cardboard-box2.blend rename to assets/client/room/furnitures/cardboard-box2/cardboard-box2.blend diff --git a/src/client/assets/room/furnitures/cardboard-box2/cardboard-box2.glb b/assets/client/room/furnitures/cardboard-box2/cardboard-box2.glb similarity index 100% rename from src/client/assets/room/furnitures/cardboard-box2/cardboard-box2.glb rename to assets/client/room/furnitures/cardboard-box2/cardboard-box2.glb diff --git a/src/client/assets/room/furnitures/cardboard-box2/texture.png b/assets/client/room/furnitures/cardboard-box2/texture.png similarity index 100% rename from src/client/assets/room/furnitures/cardboard-box2/texture.png rename to assets/client/room/furnitures/cardboard-box2/texture.png diff --git a/src/client/assets/room/furnitures/cardboard-box2/uv.png b/assets/client/room/furnitures/cardboard-box2/uv.png similarity index 100% rename from src/client/assets/room/furnitures/cardboard-box2/uv.png rename to assets/client/room/furnitures/cardboard-box2/uv.png diff --git a/src/client/assets/room/furnitures/cardboard-box3/cardboard-box3.blend b/assets/client/room/furnitures/cardboard-box3/cardboard-box3.blend similarity index 100% rename from src/client/assets/room/furnitures/cardboard-box3/cardboard-box3.blend rename to assets/client/room/furnitures/cardboard-box3/cardboard-box3.blend diff --git a/src/client/assets/room/furnitures/cardboard-box3/cardboard-box3.glb b/assets/client/room/furnitures/cardboard-box3/cardboard-box3.glb similarity index 100% rename from src/client/assets/room/furnitures/cardboard-box3/cardboard-box3.glb rename to assets/client/room/furnitures/cardboard-box3/cardboard-box3.glb diff --git a/src/client/assets/room/furnitures/cardboard-box3/texture.png b/assets/client/room/furnitures/cardboard-box3/texture.png similarity index 100% rename from src/client/assets/room/furnitures/cardboard-box3/texture.png rename to assets/client/room/furnitures/cardboard-box3/texture.png diff --git a/src/client/assets/room/furnitures/cardboard-box3/texture.xcf b/assets/client/room/furnitures/cardboard-box3/texture.xcf similarity index 100% rename from src/client/assets/room/furnitures/cardboard-box3/texture.xcf rename to assets/client/room/furnitures/cardboard-box3/texture.xcf diff --git a/src/client/assets/room/furnitures/cardboard-box3/uv.png b/assets/client/room/furnitures/cardboard-box3/uv.png similarity index 100% rename from src/client/assets/room/furnitures/cardboard-box3/uv.png rename to assets/client/room/furnitures/cardboard-box3/uv.png diff --git a/src/client/assets/room/furnitures/carpet-stripe/carpet-stripe.blend b/assets/client/room/furnitures/carpet-stripe/carpet-stripe.blend similarity index 100% rename from src/client/assets/room/furnitures/carpet-stripe/carpet-stripe.blend rename to assets/client/room/furnitures/carpet-stripe/carpet-stripe.blend diff --git a/src/client/assets/room/furnitures/carpet-stripe/carpet-stripe.glb b/assets/client/room/furnitures/carpet-stripe/carpet-stripe.glb similarity index 100% rename from src/client/assets/room/furnitures/carpet-stripe/carpet-stripe.glb rename to assets/client/room/furnitures/carpet-stripe/carpet-stripe.glb diff --git a/src/client/assets/room/furnitures/chair/chair.blend b/assets/client/room/furnitures/chair/chair.blend similarity index 100% rename from src/client/assets/room/furnitures/chair/chair.blend rename to assets/client/room/furnitures/chair/chair.blend diff --git a/src/client/assets/room/furnitures/chair/chair.glb b/assets/client/room/furnitures/chair/chair.glb similarity index 100% rename from src/client/assets/room/furnitures/chair/chair.glb rename to assets/client/room/furnitures/chair/chair.glb diff --git a/src/client/assets/room/furnitures/chair2/chair2.blend b/assets/client/room/furnitures/chair2/chair2.blend similarity index 100% rename from src/client/assets/room/furnitures/chair2/chair2.blend rename to assets/client/room/furnitures/chair2/chair2.blend diff --git a/src/client/assets/room/furnitures/chair2/chair2.glb b/assets/client/room/furnitures/chair2/chair2.glb similarity index 100% rename from src/client/assets/room/furnitures/chair2/chair2.glb rename to assets/client/room/furnitures/chair2/chair2.glb diff --git a/src/client/assets/room/furnitures/color-box/color-box.blend b/assets/client/room/furnitures/color-box/color-box.blend similarity index 100% rename from src/client/assets/room/furnitures/color-box/color-box.blend rename to assets/client/room/furnitures/color-box/color-box.blend diff --git a/src/client/assets/room/furnitures/color-box/color-box.glb b/assets/client/room/furnitures/color-box/color-box.glb similarity index 100% rename from src/client/assets/room/furnitures/color-box/color-box.glb rename to assets/client/room/furnitures/color-box/color-box.glb diff --git a/src/client/assets/room/furnitures/corkboard/corkboard.blend b/assets/client/room/furnitures/corkboard/corkboard.blend similarity index 100% rename from src/client/assets/room/furnitures/corkboard/corkboard.blend rename to assets/client/room/furnitures/corkboard/corkboard.blend diff --git a/src/client/assets/room/furnitures/corkboard/corkboard.glb b/assets/client/room/furnitures/corkboard/corkboard.glb similarity index 100% rename from src/client/assets/room/furnitures/corkboard/corkboard.glb rename to assets/client/room/furnitures/corkboard/corkboard.glb diff --git a/src/client/assets/room/furnitures/cube/cube.blend b/assets/client/room/furnitures/cube/cube.blend similarity index 100% rename from src/client/assets/room/furnitures/cube/cube.blend rename to assets/client/room/furnitures/cube/cube.blend diff --git a/src/client/assets/room/furnitures/cube/cube.glb b/assets/client/room/furnitures/cube/cube.glb similarity index 100% rename from src/client/assets/room/furnitures/cube/cube.glb rename to assets/client/room/furnitures/cube/cube.glb diff --git a/src/client/assets/room/furnitures/cup-noodle/cup-noodle.blend b/assets/client/room/furnitures/cup-noodle/cup-noodle.blend similarity index 100% rename from src/client/assets/room/furnitures/cup-noodle/cup-noodle.blend rename to assets/client/room/furnitures/cup-noodle/cup-noodle.blend diff --git a/src/client/assets/room/furnitures/cup-noodle/cup-noodle.glb b/assets/client/room/furnitures/cup-noodle/cup-noodle.glb similarity index 100% rename from src/client/assets/room/furnitures/cup-noodle/cup-noodle.glb rename to assets/client/room/furnitures/cup-noodle/cup-noodle.glb diff --git a/src/client/assets/room/furnitures/cup-noodle/noodle.png b/assets/client/room/furnitures/cup-noodle/noodle.png similarity index 100% rename from src/client/assets/room/furnitures/cup-noodle/noodle.png rename to assets/client/room/furnitures/cup-noodle/noodle.png diff --git a/src/client/assets/room/furnitures/desk/desk.blend b/assets/client/room/furnitures/desk/desk.blend similarity index 100% rename from src/client/assets/room/furnitures/desk/desk.blend rename to assets/client/room/furnitures/desk/desk.blend diff --git a/src/client/assets/room/furnitures/desk/desk.glb b/assets/client/room/furnitures/desk/desk.glb similarity index 100% rename from src/client/assets/room/furnitures/desk/desk.glb rename to assets/client/room/furnitures/desk/desk.glb diff --git a/src/client/assets/room/furnitures/doll-ai/doll-ai.blend b/assets/client/room/furnitures/doll-ai/doll-ai.blend similarity index 100% rename from src/client/assets/room/furnitures/doll-ai/doll-ai.blend rename to assets/client/room/furnitures/doll-ai/doll-ai.blend diff --git a/src/client/assets/room/furnitures/doll-ai/doll-ai.glb b/assets/client/room/furnitures/doll-ai/doll-ai.glb similarity index 100% rename from src/client/assets/room/furnitures/doll-ai/doll-ai.glb rename to assets/client/room/furnitures/doll-ai/doll-ai.glb diff --git a/src/client/assets/room/furnitures/doll-ai/doll_ai_tex.png b/assets/client/room/furnitures/doll-ai/doll_ai_tex.png similarity index 100% rename from src/client/assets/room/furnitures/doll-ai/doll_ai_tex.png rename to assets/client/room/furnitures/doll-ai/doll_ai_tex.png diff --git a/src/client/assets/room/furnitures/energy-drink/energy-drink.blend b/assets/client/room/furnitures/energy-drink/energy-drink.blend similarity index 100% rename from src/client/assets/room/furnitures/energy-drink/energy-drink.blend rename to assets/client/room/furnitures/energy-drink/energy-drink.blend diff --git a/src/client/assets/room/furnitures/energy-drink/energy-drink.glb b/assets/client/room/furnitures/energy-drink/energy-drink.glb similarity index 100% rename from src/client/assets/room/furnitures/energy-drink/energy-drink.glb rename to assets/client/room/furnitures/energy-drink/energy-drink.glb diff --git a/src/client/assets/room/furnitures/energy-drink/texture.afdesign b/assets/client/room/furnitures/energy-drink/texture.afdesign similarity index 100% rename from src/client/assets/room/furnitures/energy-drink/texture.afdesign rename to assets/client/room/furnitures/energy-drink/texture.afdesign diff --git a/src/client/assets/room/furnitures/energy-drink/texture.png b/assets/client/room/furnitures/energy-drink/texture.png similarity index 100% rename from src/client/assets/room/furnitures/energy-drink/texture.png rename to assets/client/room/furnitures/energy-drink/texture.png diff --git a/src/client/assets/room/furnitures/energy-drink/uv.png b/assets/client/room/furnitures/energy-drink/uv.png similarity index 100% rename from src/client/assets/room/furnitures/energy-drink/uv.png rename to assets/client/room/furnitures/energy-drink/uv.png diff --git a/src/client/assets/room/furnitures/eraser/cover.png b/assets/client/room/furnitures/eraser/cover.png similarity index 100% rename from src/client/assets/room/furnitures/eraser/cover.png rename to assets/client/room/furnitures/eraser/cover.png diff --git a/src/client/assets/room/furnitures/eraser/cover.psd b/assets/client/room/furnitures/eraser/cover.psd similarity index 100% rename from src/client/assets/room/furnitures/eraser/cover.psd rename to assets/client/room/furnitures/eraser/cover.psd diff --git a/src/client/assets/room/furnitures/eraser/eraser-uv.png b/assets/client/room/furnitures/eraser/eraser-uv.png similarity index 100% rename from src/client/assets/room/furnitures/eraser/eraser-uv.png rename to assets/client/room/furnitures/eraser/eraser-uv.png diff --git a/src/client/assets/room/furnitures/eraser/eraser.blend b/assets/client/room/furnitures/eraser/eraser.blend similarity index 100% rename from src/client/assets/room/furnitures/eraser/eraser.blend rename to assets/client/room/furnitures/eraser/eraser.blend diff --git a/src/client/assets/room/furnitures/eraser/eraser.glb b/assets/client/room/furnitures/eraser/eraser.glb similarity index 100% rename from src/client/assets/room/furnitures/eraser/eraser.glb rename to assets/client/room/furnitures/eraser/eraser.glb diff --git a/src/client/assets/room/furnitures/facial-tissue/facial-tissue-uv.png b/assets/client/room/furnitures/facial-tissue/facial-tissue-uv.png similarity index 100% rename from src/client/assets/room/furnitures/facial-tissue/facial-tissue-uv.png rename to assets/client/room/furnitures/facial-tissue/facial-tissue-uv.png diff --git a/src/client/assets/room/furnitures/facial-tissue/facial-tissue.blend b/assets/client/room/furnitures/facial-tissue/facial-tissue.blend similarity index 100% rename from src/client/assets/room/furnitures/facial-tissue/facial-tissue.blend rename to assets/client/room/furnitures/facial-tissue/facial-tissue.blend diff --git a/src/client/assets/room/furnitures/facial-tissue/facial-tissue.glb b/assets/client/room/furnitures/facial-tissue/facial-tissue.glb similarity index 100% rename from src/client/assets/room/furnitures/facial-tissue/facial-tissue.glb rename to assets/client/room/furnitures/facial-tissue/facial-tissue.glb diff --git a/src/client/assets/room/furnitures/facial-tissue/facial-tissue.png b/assets/client/room/furnitures/facial-tissue/facial-tissue.png similarity index 100% rename from src/client/assets/room/furnitures/facial-tissue/facial-tissue.png rename to assets/client/room/furnitures/facial-tissue/facial-tissue.png diff --git a/src/client/assets/room/furnitures/facial-tissue/facial-tissue.psd b/assets/client/room/furnitures/facial-tissue/facial-tissue.psd similarity index 100% rename from src/client/assets/room/furnitures/facial-tissue/facial-tissue.psd rename to assets/client/room/furnitures/facial-tissue/facial-tissue.psd diff --git a/src/client/assets/room/furnitures/fan/fan.blend b/assets/client/room/furnitures/fan/fan.blend similarity index 100% rename from src/client/assets/room/furnitures/fan/fan.blend rename to assets/client/room/furnitures/fan/fan.blend diff --git a/src/client/assets/room/furnitures/fan/fan.glb b/assets/client/room/furnitures/fan/fan.glb similarity index 100% rename from src/client/assets/room/furnitures/fan/fan.glb rename to assets/client/room/furnitures/fan/fan.glb diff --git a/src/client/assets/room/furnitures/holo-display/holo-display.blend b/assets/client/room/furnitures/holo-display/holo-display.blend similarity index 100% rename from src/client/assets/room/furnitures/holo-display/holo-display.blend rename to assets/client/room/furnitures/holo-display/holo-display.blend diff --git a/src/client/assets/room/furnitures/holo-display/holo-display.glb b/assets/client/room/furnitures/holo-display/holo-display.glb similarity index 100% rename from src/client/assets/room/furnitures/holo-display/holo-display.glb rename to assets/client/room/furnitures/holo-display/holo-display.glb diff --git a/src/client/assets/room/furnitures/holo-display/ray-uv.png b/assets/client/room/furnitures/holo-display/ray-uv.png similarity index 100% rename from src/client/assets/room/furnitures/holo-display/ray-uv.png rename to assets/client/room/furnitures/holo-display/ray-uv.png diff --git a/src/client/assets/room/furnitures/holo-display/ray.png b/assets/client/room/furnitures/holo-display/ray.png similarity index 100% rename from src/client/assets/room/furnitures/holo-display/ray.png rename to assets/client/room/furnitures/holo-display/ray.png diff --git a/src/client/assets/room/furnitures/keyboard/keyboard.blend b/assets/client/room/furnitures/keyboard/keyboard.blend similarity index 100% rename from src/client/assets/room/furnitures/keyboard/keyboard.blend rename to assets/client/room/furnitures/keyboard/keyboard.blend diff --git a/src/client/assets/room/furnitures/keyboard/keyboard.glb b/assets/client/room/furnitures/keyboard/keyboard.glb similarity index 100% rename from src/client/assets/room/furnitures/keyboard/keyboard.glb rename to assets/client/room/furnitures/keyboard/keyboard.glb diff --git a/src/client/assets/room/furnitures/low-table/low-table.blend b/assets/client/room/furnitures/low-table/low-table.blend similarity index 100% rename from src/client/assets/room/furnitures/low-table/low-table.blend rename to assets/client/room/furnitures/low-table/low-table.blend diff --git a/src/client/assets/room/furnitures/low-table/low-table.glb b/assets/client/room/furnitures/low-table/low-table.glb similarity index 100% rename from src/client/assets/room/furnitures/low-table/low-table.glb rename to assets/client/room/furnitures/low-table/low-table.glb diff --git a/src/client/assets/room/furnitures/mat/mat.blend b/assets/client/room/furnitures/mat/mat.blend similarity index 100% rename from src/client/assets/room/furnitures/mat/mat.blend rename to assets/client/room/furnitures/mat/mat.blend diff --git a/src/client/assets/room/furnitures/mat/mat.glb b/assets/client/room/furnitures/mat/mat.glb similarity index 100% rename from src/client/assets/room/furnitures/mat/mat.glb rename to assets/client/room/furnitures/mat/mat.glb diff --git a/src/client/assets/room/furnitures/milk/milk-uv.png b/assets/client/room/furnitures/milk/milk-uv.png similarity index 100% rename from src/client/assets/room/furnitures/milk/milk-uv.png rename to assets/client/room/furnitures/milk/milk-uv.png diff --git a/src/client/assets/room/furnitures/milk/milk.blend b/assets/client/room/furnitures/milk/milk.blend similarity index 100% rename from src/client/assets/room/furnitures/milk/milk.blend rename to assets/client/room/furnitures/milk/milk.blend diff --git a/src/client/assets/room/furnitures/milk/milk.glb b/assets/client/room/furnitures/milk/milk.glb similarity index 100% rename from src/client/assets/room/furnitures/milk/milk.glb rename to assets/client/room/furnitures/milk/milk.glb diff --git a/src/client/assets/room/furnitures/milk/milk.png b/assets/client/room/furnitures/milk/milk.png similarity index 100% rename from src/client/assets/room/furnitures/milk/milk.png rename to assets/client/room/furnitures/milk/milk.png diff --git a/src/client/assets/room/furnitures/milk/milk.psd b/assets/client/room/furnitures/milk/milk.psd similarity index 100% rename from src/client/assets/room/furnitures/milk/milk.psd rename to assets/client/room/furnitures/milk/milk.psd diff --git a/src/client/assets/room/furnitures/monitor/monitor.blend b/assets/client/room/furnitures/monitor/monitor.blend similarity index 100% rename from src/client/assets/room/furnitures/monitor/monitor.blend rename to assets/client/room/furnitures/monitor/monitor.blend diff --git a/src/client/assets/room/furnitures/monitor/monitor.glb b/assets/client/room/furnitures/monitor/monitor.glb similarity index 100% rename from src/client/assets/room/furnitures/monitor/monitor.glb rename to assets/client/room/furnitures/monitor/monitor.glb diff --git a/src/client/assets/room/furnitures/monitor/monitor.psd b/assets/client/room/furnitures/monitor/monitor.psd similarity index 100% rename from src/client/assets/room/furnitures/monitor/monitor.psd rename to assets/client/room/furnitures/monitor/monitor.psd diff --git a/src/client/assets/room/furnitures/monitor/screen-uv.png b/assets/client/room/furnitures/monitor/screen-uv.png similarity index 100% rename from src/client/assets/room/furnitures/monitor/screen-uv.png rename to assets/client/room/furnitures/monitor/screen-uv.png diff --git a/src/client/assets/room/furnitures/monitor/screen.jpg b/assets/client/room/furnitures/monitor/screen.jpg similarity index 100% rename from src/client/assets/room/furnitures/monitor/screen.jpg rename to assets/client/room/furnitures/monitor/screen.jpg diff --git a/src/client/assets/room/furnitures/moon/moon.blend b/assets/client/room/furnitures/moon/moon.blend similarity index 100% rename from src/client/assets/room/furnitures/moon/moon.blend rename to assets/client/room/furnitures/moon/moon.blend diff --git a/src/client/assets/room/furnitures/moon/moon.glb b/assets/client/room/furnitures/moon/moon.glb similarity index 100% rename from src/client/assets/room/furnitures/moon/moon.glb rename to assets/client/room/furnitures/moon/moon.glb diff --git a/src/client/assets/room/furnitures/moon/moon.jpg b/assets/client/room/furnitures/moon/moon.jpg similarity index 100% rename from src/client/assets/room/furnitures/moon/moon.jpg rename to assets/client/room/furnitures/moon/moon.jpg diff --git a/src/client/assets/room/furnitures/mousepad/mousepad.blend b/assets/client/room/furnitures/mousepad/mousepad.blend similarity index 100% rename from src/client/assets/room/furnitures/mousepad/mousepad.blend rename to assets/client/room/furnitures/mousepad/mousepad.blend diff --git a/src/client/assets/room/furnitures/mousepad/mousepad.glb b/assets/client/room/furnitures/mousepad/mousepad.glb similarity index 100% rename from src/client/assets/room/furnitures/mousepad/mousepad.glb rename to assets/client/room/furnitures/mousepad/mousepad.glb diff --git a/src/client/assets/room/furnitures/pc/motherboard-uv.png b/assets/client/room/furnitures/pc/motherboard-uv.png similarity index 100% rename from src/client/assets/room/furnitures/pc/motherboard-uv.png rename to assets/client/room/furnitures/pc/motherboard-uv.png diff --git a/src/client/assets/room/furnitures/pc/motherboard-uv.psd b/assets/client/room/furnitures/pc/motherboard-uv.psd similarity index 100% rename from src/client/assets/room/furnitures/pc/motherboard-uv.psd rename to assets/client/room/furnitures/pc/motherboard-uv.psd diff --git a/src/client/assets/room/furnitures/pc/motherboard.jpg b/assets/client/room/furnitures/pc/motherboard.jpg similarity index 100% rename from src/client/assets/room/furnitures/pc/motherboard.jpg rename to assets/client/room/furnitures/pc/motherboard.jpg diff --git a/src/client/assets/room/furnitures/pc/pc.blend b/assets/client/room/furnitures/pc/pc.blend similarity index 100% rename from src/client/assets/room/furnitures/pc/pc.blend rename to assets/client/room/furnitures/pc/pc.blend diff --git a/src/client/assets/room/furnitures/pc/pc.glb b/assets/client/room/furnitures/pc/pc.glb similarity index 100% rename from src/client/assets/room/furnitures/pc/pc.glb rename to assets/client/room/furnitures/pc/pc.glb diff --git a/src/client/assets/room/furnitures/pencil/pencil.blend b/assets/client/room/furnitures/pencil/pencil.blend similarity index 100% rename from src/client/assets/room/furnitures/pencil/pencil.blend rename to assets/client/room/furnitures/pencil/pencil.blend diff --git a/src/client/assets/room/furnitures/pencil/pencil.glb b/assets/client/room/furnitures/pencil/pencil.glb similarity index 100% rename from src/client/assets/room/furnitures/pencil/pencil.glb rename to assets/client/room/furnitures/pencil/pencil.glb diff --git a/src/client/assets/room/furnitures/photoframe/photo-uv.png b/assets/client/room/furnitures/photoframe/photo-uv.png similarity index 100% rename from src/client/assets/room/furnitures/photoframe/photo-uv.png rename to assets/client/room/furnitures/photoframe/photo-uv.png diff --git a/src/client/assets/room/furnitures/photoframe/photo.jpg b/assets/client/room/furnitures/photoframe/photo.jpg similarity index 100% rename from src/client/assets/room/furnitures/photoframe/photo.jpg rename to assets/client/room/furnitures/photoframe/photo.jpg diff --git a/src/client/assets/room/furnitures/photoframe/photoframe.blend b/assets/client/room/furnitures/photoframe/photoframe.blend similarity index 100% rename from src/client/assets/room/furnitures/photoframe/photoframe.blend rename to assets/client/room/furnitures/photoframe/photoframe.blend diff --git a/src/client/assets/room/furnitures/photoframe/photoframe.glb b/assets/client/room/furnitures/photoframe/photoframe.glb similarity index 100% rename from src/client/assets/room/furnitures/photoframe/photoframe.glb rename to assets/client/room/furnitures/photoframe/photoframe.glb diff --git a/src/client/assets/room/furnitures/piano/piano.blend b/assets/client/room/furnitures/piano/piano.blend similarity index 100% rename from src/client/assets/room/furnitures/piano/piano.blend rename to assets/client/room/furnitures/piano/piano.blend diff --git a/src/client/assets/room/furnitures/piano/piano.glb b/assets/client/room/furnitures/piano/piano.glb similarity index 100% rename from src/client/assets/room/furnitures/piano/piano.glb rename to assets/client/room/furnitures/piano/piano.glb diff --git a/src/client/assets/room/furnitures/pinguin/pinguin.blend b/assets/client/room/furnitures/pinguin/pinguin.blend similarity index 100% rename from src/client/assets/room/furnitures/pinguin/pinguin.blend rename to assets/client/room/furnitures/pinguin/pinguin.blend diff --git a/src/client/assets/room/furnitures/pinguin/pinguin.glb b/assets/client/room/furnitures/pinguin/pinguin.glb similarity index 100% rename from src/client/assets/room/furnitures/pinguin/pinguin.glb rename to assets/client/room/furnitures/pinguin/pinguin.glb diff --git a/src/client/assets/room/furnitures/plant/plant-soil-uv.png b/assets/client/room/furnitures/plant/plant-soil-uv.png similarity index 100% rename from src/client/assets/room/furnitures/plant/plant-soil-uv.png rename to assets/client/room/furnitures/plant/plant-soil-uv.png diff --git a/src/client/assets/room/furnitures/plant/plant-soil.png b/assets/client/room/furnitures/plant/plant-soil.png similarity index 100% rename from src/client/assets/room/furnitures/plant/plant-soil.png rename to assets/client/room/furnitures/plant/plant-soil.png diff --git a/src/client/assets/room/furnitures/plant/plant-soil.psd b/assets/client/room/furnitures/plant/plant-soil.psd similarity index 100% rename from src/client/assets/room/furnitures/plant/plant-soil.psd rename to assets/client/room/furnitures/plant/plant-soil.psd diff --git a/src/client/assets/room/furnitures/plant/plant.blend b/assets/client/room/furnitures/plant/plant.blend similarity index 100% rename from src/client/assets/room/furnitures/plant/plant.blend rename to assets/client/room/furnitures/plant/plant.blend diff --git a/src/client/assets/room/furnitures/plant/plant.glb b/assets/client/room/furnitures/plant/plant.glb similarity index 100% rename from src/client/assets/room/furnitures/plant/plant.glb rename to assets/client/room/furnitures/plant/plant.glb diff --git a/src/client/assets/room/furnitures/plant2/plant2.blend b/assets/client/room/furnitures/plant2/plant2.blend similarity index 100% rename from src/client/assets/room/furnitures/plant2/plant2.blend rename to assets/client/room/furnitures/plant2/plant2.blend diff --git a/src/client/assets/room/furnitures/plant2/plant2.glb b/assets/client/room/furnitures/plant2/plant2.glb similarity index 100% rename from src/client/assets/room/furnitures/plant2/plant2.glb rename to assets/client/room/furnitures/plant2/plant2.glb diff --git a/src/client/assets/room/furnitures/plant2/soil.png b/assets/client/room/furnitures/plant2/soil.png similarity index 100% rename from src/client/assets/room/furnitures/plant2/soil.png rename to assets/client/room/furnitures/plant2/soil.png diff --git a/src/client/assets/room/furnitures/poster-h/poster-h.blend b/assets/client/room/furnitures/poster-h/poster-h.blend similarity index 100% rename from src/client/assets/room/furnitures/poster-h/poster-h.blend rename to assets/client/room/furnitures/poster-h/poster-h.blend diff --git a/src/client/assets/room/furnitures/poster-h/poster-h.glb b/assets/client/room/furnitures/poster-h/poster-h.glb similarity index 100% rename from src/client/assets/room/furnitures/poster-h/poster-h.glb rename to assets/client/room/furnitures/poster-h/poster-h.glb diff --git a/src/client/assets/room/furnitures/poster-h/uv.png b/assets/client/room/furnitures/poster-h/uv.png similarity index 100% rename from src/client/assets/room/furnitures/poster-h/uv.png rename to assets/client/room/furnitures/poster-h/uv.png diff --git a/src/client/assets/room/furnitures/poster-v/poster-v.blend b/assets/client/room/furnitures/poster-v/poster-v.blend similarity index 100% rename from src/client/assets/room/furnitures/poster-v/poster-v.blend rename to assets/client/room/furnitures/poster-v/poster-v.blend diff --git a/src/client/assets/room/furnitures/poster-v/poster-v.glb b/assets/client/room/furnitures/poster-v/poster-v.glb similarity index 100% rename from src/client/assets/room/furnitures/poster-v/poster-v.glb rename to assets/client/room/furnitures/poster-v/poster-v.glb diff --git a/src/client/assets/room/furnitures/poster-v/uv.png b/assets/client/room/furnitures/poster-v/uv.png similarity index 100% rename from src/client/assets/room/furnitures/poster-v/uv.png rename to assets/client/room/furnitures/poster-v/uv.png diff --git a/src/client/assets/room/furnitures/pudding/pudding.blend b/assets/client/room/furnitures/pudding/pudding.blend similarity index 100% rename from src/client/assets/room/furnitures/pudding/pudding.blend rename to assets/client/room/furnitures/pudding/pudding.blend diff --git a/src/client/assets/room/furnitures/pudding/pudding.glb b/assets/client/room/furnitures/pudding/pudding.glb similarity index 100% rename from src/client/assets/room/furnitures/pudding/pudding.glb rename to assets/client/room/furnitures/pudding/pudding.glb diff --git a/src/client/assets/room/furnitures/rubik-cube/rubik-cube.blend b/assets/client/room/furnitures/rubik-cube/rubik-cube.blend similarity index 100% rename from src/client/assets/room/furnitures/rubik-cube/rubik-cube.blend rename to assets/client/room/furnitures/rubik-cube/rubik-cube.blend diff --git a/src/client/assets/room/furnitures/rubik-cube/rubik-cube.glb b/assets/client/room/furnitures/rubik-cube/rubik-cube.glb similarity index 100% rename from src/client/assets/room/furnitures/rubik-cube/rubik-cube.glb rename to assets/client/room/furnitures/rubik-cube/rubik-cube.glb diff --git a/src/client/assets/room/furnitures/server/rack-uv.png b/assets/client/room/furnitures/server/rack-uv.png similarity index 100% rename from src/client/assets/room/furnitures/server/rack-uv.png rename to assets/client/room/furnitures/server/rack-uv.png diff --git a/src/client/assets/room/furnitures/server/rack.png b/assets/client/room/furnitures/server/rack.png similarity index 100% rename from src/client/assets/room/furnitures/server/rack.png rename to assets/client/room/furnitures/server/rack.png diff --git a/src/client/assets/room/furnitures/server/server.blend b/assets/client/room/furnitures/server/server.blend similarity index 100% rename from src/client/assets/room/furnitures/server/server.blend rename to assets/client/room/furnitures/server/server.blend diff --git a/src/client/assets/room/furnitures/server/server.glb b/assets/client/room/furnitures/server/server.glb similarity index 100% rename from src/client/assets/room/furnitures/server/server.glb rename to assets/client/room/furnitures/server/server.glb diff --git a/src/client/assets/room/furnitures/server/server.png b/assets/client/room/furnitures/server/server.png similarity index 100% rename from src/client/assets/room/furnitures/server/server.png rename to assets/client/room/furnitures/server/server.png diff --git a/src/client/assets/room/furnitures/server/uv.png b/assets/client/room/furnitures/server/uv.png similarity index 100% rename from src/client/assets/room/furnitures/server/uv.png rename to assets/client/room/furnitures/server/uv.png diff --git a/src/client/assets/room/furnitures/sofa/sofa.blend b/assets/client/room/furnitures/sofa/sofa.blend similarity index 100% rename from src/client/assets/room/furnitures/sofa/sofa.blend rename to assets/client/room/furnitures/sofa/sofa.blend diff --git a/src/client/assets/room/furnitures/sofa/sofa.glb b/assets/client/room/furnitures/sofa/sofa.glb similarity index 100% rename from src/client/assets/room/furnitures/sofa/sofa.glb rename to assets/client/room/furnitures/sofa/sofa.glb diff --git a/src/client/assets/room/furnitures/spiral/spiral.blend b/assets/client/room/furnitures/spiral/spiral.blend similarity index 100% rename from src/client/assets/room/furnitures/spiral/spiral.blend rename to assets/client/room/furnitures/spiral/spiral.blend diff --git a/src/client/assets/room/furnitures/spiral/spiral.glb b/assets/client/room/furnitures/spiral/spiral.glb similarity index 100% rename from src/client/assets/room/furnitures/spiral/spiral.glb rename to assets/client/room/furnitures/spiral/spiral.glb diff --git a/src/client/assets/room/furnitures/tv/screen-uv.png b/assets/client/room/furnitures/tv/screen-uv.png similarity index 100% rename from src/client/assets/room/furnitures/tv/screen-uv.png rename to assets/client/room/furnitures/tv/screen-uv.png diff --git a/src/client/assets/room/furnitures/tv/tv.blend b/assets/client/room/furnitures/tv/tv.blend similarity index 100% rename from src/client/assets/room/furnitures/tv/tv.blend rename to assets/client/room/furnitures/tv/tv.blend diff --git a/src/client/assets/room/furnitures/tv/tv.glb b/assets/client/room/furnitures/tv/tv.glb similarity index 100% rename from src/client/assets/room/furnitures/tv/tv.glb rename to assets/client/room/furnitures/tv/tv.glb diff --git a/src/client/assets/room/furnitures/wall-clock/wall-clock.blend b/assets/client/room/furnitures/wall-clock/wall-clock.blend similarity index 100% rename from src/client/assets/room/furnitures/wall-clock/wall-clock.blend rename to assets/client/room/furnitures/wall-clock/wall-clock.blend diff --git a/src/client/assets/room/furnitures/wall-clock/wall-clock.glb b/assets/client/room/furnitures/wall-clock/wall-clock.glb similarity index 100% rename from src/client/assets/room/furnitures/wall-clock/wall-clock.glb rename to assets/client/room/furnitures/wall-clock/wall-clock.glb diff --git a/src/client/assets/room/rooms/default/default.blend b/assets/client/room/rooms/default/default.blend similarity index 100% rename from src/client/assets/room/rooms/default/default.blend rename to assets/client/room/rooms/default/default.blend diff --git a/src/client/assets/room/rooms/default/default.glb b/assets/client/room/rooms/default/default.glb similarity index 100% rename from src/client/assets/room/rooms/default/default.glb rename to assets/client/room/rooms/default/default.glb diff --git a/src/client/assets/room/rooms/washitsu/husuma-uv.png b/assets/client/room/rooms/washitsu/husuma-uv.png similarity index 100% rename from src/client/assets/room/rooms/washitsu/husuma-uv.png rename to assets/client/room/rooms/washitsu/husuma-uv.png diff --git a/src/client/assets/room/rooms/washitsu/husuma.png b/assets/client/room/rooms/washitsu/husuma.png similarity index 100% rename from src/client/assets/room/rooms/washitsu/husuma.png rename to assets/client/room/rooms/washitsu/husuma.png diff --git a/src/client/assets/room/rooms/washitsu/tatami-single1600.png b/assets/client/room/rooms/washitsu/tatami-single1600.png similarity index 100% rename from src/client/assets/room/rooms/washitsu/tatami-single1600.png rename to assets/client/room/rooms/washitsu/tatami-single1600.png diff --git a/src/client/assets/room/rooms/washitsu/tatami-uv.png b/assets/client/room/rooms/washitsu/tatami-uv.png similarity index 100% rename from src/client/assets/room/rooms/washitsu/tatami-uv.png rename to assets/client/room/rooms/washitsu/tatami-uv.png diff --git a/src/client/assets/room/rooms/washitsu/tatami.afdesign b/assets/client/room/rooms/washitsu/tatami.afdesign similarity index 100% rename from src/client/assets/room/rooms/washitsu/tatami.afdesign rename to assets/client/room/rooms/washitsu/tatami.afdesign diff --git a/src/client/assets/room/rooms/washitsu/tatami.png b/assets/client/room/rooms/washitsu/tatami.png similarity index 100% rename from src/client/assets/room/rooms/washitsu/tatami.png rename to assets/client/room/rooms/washitsu/tatami.png diff --git a/src/client/assets/room/rooms/washitsu/washitsu.blend b/assets/client/room/rooms/washitsu/washitsu.blend similarity index 100% rename from src/client/assets/room/rooms/washitsu/washitsu.blend rename to assets/client/room/rooms/washitsu/washitsu.blend diff --git a/src/client/assets/room/rooms/washitsu/washitsu.glb b/assets/client/room/rooms/washitsu/washitsu.glb similarity index 100% rename from src/client/assets/room/rooms/washitsu/washitsu.glb rename to assets/client/room/rooms/washitsu/washitsu.glb diff --git a/src/client/assets/sounds/aisha/1.mp3 b/assets/client/sounds/aisha/1.mp3 similarity index 100% rename from src/client/assets/sounds/aisha/1.mp3 rename to assets/client/sounds/aisha/1.mp3 diff --git a/src/client/assets/sounds/aisha/2.mp3 b/assets/client/sounds/aisha/2.mp3 similarity index 100% rename from src/client/assets/sounds/aisha/2.mp3 rename to assets/client/sounds/aisha/2.mp3 diff --git a/src/client/assets/sounds/aisha/3.mp3 b/assets/client/sounds/aisha/3.mp3 similarity index 100% rename from src/client/assets/sounds/aisha/3.mp3 rename to assets/client/sounds/aisha/3.mp3 diff --git a/src/client/assets/sounds/noizenecio/kick_gaba.mp3 b/assets/client/sounds/noizenecio/kick_gaba.mp3 similarity index 100% rename from src/client/assets/sounds/noizenecio/kick_gaba.mp3 rename to assets/client/sounds/noizenecio/kick_gaba.mp3 diff --git a/src/client/assets/sounds/noizenecio/kick_gaba2.mp3 b/assets/client/sounds/noizenecio/kick_gaba2.mp3 similarity index 100% rename from src/client/assets/sounds/noizenecio/kick_gaba2.mp3 rename to assets/client/sounds/noizenecio/kick_gaba2.mp3 diff --git a/src/client/assets/sounds/syuilo/down.mp3 b/assets/client/sounds/syuilo/down.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/down.mp3 rename to assets/client/sounds/syuilo/down.mp3 diff --git a/src/client/assets/sounds/syuilo/kick.mp3 b/assets/client/sounds/syuilo/kick.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/kick.mp3 rename to assets/client/sounds/syuilo/kick.mp3 diff --git a/src/client/assets/sounds/syuilo/pirori-square-wet.mp3 b/assets/client/sounds/syuilo/pirori-square-wet.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/pirori-square-wet.mp3 rename to assets/client/sounds/syuilo/pirori-square-wet.mp3 diff --git a/src/client/assets/sounds/syuilo/pirori-wet.mp3 b/assets/client/sounds/syuilo/pirori-wet.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/pirori-wet.mp3 rename to assets/client/sounds/syuilo/pirori-wet.mp3 diff --git a/src/client/assets/sounds/syuilo/pirori.mp3 b/assets/client/sounds/syuilo/pirori.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/pirori.mp3 rename to assets/client/sounds/syuilo/pirori.mp3 diff --git a/src/client/assets/sounds/syuilo/poi1.mp3 b/assets/client/sounds/syuilo/poi1.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/poi1.mp3 rename to assets/client/sounds/syuilo/poi1.mp3 diff --git a/src/client/assets/sounds/syuilo/poi2.mp3 b/assets/client/sounds/syuilo/poi2.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/poi2.mp3 rename to assets/client/sounds/syuilo/poi2.mp3 diff --git a/src/client/assets/sounds/syuilo/pope1.mp3 b/assets/client/sounds/syuilo/pope1.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/pope1.mp3 rename to assets/client/sounds/syuilo/pope1.mp3 diff --git a/src/client/assets/sounds/syuilo/pope2.mp3 b/assets/client/sounds/syuilo/pope2.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/pope2.mp3 rename to assets/client/sounds/syuilo/pope2.mp3 diff --git a/src/client/assets/sounds/syuilo/popo.mp3 b/assets/client/sounds/syuilo/popo.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/popo.mp3 rename to assets/client/sounds/syuilo/popo.mp3 diff --git a/src/client/assets/sounds/syuilo/reverved.mp3 b/assets/client/sounds/syuilo/reverved.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/reverved.mp3 rename to assets/client/sounds/syuilo/reverved.mp3 diff --git a/src/client/assets/sounds/syuilo/ryukyu.mp3 b/assets/client/sounds/syuilo/ryukyu.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/ryukyu.mp3 rename to assets/client/sounds/syuilo/ryukyu.mp3 diff --git a/src/client/assets/sounds/syuilo/snare.mp3 b/assets/client/sounds/syuilo/snare.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/snare.mp3 rename to assets/client/sounds/syuilo/snare.mp3 diff --git a/src/client/assets/sounds/syuilo/square-pico.mp3 b/assets/client/sounds/syuilo/square-pico.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/square-pico.mp3 rename to assets/client/sounds/syuilo/square-pico.mp3 diff --git a/src/client/assets/sounds/syuilo/triple.mp3 b/assets/client/sounds/syuilo/triple.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/triple.mp3 rename to assets/client/sounds/syuilo/triple.mp3 diff --git a/src/client/assets/sounds/syuilo/up.mp3 b/assets/client/sounds/syuilo/up.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/up.mp3 rename to assets/client/sounds/syuilo/up.mp3 diff --git a/src/client/assets/sounds/syuilo/waon.mp3 b/assets/client/sounds/syuilo/waon.mp3 similarity index 100% rename from src/client/assets/sounds/syuilo/waon.mp3 rename to assets/client/sounds/syuilo/waon.mp3 diff --git a/src/client/assets/unread.svg b/assets/client/unread.svg similarity index 100% rename from src/client/assets/unread.svg rename to assets/client/unread.svg diff --git a/assets/favicon.ico b/assets/favicon.ico new file mode 100644 index 0000000000..9be1ff6295 Binary files /dev/null and b/assets/favicon.ico differ diff --git a/src/client/assets/redoc.html b/assets/redoc.html similarity index 74% rename from src/client/assets/redoc.html rename to assets/redoc.html index 4d2360fb20..9ee5a95c05 100644 --- a/src/client/assets/redoc.html +++ b/assets/redoc.html @@ -19,6 +19,6 @@ - + diff --git a/gulpfile.ts b/gulpfile.ts index bdc20089cd..771a5c0e32 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -6,7 +6,6 @@ import * as fs from 'fs'; import * as gulp from 'gulp'; import * as ts from 'gulp-typescript'; import * as rimraf from 'rimraf'; -import * as rename from 'gulp-rename'; import * as replace from 'gulp-replace'; const terser = require('gulp-terser'); const cssnano = require('gulp-cssnano'); @@ -15,7 +14,7 @@ const locales: { [x: string]: any } = require('./locales'); const meta = require('./package.json'); gulp.task('build:ts', () => { - const tsProject = ts.createProject('./tsconfig.json'); + const tsProject = ts.createProject('./src/tsconfig.json'); return tsProject .src() @@ -29,23 +28,23 @@ gulp.task('build:copy:views', () => ); gulp.task('build:copy:fonts', () => - gulp.src('./node_modules/three/examples/fonts/**/*').pipe(gulp.dest('./built/client/assets/fonts/')) + gulp.src('./node_modules/three/examples/fonts/**/*').pipe(gulp.dest('./built/assets/fonts/')) ); gulp.task('build:copy:locales', cb => { - fs.mkdirSync('./built/client/assets/locales', { recursive: true }); + fs.mkdirSync('./built/assets/locales', { recursive: true }); const v = { '_version_': meta.version }; for (const [lang, locale] of Object.entries(locales)) { - fs.writeFileSync(`./built/client/assets/locales/${lang}.${meta.version}.json`, JSON.stringify({ ...locale, ...v }), 'utf-8'); + fs.writeFileSync(`./built/assets/locales/${lang}.${meta.version}.json`, JSON.stringify({ ...locale, ...v }), 'utf-8'); } cb(); }); gulp.task('build:client:script', () => { - return gulp.src(['./src/server/web/boot.js']) + return gulp.src(['./src/server/web/boot.js', './src/server/web/bios.js', './src/server/web/cli.js']) .pipe(replace('VERSION', JSON.stringify(meta.version))) .pipe(replace('LANGS', JSON.stringify(Object.keys(locales)))) .pipe(terser({ @@ -55,15 +54,16 @@ gulp.task('build:client:script', () => { }); gulp.task('build:client:style', () => { - return gulp.src(['./src/server/web/style.css']) - .pipe(cssnano()) + return gulp.src(['./src/server/web/style.css', './src/server/web/bios.css', './src/server/web/cli.css']) + .pipe(cssnano({ + zindex: false + })) .pipe(gulp.dest('./built/server/web/')); }); gulp.task('build:copy', gulp.parallel('build:copy:locales', 'build:copy:views', 'build:client:script', 'build:client:style', 'build:copy:fonts', () => gulp.src([ './src/emojilist.json', - './src/server/web/views/**/*', './src/**/assets/**/*', '!./src/client/assets/**/*' ]).pipe(gulp.dest('./built/')) @@ -77,33 +77,16 @@ gulp.task('cleanall', gulp.parallel('clean', cb => rimraf('./node_modules', cb) )); -gulp.task('copy:client', () => - gulp.src([ - './assets/**/*', - './src/client/assets/**/*', - ]) - .pipe(rename(path => { - path.dirname = path.dirname!.replace('assets', '.'); - })) - .pipe(gulp.dest('./built/client/assets/')) -); - -gulp.task('copy:docs', () => - gulp.src([ - './src/docs/**/*', - ]) - .pipe(gulp.dest('./built/client/assets/docs/')) -); - -gulp.task('build:client', gulp.parallel( - 'copy:client', - 'copy:docs' -)); - gulp.task('build', gulp.parallel( 'build:ts', 'build:copy', - 'build:client', )); gulp.task('default', gulp.task('build')); + +gulp.task('watch', () => { + gulp.watch([ + './src/**/*', + '!./src/client/**/*' + ], { ignoreInitial: false }, gulp.task('build')); +}); diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 469b1c9493..ceec5c8a6f 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -706,6 +706,7 @@ receiveAnnouncementFromInstance: "E-Mail-Benachrichtigungen von dieser Instanz e emailNotification: "E-Mail-Benachrichtigungen" inChannelSearch: "In Kanal suchen" useReactionPickerForContextMenu: "Reaktionsauswahl durch Rechtsklick öffnen" +typingUsers: "{users} ist/sind am schreiben..." jumpToSpecifiedDate: "Zu bestimmtem Datum springen" showingPastTimeline: "Momentan wird eine alte Chronik angezeigt" clear: "Zurückkehren" diff --git a/locales/en-US.yml b/locales/en-US.yml index d3b6804744..496306194c 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -706,6 +706,7 @@ receiveAnnouncementFromInstance: "Receive Email notifications from this instance emailNotification: "Email notifications" inChannelSearch: "Search in channel" useReactionPickerForContextMenu: "Open reaction picker on right-click" +typingUsers: "{users} is/are typing..." jumpToSpecifiedDate: "Jump to specific date" showingPastTimeline: "Currently displaying an old timeline" clear: "Return" diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index c2b2521523..16815ab25d 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -17,7 +17,7 @@ noNotes: "Aucune note" noNotifications: "Aucune notification" instance: "Instance" settings: "Paramètres" -basicSettings: "Paramètres basiques" +basicSettings: "Paramètres généraux" otherSettings: "Autres paramètres" openInWindow: "Ouvrir dans une nouvelle fenêtre" profile: "Profil" @@ -34,7 +34,7 @@ addUser: "Ajouter un·e utilisateur·rice" favorite: "Ajouter aux favoris" favorites: "Favoris" unfavorite: "Retirer des favoris" -favorited: "Ajouter à mes favoris" +favorited: "Ajouté à mes favoris" alreadyFavorited: "Déjà ajouté aux favoris." cantFavorite: "Impossible d'ajouter aux favoris." pin: "Épingler sur le profil" @@ -62,7 +62,7 @@ import: "Importer" export: "Exporter" files: "Fichiers" download: "Télécharger" -driveFileDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer le fichier \"{name}\" ? Les notes avec ce fichier joint seront aussi supprimées." +driveFileDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer le fichier \"{name}\" ? Les notes liées à ce fichier seront aussi supprimées." unfollowConfirm: "Désirez-vous vous désabonner de {name} ?" exportRequested: "Vous avez demandé une exportation. L’opération pourrait prendre un peu de temps. Une terminée, le fichier résultant sera ajouté au Drive." importRequested: "Vous avez initié un import. Cela pourrait prendre un peu de temps." @@ -83,17 +83,18 @@ pageLoadErrorDescription: "Cela est généralement causé par le cache du naviga enterListName: "Nom de la liste" privacy: "Confidentialité" makeFollowManuallyApprove: "Accepter manuellement les demandes d’abonnement" -defaultNoteVisibility: "Visibilité par défaut" +defaultNoteVisibility: "Visibilité des notes par défaut" follow: "S’abonner" followRequest: "Demande d’abonnement" followRequests: "Demandes d’abonnement" unfollow: "Se désabonner" -followRequestPending: "En attente d’approbation" -enterEmoji: "ou entrez un émoji" -renote: "Renote" -unrenote: "Annuler Renote" -renoted: "Republier" +followRequestPending: "Demande d'abonnement en attente de confirmation" +enterEmoji: "Insérer un émoji" +renote: "Partager" +unrenote: "Annuler le partage" +renoted: "Republié !" cantRenote: "Ce message ne peut pas être republié." +cantReRenote: "Impossible de repartager un partage." quote: "Citer" pinnedNote: "Note épinglée" pinned: "Épingler sur le profil" @@ -103,13 +104,14 @@ sensitive: "Contenu sensible" add: "Ajouter" reaction: "Réactions" reactionSettingDescription: "Choisissez vos réactions préférées que vous souhaitez épingler dans le sélecteur de réactions." -rememberNoteVisibility: "Se souvenir de la visibilité des notes" +reactionSettingDescription2: "Déplacer pour réorganiser, cliquer pour effacer, utiliser « + » pour ajouter." +rememberNoteVisibility: "Activer l'option \" se souvenir de la visibilité des notes \" vous permet de réutiliser automatiquement la visibilité utilisée lors de la publication de votre note précédente." attachCancel: "Supprimer le fichier attaché" markAsSensitive: "Marquer comme sensible" -unmarkAsSensitive: "Enlever le marquage comme sensible" +unmarkAsSensitive: "Supprimer le marquage comme sensible" enterFileName: "Entrer le nom du fichier" mute: "Mettre en sourdine" -unmute: "Enlever la sourdine" +unmute: "Ne plus masquer" block: "Bloquer" unblock: "Débloquer" suspend: "Suspendre" @@ -122,7 +124,7 @@ selectList: "Sélectionner une liste" selectAntenna: "Sélectionner une antenne" selectWidget: "Sélectionner un widget" editWidgets: "Modifier les widgets" -editWidgetsExit: "Fait" +editWidgetsExit: "Valider les modifications" customEmojis: "Émojis personnalisés" emoji: "Émoji" emojiName: "Nom de l’émoji" @@ -132,9 +134,9 @@ settingGuide: "Configuration proposée" cacheRemoteFiles: "Mise en cache des fichiers distants" cacheRemoteFilesDescription: "Lorsque cette option est désactivée, les fichiers distants sont chargés directement depuis l’instance distante. La désactiver diminuera certes l’utilisation de l’espace de stockage local mais augmentera le trafic réseau puisque les miniatures ne seront plus générées." flagAsBot: "Ce compte est un robot" -flagAsBotDescription: "Si ce compte est contrôlé par un programme, définissez cette option. Si elle est activée, elle agira comme un marqueur pour les autres développeurs afin d'éviter des chaînes d'interaction sans fin avec d'autres robots et d'ajuster les systèmes internes de Misskey pour traiter ce compte comme un robot." +flagAsBotDescription: "Si ce compte est géré de manière automatisée , définissez cette option. Si elle est activée, elle agira comme un marqueur pour les autres développeurs afin d'éviter des chaînes d'interaction sans fin avec d'autres robots et d'ajuster les systèmes internes de Misskey pour traiter ce compte comme un robot." flagAsCat: "Ce compte est un chat" -flagAsCatDescription: "Activez cette option pour que ce compte soit marqué comme un chat." +flagAsCatDescription: "Activer l'option \" Je suis un chat \" pour ce compte." autoAcceptFollowed: "Accepter automatiquement les demandes d’abonnement venant d’utilisateur·rice·s que vous suivez" addAcount: "Ajouter un compte" loginFailed: "Échec de la connexion" @@ -148,9 +150,9 @@ youHaveNoLists: "Vous n’avez aucune liste" followConfirm: "Êtes-vous sûr·e de vouloir suivre {name} ?" proxyAccount: "Compte proxy" proxyAccountDescription: "Un compte proxy se comporte, dans certaines conditions, comme un·e abonné·e distant·e pour les utilisateurs d'autres instances. Par exemple, quand un·e utilisateur·rice ajoute un·e utilisateur·rice distant·e à une liste, ses notes ne seront pas visibles sur l'instance si personne ne suit cet·te utilisateur·rice. Le compte proxy va donc suivre cet·te utilisateur·rice pour que ses notes soient acheminées." -host: "Hôte" +host: "Serveur distant" selectUser: "Sélectionner un·e utilisateur·rice" -recipient: "Correspondant·e" +recipient: "Destinataire" annotation: "Commentaires" federation: "Fédération" instances: "Instance" @@ -169,7 +171,7 @@ software: "Logiciel" version: "Version" metadata: "Métadonnées" withNFiles: "{n} fichier(s)" -monitor: "Écran de contrôle" +monitor: "Contrôle" jobQueue: "File d’attente" cpuAndMemory: "Processeur et mémoire" network: "Réseau" @@ -178,9 +180,9 @@ instanceInfo: "Informations sur l’instance" statistics: "Statistiques" clearQueue: "Vider la file d’attente" clearQueueConfirmTitle: "Êtes-vous sûr·e de vouloir vider la file d’attente ?" -clearQueueConfirmText: "Les notes non distribuées ne seront pas livrées. Normalement, vous n'avez PAS besoin d'effectuer cette opération." +clearQueueConfirmText: "Les notes non distribuées ne seront pas délivrées. Normalement, vous n'avez pas besoin d'effectuer cette opération." clearCachedFiles: "Vider le cache" -clearCachedFilesConfirm: "Êtes-vous sûr·e de vouloir vider le cache de fichiers distants ?" +clearCachedFilesConfirm: "Êtes-vous sûr·e de vouloir vider tout le cache de fichiers distants ?" blockedInstances: "Instances bloquées" blockedInstancesDescription: "Listez les instances que vous désirez bloquer, une par ligne. Ces instances ne seront plus en capacité d'interagir avec votre instance." muteAndBlock: "Masqué·e·s / Bloqué·e·s" @@ -193,7 +195,7 @@ pinLimitExceeded: "Vous ne pouvez plus épingler d’autres notes." intro: "L’installation de Misskey est terminée ! Veuillez créer un compte administrateur." done: "Terminé" processing: "Traitement en cours" -preview: "Prévisualisation" +preview: "Aperçu" default: "Par défaut" noCustomEmojis: "Il n'y a pas d’émoji" noJobs: "Il n’y a aucune tâche planifiée" @@ -204,7 +206,7 @@ all: "Tous" subscribing: "Abonné" publishing: "Publié" notResponding: "Ne répond pas" -instanceFollowing: "Abonnements une instance" +instanceFollowing: "Suivre une instance" instanceFollowers: "Abonné·e·s de l’instance" instanceUsers: "Utilisateur·rice·s de cette l’instance" changePassword: "Modifier votre mot de passe" @@ -217,15 +219,15 @@ attachFile: "Joindre un fichier" more: "Plus !" featured: "Tendances" usernameOrUserId: "Nom d’utilisateur·rice ou ID utilisateur" -noSuchUser: "Utilisateur·rice non trouvé" +noSuchUser: "Utilisateur·rice non trouvé·e" lookup: "Recherche" announcements: "Annonces" imageUrl: "URL de l’image" remove: "Supprimer" removed: "Supprimé" -removeAreYouSure: "Supprimer «{x}» ?" -deleteAreYouSure: "Supprimer «{x}» ?" -resetAreYouSure: "Réinitialiser ?" +removeAreYouSure: "Êtes-vous sûr·e de vouloir supprimer「{x}」?" +deleteAreYouSure: "Êtes-vous sûr·e de vouloir supprimer「{x}」?" +resetAreYouSure: "Voulez-vous réinitialiser ?" saved: "Enregistré" messaging: "Discuter" upload: "Téléverser" @@ -237,7 +239,7 @@ uploadFromUrlRequested: "Téléversement demandé" uploadFromUrlMayTakeTime: "Le téléversement de votre fichier peut prendre un certain temps." explore: "Découvrir" games: "Jeux de Misskey" -messageRead: "Lus" +messageRead: "Lu" noMoreHistory: "Il n’y a plus d’historique" startMessaging: "Commencer à discuter" nUsersRead: "Lu par {n} personnes" @@ -257,28 +259,28 @@ themeForLightMode: "Thème à utiliser en Mode Clair" themeForDarkMode: "Thème à utiliser en Mode Sombre" light: "Clair" dark: "Sombre" -lightThemes: "Thème clair" -darkThemes: "Thème sombre" -syncDeviceDarkMode: "Synchronisez le mode sombre avec les paramètres de votre appareil" +lightThemes: "Thèmes clairs" +darkThemes: "Thèmes sombres" +syncDeviceDarkMode: "Utiliser le mode sombre de votre appareil" drive: "Drive" fileName: "Nom du fichier" selectFile: "Choisir le fichier" selectFiles: "Choisir les fichiers" selectFolder: "Sélectionnez un dossier" selectFolders: "Sélectionnez des dossiers" -renameFile: "Renommer le ficher" +renameFile: "Renommer le fichier" folderName: "Nom du dossier" createFolder: "Créer un dossier" renameFolder: "Renommer le dossier" deleteFolder: "Supprimer le dossier" -addFile: "Ajoutez un fichier" +addFile: "Ajouter un fichier" emptyDrive: "Le Drive est vide" emptyFolder: "Le dossier est vide" -unableToDelete: "Ne peut pas être supprimé" +unableToDelete: "Suppression impossible" inputNewFileName: "Entrez un nouveau nom de fichier" inputNewFolderName: "Entrez un nouveau nom de dossier" circularReferenceFolder: "Le dossier de destination est un sous-dossier du dossier que vous souhaitez déplacer." -hasChildFilesOrFolders: "Ce dossier n'est pas vide, il ne peut donc pas être supprimé" +hasChildFilesOrFolders: "Impossible de supprimer ce dossier car il n'est pas vide." copyUrl: "Copier l’URL" rename: "Renommer" avatar: "Avatar" @@ -288,7 +290,7 @@ whenServerDisconnected: "Lorsque la connexion au serveur est perdue" disconnectedFromServer: "Déconnecté·e du serveur" reload: "Rafraîchir" doNothing: "Ignorer" -reloadConfirm: "Voulez-vous recharger le fil ?" +reloadConfirm: "Voulez-vous recharger?" watch: "Surveiller" unwatch: "Ne plus surveiller" accept: "Autoriser" @@ -311,7 +313,7 @@ connectSerice: "Connecter" disconnectSerice: "Déconnecter" enableLocalTimeline: "Activer le fil local" enableGlobalTimeline: "Activer le fil global" -disablingTimelinesInfo: "Si vous désactivez ces fils, les administrateurs et les modérateurs pourront toujours y accéder." +disablingTimelinesInfo: "Même si vous désactivez ces fils, les administrateur·rice·s et les modérateur·rice·s pourront toujours y accéder." registration: "S’inscrire" enableRegistration: "Autoriser les nouvelles inscriptions" invite: "Inviter" @@ -325,6 +327,9 @@ bannerUrl: "URL de l’image de la bannière" basicInfo: "Informations basiques" pinnedUsers: "Utilisateur·rice épinglé·e" pinnedUsersDescription: "Listez les utilisateur·rice·s que vous souhaitez voir épinglé·e·s sur la page \"Découvrir\", un·e par ligne." +pinnedPages: "Pages épinglées" +pinnedPagesDescription: "Inscrivez le chemin des pages que vous souhaitez épingler en haut de la page de l'instance. Séparez les pages d'un retour à la ligne." +pinnedClipId: "Identifiant du clip épinglé" pinnedNotes: "Note épinglée" hcaptcha: "hCaptcha" enableHcaptcha: "Activer hCaptcha" @@ -342,7 +347,7 @@ antennaSource: "Source de l’antenne" antennaKeywords: "Mots clés à recevoir" antennaExcludeKeywords: "Mots clés à exclure" antennaKeywordsDescription: "Séparer avec des espaces pour la condition AND. Séparer avec un saut de ligne pour une condition OR." -notifyAntenna: "Me notifier pour les nouvelles notes" +notifyAntenna: "Je souhaite recevoir les notifications des nouvelles notes" withFileAntenna: "Notes ayant des attachements uniquement" serviceworker: "ServiceWorker" enableServiceworker: "Activer ServiceWorker" @@ -354,12 +359,12 @@ notesAndReplies: "Notes et Réponses" withFiles: "Avec fichiers joints" silence: "Mettre en sourdine" silenceConfirm: "Êtes-vous sûr·e de vouloir mettre l’utilisateur·rice en sourdine ?" -unsilence: "Annuler la mise en sourdine" +unsilence: "Annuler la sourdine" unsilenceConfirm: "Êtes-vous sûr·e de vouloir annuler la mise en sourdine de cette utilisateur·rice ?" popularUsers: "Utilisateur·rice·s populaires" recentlyUpdatedUsers: "Utilisateur·rice·s actif·ve·s récemment" recentlyRegisteredUsers: "Utilisateur·rice·s récemment inscrit·e·s" -recentlyDiscoveredUsers: "Utilisateur·rice·s récemment découverts" +recentlyDiscoveredUsers: "Utilisateur·rice·s récemment découvert·e·s" exploreUsersCount: "Il y a {count} utilisateur·rice·s" exploreFediverse: "Explorer le Fediverse" popularTags: "Mots-clés populaires" @@ -373,11 +378,11 @@ moderator: "Modérateurs" nUsersMentioned: "{n} utilisateur·rice·s mentionné·e·s" securityKey: "Clé de sécurité" securityKeyName: "Nom de la clé" -registerSecurityKey: "S’inscrire la clé de sécurité" +registerSecurityKey: "Enregistrer une clé de sécurité" lastUsed: "Dernier utilisé" unregister: "Se désinscrire" -passwordLessLogin: "Connectez-vous sans mot de passe" -resetPassword: "Réinitialiser mot de passe" +passwordLessLogin: "Se connecter sans mot de passe" +resetPassword: "Réinitialiser le mot de passe" newPasswordIs: "Votre nouveau mot de passe est \"{password}\"" reduceUiAnimation: "Réduire les animations dans l’interface" share: "Partager" @@ -389,66 +394,67 @@ markAsReadAllNotifications: "Marquer toutes les notifications comme lues" markAsReadAllUnreadNotes: "Marquer toutes les notes comme lues" markAsReadAllTalkMessages: "Marquer toutes les discussions comme lues" help: "Aide" -inputMessageHere: "Tapez ici votre message" +inputMessageHere: "Écrivez votre message ici" close: "Fermer" group: "Groupe" groups: "Groupes" createGroup: "Créer un groupe" -ownedGroups: "Groupe propriétaire" -joinedGroups: "Membre dans les groupes" -invites: "Inviter" +ownedGroups: "Mes groupes" +joinedGroups: "Groupes rejoints" +invites: "Invitations" groupName: "Nom du groupe" members: "Membres" transfer: "Transférer" -messagingWithUser: "Discutez avec les utilisateurs" -messagingWithGroup: "Discuter en groupe" +messagingWithUser: "Discuter avec un·e autre utilisateur·rice" +messagingWithGroup: "Discuter avec un groupe" title: "Titre" text: "Texte" enable: "Activer" next: "Suivant" -retype: "Retapez" -noteOf: "{user} notes" -inviteToGroup: "Inviter au groupe" -maxNoteTextLength: "Limite de note caractères" +retype: "Confirmation" +noteOf: "Notes de {user}" +inviteToGroup: "Inviter dans un groupe" +maxNoteTextLength: "Limite du nombre de caractères pour les notes" quoteAttached: "Avec citation" -quoteQuestion: "Souhaitez-vous ajoutez une citation ?" -noMessagesYet: "Pas encore discuté" +quoteQuestion: "Souhaitez-vous ajouter une citation ?" +noMessagesYet: "Pas encore de discussion" newMessageExists: "Vous avez un nouveau message" onlyOneFileCanBeAttached: "Vous ne pouvez joindre qu’un seul fichier au message" signinRequired: "Veuillez vous connecter" -invitations: "Inviter" +invitations: "Invitations" invitationCode: "Code d’invitation" -checking: "Vérification" +checking: "Vérification en cours..." available: "Disponible" unavailable: "Non disponible" -usernameInvalidFormat: "Vous pouvez utiliser des lettres, des nombres et _" -tooShort: "Est trop court" -tooLong: "Est trop long" -weakPassword: "Faible mot de passe" -normalPassword: "Bon mot de passe" -strongPassword: "Fort mot de passe" -passwordMatched: "Combinaison correcte !" -passwordNotMatched: "Ne correspond pas" -signinWith: "Connectez-vous avec {x}" +usernameInvalidFormat: "Le nom d'utilisateur peut contenir uniquement des lettres, des chiffres et des _" +tooShort: "Trop court" +tooLong: "Trop long" +weakPassword: "Mot de passe faible" +normalPassword: "Mot de passe acceptable" +strongPassword: "Mot de passe fort" +passwordMatched: "Les mots de passe correspondent" +passwordNotMatched: "Les mots de passe ne correspondent pas" +signinWith: "Se connecter avec {x}" signinFailed: "Échec d’authentification. Veuillez vérifier que votre nom d’utilisateur et mot de passe sont corrects." tapSecurityKey: "Appuyez sur votre clé de sécurité" or: "OU" +language: "Langue" uiLanguage: "Langue d’affichage de l’interface" groupInvited: "Invité au groupe" aboutX: "À propos de {x}" useOsNativeEmojis: "Utiliser les émojis natifs du système" youHaveNoGroups: "Vous n’avez aucun groupe" -joinOrCreateGroup: "Soyez invité à rejoindre les groupes ou vous pouvez créer votre propre groupe." +joinOrCreateGroup: "Vous pouvez être invité·e à rejoindre des groupes existants ou créer votre propre nouveau groupe." noHistory: "Pas d'historique" signinHistory: "Historique de connexion" disableAnimatedMfm: "Désactiver MFM ayant des animations" -doing: "Attends une seconde" -category: "Catégories" +doing: "En cours..." +category: "Catégorie" tags: "Étiquettes" docSource: "Source de ce document" -createAccount: "Créer compte" +createAccount: "Créer un compte" existingAcount: "Comptes existants" -regenerate: "Régénérer" +regenerate: "Générer à nouveau" fontSize: "Taille de la police" noFollowRequests: "Vous n’avez aucune demande d’abonnement en attente" openImageInNewTab: "Ouvrir les images dans un nouvel onglet" @@ -456,16 +462,16 @@ dashboard: "Tableau de bord" local: "Local" remote: "Distant" total: "Total" -weekOverWeekChanges: "Diff hebdo" -dayOverDayChanges: "Diff quotidien" -appearance: "Aspect" +weekOverWeekChanges: "Hebdomadaire" +dayOverDayChanges: "Journalier" +appearance: "Apparence" clientSettings: "Paramètres du client" accountSettings: "Paramètres du compte" promotion: "Promu" promote: "Promouvoir" numberOfDays: "Nombre de jours" hideThisNote: "Masquer cette note" -showFeaturedNotesInTimeline: "Afficher les notes en vedette dans fil d'actualité" +showFeaturedNotesInTimeline: "Afficher les notes des Tendances dans le fil d'actualité" objectStorage: "Stockage d'objets" useObjectStorage: "Utiliser le stockage d'objets" objectStorageBaseUrl: "Base URL" @@ -476,51 +482,53 @@ objectStoragePrefix: "Prefix" objectStoragePrefixDesc: "Les fichiers seront stockés sous le répertoire de ce préfixe." objectStorageEndpoint: "Endpoint" objectStorageEndpointDesc: "Laissez ce champ vide si vous utilisez AWS S3, sinon spécifiez le point de terminaison comme '' ou ': ' selon le guide de service que vous allez utiliser." -objectStorageRegion: "Region" +objectStorageRegion: "Région" objectStorageRegionDesc: "Spécifiez une région comme 'xx-east-1'. Si votre service ne fait pas de distinction entre les régions, laissez-le vide ou remplissez 'us-east-1'." objectStorageUseSSL: "Utiliser SSL" -objectStorageUseSSLDesc: "Désactivez-le si vous n'utilisez pas HTTPS pour la connexion API" +objectStorageUseSSLDesc: "Désactivez cette option si vous n'utilisez pas HTTPS pour la connexion API" objectStorageUseProxy: "Se connecter via proxy" -objectStorageUseProxyDesc: "Désactivez-le si vous n'utilisez pas Proxy pour la connexion de stockage d'objets" -serverLogs: "Journaux serveur" +objectStorageUseProxyDesc: "Désactivez cette option si vous n'utilisez pas Proxy pour la connexion API" +objectStorageSetPublicRead: "Régler sur « public » lors de l'envoi" +serverLogs: "Journal du serveur" deleteAll: "Supprimer tout" showFixedPostForm: "Afficher le formulaire en haut du fil d'actualité" -newNoteRecived: "Vous avez une nouvelle note" +newNoteRecived: "Vous avez reçu une nouvelle note" sounds: "Sons" listen: "Écouter" none: "Rien" +showInPage: "Afficher dans la page" popout: "Fenêtre contextuelle" volume: "Volume" -masterVolume: "Volume" +masterVolume: "Volume principal" details: "Détails" chooseEmoji: "Choisissez un émoji" unableToProcess: "L’opération n’a pas pu être complétée." -recentUsed: "Récemment utilisé" +recentUsed: "Utilisé récemment" install: "Installation" uninstall: "Désinstaller" -installedApps: "Applications Autorisées" +installedApps: "Applications installées" nothing: "Il n'y a rien à voir ici" -installedDate: "Autorisé" +installedDate: "Date d'installation" lastUsedDate: "Dernière utilisation" state: "État" sort: "Trier" ascendingOrder: "Ascendant" descendingOrder: "Descendant" -scratchpad: "Scratch pad" -scratchpadDescription: "Scratchpad fournit un environnement expérimental pour AiScript. Vous pouvez écrire, exécuter et vérifier les résultats qui interagissent avec Misskey." +scratchpad: "ScratchPad" +scratchpadDescription: "ScratchPad fournit un environnement expérimental pour AiScript. Vous pouvez vérifier la rédaction de votre code, sa bonne exécution et le résultat de son interaction avec Misskey." output: "Sortie" script: "Script" disablePagesScript: "Désactiver AiScript sur les Pages" updateRemoteUser: "Mettre à jour les informations de l’utilisateur·rice distant·e" deleteAllFiles: "Supprimer tous les fichiers" -deleteAllFilesConfirm: "Êtes vous surs de vouloir supprimer tous les fichiers ?" +deleteAllFilesConfirm: "Êtes-vous sûr·e de vouloir supprimer tous les fichiers ?" removeAllFollowing: "Retenir tous les abonnements" removeAllFollowingDescription: "Se désabonner de tous les comptes de {host}. Veuillez lancer cette action uniquement si l’instance n’existe plus." -userSuspended: "Cette utilisateur·trice a été suspendue." -userSilenced: "Cette utilisateur·trice a été masquer." +userSuspended: "Cet·te utilisateur·rice a été suspendu·e." +userSilenced: "Cette utilisateur·trice a été mis·e en sourdine." sidebar: "Barre latérale" divider: "Séparateur" -addItem: "Ajouter élément" +addItem: "Ajouter un élément" rooms: "Chambre" relays: "Relais" addRelay: "Ajouter un relais" @@ -545,6 +553,7 @@ plugins: "Extensions" deck: "Deck" undeck: "Quitter le deck" useBlurEffectForModal: "Utiliser un effet de flou pour les modals" +useFullReactionPicker: "Utiliser l'intégralité du panneau de réactions" width: "Largeur" height: "Hauteur" large: "Grand" @@ -565,7 +574,7 @@ emailConfigInfo: "Utilisé pour confirmer votre adresse de courriel et la réini email: "E-mail " emailAddress: "Adresses e-mail" smtpConfig: "Paramètres du serveur SMTP" -smtpHost: "Hôte" +smtpHost: "Serveur distant" smtpPort: "Port" smtpUser: "Nom d’utilisateur·rice" smtpPass: "Mot de passe" @@ -591,46 +600,76 @@ useGlobalSetting: "Utiliser paramètre général" useGlobalSettingDesc: "S'il est activé, les paramètres de notification de votre compte seront utilisés. S'il est désactivé, des configurations individuelles peuvent être effectuées." other: "Autre" regenerateLoginToken: "Régénérer le jeton de connexion" +regenerateLoginTokenDescription: "Générer un nouveau jeton d'authentification. Cette opération ne devrait pas être nécessaire ; lors de la génération d'un nouveau jeton, tous les appareils seront déconnectés. " setMultipleBySeparatingWithSpace: "Vous pouvez définir plus d’un, séparés par des espaces." fileIdOrUrl: "ID du fichier ou URL" chatOpenBehavior: "Comportement de la fenêtre de discussion lors de son ouverture" +behavior: "Comportement" abuseReports: "Signalements" reportAbuse: "Signalements" reportAbuseOf: "Signaler {name}" +fillAbuseReportDescription: "Veuillez expliquer les raisons du signalement. S'il s'agit d'une note précise, veuillez en donner le lien." +abuseReported: "Le rapport est envoyé. Merci." send: "Envoyer" abuseMarkAsResolved: "Marquer le signalement comme résolu" openInNewTab: "Ouvrir dans un nouvel onglet" +openInSideView: "Ouvrir en vue latérale" +defaultNavigationBehaviour: "Navigation par défaut" +editTheseSettingsMayBreakAccount: "La modification de ces paramètres peut endommager votre compte." waitingFor: "En attente de {x}" random: "Aléatoire" +system: "Système" +switchUi: "Modifier l'interface utilisateur" +desktop: "Bureau" clip: "Clip" +optional: "Facultatif" createNewClip: "Créer un nouveau clip" public: "Public" +i18nInfo: "Misskey est traduit dans différentes langues par des bénévoles. Vous pouvez contribuer à {link}." manageAccessTokens: "Gérer les jetons d'accès" accountInfo: " Informations du compte " notesCount: "Nombre de notes" repliesCount: "Nombre de réponses envoyées" renotesCount: "Nombre de notes repartagées" repliedCount: "Nombre de réponses reçues" +renotedCount: "Nombre de Renotes" followingCount: "Nombre de comptes suivis" +followersCount: "Nombre d'abonnés" +sentReactionsCount: "Nombre de réactions envoyées" +receivedReactionsCount: "Nombre de réactions reçues" +pollVotesCount: "Nombre de votes envoyés" +pollVotedCount: "Nombre de votes reçus" +yes: "Oui" +no: "Non" driveFilesCount: "Nombre de fichiers dans le Drive" +driveUsage: "Utilisation du Drive" noCrawle: "Refuser l'indexation par les robots" noCrawleDescription: "Demandez aux moteurs de recherche de ne pas indexer votre page de profil, vos notes, vos pages, etc." -lockedAccountInfo: "À moins que vous ne définissiez la visibilité de votre note sur \"Abonné-e-s\", vos notes sont visibles par tous, même si vous exigez que les followers soient approuvés manuellement." +lockedAccountInfo: "À moins que vous ne définissiez la visibilité de votre note sur \"Abonné-e-s\", vos notes sont visibles par tous, même si vous exigez que les demandes d'abonnement soient approuvées manuellement." +alwaysMarkSensitive: "Marquer les médias comme contenu sensible par défaut" loadRawImages: "Affichage complet des images jointes au lieu des vignettes" disableShowingAnimatedImages: "Désactiver l'animation des images" verificationEmailSent: "Un e-mail de vérification a été envoyé. Veuillez accéder au lien pour compléter la vérification." notSet: "Non défini" emailVerified: "Votre adresse e-mail a été vérifiée." -clips: "Clip" +noteFavoritesCount: "Nombre de notes dans les favoris" +pageLikesCount: "Nombre de pages aimées" +pageLikedCount: "Nombre de vos pages aimées" +reversiCount: "Nombre de parties de Reversi" +contact: "Contact" +useSystemFont: "Utiliser la police par défaut du système" +clips: "Clips" experimentalFeatures: "Fonctionnalités expérimentales" developer: "Développeur" makeExplorable: "Rendre le compte visible sur la page \"Découvrir\"." makeExplorableDescription: "Si vous désactivez cette option, votre compte n'apparaîtra pas sur la page \"Découvrir\"." showGapBetweenNotesInTimeline: "Afficher un écart entre les notes sur la Timeline" +duplicate: "Duliquer" left: "Gauche" center: "Centrer" wide: "Large" narrow: "Condensé" +reloadToApplySetting: "Vos paramètres seront appliqués lorsque vous rechargerez la page. Souhaitez-vous recharger ?" showTitlebar: "Afficher la barre de titre" clearCache: "Vider le cache" onlineUsersCount: "{n} utilisateur(s) en ligne" @@ -640,18 +679,43 @@ sendErrorReports: "Envoyer les rapports d’erreur" sendErrorReportsDescription: "Lorsqu'il est activé, des informations détaillées sur les erreurs sont partagées avec Misskey lorsqu'un problème survient, ce qui contribue à améliorer la qualité de Misskey." myTheme: "Mes thèmes" backgroundColor: "Arrière-plan" +accentColor: "Accentuation" textColor: "Texte" saveAs: "Enregistrer sous ..." advanced: "Avancé" value: "Valeur" +updatedAt: "Mis à jour le" saveConfirm: "Voulez-vous sauvegarder les modifications?" +deleteConfirm: "Confirmez-vous la suppression?" +invalidValue: "Cette valeur est invalide." +registry: "Registre" closeAccount: "Fermer le compte" +currentVersion: "Version actuelle" +latestVersion: "Dernière version " +youAreRunningUpToDateClient: "Votre client est à jour." +newVersionOfClientAvailable: "Une nouvelle version de votre client est disponible." usageAmount: "Utilisation" capacity: "Capacité " inUse: "utilisé" +editCode: "Modifier le code" +apply: "Appliquer" +receiveAnnouncementFromInstance: "Recevoir les messages d'information de l'instance" +emailNotification: "Notifications par mail" +inChannelSearch: "Chercher dans le canal" +useReactionPickerForContextMenu: "Clic-droit pour ouvrir le panneau de réactions" +typingUsers: "{users} est en train d'écrire" +jumpToSpecifiedDate: "Se rendre à la date" +showingPastTimeline: "Un fil ancien est affiché" +clear: "Effacer" _email: _follow: title: "Vous suit" + _receiveFollowRequest: + title: "Vous avez reçu une demande de suivi" +_plugin: + install: "Installation de plugin" + installWarn: "N’installez que des extensions provenant de sources de confiance." + manage: "Gestion des plugins" _registry: key: "Clé " keys: "Clé " @@ -667,41 +731,108 @@ _aboutMisskey: morePatrons: "Nous apprécions vraiment le soutien de nombreuses autres personnes non mentionnées ici. Merci à toutes et à tous ! 🥰" patrons: "Contributeurs" _nsfw: - respect: "Cacher les médias sensibles" + respect: "Cacher les médias marqués comme contenu sensible" ignore: "Afficher les médias sensibles" force: "Cacher tous les médias" _mfm: + cheatSheet: "Antisèche MFM" + intro: "MFM est un langage Markdown spécifique utilisable ici et là dans Misskey. Vous pouvez vérifier ici les structures utilisables avec MFM." + dummy: "La Fédiverse s'agrandit avec Misskey" mention: "Mentionner" + mentionDescription: "Vous pouvez afficher un utilisateur spécifique en indiquant une arobase suivie d'un nom d'utilisateur" hashtag: "Hashtags" + hashtagDescription: "Vous pouvez afficher un mot-dièse en utilisant un croisillon et du texte" + url: "URL" + urlDescription: "L'adresse web peut être affichée." link: "Lien" + linkDescription: "Une partie précise d'une phrase peut être liée à l'adresse web." bold: "Gras" + boldDescription: "Il est possible de mettre le texte en exergue en le mettant en gras." + small: "Diminuer l'emphase" + smallDescription: "Le contenu peut être affiché en petit et fin." center: "Centrée" + centerDescription: "Le contenu peut être centré" + inlineCode: "Code (inline)" + blockCode: "Bloc de code" + inlineMath: "Formule mathématique (inline)" + blockMath: "Formule mathématique (bloc)" quote: "Citer" quoteDescription: "Affiche le contenu sous forme de citation." emoji: "Émojis personnalisés" search: "Rechercher" flip: "Inverser" + flipDescription: "Rotation verticale ou horizontale du contenu" + x2: "Grand" + x2Description: "Afficher le contenu en grand." + x3: "Très grand" + x3Description: "Afficher le contenu en très grand." + x4: "Plus grand" + x4Description: "Afficher le contenu en plus grand." + blur: "Flou" + blurDescription: "Le contenu peut être flouté ; il sera visible en le survolant avec le curseur." font: "Police de caractères" + fontDescription: "Il est possible de choisir la police." _reversi: + reversi: "Reversi" + gameSettings: "Réglages de la partie" + chooseBoard: "Choix du plateau" + blackOrWhite: "Pions blancs/Pions noirs" + blackIs: "{name} joue les pions noirs" + rules: "Règles" + botSettings: "Options du bot" + thisGameIsStartedSoon: "La partie commencera dans quelques secondes" + waitingForOther: "En attente que l'adversaire soit prêt" + waitingForMe: "En attente que vous soyez prêt" + waitingBoth: "Préparez-vous" + ready: "Prêt" + cancelReady: "Recommencer la préparation" + opponentTurn: "Tour de l’adversaire" + myTurn: "C’est votre tour" + turnOf: "Tour de {name}" + pastTurnOf: "Tour de {name}" + surrender: "Abandonner" + surrendered: "Par abandon" + drawn: "Match nul" + won: "{name} a gagné" + black: "Noirs" + white: "Blancs" total: "Total" + turnCount: "Tour {count}" + myGames: "Mes parties" + allGames: "Toutes les parties" + ended: "Fin de partie" + playing: "En cours" + isLlotheo: "Celui ou celle qui a le moins de pièces gagne (Llotheo)" + canPutEverywhere: "Les pions peuvent être placés partout " +_instanceTicker: + none: "Cacher " + always: "Toujours afficher" _serverDisconnectedBehavior: reload: "Rechargement automatique" + dialog: "Ouvrir une boîte de dialogue pour l'avertissement" quiet: "Afficher un avertissement discret" _channel: create: "Créer un canal" edit: "Éditer le canal" + setBanner: "Sélectionner la bannière" removeBanner: "Supprimer la bannière" featured: "Tendances" - usersCount: "{n} Participants" + owned: "Mes canaux" + following: "Abonné·e" + usersCount: "{n} Participant·e·s" notesCount: "{n} Notes" _sidebar: full: "Complet" icon: "Avatar" hide: "Masquer" _wordMute: - muteWords: "Mot à mettre en sourdine" + muteWords: "Mots à filtrer" muteWordsDescription: "Séparer avec des espaces pour la condition AND. Séparer avec un saut de ligne pour une condition OR." - mutedNotes: "Notes mises en sourdine" + softDescription: "Masquez les notes de votre fil selon les paramètres que vous définissez." + hardDescription: "Empêchez votre fil de charger les notes selon les paramètres que vous définissez. Cette action est irréversible : si vous modifiez ces paramètres plus tard, les notes précédemment filtrées ne seront pas récupérées." + soft: "Doux" + hard: "Strict" + mutedNotes: "Notes filtrées" _theme: explore: "Explorer les thèmes" install: "Installer un thème" @@ -709,6 +840,7 @@ _theme: code: "Code du thème" installed: "{name} a été installé" installedThemes: "Thèmes installés" + builtinThemes: "Thèmes intégrés" alreadyInstalled: "Ce thème est déjà installé" invalid: "Le format du thème n'est pas valide" make: "Créer un thème" @@ -717,12 +849,16 @@ _theme: constant: "Constante" defaultValue: "Valeur par défaut" color: "Couleur" + refConst: "Référencez une constante" key: "Clé " func: "Fonction" + funcKind: "Type de fonction" argument: "Argument" alpha: "Transparence" darken: "Assombrir" + inputConstantName: "Insérez un nom de constante" importInfo: "Vous pouvez importer un thème vers l’éditeur de thèmes en saisissant son code ici." + deleteConstantConfirm: "Êtes-vous sûr·e de vouloir supprimer la constante {const} ?" keys: bg: "Arrière-plan" fg: "Texte" @@ -733,16 +869,31 @@ _theme: header: "Entête" navBg: "Fond de la barre latérale" navFg: "Texte de la barre latérale" + navHoverFg: "Texte de la barre latérale (survolé)" + navActive: "Texte de la barre latérale (actif)" + navIndicator: "Indicateur de barre latérale" link: "Lien" hashtag: "Hashtags" mention: "Mentionner" mentionMe: "Mentions (Moi)" - renote: "Renote" + renote: "Partager" divider: "Séparateur" + scrollbarHandle: "Poignée de la barre de navigation" + scrollbarHandleHover: "Poignée de la barre de navigation (survolée)" + infoFg: "Texte d'information" + infoWarnBg: "Arrière-plan des avertissements" infoWarnFg: "Texte d’avertissement" cwBg: "Arrière-plan du CW" + cwFg: "Texte du bouton CW" + cwHoverBg: "Arrière-plan du bouton CW (survolé)" + buttonBg: "Arrière-plan du bouton" + buttonHoverBg: "Arrière-plan du bouton (survolé)" + inputBorder: "Cadre de la zone de texte" + listItemHoverBg: "Arrière-plan d'item de liste (survolé)" + driveFolderBg: "Arrière-plan du dossier de disque" badge: "Badge" messageBg: "Arrière plan de la discussion" + fgHighlighted: "Texte mis en évidence" _sfx: note: "Nouvelle note" noteMy: "Ma note" @@ -750,6 +901,7 @@ _sfx: chat: "Discuter" chatBg: "Discuter (De fond)" antenna: "Réception de l’antenne" + channel: "Notifications de canal" _ago: unknown: "Inconnu" future: "Futur" @@ -811,8 +963,8 @@ _permissions: "write:following": "Abonnements/Se désabonner" "read:messaging": "Cherche à discuter" "write:messaging": "Contrôler le discuter" - "read:mutes": "Voir les comptes muets" - "write:mutes": "Gérer les comptes muets" + "read:mutes": "Voir les comptes masqués" + "write:mutes": "Gérer les comptes masqués" "write:notes": "Créer / supprimer des notes" "read:notifications": "Afficher les notifications" "write:notifications": "Gérer vos notifications" @@ -826,7 +978,7 @@ _permissions: "read:user-groups": "Voir les groupes d'utilisateur·rice·s" "write:user-groups": "Éditer les groupes des utilisateur·rice·s" "read:channels": "Lire les canaux" - "write:channels": "Modifier les canaux" + "write:channels": "Gérer les canaux" _auth: shareAccess: "Autoriser \"{name}\" à accéder à votre compte ?" shareAccessAsk: "Voulez-vous vraiment autoriser cette application à accéder à votre compte?" @@ -861,8 +1013,12 @@ _widgets: digitalClock: "Horloge numérique" federation: "Fédération" postForm: "Formulaire à publier" + slideshow: "Diaporama" button: "Bouton" + onlineUsers: "Utilisateurs en ligne" jobQueue: "File d’attente" + serverMetric: "Statistiques du serveur" + aiscript: "Console AiScript" _cw: hide: "Masquer" show: "Afficher plus …" @@ -917,12 +1073,17 @@ _profile: username: "Nom d’utilisateur·rice" description: "À propos de moi" youCanIncludeHashtags: "Vous pouvez également inclure des hashtags." + metadata: "Informations supplémentaires" + metadataEdit: "Éditer les informations supplémentaires" + metadataDescription: "Vous pouvez afficher jusqu'à quatre informations supplémentaires dans votre profil." metadataLabel: "Étiquette" metadataContent: "Contenu" + changeAvatar: "Changer l'image de profil" + changeBanner: "Changer de bannière" _exportOrImport: allNotes: "Toutes les notes" followingList: "Abonnements" - muteList: "Mettre en sourdine" + muteList: "Liste des comptes maqués" blockingList: "Bloquer" userLists: "Listes" _charts: @@ -964,7 +1125,7 @@ _rooms: exit: "Retour" remove: "Enlever" clear: "Tout enlever" - clearConfirm: "Désirez-vous enlever tout les meubles de votre chambre ?" + clearConfirm: "Souhaitez-vous enlever tous les meubles de votre chambre ?" leaveConfirm: "Vous avez des modifications non-sauvegardées. Voulez-vous vraiment quitter ?" chooseImage: "Sélectionnez une image" roomType: "Type de chambre" @@ -1025,6 +1186,7 @@ _pages: created: "La page a été créée !" updated: "La page a été mise à jour !" deleted: "La page a bien été supprimée" + pageSetting: "Paramètres de la Page" nameAlreadyExists: "La URL de page spécifiée existe déjà" invalidNameTitle: "La URL de la page spécifiée n’est pas valide" invalidNameText: "Assurez-vous qu’il n’est pas vide" @@ -1035,6 +1197,7 @@ _pages: unlike: "Je n’aime pas" my: "Mes pages" liked: "Pages favorites" + featured: "Populaire" inspector: "Inspecteur" contents: "Contenu" content: "Bloc de page" @@ -1090,6 +1253,9 @@ _pages: id: "Toile ID" width: "Largeur" height: "Hauteur" + _note: + id: "Identifiant de la note" + detailed: "Afficher les détails" switch: "Basculer" _switch: name: "Nom de la variable" @@ -1322,19 +1488,28 @@ _notification: follow: "Abonnements" mention: "Mentionner" reply: "Réponses" - renote: "Renote" + renote: "Partager" quote: "Citer" reaction: "Réactions" + receiveFollowRequest: "Demande d'abonnement reçue" + followRequestAccepted: "Demande d'abonnement acceptée" groupInvited: "Invité aux groupes" app: "Notifications provenant des apps" _deck: alwaysShowMainColumn: "Toujours afficher la colonne principale" columnAlign: "Aligner les colonnes" + columnMargin: "Marge entre les colonnes" + columnHeaderHeight: "Taille de l'en-tête de colonne" addColumn: "Ajouter une colonne" swapLeft: "Déplacer à gauche" swapRight: "Déplacer à droite" + swapUp: "Déplacer vers le haut" + swapDown: "Déplacer vers le bas" stackLeft: "Empiler à gauche" + popRight: "Vers la droite" + profile: "Profil" _columns: + main: "Principale" widgets: "Widgets" notifications: "Notifications" tl: "Fil" diff --git a/locales/it-IT.yml b/locales/it-IT.yml index 04f348e10c..4e2e4a5353 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -1,36 +1,43 @@ --- _lang_: "Italiano" +headlineMisskey: "Rete collegata tramite note" monthAndDay: "{day}/{month}" search: "Cerca" notifications: "Notifiche" username: "Nome utente" password: "Password" +fetchingAsApObject: "Recuperando dal Fediverso..." ok: "OK" +gotIt: "Capito!" cancel: "Annulla" enterUsername: "Inserisci un nome utente" -renotedBy: "Rinotta da {user}" -noNotes: "Nessuna note" +renotedBy: "Condiviso da {user}" +noNotes: "Nessuna nota!" noNotifications: "Nessuna notifica" instance: "Istanza" settings: "Impostazioni" basicSettings: "Impostazioni generali" otherSettings: "Altre impostazioni" +openInWindow: "Apri in una finestra" profile: "Profilo" timeline: "Timeline" login: "Accedi" -logout: "Logout" +loggingIn: "Accesso in corso..." +logout: "Esci" signup: "Iscriviti" uploading: "Caricamento..." save: "Salva" users: "Utente" -favorite: "Segnalibri" -favorites: "Segnalibri" -unfavorite: "Rimuovi Nota dai segnalibri" -favorited: "Nota salvato nei segnalibri." -alreadyFavorited: "Tweet salvato nei segnalibri." +addUser: "Aggiungi utente" +favorite: "Preferiti" +favorites: "Preferiti" +unfavorite: "Rimuovi nota dai preferiti" +favorited: "Aggiunta ai preferiti." +alreadyFavorited: "Già tra i preferiti." +cantFavorite: "Impossibile aggiungere ai Preferiti." pin: "Fissa sul profilo" -unpin: "Non fissare più sul profilo" -copyContent: "Copia il contenuto del Nota" +unpin: "Non fissare sul profilo" +copyContent: "Copia il contenuto" copyLink: "Copia link" delete: "Elimina" deleteAndEdit: "Elimina & Modifica" @@ -39,13 +46,13 @@ sendMessage: "Invia messaggio" copyUsername: "Copia nome utente" searchUser: "Cerca Utente" reply: "Rispondi" -loadMore: "Mostra altre" -showMore: "Mostra altre" -youGotNewFollower: "Nuovo seguace" +loadMore: "Mostra di più" +showMore: "Mostra di più" +youGotNewFollower: "Ha iniziato a seguirti" receiveFollowRequest: "Nuova richiesta di essere seguito" mention: "Menzioni" mentions: "Menzioni" -directNotes: "Note diretti" +directNotes: "Note dirette" importAndExport: "Importa ed Esporta" import: "Importa" export: "Esporta" @@ -54,7 +61,7 @@ download: "Scarica" lists: "Liste" noLists: "Qui non c'è ancora niente" note: "Nota" -notes: "Nota" +notes: "Note" following: "Seiguiti" followers: "Seguaci" followsYou: "Ti segue" @@ -70,9 +77,12 @@ followRequest: "Richiesta di seguire" followRequests: "Richiesta di seguire" unfollow: "Smetti di seguire" followRequestPending: "In sospeso" -renote: "Rinotta" -unrenote: "Annulla rinotta" -quote: "Cita Nota" +enterEmoji: "Inserisci emoji" +renote: "Rinota" +unrenote: "Annulla rinota" +renoted: "Condiviso!" +cantReRenote: "È impossibile rinota una condivisione." +quote: "Cita" pinned: "Fissa sul profilo" you: "Tu" clickToShow: "Clicca per visualizzare" @@ -96,6 +106,7 @@ addAcount: "Aggiungi un account esistente" general: "Generali" wallpaper: "Sfondo" setWallpaper: "Imposta sfondo" +removeWallpaper: "Elimina lo sfondo" searchWith: "Cerca: {q}" annotation: "Descrizione" federation: "Federazione" @@ -107,9 +118,13 @@ perDay: "al giorno" software: "Software" version: "Versione" metadata: "Metadato" +cpuAndMemory: "CPU e Memoria" network: "Rete" disk: "Disco" +instanceInfo: "Informazioni di istanza" statistics: "Statistiche" +clearQueue: "Cancella coda" +clearQueueConfirmTitle: "Cancella coda?" blockedInstances: "Istanza bloccati" muteAndBlock: "Silenziamento e blocco" mutedUsers: "Account silenziati" @@ -193,6 +208,7 @@ recaptcha: "reCAPTCHA" enableRecaptcha: "Abilita reCAPTCHA" name: "Nome" serviceworker: "ServiceWorker" +notesAndReplies: "Note e risposte" exploreFediverse: "Esplora Fediverse" popularTags: "Tag di tendenza" userList: "Liste" @@ -205,7 +221,7 @@ moderator: "Moderatore" lastUsed: "Ultima attività" unregister: "Disattiva account" resetPassword: "Reimposta password" -share: "Condividi" +share: "Renota" cacheClear: "Svuota cache" help: "Guida" close: "Chiudi" @@ -216,6 +232,7 @@ invites: "Invita" transfer: "Trasferisci" title: "Titolo" next: "Avanti" +noteOf: "Note di {user}" invitations: "Invita" invitationCode: "Codice di invito" available: "Consigliati" @@ -232,16 +249,22 @@ local: "Locale" remote: "Remoto" accountSettings: "Impostazioni Account" promote: "Pubblicizza" +objectStorageBaseUrl: "Base URL" objectStorageBucket: "Bucket" objectStorageEndpoint: "Endpoint" objectStorageRegion: "Region" +objectStorageUseSSL: "Usare SSL" serverLogs: "Log del server" deleteAll: "Cancella cronologia" +sounds: "Effetti sonori" +listen: "Ascolta" +none: "Niente" volume: "Volume" details: "Dettagli" install: "Installa" uninstall: "Disinstalla" installedDate: "Data installazione" +state: "Stato" sort: "Ordina per" visibility: "Privacy dei post" poll: "Sondaggio" @@ -268,8 +291,11 @@ other: "Avanzate" abuseReports: "Segnala" reportAbuse: "Segnala" reportAbuseOf: "Segnala {name}" +send: "Inviare" +openInNewTab: "Apri in una nuova scheda" random: "Casuale" system: "Sistema" +desktop: "Desktop" optional: "Opzionale" public: "Pubblico" yes: "Sì" @@ -280,7 +306,7 @@ duplicate: "Duplica" left: "Sinistra" center: "Centro" wide: "Largo" -nNotes: "{n}Nota" +nNotes: "{n}Note" backgroundColor: "Sfondo" value: "Valore" saveConfirm: "Vuoi salvare le modifiche?" @@ -293,7 +319,7 @@ editCode: "Modifica codice" apply: "Applica" _email: _follow: - title: "Nuovo seguace" + title: "Ha iniziato a seguirti" _registry: key: "Dati" keys: "Dati" @@ -331,7 +357,7 @@ _theme: bg: "Sfondo" shadow: "Ombra" mention: "Menzioni" - renote: "Rinotta" + renote: "Rinota" divider: "Interruzione di linea" _sfx: note: "Nota" @@ -359,8 +385,8 @@ _tutorial: _permissions: "read:blocks": "Visualizza gli account che hai bloccato." "write:blocks": "Gestisci gli account che hai bloccato." - "read:favorites": "Visualizza Segnalibri" - "write:favorites": "Gestisci Segnalibri" + "read:favorites": "Visualizza Preferiti" + "write:favorites": "Gestisci Preferiti" "write:following": "Seguiti/ Smetti di seguire" "read:notifications": "Visualizza notifiche" _weekday: @@ -385,7 +411,7 @@ _widgets: federation: "Federazione" _cw: hide: "Nascondere" - show: "Mostra altre" + show: "Mostra di più" _poll: noMore: "Hai aggiunto il numero massimo di opzioni." canMultipleVote: "Risposte multiple" @@ -512,7 +538,7 @@ _pages: _eq: arg1: "A" arg2: "B" - notEq: "A non è uguale a B" + notEq: "A e B sono differenti" _notEq: arg1: "A" arg2: "B" @@ -555,16 +581,16 @@ _pages: array: "Liste" _notification: youGotQuote: "{name} ha citato il tuo Nota e ha detto" - youRenoted: "{name} ha rinotta" + youRenoted: "{name} ha rinota" youGotPoll: "{name} ha volluto." - youWereFollowed: "Nuovo seguace" + youWereFollowed: "Ha iniziato a seguirti" _types: all: "Tutto" follow: "Seiguiti" mention: "Menzioni" reply: "Rispondi" - renote: "Rinotta" - quote: "Cita il nota" + renote: "Rinota" + quote: "Cita" reaction: "Reazione" _deck: _columns: diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index dbab33fd90..fa151093f4 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -322,7 +322,7 @@ proxyRemoteFilesDescription: "この設定を有効にすると、未保存ま driveCapacityPerLocalAccount: "ローカルユーザーひとりあたりのドライブ容量" driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのドライブ容量" inMb: "メガバイト単位" -iconUrl: "アイコン画像のURL" +iconUrl: "アイコン画像のURL (faviconなど)" bannerUrl: "バナー画像のURL" basicInfo: "基本情報" pinnedUsers: "ピン留めユーザー" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 0e6fd71c38..d1a69ea481 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -690,6 +690,9 @@ deleteConfirm: "삭제하시겠습니까?" invalidValue: "올바른 값이 아닙니다." registry: "레지스트리" closeAccount: "계정 폐쇄" +currentVersion: "현재 버전" +latestVersion: "최신 버전" +newVersionOfClientAvailable: "새로운 버전의 클라이언트를 이용할 수 있습니다." usageAmount: "사용량" capacity: "용량" inUse: "사용중" diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 4f8cc6d85c..eb392a27bb 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -623,7 +623,7 @@ random: "Случайные" system: "Система" switchUi: "Выбор вида" desktop: "Стол" -clip: "Памятки" +clip: "В памятку" createNew: "Новый документ" optional: "Необязательно" createNewClip: "Новая памятка" @@ -705,6 +705,11 @@ apply: "Применить" receiveAnnouncementFromInstance: "Получать оповещения с инстанса" emailNotification: "Уведомления по электронной почте" inChannelSearch: "Поиск по каналу" +useReactionPickerForContextMenu: "Открывать палитру реакций правой кнопкой" +typingUsers: "Стук клавиш. Это {users}…" +jumpToSpecifiedDate: "Перейти к заданной дате" +showingPastTimeline: "Отображается старая лента" +clear: "Очистить" _email: _follow: title: "Новый подписчик" diff --git a/migration/1615965918224-chart-v2.ts b/migration/1615965918224-chart-v2.ts new file mode 100644 index 0000000000..cacbd1945b --- /dev/null +++ b/migration/1615965918224-chart-v2.ts @@ -0,0 +1,218 @@ +import {MigrationInterface, QueryRunner} from "typeorm"; + +export class chartV21615965918224 implements MigrationInterface { + name = 'chartV21615965918224' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DELETE FROM "__chart__active_users" WHERE "span" = 'day'`); + await queryRunner.query(`DELETE FROM "__chart__drive" WHERE "span" = 'day'`); + await queryRunner.query(`DELETE FROM "__chart__federation" WHERE "span" = 'day'`); + await queryRunner.query(`DELETE FROM "__chart__hashtag" WHERE "span" = 'day'`); + await queryRunner.query(`DELETE FROM "__chart__instance" WHERE "span" = 'day'`); + await queryRunner.query(`DELETE FROM "__chart__network" WHERE "span" = 'day'`); + await queryRunner.query(`DELETE FROM "__chart__notes" WHERE "span" = 'day'`); + await queryRunner.query(`DELETE FROM "__chart__per_user_drive" WHERE "span" = 'day'`); + await queryRunner.query(`DELETE FROM "__chart__per_user_following" WHERE "span" = 'day'`); + await queryRunner.query(`DELETE FROM "__chart__per_user_notes" WHERE "span" = 'day'`); + await queryRunner.query(`DELETE FROM "__chart__per_user_reaction" WHERE "span" = 'day'`); + await queryRunner.query(`DELETE FROM "__chart__test" WHERE "span" = 'day'`); + await queryRunner.query(`DELETE FROM "__chart__test_grouped" WHERE "span" = 'day'`); + await queryRunner.query(`DELETE FROM "__chart__test_unique" WHERE "span" = 'day'`); + await queryRunner.query(`DELETE FROM "__chart__users" WHERE "span" = 'day'`); + + await queryRunner.query(`DROP INDEX "IDX_15e91a03aeeac9dbccdf43fc06"`); + await queryRunner.query(`DROP INDEX "IDX_20f57cc8f142c131340ee16742"`); + await queryRunner.query(`DROP INDEX "IDX_c26e2c1cbb6e911e0554b27416"`); + await queryRunner.query(`DROP INDEX "IDX_3fa0d0f17ca72e3dc80999a032"`); + await queryRunner.query(`DROP INDEX "IDX_6e1df243476e20cbf86572ecc0"`); + await queryRunner.query(`DROP INDEX "IDX_06690fc959f1c9fdaf21928222"`); + await queryRunner.query(`DROP INDEX "IDX_e447064455928cf627590ef527"`); + await queryRunner.query(`DROP INDEX "IDX_2d416e6af791a82e338c79d480"`); + await queryRunner.query(`DROP INDEX "IDX_e9cd07672b37d8966cf3709283"`); + await queryRunner.query(`DROP INDEX "IDX_fcc181fb8283009c61cc4083ef"`); + await queryRunner.query(`DROP INDEX "IDX_49975586f50ed7b800fdd88fbd"`); + await queryRunner.query(`DROP INDEX "IDX_6d6f156ceefc6bc5f273a0e370"`); + await queryRunner.query(`DROP INDEX "IDX_c12f0af4a66cdd30c2287ce8aa"`); + await queryRunner.query(`DROP INDEX "IDX_d0a4f79af5a97b08f37b547197"`); + await queryRunner.query(`DROP INDEX "IDX_f5448d9633cff74208d850aabe"`); + await queryRunner.query(`DROP INDEX "IDX_f8dd01baeded2ffa833e0a610a"`); + await queryRunner.query(`DROP INDEX "IDX_08fac0eb3b11f04c200c0b40dd"`); + await queryRunner.query(`DROP INDEX "IDX_9ff6944f01acb756fdc92d7563"`); + await queryRunner.query(`DROP INDEX "IDX_e69096589f11e3baa98ddd64d0"`); + await queryRunner.query(`DROP INDEX "IDX_0c9a159c5082cbeef3ca6706b5"`); + await queryRunner.query(`DROP INDEX "IDX_924fc196c80ca24bae01dd37e4"`); + await queryRunner.query(`DROP INDEX "IDX_328f259961e60c4fa0bfcf55ca"`); + await queryRunner.query(`DROP INDEX "IDX_42ea9381f0fda8dfe0fa1c8b53"`); + await queryRunner.query(`DROP INDEX "IDX_f2aeafde2ae6fbad38e857631b"`); + await queryRunner.query(`DROP INDEX "IDX_f92dd6d03f8d994f29987f6214"`); + await queryRunner.query(`DROP INDEX "IDX_57b5458d0d3d6d1e7f13d4e57f"`); + await queryRunner.query(`DROP INDEX "IDX_4db3b84c7be0d3464714f3e0b1"`); + await queryRunner.query(`DROP INDEX "IDX_8d2cbbc8114d90d19b44d626b6"`); + await queryRunner.query(`DROP INDEX "IDX_046feeb12e9ef5f783f409866a"`); + await queryRunner.query(`DROP INDEX "IDX_f68a5ab958f9f5fa17a32ac23b"`); + await queryRunner.query(`DROP INDEX "IDX_65633a106bce43fc7c5c30a5c7"`); + await queryRunner.query(`DROP INDEX "IDX_edeb73c09c3143a81bcb34d569"`); + await queryRunner.query(`DROP INDEX "IDX_e316f01a6d24eb31db27f88262"`); + await queryRunner.query(`DROP INDEX "IDX_2be7ec6cebddc14dc11e206686"`); + await queryRunner.query(`DROP INDEX "IDX_a5133470f4825902e170328ca5"`); + await queryRunner.query(`DROP INDEX "IDX_84e661abb7bd1e51b690d4b017"`); + await queryRunner.query(`DROP INDEX "IDX_5c73bf61da4f6e6f15bae88ed1"`); + await queryRunner.query(`DROP INDEX "IDX_d70c86baedc68326be11f9c0ce"`); + await queryRunner.query(`DROP INDEX "IDX_66e1e1ecd2f29e57778af35b59"`); + await queryRunner.query(`DROP INDEX "IDX_92255988735563f0fe4aba1f05"`); + await queryRunner.query(`DROP INDEX "IDX_c5870993e25c3d5771f91f5003"`); + await queryRunner.query(`DROP INDEX "IDX_f170de677ea75ad4533de2723e"`); + await queryRunner.query(`DROP INDEX "IDX_7c184198ecf66a8d3ecb253ab3"`); + await queryRunner.query(`DROP INDEX "IDX_f091abb24193d50c653c6b77fc"`); + await queryRunner.query(`DROP INDEX "IDX_a770a57c70e668cc61590c9161"`); + await queryRunner.query(`ALTER TABLE "__chart__active_users" DROP COLUMN "span"`); + await queryRunner.query(`DROP TYPE "public"."__chart__active_users_span_enum"`); + await queryRunner.query(`ALTER TABLE "__chart__active_users" DROP COLUMN "unique"`); + await queryRunner.query(`ALTER TABLE "__chart__active_users" DROP COLUMN "___local_count"`); + await queryRunner.query(`ALTER TABLE "__chart__active_users" DROP COLUMN "___remote_count"`); + await queryRunner.query(`ALTER TABLE "__chart__drive" DROP COLUMN "span"`); + await queryRunner.query(`DROP TYPE "public"."__chart__drive_span_enum"`); + await queryRunner.query(`ALTER TABLE "__chart__drive" DROP COLUMN "unique"`); + await queryRunner.query(`ALTER TABLE "__chart__federation" DROP COLUMN "span"`); + await queryRunner.query(`DROP TYPE "public"."__chart__federation_span_enum"`); + await queryRunner.query(`ALTER TABLE "__chart__federation" DROP COLUMN "unique"`); + await queryRunner.query(`ALTER TABLE "__chart__hashtag" DROP COLUMN "span"`); + await queryRunner.query(`DROP TYPE "public"."__chart__hashtag_span_enum"`); + await queryRunner.query(`ALTER TABLE "__chart__hashtag" DROP COLUMN "unique"`); + await queryRunner.query(`ALTER TABLE "__chart__hashtag" DROP COLUMN "___local_count"`); + await queryRunner.query(`ALTER TABLE "__chart__hashtag" DROP COLUMN "___remote_count"`); + await queryRunner.query(`ALTER TABLE "__chart__instance" DROP COLUMN "span"`); + await queryRunner.query(`DROP TYPE "public"."__chart__instance_span_enum"`); + await queryRunner.query(`ALTER TABLE "__chart__instance" DROP COLUMN "unique"`); + await queryRunner.query(`ALTER TABLE "__chart__network" DROP COLUMN "span"`); + await queryRunner.query(`DROP TYPE "public"."__chart__network_span_enum"`); + await queryRunner.query(`ALTER TABLE "__chart__network" DROP COLUMN "unique"`); + await queryRunner.query(`ALTER TABLE "__chart__notes" DROP COLUMN "span"`); + await queryRunner.query(`DROP TYPE "public"."__chart__notes_span_enum"`); + await queryRunner.query(`ALTER TABLE "__chart__notes" DROP COLUMN "unique"`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_drive" DROP COLUMN "span"`); + await queryRunner.query(`DROP TYPE "public"."__chart__per_user_drive_span_enum"`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_drive" DROP COLUMN "unique"`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_following" DROP COLUMN "span"`); + await queryRunner.query(`DROP TYPE "public"."__chart__per_user_following_span_enum"`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_following" DROP COLUMN "unique"`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_notes" DROP COLUMN "span"`); + await queryRunner.query(`DROP TYPE "public"."__chart__per_user_notes_span_enum"`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_notes" DROP COLUMN "unique"`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_reaction" DROP COLUMN "span"`); + await queryRunner.query(`DROP TYPE "public"."__chart__per_user_reaction_span_enum"`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_reaction" DROP COLUMN "unique"`); + await queryRunner.query(`ALTER TABLE "__chart__test_grouped" DROP COLUMN "span"`); + await queryRunner.query(`DROP TYPE "public"."__chart__test_grouped_span_enum"`); + await queryRunner.query(`ALTER TABLE "__chart__test_grouped" DROP COLUMN "unique"`); + await queryRunner.query(`ALTER TABLE "__chart__test_unique" DROP COLUMN "span"`); + await queryRunner.query(`DROP TYPE "public"."__chart__test_unique_span_enum"`); + await queryRunner.query(`ALTER TABLE "__chart__test_unique" DROP COLUMN "unique"`); + await queryRunner.query(`ALTER TABLE "__chart__test_unique" DROP COLUMN "___foo"`); + await queryRunner.query(`ALTER TABLE "__chart__test" DROP COLUMN "span"`); + await queryRunner.query(`DROP TYPE "public"."__chart__test_span_enum"`); + await queryRunner.query(`ALTER TABLE "__chart__test" DROP COLUMN "unique"`); + await queryRunner.query(`ALTER TABLE "__chart__users" DROP COLUMN "span"`); + await queryRunner.query(`DROP TYPE "public"."__chart__users_span_enum"`); + await queryRunner.query(`ALTER TABLE "__chart__users" DROP COLUMN "unique"`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "__chart__users" ADD "unique" jsonb NOT NULL DEFAULT '{}'`); + await queryRunner.query(`CREATE TYPE "public"."__chart__users_span_enum" AS ENUM('hour', 'day')`); + await queryRunner.query(`ALTER TABLE "__chart__users" ADD "span" "__chart__users_span_enum" NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__test" ADD "unique" jsonb NOT NULL DEFAULT '{}'`); + await queryRunner.query(`CREATE TYPE "public"."__chart__test_span_enum" AS ENUM('hour', 'day')`); + await queryRunner.query(`ALTER TABLE "__chart__test" ADD "span" "__chart__test_span_enum" NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__test_unique" ADD "___foo" bigint NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__test_unique" ADD "unique" jsonb NOT NULL DEFAULT '{}'`); + await queryRunner.query(`CREATE TYPE "public"."__chart__test_unique_span_enum" AS ENUM('hour', 'day')`); + await queryRunner.query(`ALTER TABLE "__chart__test_unique" ADD "span" "__chart__test_unique_span_enum" NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__test_grouped" ADD "unique" jsonb NOT NULL DEFAULT '{}'`); + await queryRunner.query(`CREATE TYPE "public"."__chart__test_grouped_span_enum" AS ENUM('hour', 'day')`); + await queryRunner.query(`ALTER TABLE "__chart__test_grouped" ADD "span" "__chart__test_grouped_span_enum" NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_reaction" ADD "unique" jsonb NOT NULL DEFAULT '{}'`); + await queryRunner.query(`CREATE TYPE "public"."__chart__per_user_reaction_span_enum" AS ENUM('hour', 'day')`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_reaction" ADD "span" "__chart__per_user_reaction_span_enum" NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_notes" ADD "unique" jsonb NOT NULL DEFAULT '{}'`); + await queryRunner.query(`CREATE TYPE "public"."__chart__per_user_notes_span_enum" AS ENUM('hour', 'day')`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_notes" ADD "span" "__chart__per_user_notes_span_enum" NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_following" ADD "unique" jsonb NOT NULL DEFAULT '{}'`); + await queryRunner.query(`CREATE TYPE "public"."__chart__per_user_following_span_enum" AS ENUM('hour', 'day')`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_following" ADD "span" "__chart__per_user_following_span_enum" NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_drive" ADD "unique" jsonb NOT NULL DEFAULT '{}'`); + await queryRunner.query(`CREATE TYPE "public"."__chart__per_user_drive_span_enum" AS ENUM('hour', 'day')`); + await queryRunner.query(`ALTER TABLE "__chart__per_user_drive" ADD "span" "__chart__per_user_drive_span_enum" NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__notes" ADD "unique" jsonb NOT NULL DEFAULT '{}'`); + await queryRunner.query(`CREATE TYPE "public"."__chart__notes_span_enum" AS ENUM('hour', 'day')`); + await queryRunner.query(`ALTER TABLE "__chart__notes" ADD "span" "__chart__notes_span_enum" NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__network" ADD "unique" jsonb NOT NULL DEFAULT '{}'`); + await queryRunner.query(`CREATE TYPE "public"."__chart__network_span_enum" AS ENUM('hour', 'day')`); + await queryRunner.query(`ALTER TABLE "__chart__network" ADD "span" "__chart__network_span_enum" NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__instance" ADD "unique" jsonb NOT NULL DEFAULT '{}'`); + await queryRunner.query(`CREATE TYPE "public"."__chart__instance_span_enum" AS ENUM('hour', 'day')`); + await queryRunner.query(`ALTER TABLE "__chart__instance" ADD "span" "__chart__instance_span_enum" NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__hashtag" ADD "___remote_count" bigint NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__hashtag" ADD "___local_count" bigint NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__hashtag" ADD "unique" jsonb NOT NULL DEFAULT '{}'`); + await queryRunner.query(`CREATE TYPE "public"."__chart__hashtag_span_enum" AS ENUM('hour', 'day')`); + await queryRunner.query(`ALTER TABLE "__chart__hashtag" ADD "span" "__chart__hashtag_span_enum" NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__federation" ADD "unique" jsonb NOT NULL DEFAULT '{}'`); + await queryRunner.query(`CREATE TYPE "public"."__chart__federation_span_enum" AS ENUM('hour', 'day')`); + await queryRunner.query(`ALTER TABLE "__chart__federation" ADD "span" "__chart__federation_span_enum" NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__drive" ADD "unique" jsonb NOT NULL DEFAULT '{}'`); + await queryRunner.query(`CREATE TYPE "public"."__chart__drive_span_enum" AS ENUM('hour', 'day')`); + await queryRunner.query(`ALTER TABLE "__chart__drive" ADD "span" "__chart__drive_span_enum" NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__active_users" ADD "___remote_count" bigint NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__active_users" ADD "___local_count" bigint NOT NULL`); + await queryRunner.query(`ALTER TABLE "__chart__active_users" ADD "unique" jsonb NOT NULL DEFAULT '{}'`); + await queryRunner.query(`CREATE TYPE "public"."__chart__active_users_span_enum" AS ENUM('hour', 'day')`); + await queryRunner.query(`ALTER TABLE "__chart__active_users" ADD "span" "__chart__active_users_span_enum" NOT NULL`); + await queryRunner.query(`CREATE INDEX "IDX_a770a57c70e668cc61590c9161" ON "__chart__users" ("date", "group", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_f091abb24193d50c653c6b77fc" ON "__chart__users" ("date", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_7c184198ecf66a8d3ecb253ab3" ON "__chart__users" ("span") `); + await queryRunner.query(`CREATE INDEX "IDX_f170de677ea75ad4533de2723e" ON "__chart__test" ("date", "group", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_c5870993e25c3d5771f91f5003" ON "__chart__test" ("date", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_92255988735563f0fe4aba1f05" ON "__chart__test" ("span") `); + await queryRunner.query(`CREATE INDEX "IDX_66e1e1ecd2f29e57778af35b59" ON "__chart__test_unique" ("date", "group", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_d70c86baedc68326be11f9c0ce" ON "__chart__test_unique" ("date", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_5c73bf61da4f6e6f15bae88ed1" ON "__chart__test_unique" ("span") `); + await queryRunner.query(`CREATE INDEX "IDX_84e661abb7bd1e51b690d4b017" ON "__chart__test_grouped" ("date", "group", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_a5133470f4825902e170328ca5" ON "__chart__test_grouped" ("date", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_2be7ec6cebddc14dc11e206686" ON "__chart__test_grouped" ("span") `); + await queryRunner.query(`CREATE INDEX "IDX_e316f01a6d24eb31db27f88262" ON "__chart__per_user_reaction" ("date", "group", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_edeb73c09c3143a81bcb34d569" ON "__chart__per_user_reaction" ("date", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_65633a106bce43fc7c5c30a5c7" ON "__chart__per_user_reaction" ("span") `); + await queryRunner.query(`CREATE INDEX "IDX_f68a5ab958f9f5fa17a32ac23b" ON "__chart__per_user_notes" ("date", "group", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_046feeb12e9ef5f783f409866a" ON "__chart__per_user_notes" ("date", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_8d2cbbc8114d90d19b44d626b6" ON "__chart__per_user_notes" ("span") `); + await queryRunner.query(`CREATE INDEX "IDX_4db3b84c7be0d3464714f3e0b1" ON "__chart__per_user_following" ("date", "group", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_57b5458d0d3d6d1e7f13d4e57f" ON "__chart__per_user_following" ("date", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_f92dd6d03f8d994f29987f6214" ON "__chart__per_user_following" ("span") `); + await queryRunner.query(`CREATE INDEX "IDX_f2aeafde2ae6fbad38e857631b" ON "__chart__per_user_drive" ("date", "group", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_42ea9381f0fda8dfe0fa1c8b53" ON "__chart__per_user_drive" ("date", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_328f259961e60c4fa0bfcf55ca" ON "__chart__per_user_drive" ("span") `); + await queryRunner.query(`CREATE INDEX "IDX_924fc196c80ca24bae01dd37e4" ON "__chart__notes" ("date", "group", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_0c9a159c5082cbeef3ca6706b5" ON "__chart__notes" ("date", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_e69096589f11e3baa98ddd64d0" ON "__chart__notes" ("span") `); + await queryRunner.query(`CREATE INDEX "IDX_9ff6944f01acb756fdc92d7563" ON "__chart__network" ("date", "group", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_08fac0eb3b11f04c200c0b40dd" ON "__chart__network" ("date", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_f8dd01baeded2ffa833e0a610a" ON "__chart__network" ("span") `); + await queryRunner.query(`CREATE INDEX "IDX_f5448d9633cff74208d850aabe" ON "__chart__instance" ("date", "group", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_d0a4f79af5a97b08f37b547197" ON "__chart__instance" ("date", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_c12f0af4a66cdd30c2287ce8aa" ON "__chart__instance" ("span") `); + await queryRunner.query(`CREATE INDEX "IDX_6d6f156ceefc6bc5f273a0e370" ON "__chart__hashtag" ("date", "group", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_49975586f50ed7b800fdd88fbd" ON "__chart__hashtag" ("date", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_fcc181fb8283009c61cc4083ef" ON "__chart__hashtag" ("span") `); + await queryRunner.query(`CREATE INDEX "IDX_e9cd07672b37d8966cf3709283" ON "__chart__federation" ("date", "group", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_2d416e6af791a82e338c79d480" ON "__chart__federation" ("date", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_e447064455928cf627590ef527" ON "__chart__federation" ("span") `); + await queryRunner.query(`CREATE INDEX "IDX_06690fc959f1c9fdaf21928222" ON "__chart__drive" ("date", "group", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_6e1df243476e20cbf86572ecc0" ON "__chart__drive" ("date", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_3fa0d0f17ca72e3dc80999a032" ON "__chart__drive" ("span") `); + await queryRunner.query(`CREATE INDEX "IDX_c26e2c1cbb6e911e0554b27416" ON "__chart__active_users" ("date", "group", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_20f57cc8f142c131340ee16742" ON "__chart__active_users" ("date", "span") `); + await queryRunner.query(`CREATE INDEX "IDX_15e91a03aeeac9dbccdf43fc06" ON "__chart__active_users" ("span") `); + } + +} diff --git a/migration/1615966519402-chart-v2-2.ts b/migration/1615966519402-chart-v2-2.ts new file mode 100644 index 0000000000..a694f9542a --- /dev/null +++ b/migration/1615966519402-chart-v2-2.ts @@ -0,0 +1,22 @@ +import {MigrationInterface, QueryRunner} from "typeorm"; + +export class chartV221615966519402 implements MigrationInterface { + name = 'chartV221615966519402' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "__chart__active_users" ADD "___local_users" character varying array NOT NULL DEFAULT '{}'::varchar[]`); + await queryRunner.query(`ALTER TABLE "__chart__active_users" ADD "___remote_users" character varying array NOT NULL DEFAULT '{}'::varchar[]`); + await queryRunner.query(`ALTER TABLE "__chart__hashtag" ADD "___local_users" character varying array NOT NULL DEFAULT '{}'::varchar[]`); + await queryRunner.query(`ALTER TABLE "__chart__hashtag" ADD "___remote_users" character varying array NOT NULL DEFAULT '{}'::varchar[]`); + await queryRunner.query(`ALTER TABLE "__chart__test_unique" ADD "___foo" character varying array NOT NULL DEFAULT '{}'::varchar[]`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "__chart__test_unique" DROP COLUMN "___foo"`); + await queryRunner.query(`ALTER TABLE "__chart__hashtag" DROP COLUMN "___remote_users"`); + await queryRunner.query(`ALTER TABLE "__chart__hashtag" DROP COLUMN "___local_users"`); + await queryRunner.query(`ALTER TABLE "__chart__active_users" DROP COLUMN "___remote_users"`); + await queryRunner.query(`ALTER TABLE "__chart__active_users" DROP COLUMN "___local_users"`); + } + +} diff --git a/package.json b/package.json index cbc9f06aae..32dd175712 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "misskey", "author": "syuilo ", - "version": "12.71.0", + "version": "12.74.1", "codename": "indigo", "repository": { "type": "git", @@ -11,20 +11,20 @@ "private": true, "scripts": { "start": "node ./index.js", - "start-product": "cross-env NODE_ENV=production node ./index.js", "init": "npm run migrate", "ormconfig": "node ./built/ormconfig.js", "migrate": "ts-node ./node_modules/typeorm/cli.js migration:run", "migrateandstart": "npm run migrate && npm run start", - "build": "webpack && gulp build", - "build-product": "cross-env NODE_ENV=production webpack && gulp build", - "webpack": "webpack", - "watch": "webpack --watch", - "gulp": "gulp build", + "build": "npm run build-webpack && npm run build-gulp", + "build-webpack": "webpack", + "build-gulp": "gulp build", + "watch": "concurrently \"npm:watch-*\"", + "watch-webpack": "webpack --watch", + "watch-gulp": "gulp watch", "clean": "gulp clean", "cleanall": "gulp cleanall", "lint": "tslint 'src/**/*.ts'", - "test": "cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_COMPILER_OPTIONS=\"{\\\"target\\\":\\\"es2017\\\",\\\"module\\\":\\\"commonjs\\\",\\\"typeRoots\\\":[\\\"node_modules/@types\\\",\\\"src/@types\\\"]}\" mocha", + "test": "cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=\"./test/tsconfig.json\" mocha", "format": "gulp format" }, "resolutions": { @@ -35,8 +35,8 @@ "lodash": "^4.17.20" }, "dependencies": { - "@babel/plugin-transform-runtime": "7.12.15", - "@elastic/elasticsearch": "7.10.0", + "@babel/plugin-transform-runtime": "7.13.10", + "@elastic/elasticsearch": "7.11.0", "@fortawesome/fontawesome-svg-core": "1.2.34", "@fortawesome/free-brands-svg-icons": "5.15.2", "@fortawesome/free-regular-svg-icons": "5.15.2", @@ -47,7 +47,7 @@ "@koa/router": "9.0.1", "@sentry/browser": "5.29.2", "@sentry/tracing": "5.29.2", - "@sinonjs/fake-timers": "6.0.1", + "@sinonjs/fake-timers": "7.0.2", "@syuilo/aiscript": "0.11.1", "@types/bcryptjs": "2.4.2", "@types/bull": "3.15.0", @@ -61,10 +61,10 @@ "@types/gulp-replace": "0.0.31", "@types/is-url": "1.2.28", "@types/js-yaml": "4.0.0", - "@types/jsdom": "16.2.6", - "@types/jsonld": "1.5.3", + "@types/jsdom": "16.2.7", + "@types/jsonld": "1.5.5", "@types/katex": "0.11.0", - "@types/koa": "2.13.0", + "@types/koa": "2.13.1", "@types/koa-bodyparser": "4.3.0", "@types/koa-cors": "0.0.0", "@types/koa-favicon": "2.0.19", @@ -78,7 +78,7 @@ "@types/markdown-it": "12.0.1", "@types/matter-js": "0.14.10", "@types/mocha": "8.2.1", - "@types/node": "14.14.31", + "@types/node": "14.14.34", "@types/node-fetch": "2.5.8", "@types/nodemailer": "6.4.0", "@types/nprogress": "0.2.0", @@ -105,44 +105,45 @@ "@types/web-push": "3.3.0", "@types/webpack": "4.41.26", "@types/webpack-stream": "3.2.11", - "@types/websocket": "1.0.1", + "@types/websocket": "1.0.2", "@types/ws": "7.4.0", - "@typescript-eslint/parser": "4.14.2", - "@vue/compiler-sfc": "3.0.5", + "@typescript-eslint/parser": "4.17.0", + "@vue/compiler-sfc": "3.0.7", "abort-controller": "3.0.0", "apexcharts": "3.25.0", "autobind-decorator": "2.4.0", "autosize": "4.0.2", "autwh": "0.1.0", - "aws-sdk": "2.848.0", + "aws-sdk": "2.862.0", "bcryptjs": "2.4.3", "blurhash": "1.1.3", - "broadcast-channel": "3.4.1", + "broadcast-channel": "3.5.3", "bull": "3.20.1", "cafy": "15.2.1", - "cbor": "7.0.1", + "cbor": "7.0.3", "chalk": "4.1.0", "chart.js": "2.9.4", "cli-highlight": "2.1.10", "commander": "4.1.1", + "concurrently": "6.0.0", "content-disposition": "0.5.3", - "core-js": "3.9.0", + "core-js": "3.9.1", "crc-32": "1.2.0", - "css-loader": "5.0.2", + "css-loader": "5.1.3", "cssnano": "4.1.10", "dateformat": "4.5.1", "diskusage": "1.1.3", "double-ended-queue": "2.1.0-0", "escape-regexp": "0.0.1", - "eslint": "7.20.0", - "eslint-plugin-vue": "7.6.0", + "eslint": "7.21.0", + "eslint-plugin-vue": "7.7.0", "eventemitter3": "4.0.7", "feed": "4.2.2", "fibers": "5.0.0", - "file-type": "16.2.0", + "file-type": "16.3.0", "fluent-ffmpeg": "2.1.2", "glob": "7.1.6", - "got": "11.8.1", + "got": "11.8.2", "gulp": "4.0.2", "gulp-cssnano": "2.1.3", "gulp-rename": "2.0.0", @@ -155,17 +156,17 @@ "http-proxy-agent": "4.0.1", "http-signature": "1.3.5", "https-proxy-agent": "5.0.0", - "idb-keyval": "5.0.2", + "idb-keyval": "5.0.4", "insert-text-at-cursor": "0.3.0", "is-root": "2.1.0", - "is-svg": "4.2.1", + "is-svg": "4.2.2", "js-yaml": "4.0.0", - "jsdom": "16.4.0", + "jsdom": "16.5.1", "json5": "2.2.0", "json5-loader": "4.0.1", "jsonld": "4.0.1", "jsrsasign": "8.0.20", - "katex": "0.12.0", + "katex": "0.13.0", "koa": "2.13.1", "koa-bodyparser": "4.3.0", "koa-favicon": "2.1.0", @@ -174,35 +175,34 @@ "koa-mount": "4.0.0", "koa-send": "5.0.1", "koa-slow": "2.1.0", - "koa-views": "6.3.1", + "koa-views": "7.0.0", "langmap": "0.0.16", "lookup-dns-cache": "2.1.0", "markdown-it": "12.0.4", - "markdown-it-anchor": "7.0.2", + "markdown-it-anchor": "7.1.0", "matter-js": "0.16.1", - "mocha": "8.3.0", + "mocha": "8.3.2", "moji": "0.5.1", "ms": "2.1.3", "multer": "1.4.2", "nested-property": "4.0.0", "node-fetch": "2.6.1", - "nodemailer": "6.4.18", + "nodemailer": "6.5.0", "object-assign-deep": "0.4.0", "os-utils": "0.0.14", - "p-cancelable": "2.0.0", "parse5": "6.0.1", "parsimmon": "1.16.0", "pg": "8.5.1", "portscanner": "2.2.0", - "postcss": "8.2.6", - "postcss-loader": "5.0.0", + "postcss": "8.2.8", + "postcss-loader": "5.2.0", "prismjs": "1.23.0", - "probe-image-size": "6.0.0", + "probe-image-size": "7.0.0", "promise-limit": "2.7.0", "promise-sequential": "1.1.1", - "pug": "2.0.4", + "pug": "3.0.2", "punycode": "2.1.1", - "pureimage": "0.2.5", + "pureimage": "0.2.7", "qrcode": "1.4.4", "random-seed": "0.3.0", "ratelimiter": "3.4.1", @@ -221,47 +221,47 @@ "sass": "1.32.8", "sass-loader": "11.0.1", "seedrandom": "3.0.5", - "sharp": "0.27.1", + "sharp": "0.27.2", "speakeasy": "2.0.0", "stringz": "2.1.0", "style-loader": "2.0.0", "summaly": "2.4.0", "syslog-pro": "1.0.0", - "systeminformation": "4.34.6", + "systeminformation": "5.6.2", "syuilo-password-strength": "0.0.1", "textarea-caret": "3.1.0", "three": "0.117.1", "throttle-debounce": "3.0.1", "tinycolor2": "1.4.2", "tmp": "0.2.1", - "ts-loader": "8.0.17", + "ts-loader": "8.0.18", "ts-node": "9.1.1", "tslint": "6.1.3", "tslint-sonarts": "1.9.0", "typeorm": "0.2.31", - "typescript": "4.1.5", + "typescript": "4.2.3", "ulid": "2.3.0", "url-loader": "4.1.1", "uuid": "8.3.2", "v-debounce": "0.1.2", "vanilla-tilt": "1.7.0", - "vue": "3.0.5", + "vue": "3.0.7", "vue-color": "2.8.1", "vue-json-pretty": "1.7.1", "vue-loader": "16.1.2", "vue-prism-editor": "2.0.0-alpha.2", - "vue-router": "4.0.3", - "vue-style-loader": "4.1.2", + "vue-router": "4.0.5", + "vue-style-loader": "4.1.3", "vuedraggable": "4.0.1", "web-push": "3.4.4", - "webpack": "5.23.0", + "webpack": "5.25.0", "webpack-cli": "4.5.0", "websocket": "1.0.33", - "ws": "7.4.3", + "ws": "7.4.4", "xev": "2.0.1" }, "devDependencies": { - "@types/chai": "4.2.14", + "@types/chai": "4.2.15", "@types/fluent-ffmpeg": "2.1.16", "chai": "4.3.0", "cross-env": "7.0.3" diff --git a/src/.eslintrc b/src/.eslintrc new file mode 100644 index 0000000000..d54e20f6b6 --- /dev/null +++ b/src/.eslintrc @@ -0,0 +1,6 @@ +{ + "env": { + "node": true, + "commonjs": true + } +} diff --git a/src/boot/index.ts b/src/boot/index.ts index 7380c4484d..602f6b0e48 100644 --- a/src/boot/index.ts +++ b/src/boot/index.ts @@ -66,7 +66,9 @@ if (!program.quiet) { // Display detail of uncaught exception process.on('uncaughtException', err => { - logger.error(err); + try { + logger.error(err); + } catch { } }); // Dying away... diff --git a/src/client/.eslintrc b/src/client/.eslintrc index 8829472b49..fffa28d9e4 100644 --- a/src/client/.eslintrc +++ b/src/client/.eslintrc @@ -1,4 +1,24 @@ { + "env": { + "node": false, + }, + "extends": [ + "eslint:recommended", + "plugin:vue/recommended" + ], + "rules": { + "vue/require-v-for-key": 0, + "vue/max-attributes-per-line": 0, + "vue/html-indent": 0, + "vue/html-self-closing": 0, + "vue/no-unused-vars": 0, + "vue/attributes-order": 0, + "vue/require-prop-types": 0, + "vue/require-default-prop": 0, + "vue/html-closing-bracket-spacing": 0, + "vue/singleline-html-element-content-newline": 0, + "vue/no-v-html": 0 + }, "globals": { "_DEV_": false, "_LANGS_": false, diff --git a/src/client/components/drive.file.vue b/src/client/components/drive.file.vue index d2b8b95f73..5075b574c4 100644 --- a/src/client/components/drive.file.vue +++ b/src/client/components/drive.file.vue @@ -9,15 +9,15 @@ :title="title" >
- +

{{ $ts.avatar }}

- +

{{ $ts.banner }}

- +

{{ $ts.nsfw }}

diff --git a/src/client/components/emoji-picker-dialog.vue b/src/client/components/emoji-picker-dialog.vue new file mode 100644 index 0000000000..4b165d9f91 --- /dev/null +++ b/src/client/components/emoji-picker-dialog.vue @@ -0,0 +1,201 @@ + + + + + diff --git a/src/client/components/emoji-picker-window.vue b/src/client/components/emoji-picker-window.vue new file mode 100644 index 0000000000..fb6a5a9072 --- /dev/null +++ b/src/client/components/emoji-picker-window.vue @@ -0,0 +1,197 @@ + + + + + diff --git a/src/client/components/emoji-picker.section.vue b/src/client/components/emoji-picker.section.vue new file mode 100644 index 0000000000..a12493ce0d --- /dev/null +++ b/src/client/components/emoji-picker.section.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/src/client/components/emoji-picker.vue b/src/client/components/emoji-picker.vue index 9a261ef83f..99d6c8a330 100644 --- a/src/client/components/emoji-picker.vue +++ b/src/client/components/emoji-picker.vue @@ -1,117 +1,96 @@ -