diff --git a/.gitignore b/.gitignore index d511fa5ad..7388e9f2e 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,9 @@ # Intelij-IDEA /.idea +packages/backend/.idea/backend.iml +packages/backend/.idea/modules.xml +packages/backend/.idea/vcs.xml # Node.js node_modules @@ -33,6 +36,9 @@ coverage !/.config/example.yml !/.config/docker_example.env +#docker dev config +/dev/docker-compose.yml + # misskey /build built @@ -59,8 +65,3 @@ packages/backend/assets/instance.css *.blend3 *.blend4 *.blend5 - -#intelij stuff -packages/backend/.idea/backend.iml -packages/backend/.idea/modules.xml -packages/backend/.idea/vcs.xml diff --git a/.woodpecker/commitBuild.yml b/.woodpecker/commitBuild.yml index ff86c5e7d..407672a46 100644 --- a/.woodpecker/commitBuild.yml +++ b/.woodpecker/commitBuild.yml @@ -14,4 +14,4 @@ matrix: - 19.2.0 branches: - include: [ master, develop, feature/* ] + include: [ main, develop, feature/* ] diff --git a/.woodpecker/commitDatabase.yml b/.woodpecker/commitDatabase.yml index a9e8ad554..cbffa5d8a 100644 --- a/.woodpecker/commitDatabase.yml +++ b/.woodpecker/commitDatabase.yml @@ -4,6 +4,7 @@ pipeline: commands: - cp .config/ci.yml .config/default.yml - corepack enable + - yarn set version berry - yarn install - yarn build - yarn migrate @@ -24,4 +25,4 @@ matrix: - latest branches: - include: [ master, develop, feature/* ] + include: [ main, develop, feature/* ] diff --git a/.woodpecker/commitDocker.yml b/.woodpecker/commitDocker.yml index 5b1380bd5..aef58c9ad 100644 --- a/.woodpecker/commitDocker.yml +++ b/.woodpecker/commitDocker.yml @@ -8,4 +8,4 @@ pipeline: no_push: true branches: - include: [ master, develop ] + include: [ main, develop ] diff --git a/CALCKEY.md b/CALCKEY.md index f1a62548b..4371d5abd 100644 --- a/CALCKEY.md +++ b/CALCKEY.md @@ -99,7 +99,8 @@ - Undo renote button inside original note - Custom locales - Obliteration of Ai-chan -- Switch to [Calckey.js](https://codeberg.org/thatonecalculator/calckey.js) +- Switch to [Calckey.js](https://codeberg.org/calckey/calckey.js) +- Woozy mode 🥴 - MissV: [fix Misskey Forkbomb](https://code.vtopia.live/Vtopia/MissV/commit/40b23c070bd4adbb3188c73546c6c625138fb3c1) - [Make showing ads optional](https://github.com/misskey-dev/misskey/pull/8996) - [Tapping avatar in mobile opens account modal](https://github.com/misskey-dev/misskey/pull/9056) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d599d39cf..541cc98df 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,11 +1,13 @@ # Contribution guide -We're glad you're interested in contributing Misskey! In this document you will find the information you need to contribute to the project. +We're glad you're interested in contributing Calckey! In this document you will find the information you need to contribute to the project. -> **Note** -> This project uses Japanese as its major language, **but you do not need to translate and write the Issues/PRs in Japanese.** -> Also, you might receive comments on your Issue/PR in Japanese, but you do not need to reply to them in Japanese as well.\ -> The accuracy of machine translation into Japanese is not high, so it will be easier for us to understand if you write it in the original language. -> It will also allow the reader to use the translation tool of their preference if necessary. +# Translations + +You can contribute without knowing how to code by helping translate here: + +[![Translation status](https://hosted.weblate.org/widgets/calckey/-/287x66-grey.png)](https://hosted.weblate.org/engage/calckey/) + +[![Translation bars](https://hosted.weblate.org/widgets/calckey/-/multi-auto.svg)](https://hosted.weblate.org/engage/calckey/) ## Roadmap See [ROADMAP.md](./ROADMAP.md) diff --git a/Dockerfile b/Dockerfile index 44fb1ef8a..7a92509d8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,7 @@ RUN yarn plugin import workspace-tools # Install Dependencies RUN yarn install -RUN yarn build +RUN yarn rebuild # Remove git files RUN rm -rf .git diff --git a/README.md b/README.md index cc22bfda9..9b2afab26 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,11 @@ **🌎 **[Calckey](https://i.calckey.cloud/)** is an open source, decentralized social media platform that's free forever! 🚀** -[![status-badge](https://ci.codeberg.org/api/badges/thatonecalculator/calckey/status.svg)](https://ci.codeberg.org/thatonecalculator/calckey) +[![status-badge](https://ci.codeberg.org/api/badges/calckey/calckey/status.svg)](https://ci.codeberg.org/calckey/calckey) +[![liberapay-badge](https://img.shields.io/liberapay/receives/ThatOneCalculator?logo=liberapay)](https://liberapay.com/ThatOneCalculator) +[![translate-badge](https://hosted.weblate.org/widgets/calckey/-/svg-badge.svg)](https://hosted.weblate.org/engage/calckey/) +[![docker-badge](https://img.shields.io/docker/pulls/thatonecalculator/calckey?logo=docker)](https://hub.docker.com/r/thatonecalculator/calckey) +[![codeberg-badge](https://custom-icon-badges.demolab.com/badge/hosted%20on-codeberg-blue.svg?logo=codeberg&logoColor=white)](https://codeberg.org/calckey/calckey/) @@ -45,6 +49,7 @@ - 📜 Instance list: - 📖 JoinFediverse Wiki: - 🐋 Docker Hub: +- ✍️ Weblate: # 🌠 Getting started @@ -59,13 +64,13 @@ This guide will work for both **starting from scratch** and **migrating from Mis ### 😗 Optional dependencies -- 📗 [FFmpeg](https://ffmpeg.org/) for video transcoding -- 🔍 [ElasticSearch](https://www.elastic.co/elasticsearch/) for full-text search +- [FFmpeg](https://ffmpeg.org/) for video transcoding +- [ElasticSearch](https://www.elastic.co/elasticsearch/) for full-text search - OpenSearch/Sonic are not supported as of right now -- 🥡 Management (choose one of the following) +- Management (choose one of the following) - 🛰️ [pm2](https://pm2.io/) - 🐳 [Docker](https://docker.com) - - 📐 Service manager (systemd, openrc, etc) + - Service manager (systemd, openrc, etc) ### 🏗️ Build dependencies @@ -77,7 +82,7 @@ This guide will work for both **starting from scratch** and **migrating from Mis ## 👀 Get folder ready ```sh -git clone https://codeberg.org/thatonecalculator/calckey.git +git clone https://codeberg.org/calckey/calckey.git cd calckey/ # git checkout main # if you want only stable versions ``` diff --git a/dev/docker-compose.yml b/dev/docker-compose.yml.example similarity index 82% rename from dev/docker-compose.yml rename to dev/docker-compose.yml.example index 25c2e9ea9..0ab9f264c 100644 --- a/dev/docker-compose.yml +++ b/dev/docker-compose.yml.example @@ -4,6 +4,7 @@ services: web: image: docker.io/thatonecalculator/calckey build: .. + container_name: calckey_web restart: always depends_on: - db @@ -13,12 +14,14 @@ services: - "3000:3000" networks: - network +# - web volumes: - ../files:/calckey/files - ../.config:/calckey/.config:ro redis: restart: always + container_name: calckey_redis image: docker.io/redis:7.0-alpine networks: - network @@ -27,7 +30,8 @@ services: db: restart: always - image: docker.io/postgres:12.2-alpine + image: docker.io/postgres:13.9-alpine + container_name: calckey_db networks: - network env_file: @@ -48,3 +52,6 @@ services: networks: network: +# web: +# external: +# name: web diff --git a/docker-README.md b/docker-README.md index cca4c011d..26d0e940a 100644 --- a/docker-README.md +++ b/docker-README.md @@ -1,22 +1,16 @@ -# 🐳 Docker Compose for Development - -```sh -cd dev/ -docker-compose build -docker-compose run --rm web yarn run init -docker-compose up -d -``` - -# Running a Calckey instance with Docker +# 🐳 Running a Calckey instance with Docker ## Pre-built docker container [thatonecalculator/calckey](https://hub.docker.com/r/thatonecalculator/calckey) -## docker-compose -You can find a `docker-compose.yml` file in the same folder as this `README`, along with a folder called `.config` containing two **example** files needed to get the instance running: + +## `docker-compose` + +There is a `docker-compose.yml` in the root of the project that you can use to build the container from source + - .config/docker.env (**db config settings**) - .config/default.yml (**calckey instance settings**) -## configuring calckey +## Configuring Rename the files: @@ -33,6 +27,7 @@ You can configure `docker.env` with anything you like, but you will have to pay Everything else can be left as-is. ## Running docker-compose + The [prebuilt container for calckey](https://hub.docker.com/r/thatonecalculator/calckey) is fairly large, and may take a few minutes to download and extract using docker. Copy `docker-compose.yml` and the `config/` to a directory, then run the **docker-compose** command: @@ -42,5 +37,11 @@ NOTE: This will take some time to come fully online, even after download and ext Once the instance is up you can use a web browser to access the web interface at `http://serverip:3000` (where `serverip` is the IP of the server you are running the calckey instance on). -## Securing your instance with a reverse proxy -On its own *calckey* serves itself with HTTP, and does not support SSL. In order to support encrypted connections via HTTPS - an absolute necessity if you intend to host an instance accessible from the public internet - you need to add a reverse proxy to your setup. +## Docker for development + +```sh +cd dev/ +docker-compose build +docker-compose run --rm web yarn run init +docker-compose up -d +``` \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 826a239ee..d5ed78ac7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,6 +3,7 @@ version: "3" services: web: image: docker.io/thatonecalculator/calckey + container_name: calckey_web restart: unless-stopped depends_on: - db @@ -17,11 +18,12 @@ services: NODE_ENV: production volumes: - ./files:/calckey/files - - ./config:/calckey/.config:ro + - ./.config:/calckey/.config:ro redis: restart: unless-stopped image: docker.io/redis:7.0-alpine + container_name: calckey_redis networks: - calcnet volumes: @@ -29,11 +31,12 @@ services: db: restart: unless-stopped - image: docker.io/postgres:12.2-alpine + image: docker.io/postgres:13.9-alpine + container_name: calckey_db networks: - calcnet env_file: - - config/docker.env + - .config/docker.env volumes: - ./db:/var/lib/postgresql/data diff --git a/locales/bn-BD.yml b/locales/bn-BD.yml index cfa4811ce..58e03e4ba 100644 --- a/locales/bn-BD.yml +++ b/locales/bn-BD.yml @@ -645,7 +645,7 @@ createNew: "নতুন" optional: "প্রয়োজনীয় নয়" createNewClip: "নতুন ক্লিপ তৈরি করুন" public: "সর্বজনীন" -i18nInfo: "Misskey স্বেচ্ছাসেবকদের দ্বারা বিভিন্ন ভাষায় অনুবাদ করা হচ্ছে। আপনি {link} এ গিয়ে অনুবাদে সহযোগিতা করতে পারেন।" +i18nInfo: "Calckey স্বেচ্ছাসেবকদের দ্বারা বিভিন্ন ভাষায় অনুবাদ করা হচ্ছে। আপনি {link} এ গিয়ে অনুবাদে সহযোগিতা করতে পারেন।" manageAccessTokens: "অ্যাক্সেস টোকেন পরিচালনা করুন" accountInfo: "অ্যাকাউন্টের তথ্য" notesCount: "নোটের সংখ্যা" diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 18e96ff76..cf9cc7d83 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -651,7 +651,7 @@ createNewClip: "Neuen Clip erstellen" unclip: "Aus Clip entfernen" confirmToUnclipAlreadyClippedNote: "Diese Notiz ist bereits im \"{name}\" Clip enthalten. Möchtest du sie aus diesem Clip entfernen?" public: "Öffentlich" -i18nInfo: "Misskey wird durch freiwillige Helfer in viele verschiedene Sprachen übersetzt. Auf {link} kannst du mithelfen." +i18nInfo: "Calckey wird durch freiwillige Helfer in viele verschiedene Sprachen übersetzt. Auf {link} kannst du mithelfen." manageAccessTokens: "Zugriffstokens verwalten" accountInfo: "Benutzerkonto-Informationen" notesCount: "Anzahl der Notizen" diff --git a/locales/en-US.yml b/locales/en-US.yml index 1fff0c22e..948934d81 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -653,7 +653,7 @@ createNewClip: "Create new clip" unclip: "Unclip" confirmToUnclipAlreadyClippedNote: "This note is already part of the \"{name}\" clip. Do you want to remove it from this clip instead?" public: "Public" -i18nInfo: "Misskey/Calckey is being translated into various languages by volunteers. You can help at {link}." +i18nInfo: "Calckey is being translated into various languages by volunteers. You can help at {link}." manageAccessTokens: "Manage access tokens" accountInfo: "Account Info" notesCount: "Number of notes" @@ -925,7 +925,7 @@ migration: "Migration" moveTo: "Move current account to new account" moveToLabel: "Account you're moving to:" moveAccount: "Move account!" -moveAccountDescription: "This process is irriversable. Make sure you've set up an alias for this account on your new account before moving. Please enter the tag of the account formatted like @person@instance.com" +moveAccountDescription: "This process is irreversible. Make sure you've set up an alias for this account on your new account before moving. Please enter the tag of the account formatted like @person@instance.com" moveFrom: "Move to this account from an older account" moveFromLabel: "Account you're moving from:" moveFromDescription: "This will set an alias of your old account so that you can move from that account to this current one. Do this BEFORE moving from your older account. Please enter the tag of the account formatted like @person@instance.com" @@ -1010,7 +1010,7 @@ _aboutMisskey: contributors: "Main contributors" allContributors: "All contributors" source: "Source code" - translation: "Translate Misskey" + translation: "Translate Calckey" donate: "Donate to Calckey" morePatrons: "We also appreciate the support of many other helpers not listed here. Thank you! 🥰" patrons: "Calckey patrons" diff --git a/locales/es-ES.yml b/locales/es-ES.yml index 49cc397ff..92e305d92 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -650,7 +650,7 @@ createNewClip: "Crear clip nuevo" unclip: "Quitar clip" confirmToUnclipAlreadyClippedNote: "Esta nota ya está incluida en el clip \"{name}\". ¿Quiere quitar la nota del clip?" public: "Público" -i18nInfo: "Misskey está siendo traducido a varios idiomas gracias a voluntarios. Se puede colaborar traduciendo en {link}" +i18nInfo: "Calckey está siendo traducido a varios idiomas gracias a voluntarios. Se puede colaborar traduciendo en {link}" manageAccessTokens: "Administrar tokens de acceso" accountInfo: "Información de la Cuenta" notesCount: "Cantidad de notas" diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index e1b1de34f..5c5e7089f 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -640,7 +640,7 @@ createNew: "Créer nouveau" 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}." +i18nInfo: "Calckey 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" diff --git a/locales/id-ID.yml b/locales/id-ID.yml index 483701744..b83a70bc1 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -647,7 +647,7 @@ createNewClip: "Buat klip baru" unclip: "Batalkan klip" confirmToUnclipAlreadyClippedNote: "Catatan ini sudah disertakan di klip \"{name}\". Yakin ingin membatalkan catatan dari klip ini?" public: "Publik" -i18nInfo: "Misskey diterjemahkan ke dalam banyak bahasa oleh sukarelawan. Kamu dapat ikut membantu di {link}." +i18nInfo: "Calckey diterjemahkan ke dalam banyak bahasa oleh sukarelawan. Kamu dapat ikut membantu di {link}." manageAccessTokens: "Kelola access token" accountInfo: "Informasi akun" notesCount: "Jumlah catatan" diff --git a/locales/it-IT.yml b/locales/it-IT.yml index b1485a336..9e188ae08 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -637,7 +637,7 @@ createNew: "Crea nuov@" optional: "Opzionale" createNewClip: "Nuova clip" public: "Pubblica" -i18nInfo: "Misskey è tradotto in diverse lingue da volontari. Anche tu puoi contribuire su {link}." +i18nInfo: "Calckey è tradotto in diverse lingue da volontari. Anche tu puoi contribuire su {link}." manageAccessTokens: "Gestisci token di accesso" accountInfo: "Informazioni account" notesCount: "Conteggio note" diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 90820d43a..ba29131a5 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -653,7 +653,7 @@ createNewClip: "新しいクリップを作成" unclip: "クリップ解除" confirmToUnclipAlreadyClippedNote: "このノートはすでにクリップ「{name}」に含まれています。ノートをこのクリップから除外しますか?" public: "パブリック" -i18nInfo: "Misskeyは有志によって様々な言語に翻訳されています。{link}で翻訳に協力できます。" +i18nInfo: "Calckeyは有志によって様々な言語に翻訳されています。{link}で翻訳に協力できます。" manageAccessTokens: "アクセストークンの管理" accountInfo: "アカウント情報" notesCount: "ノートの数" diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index fe89c865b..02d9e87bb 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -649,7 +649,7 @@ createNewClip: "新しいクリップを作るで" unclip: "クリップ解除するで" confirmToUnclipAlreadyClippedNote: "このノートはすでにクリップ「{name}」に含まれとるで。ノートをこのクリップから除外したる?" public: "パブリック" -i18nInfo: "Misskeyは有志によっていろんな言語に翻訳されとるで。{link}で翻訳に協力したってやー。" +i18nInfo: "Calckeyは有志によっていろんな言語に翻訳されとるで。{link}で翻訳に協力したってやー。" manageAccessTokens: "アクセストークンの管理" accountInfo: "アカウント情報" notesCount: "ノートの数やで" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index ead4b4a6c..8b2730a94 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -650,7 +650,7 @@ createNewClip: "새 클립 만들기" unclip: "클립 해제" confirmToUnclipAlreadyClippedNote: "이 노트는 이미 \"{name}\" 클립에 포함되어 있습니다. 클립을 해제하시겠습니까?" public: "공개" -i18nInfo: "Misskey는 자원봉사자들에 의해 다양한 언어로 번역되고 있습니다. {link}에서 번역에 참가할 수 있습니다." +i18nInfo: "Calckey는 자원봉사자들에 의해 다양한 언어로 번역되고 있습니다. {link}에서 번역에 참가할 수 있습니다." manageAccessTokens: "액세스 토큰 관리" accountInfo: "계정 정보" notesCount: "노트 수" @@ -912,8 +912,8 @@ _ffVisibility: private: "비공개" _signup: almostThere: "거의 다 끝났습니다" - emailAddressInfo: "당신이 사용하고 있는 이메일 주소를 입력해 주세요. 이메일 주소는 다른 유저에게 공개되지 않습니다." - emailSent: "입력하신 메일 주소({email})로 확인 메일을 보내드렸습니다. 가입을 완료하시려면 보내드린 메일에 있는 링크로 접속해 주세요." + emailAddressInfo: "당신이 사용하고 있는 이메일 주소를 입력해 주세요. 이메일 주소는 다른 유저에게 공개되지 않습니다." + emailSent: "입력하신 메일 주소({email})로 확인 메일을 보내드렸습니다. 가입을 완료하시려면 보내드린 메일에 있는 링크로 접속해 주세요." _accountDelete: accountDelete: "계정 삭제" mayTakeTime: "계정 삭제는 서버에 부하를 가하기 때문에, 작성한 콘텐츠나 업로드한 파일의 수가 많으면 완료까지 시간이 걸릴 수 있습니다." diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index 52bca644f..ce24665e8 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -637,7 +637,7 @@ createNewClip: "Utwórz nowy klip" unclip: "Odczep" confirmToUnclipAlreadyClippedNote: "Ten wpis jest już częścią klipu \"{name}\". Czy chcesz ją usunąć z tego klipu?" public: "Publiczny" -i18nInfo: "Misskey jest tłumaczone na wiele języków przez wolontariuszy. Możesz pomóc na {link}." +i18nInfo: "Calckey jest tłumaczone na wiele języków przez wolontariuszy. Możesz pomóc na {link}." manageAccessTokens: "Zarządzaj tokenami dostępu" accountInfo: "Informacje o koncie" notesCount: "Liczba wpisów" diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 276d8ac3e..6f985a5f6 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -646,7 +646,7 @@ createNew: "Новый документ" optional: "Необязательно" createNewClip: "Новая подборка" public: "Общедоступно" -i18nInfo: "Misskey переводят на разные языки добровольцы со всего света. Ваша помощь тоже пригодится здесь: {link}." +i18nInfo: "Calckey переводят на разные языки добровольцы со всего света. Ваша помощь тоже пригодится здесь: {link}." manageAccessTokens: "Управление токенами доступа" accountInfo: "Сведения об учётной записи" notesCount: "Количество заметок" diff --git a/locales/sk-SK.yml b/locales/sk-SK.yml index 0145c515b..38ded0c8f 100644 --- a/locales/sk-SK.yml +++ b/locales/sk-SK.yml @@ -649,7 +649,7 @@ createNewClip: "Vytvoriť nový klip" unclip: "Odopnúť" confirmToUnclipAlreadyClippedNote: "Táto poznámka je už pripnutá ako \"{name}\". Naozaj ju chcete odopnúť?" public: "Verejné" -i18nInfo: "Misskey je prekladaný do rôznych jazykov dobrovoľníkmi. Pomôcť môžete na {link}." +i18nInfo: "Calckey je prekladaný do rôznych jazykov dobrovoľníkmi. Pomôcť môžete na {link}." manageAccessTokens: "Spravovať prístupové tokeny" accountInfo: "Informácie o účte" notesCount: "Počet poznámok" diff --git a/locales/th-TH.yml b/locales/th-TH.yml index 7d78b1ef7..6f0a28b08 100644 --- a/locales/th-TH.yml +++ b/locales/th-TH.yml @@ -650,7 +650,7 @@ createNewClip: "สร้างคลิปใหม่" unclip: "ลบคลิป" confirmToUnclipAlreadyClippedNote: "โน้ตนี้เป็นส่วนหนึ่งของคลิป \"{name}\" แล้ว คุณต้องการลบออกจากคลิปนี้แทนอย่างงั้นหรอ?" public: "สาธารณะ" -i18nInfo: "Misskey กำลังได้รับการแปลเป็นภาษาต่างๆ โดยอาสาสมัคร คุณสามารถช่วยเหลือได้ที่ {link}" +i18nInfo: "Calckey กำลังได้รับการแปลเป็นภาษาต่างๆ โดยอาสาสมัคร คุณสามารถช่วยเหลือได้ที่ {link}" manageAccessTokens: "การจัดการโทเค็นการเข้าถึง" accountInfo: "ข้อมูลบัญชี" notesCount: "จำนวนของโน้ต" diff --git a/locales/uk-UA.yml b/locales/uk-UA.yml index 63a919460..053827fa1 100644 --- a/locales/uk-UA.yml +++ b/locales/uk-UA.yml @@ -645,7 +645,7 @@ createNew: "Створити новий" optional: "Необов'язково" createNewClip: "Створити нотатку" public: "Публічний" -i18nInfo: "Misskey перекладається на різні мови волонтерами. Ви можете допомогти: {link}" +i18nInfo: "Calckey перекладається на різні мови волонтерами. Ви можете допомогти: {link}" manageAccessTokens: "Керування токенами доступу" accountInfo: "Інформація про акаунт" notesCount: "Кількість нотаток" diff --git a/locales/vi-VN.yml b/locales/vi-VN.yml index bc4c178ae..bd0ab3e45 100644 --- a/locales/vi-VN.yml +++ b/locales/vi-VN.yml @@ -650,7 +650,7 @@ createNewClip: "Tạo một ghim mới" unclip: "Bỏ ghim" confirmToUnclipAlreadyClippedNote: "Bài đăng này là một phần của \"{name}\" ghim. Bạn có muốn bỏ khỏi ghim?" public: "Công khai" -i18nInfo: "Misskey đang được các tình nguyện viên dịch sang nhiều thứ tiếng khác nhau. Bạn có thể hỗ trợ tại {link}." +i18nInfo: "Calckey đang được các tình nguyện viên dịch sang nhiều thứ tiếng khác nhau. Bạn có thể hỗ trợ tại {link}." manageAccessTokens: "Tạo mã truy cập" accountInfo: "Thông tin tài khoản" notesCount: "Số lượng tút" diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index f24e5ad85..e4782914a 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -650,7 +650,7 @@ createNewClip: "新建便签" unclip: "移除便签" confirmToUnclipAlreadyClippedNote: "本帖已包含在便签\"{name}\"里。您想要将本帖从该便签中移除吗?" public: "公开" -i18nInfo: "Misskey已经被志愿者们翻译成了各种语言。如果你也有兴趣,可以通过{link}帮助翻译。" +i18nInfo: "Calckey已经被志愿者们翻译成了各种语言。如果你也有兴趣,可以通过{link}帮助翻译。" manageAccessTokens: "管理 Access Tokens" accountInfo: "账户信息" notesCount: "帖子数量" diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index 6ecc9f087..892cdbcf1 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -650,7 +650,7 @@ createNewClip: "建立新摘錄" unclip: "解除摘錄" confirmToUnclipAlreadyClippedNote: "此貼文已包含在摘錄「{name}」中。 你想將貼文從這個摘錄中排除嗎?" public: "公開" -i18nInfo: "Misskey已經被志願者們翻譯成各種語言版本,如果想要幫忙的話,可以進入{link}幫助翻譯。" +i18nInfo: "Calckey已經被志願者們翻譯成各種語言版本,如果想要幫忙的話,可以進入{link}幫助翻譯。" manageAccessTokens: "管理存取權杖" accountInfo: "帳戶資訊" notesCount: "貼文數量" diff --git a/package.json b/package.json index 38fb1a484..e9794c30a 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { "name": "calckey", - "version": "13.0.4", + "version": "13.0.5", "codename": "aqua", "repository": { "type": "git", - "url": "https://codeberg.org/thatonecalculator/calckey.git" + "url": "https://codeberg.org/calckey/calckey.git" }, "packageManager": "yarn@3.3.0", "workspaces": [ @@ -14,7 +14,7 @@ ], "private": true, "scripts": { - "rebuild": "yarn clean && yarn build", + "rebuild": "yarn clean && yarn workspaces foreach run build && yarn run gulp", "build": "yarn workspaces foreach run build && yarn run gulp", "start": "yarn workspace backend run start", "start:test": "yarn workspace backend run start:test", @@ -45,12 +45,12 @@ "@bull-board/ui": "^4.6.4", "@tensorflow/tfjs": "^3.21.0", "calckey-js": "^0.0.17", - "eslint": "^8.28.0", + "eslint": "^8.30.0", "execa": "5.1.1", "gulp": "4.0.2", "gulp-cssnano": "2.1.3", "gulp-rename": "2.0.0", - "gulp-replace": "1.1.3", + "gulp-replace": "1.1.4", "gulp-terser": "2.1.0", "js-yaml": "4.1.0", "long": "^5.2.1", @@ -60,11 +60,11 @@ "devDependencies": { "@types/gulp": "4.0.10", "@types/gulp-rename": "2.0.1", - "@typescript-eslint/parser": "5.43.0", + "@typescript-eslint/parser": "5.46.1", "cross-env": "7.0.3", "cypress": "10.11.0", - "start-server-and-test": "1.14.0", - "typescript": "4.9.3", + "start-server-and-test": "1.15.2", + "typescript": "4.9.4", "vue-eslint-parser": "^9.1.0" } } diff --git a/packages/backend/assets/woozy.png b/packages/backend/assets/woozy.png new file mode 100644 index 000000000..53419f14b --- /dev/null +++ b/packages/backend/assets/woozy.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12534af236ea0fb67db6ac7df1c62a4e847fb3e7dd31b05d142dd3a66cf9c8eb +size 18990 diff --git a/packages/backend/migration/1658203170545calckey.js b/packages/backend/migration/1658203170545calckey.js index 8e7abd0f6..eb5913e81 100644 --- a/packages/backend/migration/1658203170545calckey.js +++ b/packages/backend/migration/1658203170545calckey.js @@ -3,13 +3,13 @@ export class calckey1658203170545 { async up(queryRunner) { await queryRunner.query(`UPDATE meta SET "useStarForReactionFallback" = TRUE;`); - await queryRunner.query(`UPDATE meta SET "repositoryUrl" = 'https://codeberg/thatonecalculator/calckey'`); - await queryRunner.query(`UPDATE meta SET "feedbackUrl" = 'https://codeberg/thatonecalculator/calckey/issues'`); + await queryRunner.query(`UPDATE meta SET "repositoryUrl" = 'https://codeberg/calckey/calckey'`); + await queryRunner.query(`UPDATE meta SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`); } async down(queryRunner) { await queryRunner.query(`UPDATE meta SET "useStarForReactionFallback" = FALSE;`); - await queryRunner.query(`UPDATE meta SET "repositoryUrl" = 'https://codeberg/thatonecalculator/calckey'`); - await queryRunner.query(`UPDATE meta SET "feedbackUrl" = 'https://codeberg/thatonecalculator/calckey/issues'`); + await queryRunner.query(`UPDATE meta SET "repositoryUrl" = 'https://codeberg/calckey/calckey'`); + await queryRunner.query(`UPDATE meta SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`); } } diff --git a/packages/backend/migration/1658981842728FixCalckey.js b/packages/backend/migration/1658981842728FixCalckey.js index 276b4d68b..7d8750634 100644 --- a/packages/backend/migration/1658981842728FixCalckey.js +++ b/packages/backend/migration/1658981842728FixCalckey.js @@ -3,13 +3,13 @@ export class FixCalckey1658981842728 { async up(queryRunner) { await queryRunner.query(`UPDATE "meta" SET "useStarForReactionFallback" = TRUE;`); - await queryRunner.query(`UPDATE "meta" SET "repositoryUrl" = 'https://codeberg/thatonecalculator/calckey'`); - await queryRunner.query(`UPDATE "meta" SET "feedbackUrl" = 'https://codeberg/thatonecalculator/calckey/issues'`); + await queryRunner.query(`UPDATE "meta" SET "repositoryUrl" = 'https://codeberg/calckey/calckey'`); + await queryRunner.query(`UPDATE "meta" SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`); } async down(queryRunner) { await queryRunner.query(`UPDATE "meta" SET "useStarForReactionFallback" = FALSE;`); - await queryRunner.query(`UPDATE "meta" SET "repositoryUrl" = 'https://codeberg/thatonecalculator/calckey'`); - await queryRunner.query(`UPDATE "meta" SET "feedbackUrl" = 'https://codeberg/thatonecalculator/calckey/issues'`); + await queryRunner.query(`UPDATE "meta" SET "repositoryUrl" = 'https://codeberg/calckey/calckey'`); + await queryRunner.query(`UPDATE "meta" SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`); } } diff --git a/packages/backend/migration/1671388343000-CalckeyRepoMove.js b/packages/backend/migration/1671388343000-CalckeyRepoMove.js new file mode 100644 index 000000000..df933bcb9 --- /dev/null +++ b/packages/backend/migration/1671388343000-CalckeyRepoMove.js @@ -0,0 +1,15 @@ +/* "CalckeyRepoMove1671388343000" is a class that updates the "useStarForReactionFallback" column in +the "meta" table to TRUE */ +export class CalckeyRepoMove1671388343000 { + name = 'CalckeyRepoMove1671388343000' + + async up(queryRunner) { + await queryRunner.query(`UPDATE meta SET "repositoryUrl" = 'https://codeberg/calckey/calckey'`); + await queryRunner.query(`UPDATE meta SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`); + } + + async down(queryRunner) { + await queryRunner.query(`UPDATE meta SET "repositoryUrl" = 'https://codeberg/calckey/calckey'`); + await queryRunner.query(`UPDATE meta SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`); + } +} diff --git a/packages/backend/package.json b/packages/backend/package.json index cb34d142a..699e1aa1c 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -37,14 +37,14 @@ "archiver": "5.3.1", "autobind-decorator": "2.4.0", "autwh": "0.1.0", - "aws-sdk": "2.1258.0", + "aws-sdk": "2.1277.0", "bcryptjs": "2.4.3", "blurhash": "1.1.5", - "bull": "4.10.1", + "bull": "4.10.2", "cacheable-lookup": "7.0.0", "calckey-js": "^0.0.17", "cbor": "8.1.0", - "chalk": "5.1.2", + "chalk": "5.2.0", "chalk-template": "0.4.0", "chokidar": "3.5.3", "cli-highlight": "2.1.11", @@ -62,11 +62,11 @@ "ip-cidr": "3.0.11", "is-svg": "4.3.2", "js-yaml": "4.1.0", - "jsdom": "20.0.2", - "json5": "2.2.1", + "jsdom": "20.0.3", + "json5": "2.2.2", "json5-loader": "4.0.1", "jsonld": "6.0.0", - "jsrsasign": "10.6.0", + "jsrsasign": "10.6.1", "koa": "2.13.4", "koa-bodyparser": "4.3.0", "koa-favicon": "2.1.0", @@ -78,7 +78,7 @@ "koa-views": "7.0.2", "mfm-js": "0.23.0", "mime-types": "2.1.35", - "mocha": "10.1.0", + "mocha": "10.2.0", "multer": "1.4.4-lts.1", "nested-property": "4.0.0", "node-fetch": "3.3.0", @@ -86,7 +86,7 @@ "nsfwjs": "2.4.2", "oauth": "^0.10.0", "os-utils": "0.0.14", - "parse5": "7.1.1", + "parse5": "7.1.2", "pg": "8.8.0", "private-ip": "2.3.4", "probe-image-size": "7.2.3", @@ -97,14 +97,14 @@ "qrcode": "1.5.1", "random-seed": "0.3.0", "ratelimiter": "3.4.1", - "re2": "1.17.7", + "re2": "1.18.0", "redis-lock": "0.1.4", "reflect-metadata": "0.1.13", "rename": "1.0.4", "rndstr": "1.0.0", "rss-parser": "3.12.0", "s-age": "1.1.2", - "sanitize-html": "2.7.3", + "sanitize-html": "2.8.0", "semver": "7.3.8", "sharp": "0.31.2", "speakeasy": "2.0.0", @@ -112,16 +112,16 @@ "stringz": "2.1.0", "summaly": "2.7.0", "syslog-pro": "1.0.0", - "systeminformation": "5.13.5", + "systeminformation": "5.16.6", "tesseract.js": "^3.0.3", "tinycolor2": "1.4.2", "tmp": "0.2.1", - "ts-loader": "9.4.1", + "ts-loader": "9.4.2", "ts-node": "10.9.1", - "tsc-alias": "1.7.1", - "tsconfig-paths": "4.1.0", + "tsc-alias": "1.8.2", + "tsconfig-paths": "4.1.1", "twemoji-parser": "14.0.0", - "typeorm": "0.3.10", + "typeorm": "0.3.11", "ulid": "2.3.0", "unzipper": "0.10.11", "uuid": "9.0.0", @@ -139,7 +139,7 @@ "@types/fluent-ffmpeg": "2.1.20", "@types/js-yaml": "4.0.5", "@types/jsdom": "20.0.1", - "@types/jsonld": "1.5.7", + "@types/jsonld": "1.5.8", "@types/jsrsasign": "10.5.4", "@types/koa": "2.13.5", "@types/koa-bodyparser": "4.3.10", @@ -153,9 +153,9 @@ "@types/koa__multer": "2.0.4", "@types/koa__router": "8.0.11", "@types/mocha": "9.1.1", - "@types/node": "18.11.9", + "@types/node": "18.11.17", "@types/node-fetch": "3.0.3", - "@types/nodemailer": "6.4.6", + "@types/nodemailer": "6.4.7", "@types/oauth": "0.9.1", "@types/pug": "2.0.6", "@types/punycode": "2.1.0", @@ -164,7 +164,7 @@ "@types/ratelimiter": "3.4.4", "@types/redis": "4.0.11", "@types/rename": "1.0.4", - "@types/sanitize-html": "2.6.2", + "@types/sanitize-html": "2.8.0", "@types/semver": "7.3.13", "@types/sharp": "0.31.0", "@types/sinonjs__fake-timers": "8.1.2", @@ -175,12 +175,12 @@ "@types/web-push": "3.3.2", "@types/websocket": "1.0.5", "@types/ws": "8.5.3", - "@typescript-eslint/eslint-plugin": "5.43.0", - "@typescript-eslint/parser": "5.43.0", + "@typescript-eslint/eslint-plugin": "5.46.1", + "@typescript-eslint/parser": "5.46.1", "cross-env": "7.0.3", - "eslint": "8.28.0", + "eslint": "8.30.0", "eslint-plugin-import": "2.26.0", "execa": "6.1.0", - "typescript": "4.9.3" + "typescript": "4.9.4" } } diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts index 937333bc1..f8e4059e7 100644 --- a/packages/backend/src/boot/master.ts +++ b/packages/backend/src/boot/master.ts @@ -38,7 +38,7 @@ function greet() { //#endregion console.log(' Calckey is an open-source decentralized microblogging platform.'); - console.log(chalk.rgb(255, 136, 0)(' If you like Calckey, please consider starring or contributing to the repo. https://codeberg.org/thatonecalculator/calckey')); + console.log(chalk.rgb(255, 136, 0)(' If you like Calckey, please consider starring or contributing to the repo. https://codeberg.org/calckey/calckey')); console.log(''); console.log(chalkTemplate`--- ${os.hostname()} {gray (PID: ${process.pid.toString()})} ---`); diff --git a/packages/backend/src/models/entities/meta.ts b/packages/backend/src/models/entities/meta.ts index a6e4103a3..c24936c03 100644 --- a/packages/backend/src/models/entities/meta.ts +++ b/packages/backend/src/models/entities/meta.ts @@ -389,14 +389,14 @@ export class Meta { @Column('varchar', { length: 512, - default: 'https://codeberg.org/thatonecalculator/calckey', + default: 'https://codeberg.org/calckey/calckey', nullable: false, }) public repositoryUrl: string; @Column('varchar', { length: 512, - default: 'https://codeberg.org/thatonecalculator/calckey/issues/new', + default: 'https://codeberg.org/calckey/calckey/issues/new', nullable: true, }) public feedbackUrl: string | null; diff --git a/packages/backend/src/server/api/endpoints/latest-version.ts b/packages/backend/src/server/api/endpoints/latest-version.ts index c0b5cb498..b319da9e3 100644 --- a/packages/backend/src/server/api/endpoints/latest-version.ts +++ b/packages/backend/src/server/api/endpoints/latest-version.ts @@ -16,7 +16,7 @@ export const paramDef = { // eslint-disable-next-line import/no-default-export export default define(meta, paramDef, async () => { let tag_name; - await fetch('https://codeberg.org/api/v1/repos/thatonecalculator/calckey/releases?draft=false&pre-release=false&page=1&limit=1') + await fetch('https://codeberg.org/api/v1/repos/calckey/calckey/releases?draft=false&pre-release=false&page=1&limit=1') .then((response) => response.json()) .then((data) => { tag_name = data[0].tag_name; diff --git a/packages/backend/src/server/api/endpoints/meta.ts b/packages/backend/src/server/api/endpoints/meta.ts index ca7edc352..f61236fa0 100644 --- a/packages/backend/src/server/api/endpoints/meta.ts +++ b/packages/backend/src/server/api/endpoints/meta.ts @@ -57,12 +57,12 @@ export const meta = { repositoryUrl: { type: 'string', optional: false, nullable: false, - default: 'https://codeberg.org/thatonecalculator/calckey', + default: 'https://codeberg.org/calckey/calckey', }, feedbackUrl: { type: 'string', optional: false, nullable: false, - default: 'https://codeberg.org/thatonecalculator/calckey/issues', + default: 'https://codeberg.org/calckey/calckey/issues', }, defaultDarkTheme: { type: 'string', diff --git a/packages/backend/src/server/api/endpoints/patrons.ts b/packages/backend/src/server/api/endpoints/patrons.ts index de6632fb9..bc1fcc5c9 100644 --- a/packages/backend/src/server/api/endpoints/patrons.ts +++ b/packages/backend/src/server/api/endpoints/patrons.ts @@ -17,7 +17,7 @@ export const paramDef = { // eslint-disable-next-line import/no-default-export export default define(meta, paramDef, async () => { let patrons; - await fetch('https://codeberg.org/thatonecalculator/calckey/raw/branch/develop/patrons.json') + await fetch('https://codeberg.org/calckey/calckey/raw/branch/develop/patrons.json') .then((response) => response.json()) .then((data) => { patrons = data['patrons']; diff --git a/packages/backend/src/server/api/openapi/gen-spec.ts b/packages/backend/src/server/api/openapi/gen-spec.ts index 18473d79b..e49f5e8d0 100644 --- a/packages/backend/src/server/api/openapi/gen-spec.ts +++ b/packages/backend/src/server/api/openapi/gen-spec.ts @@ -15,7 +15,7 @@ export function genOpenapiSpec() { externalDocs: { description: 'Repository', - url: 'https://codeberg.org/thatonecalculator/calckey', + url: 'https://codeberg.org/calckey/calckey', }, servers: [{ @@ -95,7 +95,7 @@ export function genOpenapiSpec() { description: desc, externalDocs: { description: 'Source code', - url: `https://codeberg.org/thatonecalculator/calckey/src/branch/develop/packages/backend/src/server/api/endpoints/${endpoint.name}.ts`, + url: `https://codeberg.org/calckey/calckey/src/branch/develop/packages/backend/src/server/api/endpoints/${endpoint.name}.ts`, }, tags: endpoint.meta.tags || undefined, security, diff --git a/packages/backend/src/server/web/boot.js b/packages/backend/src/server/web/boot.js index 0342603c6..9da4cfb16 100644 --- a/packages/backend/src/server/web/boot.js +++ b/packages/backend/src/server/web/boot.js @@ -24,7 +24,7 @@ //#region Detect language & fetch translations const v = localStorage.getItem('v') || VERSION; - + const supportedLangs = LANGS; let lang = localStorage.getItem('lang'); if (lang == null || !supportedLangs.includes(lang)) { diff --git a/packages/backend/src/server/web/views/base.pug b/packages/backend/src/server/web/views/base.pug index 4dc871457..25c2cb38e 100644 --- a/packages/backend/src/server/web/views/base.pug +++ b/packages/backend/src/server/web/views/base.pug @@ -16,7 +16,7 @@ doctype html Thank you for using Calckey! If you are reading this message... how about joining the development? - https://codeberg.org/thatonecalculator/calckey + https://codeberg.org/calckey/calckey html @@ -41,11 +41,9 @@ html link(rel='stylesheet' href=`/static-assets/instance.css?${ timestamp }`) link(rel='modulepreload' href=`/assets/${clientEntry.file}`) - each href in clientEntry.css - link(rel='preload' href=`/assets/${href}` as='style') - - each href in clientEntry.css - link(rel='preload' href=`/assets/${href}` as='style') + if Array.isArray(clientEntry.css) + each href in clientEntry.css + link(rel='stylesheet' href=`/assets/${href}`) title block title diff --git a/packages/backend/src/services/drive/add-file.ts b/packages/backend/src/services/drive/add-file.ts index a790fd510..47b19e23a 100644 --- a/packages/backend/src/services/drive/add-file.ts +++ b/packages/backend/src/services/drive/add-file.ts @@ -217,8 +217,10 @@ export async function generateAlts(path: string, type: string, generateWeb: bool logger.info('creating web image'); try { - if (['image/jpeg', 'image/webp'].includes(type)) { + if (['image/jpeg'].includes(type)) { webpublic = await convertSharpToJpeg(img, 2048, 2048); + } else if (['image/webp'].includes(type)) { + webpublic = await convertSharpToPng(img, 2048, 2048); } else if (['image/png'].includes(type)) { webpublic = await convertSharpToPng(img, 2048, 2048); } else if (['image/svg+xml'].includes(type)) { diff --git a/packages/client/package.json b/packages/client/package.json index d8d57ddde..8aaece884 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -12,7 +12,7 @@ "@rollup/plugin-json": "4.1.0", "@rollup/pluginutils": "^4.2.1", "@syuilo/aiscript": "0.11.1", - "@vitejs/plugin-vue": "3.2.0", + "@vitejs/plugin-vue": "4.0.0", "@vue/compiler-sfc": "3.2.45", "autobind-decorator": "2.4.0", "autosize": "5.0.2", @@ -20,7 +20,7 @@ "broadcast-channel": "4.18.1", "browser-image-resizer": "https://github.com/misskey-dev/browser-image-resizer.git#commit=0380d12c8e736788ea7f4e6e985175521ea7b23c", "calckey-js": "^0.0.17", - "chart.js": "4.0.1", + "chart.js": "4.1.1", "chartjs-adapter-date-fns": "2.0.1", "chartjs-plugin-gradient": "0.5.1", "chartjs-plugin-zoom": "1.2.1", @@ -31,33 +31,33 @@ "eventemitter3": "4.0.7", "idb-keyval": "6.2.0", "insert-text-at-cursor": "0.3.0", - "json5": "2.2.1", - "katex": "0.16.3", + "json5": "2.2.2", + "katex": "0.16.4", "matter-js": "0.18.0", "mfm-js": "0.23.0", - "photoswipe": "5.3.3", + "photoswipe": "5.3.4", "prismjs": "1.29.0", "punycode": "2.1.1", "querystring": "0.2.1", "rndstr": "1.0.0", "s-age": "1.1.2", - "sass": "1.56.1", + "sass": "1.57.0", "seedrandom": "3.0.5", "strict-event-emitter-types": "2.0.0", "stringz": "2.1.0", - "swiper": "^8.4.4", + "swiper": "^8.4.5", "syuilo-password-strength": "0.0.1", "textarea-caret": "3.1.0", "three": "0.146.0", "throttle-debounce": "5.0.0", "tinycolor2": "1.4.2", - "tsc-alias": "1.7.1", - "tsconfig-paths": "4.1.0", + "tsc-alias": "1.8.2", + "tsconfig-paths": "4.1.1", "twemoji-parser": "14.0.0", - "typescript": "4.9.3", + "typescript": "4.9.4", "uuid": "9.0.0", - "vanilla-tilt": "1.7.3", - "vite": "^3.2.4", + "vanilla-tilt": "1.8.0", + "vite": "^4.0.2", "vue": "3.2.45", "vue-isyourpasswordsafe": "^2.0.0", "vue-plyr": "^7.0.0", @@ -76,14 +76,14 @@ "@types/throttle-debounce": "5.0.0", "@types/tinycolor2": "1.4.3", "@types/uuid": "8.3.4", - "@typescript-eslint/eslint-plugin": "5.43.0", - "@typescript-eslint/parser": "5.43.0", + "@typescript-eslint/eslint-plugin": "5.46.1", + "@typescript-eslint/parser": "5.46.1", "cross-env": "7.0.3", "cypress": "10.11.0", - "eslint": "8.28.0", + "eslint": "8.30.0", "eslint-plugin-import": "2.26.0", - "eslint-plugin-vue": "9.7.0", - "rollup": "2.79.1", - "start-server-and-test": "1.14.0" + "eslint-plugin-vue": "9.8.0", + "rollup": "3.7.5", + "start-server-and-test": "1.15.2" } } diff --git a/packages/client/src/components/MkMoved.vue b/packages/client/src/components/MkMoved.vue index 9c55d62ef..e9be9a079 100644 --- a/packages/client/src/components/MkMoved.vue +++ b/packages/client/src/components/MkMoved.vue @@ -21,7 +21,7 @@ defineProps<{ padding: 16px; font-size: 90%; background: var(--infoWarnBg); - color: var(--infoWarnFg); + color: var(--error); border-radius: var(--radius); > .link { diff --git a/packages/client/src/components/MkStarButton.vue b/packages/client/src/components/MkStarButton.vue index 4902b7428..5d4778751 100644 --- a/packages/client/src/components/MkStarButton.vue +++ b/packages/client/src/components/MkStarButton.vue @@ -1,6 +1,12 @@ @@ -9,6 +15,7 @@ import type { Note } from 'calckey-js/built/entities'; import Ripple from '@/components/MkRipple.vue'; import { pleaseLogin } from '@/scripts/please-login'; import * as os from '@/os'; +import { defaultStore } from '@/store'; import { i18n } from '@/i18n'; const props = defineProps<{ @@ -19,7 +26,7 @@ function star(ev?: MouseEvent): void { pleaseLogin(); os.api('notes/reactions/create', { noteId: props.note.id, - reaction: '⭐', + reaction: defaultStore.state.woozyMode === true ? '🥴' : '⭐', }); const el = ev && (ev.currentTarget ?? ev.target) as HTMLElement | null | undefined; if (el) { diff --git a/packages/client/src/components/MkUpdated.vue b/packages/client/src/components/MkUpdated.vue index 2c08a02cc..2cc294f4d 100644 --- a/packages/client/src/components/MkUpdated.vue +++ b/packages/client/src/components/MkUpdated.vue @@ -2,7 +2,7 @@
{{ i18n.ts.misskeyUpdated }}
-
✨{{ version }}🚀
+
✨ {{ version }} 🚀
{{ i18n.ts.whatIsNew }} {{ i18n.ts.gotIt }}
@@ -21,7 +21,7 @@ const modal = ref>(); const whatIsNew = () => { modal.value.close(); - window.open('https://codeberg.org/thatonecalculator/calckey/releases', '_blank'); + window.open('https://codeberg.org/calckey/calckey/releases', '_blank'); }; diff --git a/packages/client/src/init.ts b/packages/client/src/init.ts index 8bff608e7..d25fca8af 100644 --- a/packages/client/src/init.ts +++ b/packages/client/src/init.ts @@ -2,6 +2,9 @@ * Client entry point */ +// https://vitejs.dev/config/build-options.html#build-modulepreload +import 'vite/modulepreload-polyfill'; + import '@/style.scss'; import '@/icons.scss'; diff --git a/packages/client/src/pages/about-calckey.vue b/packages/client/src/pages/about-calckey.vue index 1103eb70d..89975ce0b 100644 --- a/packages/client/src/pages/about-calckey.vue +++ b/packages/client/src/pages/about-calckey.vue @@ -12,14 +12,14 @@
- {{ i18n.ts._aboutMisskey.about }}
{{ i18n.ts.learnMore }} + {{ i18n.ts._aboutMisskey.about }}
{{ i18n.ts.learnMore }}
I #Calckey
- + diff --git a/packages/client/src/pages/about.vue b/packages/client/src/pages/about.vue index 017603757..1b0e0380a 100644 --- a/packages/client/src/pages/about.vue +++ b/packages/client/src/pages/about.vue @@ -14,7 +14,7 @@
- +
{{ $instance.name || host }}
@@ -109,17 +109,21 @@ import { i18n } from '@/i18n'; import { definePageMetadata } from '@/scripts/page-metadata'; import { deviceKind } from '@/scripts/device-kind'; import { iAmModerator } from '@/account'; +import { instance } from '@/instance'; import { defaultStore } from '@/store'; import 'swiper/scss'; import 'swiper/scss/virtual'; -const props = withDefaults(defineProps<{ +withDefaults(defineProps<{ initialTab?: string; }>(), { initialTab: 'overview', }); let stats = $ref(null); +let instanceIcon = $ref(); +let instanceIconAnimation = 'none'; +let iconClicks = 0; let tabs = ['overview', 'emojis', 'charts']; let tab = $ref(tabs[0]); watch($$(tab), () => (syncSlide(tabs.indexOf(tab)))); @@ -164,6 +168,39 @@ definePageMetadata(computed(() => ({ icon: 'ph-info-bold ph-lg', }))); +async function sleep(seconds) { + return new Promise((resolve) => setTimeout(resolve, seconds * 1000)); +} + +onMounted(() => { + if (defaultStore.state.woozyMode) { + instanceIcon.src = '/static-assets/woozy.png'; + } +}); + + +function easterEgg() { + iconClicks++; + instanceIconAnimation = 'noAnimation'; + console.log(instanceIconAnimation); + sleep(0.1); + const normalizedCount = (iconClicks % 3) + 1; + instanceIconAnimation = `shake${normalizedCount}`; + if (iconClicks % 3 === 0) { + defaultStore.state.woozyMode = !defaultStore.state.woozyMode; + sleep(0.4); + instanceIconAnimation = 'noAnimation'; + instanceIconAnimation = 'doSpinY'; + console.log(instanceIconAnimation); + if (iconClicks % 6 === 0) { + instanceIcon.src = instance.iconUrl || instance.faviconUrl || '/favicon.ico' + } + else { + instanceIcon.src = '/static-assets/woozy.png'; + } + } +} + let swiperRef = null; function setSwiperRef(swiper) { @@ -178,9 +215,57 @@ function onSlideChange() { function syncSlide(index) { swiperRef.slideTo(index); } +