Merge pull request 'develop' (#9252) from develop into main
Reviewed-on: https://codeberg.org/calckey/calckey/pulls/9252
This commit is contained in:
commit
17da14c659
|
@ -4,6 +4,9 @@
|
||||||
|
|
||||||
# Intelij-IDEA
|
# Intelij-IDEA
|
||||||
/.idea
|
/.idea
|
||||||
|
packages/backend/.idea/backend.iml
|
||||||
|
packages/backend/.idea/modules.xml
|
||||||
|
packages/backend/.idea/vcs.xml
|
||||||
|
|
||||||
# Node.js
|
# Node.js
|
||||||
node_modules
|
node_modules
|
||||||
|
@ -33,6 +36,9 @@ coverage
|
||||||
!/.config/example.yml
|
!/.config/example.yml
|
||||||
!/.config/docker_example.env
|
!/.config/docker_example.env
|
||||||
|
|
||||||
|
#docker dev config
|
||||||
|
/dev/docker-compose.yml
|
||||||
|
|
||||||
# misskey
|
# misskey
|
||||||
/build
|
/build
|
||||||
built
|
built
|
||||||
|
@ -59,8 +65,3 @@ packages/backend/assets/instance.css
|
||||||
*.blend3
|
*.blend3
|
||||||
*.blend4
|
*.blend4
|
||||||
*.blend5
|
*.blend5
|
||||||
|
|
||||||
#intelij stuff
|
|
||||||
packages/backend/.idea/backend.iml
|
|
||||||
packages/backend/.idea/modules.xml
|
|
||||||
packages/backend/.idea/vcs.xml
|
|
||||||
|
|
|
@ -14,4 +14,4 @@ matrix:
|
||||||
- 19.2.0
|
- 19.2.0
|
||||||
|
|
||||||
branches:
|
branches:
|
||||||
include: [ master, develop, feature/* ]
|
include: [ main, develop, feature/* ]
|
||||||
|
|
|
@ -4,6 +4,7 @@ pipeline:
|
||||||
commands:
|
commands:
|
||||||
- cp .config/ci.yml .config/default.yml
|
- cp .config/ci.yml .config/default.yml
|
||||||
- corepack enable
|
- corepack enable
|
||||||
|
- yarn set version berry
|
||||||
- yarn install
|
- yarn install
|
||||||
- yarn build
|
- yarn build
|
||||||
- yarn migrate
|
- yarn migrate
|
||||||
|
@ -24,4 +25,4 @@ matrix:
|
||||||
- latest
|
- latest
|
||||||
|
|
||||||
branches:
|
branches:
|
||||||
include: [ master, develop, feature/* ]
|
include: [ main, develop, feature/* ]
|
||||||
|
|
|
@ -8,4 +8,4 @@ pipeline:
|
||||||
no_push: true
|
no_push: true
|
||||||
|
|
||||||
branches:
|
branches:
|
||||||
include: [ master, develop ]
|
include: [ main, develop ]
|
||||||
|
|
|
@ -99,7 +99,8 @@
|
||||||
- Undo renote button inside original note
|
- Undo renote button inside original note
|
||||||
- Custom locales
|
- Custom locales
|
||||||
- Obliteration of Ai-chan
|
- 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)
|
- MissV: [fix Misskey Forkbomb](https://code.vtopia.live/Vtopia/MissV/commit/40b23c070bd4adbb3188c73546c6c625138fb3c1)
|
||||||
- [Make showing ads optional](https://github.com/misskey-dev/misskey/pull/8996)
|
- [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)
|
- [Tapping avatar in mobile opens account modal](https://github.com/misskey-dev/misskey/pull/9056)
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
# Contribution guide
|
# 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**
|
# Translations
|
||||||
> 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.\
|
You can contribute without knowing how to code by helping translate here:
|
||||||
> 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.
|
[![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
|
## Roadmap
|
||||||
See [ROADMAP.md](./ROADMAP.md)
|
See [ROADMAP.md](./ROADMAP.md)
|
||||||
|
|
|
@ -17,7 +17,7 @@ RUN yarn plugin import workspace-tools
|
||||||
|
|
||||||
# Install Dependencies
|
# Install Dependencies
|
||||||
RUN yarn install
|
RUN yarn install
|
||||||
RUN yarn build
|
RUN yarn rebuild
|
||||||
|
|
||||||
# Remove git files
|
# Remove git files
|
||||||
RUN rm -rf .git
|
RUN rm -rf .git
|
||||||
|
|
17
README.md
17
README.md
|
@ -5,7 +5,11 @@
|
||||||
|
|
||||||
**🌎 **[Calckey](https://i.calckey.cloud/)** is an open source, decentralized social media platform that's free forever! 🚀**
|
**🌎 **[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/)
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -45,6 +49,7 @@
|
||||||
- 📜 Instance list: <https://calckey.fediverse.observer/list>
|
- 📜 Instance list: <https://calckey.fediverse.observer/list>
|
||||||
- 📖 JoinFediverse Wiki: <https://joinfediverse.wiki/What_is_Calckey%3F>
|
- 📖 JoinFediverse Wiki: <https://joinfediverse.wiki/What_is_Calckey%3F>
|
||||||
- 🐋 Docker Hub: <https://hub.docker.com/r/thatonecalculator/calckey>
|
- 🐋 Docker Hub: <https://hub.docker.com/r/thatonecalculator/calckey>
|
||||||
|
- ✍️ Weblate: <https://hosted.weblate.org/engage/calckey/>
|
||||||
|
|
||||||
# 🌠 Getting started
|
# 🌠 Getting started
|
||||||
|
|
||||||
|
@ -59,13 +64,13 @@ This guide will work for both **starting from scratch** and **migrating from Mis
|
||||||
|
|
||||||
### 😗 Optional dependencies
|
### 😗 Optional dependencies
|
||||||
|
|
||||||
- 📗 [FFmpeg](https://ffmpeg.org/) for video transcoding
|
- [FFmpeg](https://ffmpeg.org/) for video transcoding
|
||||||
- 🔍 [ElasticSearch](https://www.elastic.co/elasticsearch/) for full-text search
|
- [ElasticSearch](https://www.elastic.co/elasticsearch/) for full-text search
|
||||||
- OpenSearch/Sonic are not supported as of right now
|
- 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/)
|
- 🛰️ [pm2](https://pm2.io/)
|
||||||
- 🐳 [Docker](https://docker.com)
|
- 🐳 [Docker](https://docker.com)
|
||||||
- 📐 Service manager (systemd, openrc, etc)
|
- Service manager (systemd, openrc, etc)
|
||||||
|
|
||||||
### 🏗️ Build dependencies
|
### 🏗️ Build dependencies
|
||||||
|
|
||||||
|
@ -77,7 +82,7 @@ This guide will work for both **starting from scratch** and **migrating from Mis
|
||||||
## 👀 Get folder ready
|
## 👀 Get folder ready
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://codeberg.org/thatonecalculator/calckey.git
|
git clone https://codeberg.org/calckey/calckey.git
|
||||||
cd calckey/
|
cd calckey/
|
||||||
# git checkout main # if you want only stable versions
|
# git checkout main # if you want only stable versions
|
||||||
```
|
```
|
||||||
|
|
|
@ -4,6 +4,7 @@ services:
|
||||||
web:
|
web:
|
||||||
image: docker.io/thatonecalculator/calckey
|
image: docker.io/thatonecalculator/calckey
|
||||||
build: ..
|
build: ..
|
||||||
|
container_name: calckey_web
|
||||||
restart: always
|
restart: always
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
|
@ -13,12 +14,14 @@ services:
|
||||||
- "3000:3000"
|
- "3000:3000"
|
||||||
networks:
|
networks:
|
||||||
- network
|
- network
|
||||||
|
# - web
|
||||||
volumes:
|
volumes:
|
||||||
- ../files:/calckey/files
|
- ../files:/calckey/files
|
||||||
- ../.config:/calckey/.config:ro
|
- ../.config:/calckey/.config:ro
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
restart: always
|
restart: always
|
||||||
|
container_name: calckey_redis
|
||||||
image: docker.io/redis:7.0-alpine
|
image: docker.io/redis:7.0-alpine
|
||||||
networks:
|
networks:
|
||||||
- network
|
- network
|
||||||
|
@ -27,7 +30,8 @@ services:
|
||||||
|
|
||||||
db:
|
db:
|
||||||
restart: always
|
restart: always
|
||||||
image: docker.io/postgres:12.2-alpine
|
image: docker.io/postgres:13.9-alpine
|
||||||
|
container_name: calckey_db
|
||||||
networks:
|
networks:
|
||||||
- network
|
- network
|
||||||
env_file:
|
env_file:
|
||||||
|
@ -48,3 +52,6 @@ services:
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
network:
|
network:
|
||||||
|
# web:
|
||||||
|
# external:
|
||||||
|
# name: web
|
|
@ -1,22 +1,16 @@
|
||||||
# 🐳 Docker Compose for Development
|
# 🐳 Running a Calckey instance with Docker
|
||||||
|
|
||||||
```sh
|
|
||||||
cd dev/
|
|
||||||
docker-compose build
|
|
||||||
docker-compose run --rm web yarn run init
|
|
||||||
docker-compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
# Running a Calckey instance with Docker
|
|
||||||
|
|
||||||
## Pre-built docker container
|
## Pre-built docker container
|
||||||
[thatonecalculator/calckey](https://hub.docker.com/r/thatonecalculator/calckey)
|
[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/docker.env (**db config settings**)
|
||||||
- .config/default.yml (**calckey instance settings**)
|
- .config/default.yml (**calckey instance settings**)
|
||||||
|
|
||||||
## configuring calckey
|
## Configuring
|
||||||
|
|
||||||
Rename the files:
|
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.
|
Everything else can be left as-is.
|
||||||
|
|
||||||
## Running docker-compose
|
## 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.
|
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:
|
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).
|
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
|
## Docker for development
|
||||||
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.
|
|
||||||
|
```sh
|
||||||
|
cd dev/
|
||||||
|
docker-compose build
|
||||||
|
docker-compose run --rm web yarn run init
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
|
@ -3,6 +3,7 @@ version: "3"
|
||||||
services:
|
services:
|
||||||
web:
|
web:
|
||||||
image: docker.io/thatonecalculator/calckey
|
image: docker.io/thatonecalculator/calckey
|
||||||
|
container_name: calckey_web
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
|
@ -17,11 +18,12 @@ services:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
volumes:
|
volumes:
|
||||||
- ./files:/calckey/files
|
- ./files:/calckey/files
|
||||||
- ./config:/calckey/.config:ro
|
- ./.config:/calckey/.config:ro
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
image: docker.io/redis:7.0-alpine
|
image: docker.io/redis:7.0-alpine
|
||||||
|
container_name: calckey_redis
|
||||||
networks:
|
networks:
|
||||||
- calcnet
|
- calcnet
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -29,11 +31,12 @@ services:
|
||||||
|
|
||||||
db:
|
db:
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
image: docker.io/postgres:12.2-alpine
|
image: docker.io/postgres:13.9-alpine
|
||||||
|
container_name: calckey_db
|
||||||
networks:
|
networks:
|
||||||
- calcnet
|
- calcnet
|
||||||
env_file:
|
env_file:
|
||||||
- config/docker.env
|
- .config/docker.env
|
||||||
volumes:
|
volumes:
|
||||||
- ./db:/var/lib/postgresql/data
|
- ./db:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
|
|
@ -645,7 +645,7 @@ createNew: "নতুন"
|
||||||
optional: "প্রয়োজনীয় নয়"
|
optional: "প্রয়োজনীয় নয়"
|
||||||
createNewClip: "নতুন ক্লিপ তৈরি করুন"
|
createNewClip: "নতুন ক্লিপ তৈরি করুন"
|
||||||
public: "সর্বজনীন"
|
public: "সর্বজনীন"
|
||||||
i18nInfo: "Misskey স্বেচ্ছাসেবকদের দ্বারা বিভিন্ন ভাষায় অনুবাদ করা হচ্ছে। আপনি {link} এ গিয়ে অনুবাদে সহযোগিতা করতে পারেন।"
|
i18nInfo: "Calckey স্বেচ্ছাসেবকদের দ্বারা বিভিন্ন ভাষায় অনুবাদ করা হচ্ছে। আপনি {link} এ গিয়ে অনুবাদে সহযোগিতা করতে পারেন।"
|
||||||
manageAccessTokens: "অ্যাক্সেস টোকেন পরিচালনা করুন"
|
manageAccessTokens: "অ্যাক্সেস টোকেন পরিচালনা করুন"
|
||||||
accountInfo: "অ্যাকাউন্টের তথ্য"
|
accountInfo: "অ্যাকাউন্টের তথ্য"
|
||||||
notesCount: "নোটের সংখ্যা"
|
notesCount: "নোটের সংখ্যা"
|
||||||
|
|
|
@ -651,7 +651,7 @@ createNewClip: "Neuen Clip erstellen"
|
||||||
unclip: "Aus Clip entfernen"
|
unclip: "Aus Clip entfernen"
|
||||||
confirmToUnclipAlreadyClippedNote: "Diese Notiz ist bereits im \"{name}\" Clip enthalten. Möchtest du sie aus diesem Clip entfernen?"
|
confirmToUnclipAlreadyClippedNote: "Diese Notiz ist bereits im \"{name}\" Clip enthalten. Möchtest du sie aus diesem Clip entfernen?"
|
||||||
public: "Öffentlich"
|
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"
|
manageAccessTokens: "Zugriffstokens verwalten"
|
||||||
accountInfo: "Benutzerkonto-Informationen"
|
accountInfo: "Benutzerkonto-Informationen"
|
||||||
notesCount: "Anzahl der Notizen"
|
notesCount: "Anzahl der Notizen"
|
||||||
|
|
|
@ -653,7 +653,7 @@ createNewClip: "Create new clip"
|
||||||
unclip: "Unclip"
|
unclip: "Unclip"
|
||||||
confirmToUnclipAlreadyClippedNote: "This note is already part of the \"{name}\" clip. Do you want to remove it from this clip instead?"
|
confirmToUnclipAlreadyClippedNote: "This note is already part of the \"{name}\" clip. Do you want to remove it from this clip instead?"
|
||||||
public: "Public"
|
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"
|
manageAccessTokens: "Manage access tokens"
|
||||||
accountInfo: "Account Info"
|
accountInfo: "Account Info"
|
||||||
notesCount: "Number of notes"
|
notesCount: "Number of notes"
|
||||||
|
@ -925,7 +925,7 @@ migration: "Migration"
|
||||||
moveTo: "Move current account to new account"
|
moveTo: "Move current account to new account"
|
||||||
moveToLabel: "Account you're moving to:"
|
moveToLabel: "Account you're moving to:"
|
||||||
moveAccount: "Move account!"
|
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"
|
moveFrom: "Move to this account from an older account"
|
||||||
moveFromLabel: "Account you're moving from:"
|
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"
|
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"
|
contributors: "Main contributors"
|
||||||
allContributors: "All contributors"
|
allContributors: "All contributors"
|
||||||
source: "Source code"
|
source: "Source code"
|
||||||
translation: "Translate Misskey"
|
translation: "Translate Calckey"
|
||||||
donate: "Donate to Calckey"
|
donate: "Donate to Calckey"
|
||||||
morePatrons: "We also appreciate the support of many other helpers not listed here. Thank you! 🥰"
|
morePatrons: "We also appreciate the support of many other helpers not listed here. Thank you! 🥰"
|
||||||
patrons: "Calckey patrons"
|
patrons: "Calckey patrons"
|
||||||
|
|
|
@ -650,7 +650,7 @@ createNewClip: "Crear clip nuevo"
|
||||||
unclip: "Quitar clip"
|
unclip: "Quitar clip"
|
||||||
confirmToUnclipAlreadyClippedNote: "Esta nota ya está incluida en el clip \"{name}\". ¿Quiere quitar la nota del clip?"
|
confirmToUnclipAlreadyClippedNote: "Esta nota ya está incluida en el clip \"{name}\". ¿Quiere quitar la nota del clip?"
|
||||||
public: "Público"
|
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"
|
manageAccessTokens: "Administrar tokens de acceso"
|
||||||
accountInfo: "Información de la Cuenta"
|
accountInfo: "Información de la Cuenta"
|
||||||
notesCount: "Cantidad de notas"
|
notesCount: "Cantidad de notas"
|
||||||
|
|
|
@ -640,7 +640,7 @@ createNew: "Créer nouveau"
|
||||||
optional: "Facultatif"
|
optional: "Facultatif"
|
||||||
createNewClip: "Créer un nouveau clip"
|
createNewClip: "Créer un nouveau clip"
|
||||||
public: "Public"
|
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"
|
manageAccessTokens: "Gérer les jetons d'accès"
|
||||||
accountInfo: " Informations du compte "
|
accountInfo: " Informations du compte "
|
||||||
notesCount: "Nombre de notes"
|
notesCount: "Nombre de notes"
|
||||||
|
|
|
@ -647,7 +647,7 @@ createNewClip: "Buat klip baru"
|
||||||
unclip: "Batalkan klip"
|
unclip: "Batalkan klip"
|
||||||
confirmToUnclipAlreadyClippedNote: "Catatan ini sudah disertakan di klip \"{name}\". Yakin ingin membatalkan catatan dari klip ini?"
|
confirmToUnclipAlreadyClippedNote: "Catatan ini sudah disertakan di klip \"{name}\". Yakin ingin membatalkan catatan dari klip ini?"
|
||||||
public: "Publik"
|
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"
|
manageAccessTokens: "Kelola access token"
|
||||||
accountInfo: "Informasi akun"
|
accountInfo: "Informasi akun"
|
||||||
notesCount: "Jumlah catatan"
|
notesCount: "Jumlah catatan"
|
||||||
|
|
|
@ -637,7 +637,7 @@ createNew: "Crea nuov@"
|
||||||
optional: "Opzionale"
|
optional: "Opzionale"
|
||||||
createNewClip: "Nuova clip"
|
createNewClip: "Nuova clip"
|
||||||
public: "Pubblica"
|
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"
|
manageAccessTokens: "Gestisci token di accesso"
|
||||||
accountInfo: "Informazioni account"
|
accountInfo: "Informazioni account"
|
||||||
notesCount: "Conteggio note"
|
notesCount: "Conteggio note"
|
||||||
|
|
|
@ -653,7 +653,7 @@ createNewClip: "新しいクリップを作成"
|
||||||
unclip: "クリップ解除"
|
unclip: "クリップ解除"
|
||||||
confirmToUnclipAlreadyClippedNote: "このノートはすでにクリップ「{name}」に含まれています。ノートをこのクリップから除外しますか?"
|
confirmToUnclipAlreadyClippedNote: "このノートはすでにクリップ「{name}」に含まれています。ノートをこのクリップから除外しますか?"
|
||||||
public: "パブリック"
|
public: "パブリック"
|
||||||
i18nInfo: "Misskeyは有志によって様々な言語に翻訳されています。{link}で翻訳に協力できます。"
|
i18nInfo: "Calckeyは有志によって様々な言語に翻訳されています。{link}で翻訳に協力できます。"
|
||||||
manageAccessTokens: "アクセストークンの管理"
|
manageAccessTokens: "アクセストークンの管理"
|
||||||
accountInfo: "アカウント情報"
|
accountInfo: "アカウント情報"
|
||||||
notesCount: "ノートの数"
|
notesCount: "ノートの数"
|
||||||
|
|
|
@ -649,7 +649,7 @@ createNewClip: "新しいクリップを作るで"
|
||||||
unclip: "クリップ解除するで"
|
unclip: "クリップ解除するで"
|
||||||
confirmToUnclipAlreadyClippedNote: "このノートはすでにクリップ「{name}」に含まれとるで。ノートをこのクリップから除外したる?"
|
confirmToUnclipAlreadyClippedNote: "このノートはすでにクリップ「{name}」に含まれとるで。ノートをこのクリップから除外したる?"
|
||||||
public: "パブリック"
|
public: "パブリック"
|
||||||
i18nInfo: "Misskeyは有志によっていろんな言語に翻訳されとるで。{link}で翻訳に協力したってやー。"
|
i18nInfo: "Calckeyは有志によっていろんな言語に翻訳されとるで。{link}で翻訳に協力したってやー。"
|
||||||
manageAccessTokens: "アクセストークンの管理"
|
manageAccessTokens: "アクセストークンの管理"
|
||||||
accountInfo: "アカウント情報"
|
accountInfo: "アカウント情報"
|
||||||
notesCount: "ノートの数やで"
|
notesCount: "ノートの数やで"
|
||||||
|
|
|
@ -650,7 +650,7 @@ createNewClip: "새 클립 만들기"
|
||||||
unclip: "클립 해제"
|
unclip: "클립 해제"
|
||||||
confirmToUnclipAlreadyClippedNote: "이 노트는 이미 \"{name}\" 클립에 포함되어 있습니다. 클립을 해제하시겠습니까?"
|
confirmToUnclipAlreadyClippedNote: "이 노트는 이미 \"{name}\" 클립에 포함되어 있습니다. 클립을 해제하시겠습니까?"
|
||||||
public: "공개"
|
public: "공개"
|
||||||
i18nInfo: "Misskey는 자원봉사자들에 의해 다양한 언어로 번역되고 있습니다. {link}에서 번역에 참가할 수 있습니다."
|
i18nInfo: "Calckey는 자원봉사자들에 의해 다양한 언어로 번역되고 있습니다. {link}에서 번역에 참가할 수 있습니다."
|
||||||
manageAccessTokens: "액세스 토큰 관리"
|
manageAccessTokens: "액세스 토큰 관리"
|
||||||
accountInfo: "계정 정보"
|
accountInfo: "계정 정보"
|
||||||
notesCount: "노트 수"
|
notesCount: "노트 수"
|
||||||
|
@ -912,8 +912,8 @@ _ffVisibility:
|
||||||
private: "비공개"
|
private: "비공개"
|
||||||
_signup:
|
_signup:
|
||||||
almostThere: "거의 다 끝났습니다"
|
almostThere: "거의 다 끝났습니다"
|
||||||
emailAddressInfo: "당신이 사용하고 있는 이메일 주소를 입력해 주세요. 이메일 주소는 다른 유저에게 공개되지 않습니다."
|
emailAddressInfo: "당신이 사용하고 있는 이메일 주소를 입력해 주세요. 이메일 주소는 다른 유저에게 공개되지 않습니다."
|
||||||
emailSent: "입력하신 메일 주소({email})로 확인 메일을 보내드렸습니다. 가입을 완료하시려면 보내드린 메일에 있는 링크로 접속해 주세요."
|
emailSent: "입력하신 메일 주소({email})로 확인 메일을 보내드렸습니다. 가입을 완료하시려면 보내드린 메일에 있는 링크로 접속해 주세요."
|
||||||
_accountDelete:
|
_accountDelete:
|
||||||
accountDelete: "계정 삭제"
|
accountDelete: "계정 삭제"
|
||||||
mayTakeTime: "계정 삭제는 서버에 부하를 가하기 때문에, 작성한 콘텐츠나 업로드한 파일의 수가 많으면 완료까지 시간이 걸릴 수 있습니다."
|
mayTakeTime: "계정 삭제는 서버에 부하를 가하기 때문에, 작성한 콘텐츠나 업로드한 파일의 수가 많으면 완료까지 시간이 걸릴 수 있습니다."
|
||||||
|
|
|
@ -637,7 +637,7 @@ createNewClip: "Utwórz nowy klip"
|
||||||
unclip: "Odczep"
|
unclip: "Odczep"
|
||||||
confirmToUnclipAlreadyClippedNote: "Ten wpis jest już częścią klipu \"{name}\". Czy chcesz ją usunąć z tego klipu?"
|
confirmToUnclipAlreadyClippedNote: "Ten wpis jest już częścią klipu \"{name}\". Czy chcesz ją usunąć z tego klipu?"
|
||||||
public: "Publiczny"
|
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"
|
manageAccessTokens: "Zarządzaj tokenami dostępu"
|
||||||
accountInfo: "Informacje o koncie"
|
accountInfo: "Informacje o koncie"
|
||||||
notesCount: "Liczba wpisów"
|
notesCount: "Liczba wpisów"
|
||||||
|
|
|
@ -646,7 +646,7 @@ createNew: "Новый документ"
|
||||||
optional: "Необязательно"
|
optional: "Необязательно"
|
||||||
createNewClip: "Новая подборка"
|
createNewClip: "Новая подборка"
|
||||||
public: "Общедоступно"
|
public: "Общедоступно"
|
||||||
i18nInfo: "Misskey переводят на разные языки добровольцы со всего света. Ваша помощь тоже пригодится здесь: {link}."
|
i18nInfo: "Calckey переводят на разные языки добровольцы со всего света. Ваша помощь тоже пригодится здесь: {link}."
|
||||||
manageAccessTokens: "Управление токенами доступа"
|
manageAccessTokens: "Управление токенами доступа"
|
||||||
accountInfo: "Сведения об учётной записи"
|
accountInfo: "Сведения об учётной записи"
|
||||||
notesCount: "Количество заметок"
|
notesCount: "Количество заметок"
|
||||||
|
|
|
@ -649,7 +649,7 @@ createNewClip: "Vytvoriť nový klip"
|
||||||
unclip: "Odopnúť"
|
unclip: "Odopnúť"
|
||||||
confirmToUnclipAlreadyClippedNote: "Táto poznámka je už pripnutá ako \"{name}\". Naozaj ju chcete odopnúť?"
|
confirmToUnclipAlreadyClippedNote: "Táto poznámka je už pripnutá ako \"{name}\". Naozaj ju chcete odopnúť?"
|
||||||
public: "Verejné"
|
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"
|
manageAccessTokens: "Spravovať prístupové tokeny"
|
||||||
accountInfo: "Informácie o účte"
|
accountInfo: "Informácie o účte"
|
||||||
notesCount: "Počet poznámok"
|
notesCount: "Počet poznámok"
|
||||||
|
|
|
@ -650,7 +650,7 @@ createNewClip: "สร้างคลิปใหม่"
|
||||||
unclip: "ลบคลิป"
|
unclip: "ลบคลิป"
|
||||||
confirmToUnclipAlreadyClippedNote: "โน้ตนี้เป็นส่วนหนึ่งของคลิป \"{name}\" แล้ว คุณต้องการลบออกจากคลิปนี้แทนอย่างงั้นหรอ?"
|
confirmToUnclipAlreadyClippedNote: "โน้ตนี้เป็นส่วนหนึ่งของคลิป \"{name}\" แล้ว คุณต้องการลบออกจากคลิปนี้แทนอย่างงั้นหรอ?"
|
||||||
public: "สาธารณะ"
|
public: "สาธารณะ"
|
||||||
i18nInfo: "Misskey กำลังได้รับการแปลเป็นภาษาต่างๆ โดยอาสาสมัคร คุณสามารถช่วยเหลือได้ที่ {link}"
|
i18nInfo: "Calckey กำลังได้รับการแปลเป็นภาษาต่างๆ โดยอาสาสมัคร คุณสามารถช่วยเหลือได้ที่ {link}"
|
||||||
manageAccessTokens: "การจัดการโทเค็นการเข้าถึง"
|
manageAccessTokens: "การจัดการโทเค็นการเข้าถึง"
|
||||||
accountInfo: "ข้อมูลบัญชี"
|
accountInfo: "ข้อมูลบัญชี"
|
||||||
notesCount: "จำนวนของโน้ต"
|
notesCount: "จำนวนของโน้ต"
|
||||||
|
|
|
@ -645,7 +645,7 @@ createNew: "Створити новий"
|
||||||
optional: "Необов'язково"
|
optional: "Необов'язково"
|
||||||
createNewClip: "Створити нотатку"
|
createNewClip: "Створити нотатку"
|
||||||
public: "Публічний"
|
public: "Публічний"
|
||||||
i18nInfo: "Misskey перекладається на різні мови волонтерами. Ви можете допомогти: {link}"
|
i18nInfo: "Calckey перекладається на різні мови волонтерами. Ви можете допомогти: {link}"
|
||||||
manageAccessTokens: "Керування токенами доступу"
|
manageAccessTokens: "Керування токенами доступу"
|
||||||
accountInfo: "Інформація про акаунт"
|
accountInfo: "Інформація про акаунт"
|
||||||
notesCount: "Кількість нотаток"
|
notesCount: "Кількість нотаток"
|
||||||
|
|
|
@ -650,7 +650,7 @@ createNewClip: "Tạo một ghim mới"
|
||||||
unclip: "Bỏ ghim"
|
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?"
|
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"
|
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"
|
manageAccessTokens: "Tạo mã truy cập"
|
||||||
accountInfo: "Thông tin tài khoản"
|
accountInfo: "Thông tin tài khoản"
|
||||||
notesCount: "Số lượng tút"
|
notesCount: "Số lượng tút"
|
||||||
|
|
|
@ -650,7 +650,7 @@ createNewClip: "新建便签"
|
||||||
unclip: "移除便签"
|
unclip: "移除便签"
|
||||||
confirmToUnclipAlreadyClippedNote: "本帖已包含在便签\"{name}\"里。您想要将本帖从该便签中移除吗?"
|
confirmToUnclipAlreadyClippedNote: "本帖已包含在便签\"{name}\"里。您想要将本帖从该便签中移除吗?"
|
||||||
public: "公开"
|
public: "公开"
|
||||||
i18nInfo: "Misskey已经被志愿者们翻译成了各种语言。如果你也有兴趣,可以通过{link}帮助翻译。"
|
i18nInfo: "Calckey已经被志愿者们翻译成了各种语言。如果你也有兴趣,可以通过{link}帮助翻译。"
|
||||||
manageAccessTokens: "管理 Access Tokens"
|
manageAccessTokens: "管理 Access Tokens"
|
||||||
accountInfo: "账户信息"
|
accountInfo: "账户信息"
|
||||||
notesCount: "帖子数量"
|
notesCount: "帖子数量"
|
||||||
|
|
|
@ -650,7 +650,7 @@ createNewClip: "建立新摘錄"
|
||||||
unclip: "解除摘錄"
|
unclip: "解除摘錄"
|
||||||
confirmToUnclipAlreadyClippedNote: "此貼文已包含在摘錄「{name}」中。 你想將貼文從這個摘錄中排除嗎?"
|
confirmToUnclipAlreadyClippedNote: "此貼文已包含在摘錄「{name}」中。 你想將貼文從這個摘錄中排除嗎?"
|
||||||
public: "公開"
|
public: "公開"
|
||||||
i18nInfo: "Misskey已經被志願者們翻譯成各種語言版本,如果想要幫忙的話,可以進入{link}幫助翻譯。"
|
i18nInfo: "Calckey已經被志願者們翻譯成各種語言版本,如果想要幫忙的話,可以進入{link}幫助翻譯。"
|
||||||
manageAccessTokens: "管理存取權杖"
|
manageAccessTokens: "管理存取權杖"
|
||||||
accountInfo: "帳戶資訊"
|
accountInfo: "帳戶資訊"
|
||||||
notesCount: "貼文數量"
|
notesCount: "貼文數量"
|
||||||
|
|
16
package.json
16
package.json
|
@ -1,10 +1,10 @@
|
||||||
{
|
{
|
||||||
"name": "calckey",
|
"name": "calckey",
|
||||||
"version": "13.0.4",
|
"version": "13.0.5",
|
||||||
"codename": "aqua",
|
"codename": "aqua",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://codeberg.org/thatonecalculator/calckey.git"
|
"url": "https://codeberg.org/calckey/calckey.git"
|
||||||
},
|
},
|
||||||
"packageManager": "yarn@3.3.0",
|
"packageManager": "yarn@3.3.0",
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
],
|
],
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"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",
|
"build": "yarn workspaces foreach run build && yarn run gulp",
|
||||||
"start": "yarn workspace backend run start",
|
"start": "yarn workspace backend run start",
|
||||||
"start:test": "yarn workspace backend run start:test",
|
"start:test": "yarn workspace backend run start:test",
|
||||||
|
@ -45,12 +45,12 @@
|
||||||
"@bull-board/ui": "^4.6.4",
|
"@bull-board/ui": "^4.6.4",
|
||||||
"@tensorflow/tfjs": "^3.21.0",
|
"@tensorflow/tfjs": "^3.21.0",
|
||||||
"calckey-js": "^0.0.17",
|
"calckey-js": "^0.0.17",
|
||||||
"eslint": "^8.28.0",
|
"eslint": "^8.30.0",
|
||||||
"execa": "5.1.1",
|
"execa": "5.1.1",
|
||||||
"gulp": "4.0.2",
|
"gulp": "4.0.2",
|
||||||
"gulp-cssnano": "2.1.3",
|
"gulp-cssnano": "2.1.3",
|
||||||
"gulp-rename": "2.0.0",
|
"gulp-rename": "2.0.0",
|
||||||
"gulp-replace": "1.1.3",
|
"gulp-replace": "1.1.4",
|
||||||
"gulp-terser": "2.1.0",
|
"gulp-terser": "2.1.0",
|
||||||
"js-yaml": "4.1.0",
|
"js-yaml": "4.1.0",
|
||||||
"long": "^5.2.1",
|
"long": "^5.2.1",
|
||||||
|
@ -60,11 +60,11 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/gulp": "4.0.10",
|
"@types/gulp": "4.0.10",
|
||||||
"@types/gulp-rename": "2.0.1",
|
"@types/gulp-rename": "2.0.1",
|
||||||
"@typescript-eslint/parser": "5.43.0",
|
"@typescript-eslint/parser": "5.46.1",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"cypress": "10.11.0",
|
"cypress": "10.11.0",
|
||||||
"start-server-and-test": "1.14.0",
|
"start-server-and-test": "1.15.2",
|
||||||
"typescript": "4.9.3",
|
"typescript": "4.9.4",
|
||||||
"vue-eslint-parser": "^9.1.0"
|
"vue-eslint-parser": "^9.1.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
|
@ -3,13 +3,13 @@ export class calckey1658203170545 {
|
||||||
|
|
||||||
async up(queryRunner) {
|
async up(queryRunner) {
|
||||||
await queryRunner.query(`UPDATE meta SET "useStarForReactionFallback" = TRUE;`);
|
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 "repositoryUrl" = 'https://codeberg/calckey/calckey'`);
|
||||||
await queryRunner.query(`UPDATE meta SET "feedbackUrl" = 'https://codeberg/thatonecalculator/calckey/issues'`);
|
await queryRunner.query(`UPDATE meta SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`);
|
||||||
}
|
}
|
||||||
|
|
||||||
async down(queryRunner) {
|
async down(queryRunner) {
|
||||||
await queryRunner.query(`UPDATE meta SET "useStarForReactionFallback" = FALSE;`);
|
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 "repositoryUrl" = 'https://codeberg/calckey/calckey'`);
|
||||||
await queryRunner.query(`UPDATE meta SET "feedbackUrl" = 'https://codeberg/thatonecalculator/calckey/issues'`);
|
await queryRunner.query(`UPDATE meta SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,13 +3,13 @@ export class FixCalckey1658981842728 {
|
||||||
|
|
||||||
async up(queryRunner) {
|
async up(queryRunner) {
|
||||||
await queryRunner.query(`UPDATE "meta" SET "useStarForReactionFallback" = TRUE;`);
|
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 "repositoryUrl" = 'https://codeberg/calckey/calckey'`);
|
||||||
await queryRunner.query(`UPDATE "meta" SET "feedbackUrl" = 'https://codeberg/thatonecalculator/calckey/issues'`);
|
await queryRunner.query(`UPDATE "meta" SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`);
|
||||||
}
|
}
|
||||||
|
|
||||||
async down(queryRunner) {
|
async down(queryRunner) {
|
||||||
await queryRunner.query(`UPDATE "meta" SET "useStarForReactionFallback" = FALSE;`);
|
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 "repositoryUrl" = 'https://codeberg/calckey/calckey'`);
|
||||||
await queryRunner.query(`UPDATE "meta" SET "feedbackUrl" = 'https://codeberg/thatonecalculator/calckey/issues'`);
|
await queryRunner.query(`UPDATE "meta" SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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'`);
|
||||||
|
}
|
||||||
|
}
|
|
@ -37,14 +37,14 @@
|
||||||
"archiver": "5.3.1",
|
"archiver": "5.3.1",
|
||||||
"autobind-decorator": "2.4.0",
|
"autobind-decorator": "2.4.0",
|
||||||
"autwh": "0.1.0",
|
"autwh": "0.1.0",
|
||||||
"aws-sdk": "2.1258.0",
|
"aws-sdk": "2.1277.0",
|
||||||
"bcryptjs": "2.4.3",
|
"bcryptjs": "2.4.3",
|
||||||
"blurhash": "1.1.5",
|
"blurhash": "1.1.5",
|
||||||
"bull": "4.10.1",
|
"bull": "4.10.2",
|
||||||
"cacheable-lookup": "7.0.0",
|
"cacheable-lookup": "7.0.0",
|
||||||
"calckey-js": "^0.0.17",
|
"calckey-js": "^0.0.17",
|
||||||
"cbor": "8.1.0",
|
"cbor": "8.1.0",
|
||||||
"chalk": "5.1.2",
|
"chalk": "5.2.0",
|
||||||
"chalk-template": "0.4.0",
|
"chalk-template": "0.4.0",
|
||||||
"chokidar": "3.5.3",
|
"chokidar": "3.5.3",
|
||||||
"cli-highlight": "2.1.11",
|
"cli-highlight": "2.1.11",
|
||||||
|
@ -62,11 +62,11 @@
|
||||||
"ip-cidr": "3.0.11",
|
"ip-cidr": "3.0.11",
|
||||||
"is-svg": "4.3.2",
|
"is-svg": "4.3.2",
|
||||||
"js-yaml": "4.1.0",
|
"js-yaml": "4.1.0",
|
||||||
"jsdom": "20.0.2",
|
"jsdom": "20.0.3",
|
||||||
"json5": "2.2.1",
|
"json5": "2.2.2",
|
||||||
"json5-loader": "4.0.1",
|
"json5-loader": "4.0.1",
|
||||||
"jsonld": "6.0.0",
|
"jsonld": "6.0.0",
|
||||||
"jsrsasign": "10.6.0",
|
"jsrsasign": "10.6.1",
|
||||||
"koa": "2.13.4",
|
"koa": "2.13.4",
|
||||||
"koa-bodyparser": "4.3.0",
|
"koa-bodyparser": "4.3.0",
|
||||||
"koa-favicon": "2.1.0",
|
"koa-favicon": "2.1.0",
|
||||||
|
@ -78,7 +78,7 @@
|
||||||
"koa-views": "7.0.2",
|
"koa-views": "7.0.2",
|
||||||
"mfm-js": "0.23.0",
|
"mfm-js": "0.23.0",
|
||||||
"mime-types": "2.1.35",
|
"mime-types": "2.1.35",
|
||||||
"mocha": "10.1.0",
|
"mocha": "10.2.0",
|
||||||
"multer": "1.4.4-lts.1",
|
"multer": "1.4.4-lts.1",
|
||||||
"nested-property": "4.0.0",
|
"nested-property": "4.0.0",
|
||||||
"node-fetch": "3.3.0",
|
"node-fetch": "3.3.0",
|
||||||
|
@ -86,7 +86,7 @@
|
||||||
"nsfwjs": "2.4.2",
|
"nsfwjs": "2.4.2",
|
||||||
"oauth": "^0.10.0",
|
"oauth": "^0.10.0",
|
||||||
"os-utils": "0.0.14",
|
"os-utils": "0.0.14",
|
||||||
"parse5": "7.1.1",
|
"parse5": "7.1.2",
|
||||||
"pg": "8.8.0",
|
"pg": "8.8.0",
|
||||||
"private-ip": "2.3.4",
|
"private-ip": "2.3.4",
|
||||||
"probe-image-size": "7.2.3",
|
"probe-image-size": "7.2.3",
|
||||||
|
@ -97,14 +97,14 @@
|
||||||
"qrcode": "1.5.1",
|
"qrcode": "1.5.1",
|
||||||
"random-seed": "0.3.0",
|
"random-seed": "0.3.0",
|
||||||
"ratelimiter": "3.4.1",
|
"ratelimiter": "3.4.1",
|
||||||
"re2": "1.17.7",
|
"re2": "1.18.0",
|
||||||
"redis-lock": "0.1.4",
|
"redis-lock": "0.1.4",
|
||||||
"reflect-metadata": "0.1.13",
|
"reflect-metadata": "0.1.13",
|
||||||
"rename": "1.0.4",
|
"rename": "1.0.4",
|
||||||
"rndstr": "1.0.0",
|
"rndstr": "1.0.0",
|
||||||
"rss-parser": "3.12.0",
|
"rss-parser": "3.12.0",
|
||||||
"s-age": "1.1.2",
|
"s-age": "1.1.2",
|
||||||
"sanitize-html": "2.7.3",
|
"sanitize-html": "2.8.0",
|
||||||
"semver": "7.3.8",
|
"semver": "7.3.8",
|
||||||
"sharp": "0.31.2",
|
"sharp": "0.31.2",
|
||||||
"speakeasy": "2.0.0",
|
"speakeasy": "2.0.0",
|
||||||
|
@ -112,16 +112,16 @@
|
||||||
"stringz": "2.1.0",
|
"stringz": "2.1.0",
|
||||||
"summaly": "2.7.0",
|
"summaly": "2.7.0",
|
||||||
"syslog-pro": "1.0.0",
|
"syslog-pro": "1.0.0",
|
||||||
"systeminformation": "5.13.5",
|
"systeminformation": "5.16.6",
|
||||||
"tesseract.js": "^3.0.3",
|
"tesseract.js": "^3.0.3",
|
||||||
"tinycolor2": "1.4.2",
|
"tinycolor2": "1.4.2",
|
||||||
"tmp": "0.2.1",
|
"tmp": "0.2.1",
|
||||||
"ts-loader": "9.4.1",
|
"ts-loader": "9.4.2",
|
||||||
"ts-node": "10.9.1",
|
"ts-node": "10.9.1",
|
||||||
"tsc-alias": "1.7.1",
|
"tsc-alias": "1.8.2",
|
||||||
"tsconfig-paths": "4.1.0",
|
"tsconfig-paths": "4.1.1",
|
||||||
"twemoji-parser": "14.0.0",
|
"twemoji-parser": "14.0.0",
|
||||||
"typeorm": "0.3.10",
|
"typeorm": "0.3.11",
|
||||||
"ulid": "2.3.0",
|
"ulid": "2.3.0",
|
||||||
"unzipper": "0.10.11",
|
"unzipper": "0.10.11",
|
||||||
"uuid": "9.0.0",
|
"uuid": "9.0.0",
|
||||||
|
@ -139,7 +139,7 @@
|
||||||
"@types/fluent-ffmpeg": "2.1.20",
|
"@types/fluent-ffmpeg": "2.1.20",
|
||||||
"@types/js-yaml": "4.0.5",
|
"@types/js-yaml": "4.0.5",
|
||||||
"@types/jsdom": "20.0.1",
|
"@types/jsdom": "20.0.1",
|
||||||
"@types/jsonld": "1.5.7",
|
"@types/jsonld": "1.5.8",
|
||||||
"@types/jsrsasign": "10.5.4",
|
"@types/jsrsasign": "10.5.4",
|
||||||
"@types/koa": "2.13.5",
|
"@types/koa": "2.13.5",
|
||||||
"@types/koa-bodyparser": "4.3.10",
|
"@types/koa-bodyparser": "4.3.10",
|
||||||
|
@ -153,9 +153,9 @@
|
||||||
"@types/koa__multer": "2.0.4",
|
"@types/koa__multer": "2.0.4",
|
||||||
"@types/koa__router": "8.0.11",
|
"@types/koa__router": "8.0.11",
|
||||||
"@types/mocha": "9.1.1",
|
"@types/mocha": "9.1.1",
|
||||||
"@types/node": "18.11.9",
|
"@types/node": "18.11.17",
|
||||||
"@types/node-fetch": "3.0.3",
|
"@types/node-fetch": "3.0.3",
|
||||||
"@types/nodemailer": "6.4.6",
|
"@types/nodemailer": "6.4.7",
|
||||||
"@types/oauth": "0.9.1",
|
"@types/oauth": "0.9.1",
|
||||||
"@types/pug": "2.0.6",
|
"@types/pug": "2.0.6",
|
||||||
"@types/punycode": "2.1.0",
|
"@types/punycode": "2.1.0",
|
||||||
|
@ -164,7 +164,7 @@
|
||||||
"@types/ratelimiter": "3.4.4",
|
"@types/ratelimiter": "3.4.4",
|
||||||
"@types/redis": "4.0.11",
|
"@types/redis": "4.0.11",
|
||||||
"@types/rename": "1.0.4",
|
"@types/rename": "1.0.4",
|
||||||
"@types/sanitize-html": "2.6.2",
|
"@types/sanitize-html": "2.8.0",
|
||||||
"@types/semver": "7.3.13",
|
"@types/semver": "7.3.13",
|
||||||
"@types/sharp": "0.31.0",
|
"@types/sharp": "0.31.0",
|
||||||
"@types/sinonjs__fake-timers": "8.1.2",
|
"@types/sinonjs__fake-timers": "8.1.2",
|
||||||
|
@ -175,12 +175,12 @@
|
||||||
"@types/web-push": "3.3.2",
|
"@types/web-push": "3.3.2",
|
||||||
"@types/websocket": "1.0.5",
|
"@types/websocket": "1.0.5",
|
||||||
"@types/ws": "8.5.3",
|
"@types/ws": "8.5.3",
|
||||||
"@typescript-eslint/eslint-plugin": "5.43.0",
|
"@typescript-eslint/eslint-plugin": "5.46.1",
|
||||||
"@typescript-eslint/parser": "5.43.0",
|
"@typescript-eslint/parser": "5.46.1",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"eslint": "8.28.0",
|
"eslint": "8.30.0",
|
||||||
"eslint-plugin-import": "2.26.0",
|
"eslint-plugin-import": "2.26.0",
|
||||||
"execa": "6.1.0",
|
"execa": "6.1.0",
|
||||||
"typescript": "4.9.3"
|
"typescript": "4.9.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ function greet() {
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
console.log(' Calckey is an open-source decentralized microblogging platform.');
|
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('');
|
||||||
console.log(chalkTemplate`--- ${os.hostname()} {gray (PID: ${process.pid.toString()})} ---`);
|
console.log(chalkTemplate`--- ${os.hostname()} {gray (PID: ${process.pid.toString()})} ---`);
|
||||||
|
|
|
@ -389,14 +389,14 @@ export class Meta {
|
||||||
|
|
||||||
@Column('varchar', {
|
@Column('varchar', {
|
||||||
length: 512,
|
length: 512,
|
||||||
default: 'https://codeberg.org/thatonecalculator/calckey',
|
default: 'https://codeberg.org/calckey/calckey',
|
||||||
nullable: false,
|
nullable: false,
|
||||||
})
|
})
|
||||||
public repositoryUrl: string;
|
public repositoryUrl: string;
|
||||||
|
|
||||||
@Column('varchar', {
|
@Column('varchar', {
|
||||||
length: 512,
|
length: 512,
|
||||||
default: 'https://codeberg.org/thatonecalculator/calckey/issues/new',
|
default: 'https://codeberg.org/calckey/calckey/issues/new',
|
||||||
nullable: true,
|
nullable: true,
|
||||||
})
|
})
|
||||||
public feedbackUrl: string | null;
|
public feedbackUrl: string | null;
|
||||||
|
|
|
@ -16,7 +16,7 @@ export const paramDef = {
|
||||||
// eslint-disable-next-line import/no-default-export
|
// eslint-disable-next-line import/no-default-export
|
||||||
export default define(meta, paramDef, async () => {
|
export default define(meta, paramDef, async () => {
|
||||||
let tag_name;
|
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((response) => response.json())
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
tag_name = data[0].tag_name;
|
tag_name = data[0].tag_name;
|
||||||
|
|
|
@ -57,12 +57,12 @@ export const meta = {
|
||||||
repositoryUrl: {
|
repositoryUrl: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
optional: false, nullable: false,
|
optional: false, nullable: false,
|
||||||
default: 'https://codeberg.org/thatonecalculator/calckey',
|
default: 'https://codeberg.org/calckey/calckey',
|
||||||
},
|
},
|
||||||
feedbackUrl: {
|
feedbackUrl: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
optional: false, nullable: false,
|
optional: false, nullable: false,
|
||||||
default: 'https://codeberg.org/thatonecalculator/calckey/issues',
|
default: 'https://codeberg.org/calckey/calckey/issues',
|
||||||
},
|
},
|
||||||
defaultDarkTheme: {
|
defaultDarkTheme: {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
|
|
|
@ -17,7 +17,7 @@ export const paramDef = {
|
||||||
// eslint-disable-next-line import/no-default-export
|
// eslint-disable-next-line import/no-default-export
|
||||||
export default define(meta, paramDef, async () => {
|
export default define(meta, paramDef, async () => {
|
||||||
let patrons;
|
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((response) => response.json())
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
patrons = data['patrons'];
|
patrons = data['patrons'];
|
||||||
|
|
|
@ -15,7 +15,7 @@ export function genOpenapiSpec() {
|
||||||
|
|
||||||
externalDocs: {
|
externalDocs: {
|
||||||
description: 'Repository',
|
description: 'Repository',
|
||||||
url: 'https://codeberg.org/thatonecalculator/calckey',
|
url: 'https://codeberg.org/calckey/calckey',
|
||||||
},
|
},
|
||||||
|
|
||||||
servers: [{
|
servers: [{
|
||||||
|
@ -95,7 +95,7 @@ export function genOpenapiSpec() {
|
||||||
description: desc,
|
description: desc,
|
||||||
externalDocs: {
|
externalDocs: {
|
||||||
description: 'Source code',
|
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,
|
tags: endpoint.meta.tags || undefined,
|
||||||
security,
|
security,
|
||||||
|
|
|
@ -16,7 +16,7 @@ doctype html
|
||||||
|
|
||||||
Thank you for using Calckey!
|
Thank you for using Calckey!
|
||||||
If you are reading this message... how about joining the development?
|
If you are reading this message... how about joining the development?
|
||||||
https://codeberg.org/thatonecalculator/calckey
|
https://codeberg.org/calckey/calckey
|
||||||
|
|
||||||
html
|
html
|
||||||
|
|
||||||
|
@ -41,11 +41,9 @@ html
|
||||||
link(rel='stylesheet' href=`/static-assets/instance.css?${ timestamp }`)
|
link(rel='stylesheet' href=`/static-assets/instance.css?${ timestamp }`)
|
||||||
link(rel='modulepreload' href=`/assets/${clientEntry.file}`)
|
link(rel='modulepreload' href=`/assets/${clientEntry.file}`)
|
||||||
|
|
||||||
|
if Array.isArray(clientEntry.css)
|
||||||
each href in clientEntry.css
|
each href in clientEntry.css
|
||||||
link(rel='preload' href=`/assets/${href}` as='style')
|
link(rel='stylesheet' href=`/assets/${href}`)
|
||||||
|
|
||||||
each href in clientEntry.css
|
|
||||||
link(rel='preload' href=`/assets/${href}` as='style')
|
|
||||||
|
|
||||||
title
|
title
|
||||||
block title
|
block title
|
||||||
|
|
|
@ -217,8 +217,10 @@ export async function generateAlts(path: string, type: string, generateWeb: bool
|
||||||
logger.info('creating web image');
|
logger.info('creating web image');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (['image/jpeg', 'image/webp'].includes(type)) {
|
if (['image/jpeg'].includes(type)) {
|
||||||
webpublic = await convertSharpToJpeg(img, 2048, 2048);
|
webpublic = await convertSharpToJpeg(img, 2048, 2048);
|
||||||
|
} else if (['image/webp'].includes(type)) {
|
||||||
|
webpublic = await convertSharpToPng(img, 2048, 2048);
|
||||||
} else if (['image/png'].includes(type)) {
|
} else if (['image/png'].includes(type)) {
|
||||||
webpublic = await convertSharpToPng(img, 2048, 2048);
|
webpublic = await convertSharpToPng(img, 2048, 2048);
|
||||||
} else if (['image/svg+xml'].includes(type)) {
|
} else if (['image/svg+xml'].includes(type)) {
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
"@rollup/plugin-json": "4.1.0",
|
"@rollup/plugin-json": "4.1.0",
|
||||||
"@rollup/pluginutils": "^4.2.1",
|
"@rollup/pluginutils": "^4.2.1",
|
||||||
"@syuilo/aiscript": "0.11.1",
|
"@syuilo/aiscript": "0.11.1",
|
||||||
"@vitejs/plugin-vue": "3.2.0",
|
"@vitejs/plugin-vue": "4.0.0",
|
||||||
"@vue/compiler-sfc": "3.2.45",
|
"@vue/compiler-sfc": "3.2.45",
|
||||||
"autobind-decorator": "2.4.0",
|
"autobind-decorator": "2.4.0",
|
||||||
"autosize": "5.0.2",
|
"autosize": "5.0.2",
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
"broadcast-channel": "4.18.1",
|
"broadcast-channel": "4.18.1",
|
||||||
"browser-image-resizer": "https://github.com/misskey-dev/browser-image-resizer.git#commit=0380d12c8e736788ea7f4e6e985175521ea7b23c",
|
"browser-image-resizer": "https://github.com/misskey-dev/browser-image-resizer.git#commit=0380d12c8e736788ea7f4e6e985175521ea7b23c",
|
||||||
"calckey-js": "^0.0.17",
|
"calckey-js": "^0.0.17",
|
||||||
"chart.js": "4.0.1",
|
"chart.js": "4.1.1",
|
||||||
"chartjs-adapter-date-fns": "2.0.1",
|
"chartjs-adapter-date-fns": "2.0.1",
|
||||||
"chartjs-plugin-gradient": "0.5.1",
|
"chartjs-plugin-gradient": "0.5.1",
|
||||||
"chartjs-plugin-zoom": "1.2.1",
|
"chartjs-plugin-zoom": "1.2.1",
|
||||||
|
@ -31,33 +31,33 @@
|
||||||
"eventemitter3": "4.0.7",
|
"eventemitter3": "4.0.7",
|
||||||
"idb-keyval": "6.2.0",
|
"idb-keyval": "6.2.0",
|
||||||
"insert-text-at-cursor": "0.3.0",
|
"insert-text-at-cursor": "0.3.0",
|
||||||
"json5": "2.2.1",
|
"json5": "2.2.2",
|
||||||
"katex": "0.16.3",
|
"katex": "0.16.4",
|
||||||
"matter-js": "0.18.0",
|
"matter-js": "0.18.0",
|
||||||
"mfm-js": "0.23.0",
|
"mfm-js": "0.23.0",
|
||||||
"photoswipe": "5.3.3",
|
"photoswipe": "5.3.4",
|
||||||
"prismjs": "1.29.0",
|
"prismjs": "1.29.0",
|
||||||
"punycode": "2.1.1",
|
"punycode": "2.1.1",
|
||||||
"querystring": "0.2.1",
|
"querystring": "0.2.1",
|
||||||
"rndstr": "1.0.0",
|
"rndstr": "1.0.0",
|
||||||
"s-age": "1.1.2",
|
"s-age": "1.1.2",
|
||||||
"sass": "1.56.1",
|
"sass": "1.57.0",
|
||||||
"seedrandom": "3.0.5",
|
"seedrandom": "3.0.5",
|
||||||
"strict-event-emitter-types": "2.0.0",
|
"strict-event-emitter-types": "2.0.0",
|
||||||
"stringz": "2.1.0",
|
"stringz": "2.1.0",
|
||||||
"swiper": "^8.4.4",
|
"swiper": "^8.4.5",
|
||||||
"syuilo-password-strength": "0.0.1",
|
"syuilo-password-strength": "0.0.1",
|
||||||
"textarea-caret": "3.1.0",
|
"textarea-caret": "3.1.0",
|
||||||
"three": "0.146.0",
|
"three": "0.146.0",
|
||||||
"throttle-debounce": "5.0.0",
|
"throttle-debounce": "5.0.0",
|
||||||
"tinycolor2": "1.4.2",
|
"tinycolor2": "1.4.2",
|
||||||
"tsc-alias": "1.7.1",
|
"tsc-alias": "1.8.2",
|
||||||
"tsconfig-paths": "4.1.0",
|
"tsconfig-paths": "4.1.1",
|
||||||
"twemoji-parser": "14.0.0",
|
"twemoji-parser": "14.0.0",
|
||||||
"typescript": "4.9.3",
|
"typescript": "4.9.4",
|
||||||
"uuid": "9.0.0",
|
"uuid": "9.0.0",
|
||||||
"vanilla-tilt": "1.7.3",
|
"vanilla-tilt": "1.8.0",
|
||||||
"vite": "^3.2.4",
|
"vite": "^4.0.2",
|
||||||
"vue": "3.2.45",
|
"vue": "3.2.45",
|
||||||
"vue-isyourpasswordsafe": "^2.0.0",
|
"vue-isyourpasswordsafe": "^2.0.0",
|
||||||
"vue-plyr": "^7.0.0",
|
"vue-plyr": "^7.0.0",
|
||||||
|
@ -76,14 +76,14 @@
|
||||||
"@types/throttle-debounce": "5.0.0",
|
"@types/throttle-debounce": "5.0.0",
|
||||||
"@types/tinycolor2": "1.4.3",
|
"@types/tinycolor2": "1.4.3",
|
||||||
"@types/uuid": "8.3.4",
|
"@types/uuid": "8.3.4",
|
||||||
"@typescript-eslint/eslint-plugin": "5.43.0",
|
"@typescript-eslint/eslint-plugin": "5.46.1",
|
||||||
"@typescript-eslint/parser": "5.43.0",
|
"@typescript-eslint/parser": "5.46.1",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"cypress": "10.11.0",
|
"cypress": "10.11.0",
|
||||||
"eslint": "8.28.0",
|
"eslint": "8.30.0",
|
||||||
"eslint-plugin-import": "2.26.0",
|
"eslint-plugin-import": "2.26.0",
|
||||||
"eslint-plugin-vue": "9.7.0",
|
"eslint-plugin-vue": "9.8.0",
|
||||||
"rollup": "2.79.1",
|
"rollup": "3.7.5",
|
||||||
"start-server-and-test": "1.14.0"
|
"start-server-and-test": "1.15.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ defineProps<{
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
font-size: 90%;
|
font-size: 90%;
|
||||||
background: var(--infoWarnBg);
|
background: var(--infoWarnBg);
|
||||||
color: var(--infoWarnFg);
|
color: var(--error);
|
||||||
border-radius: var(--radius);
|
border-radius: var(--radius);
|
||||||
|
|
||||||
> .link {
|
> .link {
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<button v-tooltip.noDelay.bottom="i18n.ts._gallery.like" class="skdfgljsdkf _button" @click="star($event)">
|
<button v-tooltip.noDelay.bottom="i18n.ts._gallery.like" class="skdfgljsdkf _button" @click="star($event)">
|
||||||
<i class="ph-star-bold ph-lg"></i>
|
<i v-if="defaultStore.state.woozyMode === false" class="ph-star-bold ph-lg"></i>
|
||||||
|
<svg v-else width="1.1em" height="1.1em" viewBox="0 0 36 36"><g fill="currentColor">
|
||||||
|
<path d="m17.809-0.20898c-9.9294 2.3e-7 -18 8.0706-18 18 5.8e-7 9.9294 8.0706 18 18 18 9.9294 0 18-8.0706 18-18 0-9.9294-8.0706-18-18-18zm0 1.9785c8.8604 1e-7 16.021 7.1611 16.021 16.021 0 8.8604-7.1611 16.023-16.021 16.023-8.8604 0-16.021-7.163-16.021-16.023-3e-7 -8.8604 7.1611-16.021 16.021-16.021z"/>
|
||||||
|
<path d="m6.001 11c-0.552 0-1-0.448-1-1 0-0.551 0.445-0.998 0.996-1 0.156-2e-3 3.569-0.086 6.205-3.6 0.331-0.44 0.957-0.532 1.4-0.2 0.442 0.331 0.531 0.958 0.2 1.4-3.263 4.35-7.617 4.4-7.801 4.4zm24.986 2.393c0.128 0.537-0.204 1.077-0.741 1.205-0.536 0.128-1.074-0.202-1.204-0.737-0.038-0.151-0.911-3.452-4.941-5.201-0.505-0.22-0.739-0.808-0.519-1.315s0.809-0.739 1.315-0.519c4.989 2.165 6.047 6.388 6.09 6.567z"/>
|
||||||
|
<path d="m23.186 29.526c-0.993 0-1.952-0.455-2.788-1.339-2.816-2.985-3.569-2.333-4.817-1.251-0.781 0.679-1.754 1.523-3.205 1.523-2.351 0-3.969-2.302-4.036-2.4-0.314-0.454-0.2-1.077 0.254-1.391 0.451-0.312 1.074-0.2 1.39 0.251 0.301 0.429 1.317 1.54 2.393 1.54 0.704 0 1.256-0.479 1.895-1.033 1.816-1.578 3.764-2.655 7.583 1.388 0.823 0.873 1.452 0.774 1.908 0.592 1.659-0.665 3.205-3.698 3.197-5.15-3e-3 -0.552 0.442-1.002 0.994-1.005h6e-3c0.55 0 0.997 0.444 1 0.995 0.012 2.103-1.854 5.976-4.454 7.017-0.443 0.175-0.885 0.262-1.32 0.263z"/>
|
||||||
|
<path d="m14.815 15.375c-0.584 2.114-1.642 3.083-3.152 2.666-1.509-0.417-2.343-1.909-1.76-4.023 0.583-2.112 2.175-3.363 3.684-2.946 1.511 0.417 1.812 2.19 1.228 4.303zm11.416-0.755c0.473 2.141-0.675 4.838-2.204 5.176s-3.28-1.719-3.753-3.86c-0.473-2.14 0.419-3.971 1.948-4.309s3.536 0.853 4.009 2.993z"/>
|
||||||
|
</g></svg>
|
||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -9,6 +15,7 @@ import type { Note } from 'calckey-js/built/entities';
|
||||||
import Ripple from '@/components/MkRipple.vue';
|
import Ripple from '@/components/MkRipple.vue';
|
||||||
import { pleaseLogin } from '@/scripts/please-login';
|
import { pleaseLogin } from '@/scripts/please-login';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
|
import { defaultStore } from '@/store';
|
||||||
import { i18n } from '@/i18n';
|
import { i18n } from '@/i18n';
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
|
@ -19,7 +26,7 @@ function star(ev?: MouseEvent): void {
|
||||||
pleaseLogin();
|
pleaseLogin();
|
||||||
os.api('notes/reactions/create', {
|
os.api('notes/reactions/create', {
|
||||||
noteId: props.note.id,
|
noteId: props.note.id,
|
||||||
reaction: '⭐',
|
reaction: defaultStore.state.woozyMode === true ? '🥴' : '⭐',
|
||||||
});
|
});
|
||||||
const el = ev && (ev.currentTarget ?? ev.target) as HTMLElement | null | undefined;
|
const el = ev && (ev.currentTarget ?? ev.target) as HTMLElement | null | undefined;
|
||||||
if (el) {
|
if (el) {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<MkModal ref="modal" :z-priority="'middle'" @click="$refs.modal.close()" @closed="$emit('closed')">
|
<MkModal ref="modal" :z-priority="'middle'" @click="$refs.modal.close()" @closed="$emit('closed')">
|
||||||
<div class="ewlycnyt">
|
<div class="ewlycnyt">
|
||||||
<div class="title"><MkSparkle>{{ i18n.ts.misskeyUpdated }}</MkSparkle></div>
|
<div class="title"><MkSparkle>{{ i18n.ts.misskeyUpdated }}</MkSparkle></div>
|
||||||
<div class="version">✨{{ version }}🚀</div>
|
<div class="version">✨ {{ version }} 🚀</div>
|
||||||
<MkButton full @click="whatIsNew">{{ i18n.ts.whatIsNew }}</MkButton>
|
<MkButton full @click="whatIsNew">{{ i18n.ts.whatIsNew }}</MkButton>
|
||||||
<MkButton class="gotIt" primary full @click="$refs.modal.close()">{{ i18n.ts.gotIt }}</MkButton>
|
<MkButton class="gotIt" primary full @click="$refs.modal.close()">{{ i18n.ts.gotIt }}</MkButton>
|
||||||
</div>
|
</div>
|
||||||
|
@ -21,7 +21,7 @@ const modal = ref<InstanceType<typeof MkModal>>();
|
||||||
|
|
||||||
const whatIsNew = () => {
|
const whatIsNew = () => {
|
||||||
modal.value.close();
|
modal.value.close();
|
||||||
window.open('https://codeberg.org/thatonecalculator/calckey/releases', '_blank');
|
window.open('https://codeberg.org/calckey/calckey/releases', '_blank');
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
* Client entry point
|
* Client entry point
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// https://vitejs.dev/config/build-options.html#build-modulepreload
|
||||||
|
import 'vite/modulepreload-polyfill';
|
||||||
|
|
||||||
import '@/style.scss';
|
import '@/style.scss';
|
||||||
import '@/icons.scss';
|
import '@/icons.scss';
|
||||||
|
|
||||||
|
|
|
@ -12,14 +12,14 @@
|
||||||
<span v-for="emoji in easterEggEmojis" :key="emoji.id" class="emoji" :data-physics-x="emoji.left" :data-physics-y="emoji.top" :class="{ _physics_circle_: !emoji.emoji.startsWith(':') }"><MkEmoji class="emoji" :emoji="emoji.emoji" :custom-emojis="$instance.emojis" :is-reaction="false" :normal="true" :no-style="true"/></span>
|
<span v-for="emoji in easterEggEmojis" :key="emoji.id" class="emoji" :data-physics-x="emoji.left" :data-physics-y="emoji.top" :class="{ _physics_circle_: !emoji.emoji.startsWith(':') }"><MkEmoji class="emoji" :emoji="emoji.emoji" :custom-emojis="$instance.emojis" :is-reaction="false" :normal="true" :no-style="true"/></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="_formBlock" style="text-align: center;">
|
<div class="_formBlock" style="text-align: center;">
|
||||||
{{ i18n.ts._aboutMisskey.about }}<br><a href="https://codeberg.org/thatonecalculator/calckey" target="_blank" class="_link">{{ i18n.ts.learnMore }}</a>
|
{{ i18n.ts._aboutMisskey.about }}<br><a href="https://codeberg.org/calckey/calckey" target="_blank" class="_link">{{ i18n.ts.learnMore }}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="_formBlock" style="text-align: center;">
|
<div class="_formBlock" style="text-align: center;">
|
||||||
<MkButton primary rounded inline @click="iLoveMisskey">I <Mfm text="$[jelly ❤]"/> #Calckey</MkButton>
|
<MkButton primary rounded inline @click="iLoveMisskey">I <Mfm text="$[jelly ❤]"/> #Calckey</MkButton>
|
||||||
</div>
|
</div>
|
||||||
<FormSection>
|
<FormSection>
|
||||||
<div class="_formLinks">
|
<div class="_formLinks">
|
||||||
<FormLink to="https://codeberg.org/thatonecalculator/calckey" external>
|
<FormLink to="https://codeberg.org/calckey/calckey" external>
|
||||||
<template #icon><i class="ph-code-bold ph-lg"></i></template>
|
<template #icon><i class="ph-code-bold ph-lg"></i></template>
|
||||||
{{ i18n.ts._aboutMisskey.source }}
|
{{ i18n.ts._aboutMisskey.source }}
|
||||||
<template #suffix>Codeberg</template>
|
<template #suffix>Codeberg</template>
|
||||||
|
@ -29,17 +29,22 @@
|
||||||
{{ i18n.ts._aboutMisskey.donate }}
|
{{ i18n.ts._aboutMisskey.donate }}
|
||||||
<template #suffix>Donate</template>
|
<template #suffix>Donate</template>
|
||||||
</FormLink>
|
</FormLink>
|
||||||
|
<FormLink to="https://hosted.weblate.org/engage/calckey/" external>
|
||||||
|
<template #icon><i class="ph-translate-bold ph-lg"></i></template>
|
||||||
|
{{ i18n.ts._aboutMisskey.translation }}
|
||||||
|
<template #suffix>Translate</template>
|
||||||
|
</FormLink>
|
||||||
</div>
|
</div>
|
||||||
</FormSection>
|
</FormSection>
|
||||||
<FormSection>
|
<FormSection>
|
||||||
<template #label>{{ i18n.ts._aboutMisskey.contributors }}</template>
|
<template #label>{{ i18n.ts._aboutMisskey.contributors }}</template>
|
||||||
<div class="_formLinks">
|
<div class="_formLinks">
|
||||||
<FormLink to="/@t1c@i.calckey.cloud"><Mfm :text="'$[sparkle @t1c@i.calckey.cloud] (Main developer)'"/></FormLink>
|
<FormLink to="/@t1c@i.calckey.cloud"><Mfm :text="'$[sparkle @t1c@i.calckey.cloud] (Main developer)'"/></FormLink>
|
||||||
<FormLink to="/@cleo@tech.lgbt"><Mfm :text="'@cleo@tech.lgbt (Maintainer)'"/></FormLink>
|
<FormLink to="/@cleo@bz.pawdev.me"><Mfm :text="'@cleo@bz.pawdev.me (Maintainer)'"/></FormLink>
|
||||||
<FormLink to="/@syuilo@misskey.io"><Mfm :text="'@syuilo@misskey.io (Original Misskey developer)'"/></FormLink>
|
<FormLink to="/@syuilo@misskey.io"><Mfm :text="'@syuilo@misskey.io (Original Misskey developer)'"/></FormLink>
|
||||||
<FormLink to="https://www.youtube.com/c/Henkiwashere" external>Henki (error images artist)</FormLink>
|
<FormLink to="https://www.youtube.com/c/Henkiwashere" external>Henki (error images artist)</FormLink>
|
||||||
</div>
|
</div>
|
||||||
<template #caption><MkLink url="https://codeberg.org/thatonecalculator/calckey/activity">{{ i18n.ts._aboutMisskey.allContributors }}</MkLink></template>
|
<template #caption><MkLink url="https://codeberg.org/calckey/calckey/activity">{{ i18n.ts._aboutMisskey.allContributors }}</MkLink></template>
|
||||||
</FormSection>
|
</FormSection>
|
||||||
<FormSection>
|
<FormSection>
|
||||||
<template #label><Mfm text="$[jelly ❤]"/> {{ i18n.ts._aboutMisskey.patrons }}</template>
|
<template #label><Mfm text="$[jelly ❤]"/> {{ i18n.ts._aboutMisskey.patrons }}</template>
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<div class="_formRoot">
|
<div class="_formRoot">
|
||||||
<div class="_formBlock fwhjspax" :style="{ backgroundImage: `url(${ $instance.bannerUrl })` }">
|
<div class="_formBlock fwhjspax" :style="{ backgroundImage: `url(${ $instance.bannerUrl })` }">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<img :src="$instance.iconUrl || $instance.faviconUrl || '/favicon.ico'" alt="" class="icon"/>
|
<img ref="instanceIcon" :src="$instance.iconUrl || $instance.faviconUrl || '/favicon.ico'" aria-label="none" class="icon" :class="instanceIconAnimation" @click="easterEgg"/>
|
||||||
<div class="name">
|
<div class="name">
|
||||||
<b>{{ $instance.name || host }}</b>
|
<b>{{ $instance.name || host }}</b>
|
||||||
</div>
|
</div>
|
||||||
|
@ -109,17 +109,21 @@ import { i18n } from '@/i18n';
|
||||||
import { definePageMetadata } from '@/scripts/page-metadata';
|
import { definePageMetadata } from '@/scripts/page-metadata';
|
||||||
import { deviceKind } from '@/scripts/device-kind';
|
import { deviceKind } from '@/scripts/device-kind';
|
||||||
import { iAmModerator } from '@/account';
|
import { iAmModerator } from '@/account';
|
||||||
|
import { instance } from '@/instance';
|
||||||
import { defaultStore } from '@/store';
|
import { defaultStore } from '@/store';
|
||||||
import 'swiper/scss';
|
import 'swiper/scss';
|
||||||
import 'swiper/scss/virtual';
|
import 'swiper/scss/virtual';
|
||||||
|
|
||||||
const props = withDefaults(defineProps<{
|
withDefaults(defineProps<{
|
||||||
initialTab?: string;
|
initialTab?: string;
|
||||||
}>(), {
|
}>(), {
|
||||||
initialTab: 'overview',
|
initialTab: 'overview',
|
||||||
});
|
});
|
||||||
|
|
||||||
let stats = $ref(null);
|
let stats = $ref(null);
|
||||||
|
let instanceIcon = $ref<HTMLImageElement>();
|
||||||
|
let instanceIconAnimation = 'none';
|
||||||
|
let iconClicks = 0;
|
||||||
let tabs = ['overview', 'emojis', 'charts'];
|
let tabs = ['overview', 'emojis', 'charts'];
|
||||||
let tab = $ref(tabs[0]);
|
let tab = $ref(tabs[0]);
|
||||||
watch($$(tab), () => (syncSlide(tabs.indexOf(tab))));
|
watch($$(tab), () => (syncSlide(tabs.indexOf(tab))));
|
||||||
|
@ -164,6 +168,39 @@ definePageMetadata(computed(() => ({
|
||||||
icon: 'ph-info-bold ph-lg',
|
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;
|
let swiperRef = null;
|
||||||
|
|
||||||
function setSwiperRef(swiper) {
|
function setSwiperRef(swiper) {
|
||||||
|
@ -178,9 +215,57 @@ function onSlideChange() {
|
||||||
function syncSlide(index) {
|
function syncSlide(index) {
|
||||||
swiperRef.slideTo(index);
|
swiperRef.slideTo(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
@keyframes iconShake1 {
|
||||||
|
0% { transform: translate(2px, 0px) rotate(-1deg) }
|
||||||
|
10% { transform: translate(2px, -3px) rotate(5deg) }
|
||||||
|
20% { transform: translate(-1px, -3px) rotate(3deg) }
|
||||||
|
30% { transform: translate(-2px, 0px) rotate(-1deg) }
|
||||||
|
40% { transform: translate(-2px, -1px) rotate(4deg) }
|
||||||
|
50% { transform: translate(-1px, -1px) rotate(1deg) }
|
||||||
|
60% { transform: translate(-2px, 0px) rotate(-8deg) }
|
||||||
|
70% { transform: translate(1px, 2px) rotate(-2deg) }
|
||||||
|
80% { transform: translate(-1px, 2px) rotate(4deg) }
|
||||||
|
90% { transform: translate(-1px, 1px) rotate(11deg) }
|
||||||
|
100% { transform: translate(-3px, -3px) rotate(-5deg) }
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes iconShake2 {
|
||||||
|
0% { transform: translate(-1px, 5px) rotate(33deg) }
|
||||||
|
10% { transform: translate(-2px, 7px) rotate(20deg) }
|
||||||
|
20% { transform: translate(8px, 5px) rotate(31deg) }
|
||||||
|
30% { transform: translate(-2px, 5px) rotate(3deg) }
|
||||||
|
40% { transform: translate(4px, 6px) rotate(16deg) }
|
||||||
|
50% { transform: translate(8px, -3px) rotate(19deg) }
|
||||||
|
60% { transform: translate(7px, -2px) rotate(0deg) }
|
||||||
|
70% { transform: translate(4px, 4px) rotate(8deg) }
|
||||||
|
80% { transform: translate(7px, -3px) rotate(13deg) }
|
||||||
|
90% { transform: translate(6px, 7px) rotate(4deg) }
|
||||||
|
100% { transform: translate(4px, -2px) rotate(-2deg) }
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes iconShake3 {
|
||||||
|
0% { transform: translate(12px, -2px) rotate(57deg) }
|
||||||
|
10% { transform: translate(10px, 2px) rotate(12deg) }
|
||||||
|
20% { transform: translate(10px, 4px) rotate(3deg) }
|
||||||
|
30% { transform: translate(17px, 11px) rotate(15deg) }
|
||||||
|
40% { transform: translate(12px, 20px) rotate(-11deg) }
|
||||||
|
50% { transform: translate(5px, 12px) rotate(43deg) }
|
||||||
|
60% { transform: translate(16px, 8px) rotate(-4deg) }
|
||||||
|
70% { transform: translate(14px, 11px) rotate(22deg) }
|
||||||
|
80% { transform: translate(9px, 19px) rotate(-3deg) }
|
||||||
|
90% { transform: translate(0px, 12px) rotate(-3deg) }
|
||||||
|
100% { transform: translate(17px, 3px) rotate(57deg) }
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes spinY {
|
||||||
|
0% { transform: perspective(128px) rotateY(0deg); }
|
||||||
|
100% { transform: perspective(128px) rotateY(360deg); }
|
||||||
|
}
|
||||||
|
|
||||||
.fwhjspax {
|
.fwhjspax {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
|
@ -196,6 +281,26 @@ function syncSlide(index) {
|
||||||
margin: 16px auto 0 auto;
|
margin: 16px auto 0 auto;
|
||||||
height: 64px;
|
height: 64px;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
|
|
||||||
|
&.noAnimation {
|
||||||
|
animation: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.shake1 {
|
||||||
|
animation: iconShake1 0.1s 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.shake2 {
|
||||||
|
animation: iconShake2 0.2s 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.shake3 {
|
||||||
|
animation: iconShake3 0.3s 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.doSpinY {
|
||||||
|
animation: spinY 0.9s 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
> .name {
|
> .name {
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<MkInfo v-if="noMaintainerInformation" warn class="info">{{ i18n.ts.noMaintainerInformationWarning }} <MkA to="/admin/settings" class="_link">{{ i18n.ts.configure }}</MkA></MkInfo>
|
<MkInfo v-if="noMaintainerInformation" warn class="info">{{ i18n.ts.noMaintainerInformationWarning }} <MkA to="/admin/settings" class="_link">{{ i18n.ts.configure }}</MkA></MkInfo>
|
||||||
<MkInfo v-if="noBotProtection" warn class="info">{{ i18n.ts.noBotProtectionWarning }} <MkA to="/admin/security" class="_link">{{ i18n.ts.configure }}</MkA></MkInfo>
|
<MkInfo v-if="noBotProtection" warn class="info">{{ i18n.ts.noBotProtectionWarning }} <MkA to="/admin/security" class="_link">{{ i18n.ts.configure }}</MkA></MkInfo>
|
||||||
<MkInfo v-if="noEmailServer" warn class="info">{{ i18n.ts.noEmailServerWarning }} <MkA to="/admin/email-settings" class="_link">{{ i18n.ts.configure }}</MkA></MkInfo>
|
<MkInfo v-if="noEmailServer" warn class="info">{{ i18n.ts.noEmailServerWarning }} <MkA to="/admin/email-settings" class="_link">{{ i18n.ts.configure }}</MkA></MkInfo>
|
||||||
<MkInfo v-if="updateAvailable" warn class="info">{{ i18n.ts.updateAvailable }} <a href="https://codeberg.org/thatonecalculator/calckey/releases" target="_bank" class="_link">{{ i18n.ts.check }}</a></MkInfo>
|
<MkInfo v-if="updateAvailable" warn class="info">{{ i18n.ts.updateAvailable }} <a href="https://codeberg.org/calckey/calckey/releases" target="_bank" class="_link">{{ i18n.ts.check }}</a></MkInfo>
|
||||||
|
|
||||||
<MkSuperMenu :def="menuDef" :grid="currentPage?.route.name == null"></MkSuperMenu>
|
<MkSuperMenu :def="menuDef" :grid="currentPage?.route.name == null"></MkSuperMenu>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<template #caption>
|
<template #caption>
|
||||||
<I18n :src="i18n.ts.i18nInfo" tag="span">
|
<I18n :src="i18n.ts.i18nInfo" tag="span">
|
||||||
<template #link>
|
<template #link>
|
||||||
<MkLink url="https://crowdin.com/project/misskey">Crowdin</MkLink>
|
<MkLink url="https://hosted.weblate.org/engage/calckey/">Weblate</MkLink>
|
||||||
</template>
|
</template>
|
||||||
</I18n>
|
</I18n>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -18,7 +18,7 @@ export const uploads = ref<Uploading[]>([]);
|
||||||
|
|
||||||
const compressTypeMap = {
|
const compressTypeMap = {
|
||||||
'image/jpeg': { quality: 0.85, mimeType: 'image/jpeg' },
|
'image/jpeg': { quality: 0.85, mimeType: 'image/jpeg' },
|
||||||
'image/webp': { quality: 0.85, mimeType: 'image/jpeg' },
|
'image/webp': { quality: 0.85, mimeType: 'image/png' },
|
||||||
'image/svg+xml': { quality: 1, mimeType: 'image/png' },
|
'image/svg+xml': { quality: 1, mimeType: 'image/png' },
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
|
|
|
@ -267,6 +267,10 @@ export const defaultStore = markRaw(new Storage('base', {
|
||||||
where: 'account',
|
where: 'account',
|
||||||
default: true,
|
default: true,
|
||||||
},
|
},
|
||||||
|
woozyMode: {
|
||||||
|
where: 'device',
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// TODO: 他のタブと永続化されたstateを同期
|
// TODO: 他のタブと永続化されたstateを同期
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
</main>
|
</main>
|
||||||
<div class="powered-by">
|
<div class="powered-by">
|
||||||
<b><MkA to="/">{{ host }}</MkA></b>
|
<b><MkA to="/">{{ host }}</MkA></b>
|
||||||
<small>Powered by <a href="https://codeberg.org/thatonecalculator/calckey" target="_blank">Calckey</a></small>
|
<small>Powered by <a href="https://codeberg.org/calckey/calckey" target="_blank">Calckey</a></small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
</main>
|
</main>
|
||||||
<div v-if="!root" class="powered-by">
|
<div v-if="!root" class="powered-by">
|
||||||
<b><MkA to="/">{{ host }}</MkA></b>
|
<b><MkA to="/">{{ host }}</MkA></b>
|
||||||
<small>Powered by <a href="https://codeberg.org/thatonecalculator/calckey" target="_blank">Calckey</a></small>
|
<small>Powered by <a href="https://codeberg.org/calckey/calckey" target="_blank">Calckey</a></small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div v-if="poweredBy" class="powered-by">
|
<div v-if="poweredBy" class="powered-by">
|
||||||
<b><MkA to="/">{{ host }}</MkA></b>
|
<b><MkA to="/">{{ host }}</MkA></b>
|
||||||
<small>Powered by <a href="https://codeberg.org/thatonecalculator/calckey" target="_blank">Calckey</a></small>
|
<small>Powered by <a href="https://codeberg.org/calckey/calckey" target="_blank">Calckey</a></small>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -14,8 +14,9 @@
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { } from 'vue';
|
import { } from 'vue';
|
||||||
import { useWidgetPropsManager, Widget, WidgetComponentEmits, WidgetComponentExpose, WidgetComponentProps } from './widget';
|
import { useWidgetPropsManager, WidgetComponentEmits, WidgetComponentProps } from './widget';
|
||||||
import { GetFormResultType } from '@/scripts/form';
|
import type { Widget, WidgetComponentExpose } from './widget';
|
||||||
|
import type { GetFormResultType } from '@/scripts/form';
|
||||||
import MkContainer from '@/components/MkContainer.vue';
|
import MkContainer from '@/components/MkContainer.vue';
|
||||||
import MkTagCloud from '@/components/MkTagCloud.vue';
|
import MkTagCloud from '@/components/MkTagCloud.vue';
|
||||||
import * as os from '@/os';
|
import * as os from '@/os';
|
||||||
|
|
|
@ -12,6 +12,6 @@
|
||||||
"idb-keyval": "^6.2.0"
|
"idb-keyval": "^6.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"eslint": "^8.28.0"
|
"eslint": "^8.30.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,9 @@
|
||||||
"@sky@therian.club",
|
"@sky@therian.club",
|
||||||
"@panos@electricrequiem.com",
|
"@panos@electricrequiem.com",
|
||||||
"@redhunt07@www.foxyhole.io",
|
"@redhunt07@www.foxyhole.io",
|
||||||
"@griff@stop.voring.me"
|
"@griff@stop.voring.me",
|
||||||
|
"@cafkafk@ck.cafkafk.com",
|
||||||
|
"@privateger@plasmatrap.com",
|
||||||
|
"@self@neo.voidworks.cc"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
sudo systemctl start docker.service
|
|
||||||
sudo docker rmi $(docker images -q)
|
|
||||||
sudo docker compose build
|
|
||||||
sudo docker tag thatonecalculator/calckey:latest thatonecalculator/calckey:$(git describe --tags --exact-match)
|
|
||||||
sudo docker images
|
|
||||||
echo "\nPress enter to continue\n"
|
|
||||||
read
|
|
||||||
sudo docker push thatonecalculator/calckey:$(git describe --tags --exact-match)
|
|
||||||
sudo docker push thatonecalculator/calckey:latest
|
|
||||||
sudo systemctl stop docker.service
|
|
Loading…
Reference in New Issue