Commit graph

159 commits

Author SHA1 Message Date
Kaity A
f9a72e1ea6 Add Libre Translate support 2023-04-30 11:09:51 +10:00
Kainoa Kanter
1affde0a8c chore: formatting 2023-04-07 22:46:10 -07:00
naskya
0ef179e35f feat: per-user boost muting (#9825)
Cherry-picked from FoundKey/c414f24a2c ([commit](c414f24a2c))

This allows us to hide specified users' boosts from the timelines (the boosts will still be visible on their user page).

Co-authored-by: Hélène <pleroma-dev@helene.moe>
Co-authored-by: naskya <m@naskya.net>
Reviewed-on: https://codeberg.org/calckey/calckey/pulls/9825
Co-authored-by: naskya <naskya@noreply.codeberg.org>
Co-committed-by: naskya <naskya@noreply.codeberg.org>
2023-04-08 05:44:36 +00:00
ThatOneCalculator
3e7d64ac4b feat: push notifs button
Co-authored-by: Tamania <tamaina@hotmail.co.jp>
2023-04-03 20:36:59 -07:00
Kaity A
eaa6bc2da3 Separate cat-avatar mode and speak-as-cat nyanification 2023-04-02 21:24:12 +10:00
ThatOneCalculator
33718bdd5d chore: 🎨 format 2023-04-01 21:10:31 -07:00
kabo2468
021f667976 fix: don't nyaize quoted text 2023-03-31 23:30:57 +09:00
ThatOneCalculator
ae9ba9b2c3 Revert "refactor: nyaize on the frontend"
This reverts commit aff90b3ef225e5d4453469b36b7bf3a8565c7a68.
2023-03-23 09:06:32 -07:00
amy bones
b5130abc25 fix: max user profile length to db field length
Resolves: #9749
2023-03-22 02:10:43 -07:00
ThatOneCalculator
887673ecdd refactor: nyaize on the frontend 2023-03-19 19:59:00 -07:00
naskya
94eb321431 feat: set license information for custom emojis (#9719)
Closes: #9711 (please check this issue first)

I cherry-picked two commits ([1](8ae9d2eaa8), [2](ed51209172)) from [Misskey](https://github.com/misskey-dev/misskey) and made a few changes.
「ライセンス」should be written as "License" in the following screenshots, but it has not yet been translated.

It would be nice if we could include multiple lines of text, but I just ported what's been implemented so far in Misskey not to mess things up.

This is my first pull request (aside from typo correction). Feel free to point out any issues!

![](https://cdn.discordapp.com/attachments/823878222897741868/1086372711841935440/2023-03-18_042011.png)
![](https://cdn.discordapp.com/attachments/823878222897741868/1086373178214981853/01.png)
![](https://cdn.discordapp.com/attachments/823878222897741868/1086373336709341246/2023-03-18_042629.png)

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
Co-authored-by: naskya <m@naskya.net>
Reviewed-on: https://codeberg.org/calckey/calckey/pulls/9719
Co-authored-by: naskya <naskya@noreply.codeberg.org>
Co-committed-by: naskya <naskya@noreply.codeberg.org>
2023-03-19 07:22:28 +00:00
ThatOneCalculator
d8c0ba0795 fix: when count is actually 0 2023-03-19 00:13:30 -07:00
s1idewhist1e
5eec5ac2ef feat: Make follower counts for remote users correct (#9705)
#9293

Not sure if this is the right approach for this

Co-authored-by: s1idewhist1e <trombonedude05@gmail.com>
Reviewed-on: https://codeberg.org/calckey/calckey/pulls/9705
Co-authored-by: s1idewhist1e <s1idewhist1e@noreply.codeberg.org>
Co-committed-by: s1idewhist1e <s1idewhist1e@noreply.codeberg.org>
2023-03-17 01:16:31 +00:00
Kaity A
be4d51fcad Expand caption limit to 1500 characters 2023-03-05 16:51:44 +10:00
Kaity A
2b030a0a8c Implementation of an instances wide antenna source. (#9604)
This PR contains new source for antenna posts, which is a list of instance hostnames to process all posts from.

Using this mode, a user can filter for keywords on an instance wide basis.

This change includes a new antenna source called `instances` and a new database column in the `antenna` table called `instances` to store the instance names.

On the antenna editor, there's also an "Add an instance" finder dialog to allow users to search through the known instance hostnames.

Co-authored-by: Kaity A <supakaity@blahaj.zone>
Reviewed-on: https://codeberg.org/calckey/calckey/pulls/9604
Co-authored-by: Kaity A <supakaity@noreply.codeberg.org>
Co-committed-by: Kaity A <supakaity@noreply.codeberg.org>
2023-02-12 01:20:17 +00:00
ThatOneCalculator
13238973b6 chore: Rome Formatting 2023-02-10 15:41:19 -08:00
cutestnekoaqua
b1e3c2e1c7 feat: v1 Mastodon API
This commit adds (maybe unstable) support for Mastodons v1 api
also some v2 endpoints, maybe I miss stuff, I dont know.
We will need to test this but it should be kinda stable
and work like (old) butter.

Co-authored-by: Natty <natty.sh.git@gmail.com>
Co-authored-by: cutls <web-pro@cutls.com>
2023-02-09 23:21:50 +01:00
ThatOneCalculator
c742617a35 lavaforge --> codeberg until lavaforge is ready 2023-01-19 16:18:17 -08:00
ThatOneCalculator
cb9dafdcdc chore: lavaforge links 2023-01-15 13:18:10 -08:00
ThatOneCalculator
2aab2de38d refactor: 🎨 rome 2023-01-12 20:40:33 -08:00
ThatOneCalculator
44a3e55b39 fix: 🐛 Poll choice length 256
Co-authored-by: Syuilo <Syuilotan@yahoo.co.jp>
Closes #9433
2023-01-10 08:48:10 -08:00
Kainoa Kanter
d9d124cbf0 Admin set default reactions (#9404)
Co-authored-by: ThatOneCalculator <kainoa@t1c.dev>
Reviewed-on: https://codeberg.org/calckey/calckey/pulls/9404
2023-01-05 04:06:48 +00:00
Kainoa Kanter
698d4f7607 Update 'packages/backend/src/models/repositories/instance.ts' 2022-12-26 14:48:34 +00:00
Francis Dinh
8ff259f573 Block subdomains of blocked hosts 2022-12-24 14:46:09 -05:00
Cleo
530664ccbc Merge pull request '[Chore] Partial translating of ActivityPub/Boot code + Formatting' (#9229) from prettykool/calckey:develop into develop
Reviewed-on: https://codeberg.org/calckey/calckey/pulls/9229
2022-12-18 21:01:22 +00:00
ThatOneCalculator
1a9e55b0f3 refactor: new repo link 2022-12-18 10:12:24 -08:00
PK
52cc014e4d Translate portions of backend/src/remote/activitypub, the suspend-user service, and the boot process.
Some of these weren't translated so I thought I'd do 'em cause why not ¯\_(ツ)_/¯
2022-12-15 12:44:03 -06:00
Kainoa Kanter
01f463ff7a Merge branch 'develop' into account_migration 2022-12-12 01:51:17 +00:00
ThatOneCalculator
f500fb6a52 fix liked pages endpoint 2022-12-11 14:50:16 -08:00
cutestnekoaqua
635290bd33 fix remote move queue 2022-12-07 18:16:37 +01:00
cutestnekoaqua
abe351c283 fixed it for good 2022-12-07 01:15:32 +01:00
cutestnekoaqua
a3e2897bfc found my DB mistakes 💀 2022-12-07 00:09:12 +01:00
Cleo
6141e1a723 Merge pull request 'just using merge bc easier' (#9185) from recieve_moveto into account_migration
Reviewed-on: https://codeberg.org/thatonecalculator/calckey/pulls/9185
2022-12-06 16:56:12 +00:00
cutestnekoaqua
a3011e6b8e commit 1 of 2 of fixing the Account migration to Calckey 2022-12-06 17:46:08 +01:00
ThatOneCalculator
dbb950d0eb movedTo -> movedToUri 2022-12-04 17:20:36 -08:00
ThatOneCalculator
b93d390af8 cleo ide moment 2022-12-04 12:53:55 -08:00
Kainoa Kanter
29c1b81f12 Merge pull request 'develop' (#9178) from develop into account_migration
Reviewed-on: https://codeberg.org/thatonecalculator/calckey/pulls/9178
2022-12-04 06:26:26 +00:00
Cleo
cfab9ff2ad Display moved info.
It already fetches the moved to info on regular user fetches, now only the notification of a new "moved to" is missing.

Signed-off-by: cutestnekoaqua <waterdev@galaxycrow.de>
Co-authored-by: Mary Strodl <ipadlover8322@gmail.com>
Signed-off-by: cutestnekoaqua <waterdev@galaxycrow.de>
2022-11-30 20:29:01 +01:00
ThatOneCalculator
729210b1c6 temp notification api fix, thank you @supakaity 2022-11-26 09:31:54 -08:00
Cleo John
fe7ac800d7 Add movedToUri and knownAs to DB model user 2022-11-24 11:39:40 +00:00
Cleo John
9ab2599e0d db migration for moved to 2022-11-24 11:32:25 +00:00
ThatOneCalculator
331b8664f8 feat: Page drafts 2022-11-18 19:24:05 -08:00
syuilo
bf87e9586b improve performance (merge deepClone from Misskey dev) 2022-11-18 17:28:58 -08:00
ThatOneCalculator
f3f63a5dc1 AVIF support 2022-11-14 18:53:38 -08:00
ThatOneCalculator
8046495882 meta 2022-09-13 20:23:52 -07:00
ThatOneCalculator
f2bf9cb36b chore: ♻️ about-misskey -> about-calckey 2022-09-10 12:25:22 -07:00
ThatOneCalculator
0cc002f789 Obliteration of Ai-chan 🐱🔫 2022-08-08 14:58:27 -07:00
ThatOneCalculator
49b4635866 More Calckey branding 2022-08-05 14:07:40 -07:00
ThatOneCalculator
bcacfc0811 Recommended timeline! 2022-07-28 21:28:13 -07:00
ThatOneCalculator
690b03979b Custom splash icons! 2022-07-27 10:25:30 -07:00
ThatOneCalculator
3efd03800d Custom MOTD! 2022-07-27 09:46:35 -07:00
Johann150
fed2085138 Merge: enhance privacy of notes
https://akkoma.dev/FoundKeyGang/FoundKey/pulls/14
2022-07-25 13:36:44 -07:00
ThatOneCalculator
80ea452b9b Calckey as software name, finally! 2022-07-19 10:49:43 -07:00
ThatOneCalculator
db7fbce3b1 Merge remote-tracking branch 'nullobsi/secure-fetch' into develop 2022-07-18 20:50:15 -07:00
ThatOneCalculator
005d557502 Calckey 2022-07-18 19:00:45 -07:00
nullobsi
8f6605eb63 Add Secure Mode and Private Mode
- Add instance actor
- Add private mode, which uses an allowlist
- Add Secure Mode, restricts access to blocked instances
2022-07-17 15:25:39 -07:00
syuilo
638f0eba12 enhance: make active email validation configurable 2022-07-09 15:05:55 +09:00
syuilo
ed5d81859f feat: auto nsfw detection (#8840)
* feat: auto nsfw detection

* ✌️

* Update ja-JP.yml

* Update ja-JP.yml

* ポルノ判定のしきい値を高めに

* エラーハンドリングちゃんとした

* Update ja-JP.yml

* 感度設定を強化

* refactor

* feat: add video support for auto nsfw detection

* rename: image -> media

* .js

* fix: add missing error handling

* fix: use valid pathname instead of using filename due to invalid usage

* perf(nsfw-detection): decode frames

* disable detection of video for some reasons

* perf(nsfw-detection): streamify detection process for video

* disable disallowUploadWhenPredictedAsPorn option

* fix(nsfw-detection): improve reliability

* fix(nsfw-detection): use Math.ceil instead of Math.round

* perf(nsfw-detection): delete tmp frames after used

* fix(nsfw-detection): FSWatcher does not emit ready event

* perf(nsfw-detection): skip black frames

* refactor: strip exists check

* Update package.json

* めっちゃ変えた

* lint

* Update COPYING

* オプションで動画解析できるように

* Update yarn.lock

* Update CHANGELOG.md

Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
2022-07-07 21:06:37 +09:00
CyberRex
bc49a0e9be Add additional drive capacity change support (#8867)
* Add additional drive capacity change support

* Update packages/backend/src/server/api/endpoints/admin/drive-capacity-override.ts

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>

* 🎨

* show instance default capacity in placeholder

* fix

* update api/drive

* fix

* remove :

* fix lint

Co-authored-by: Johann150 <johann@qwertqwefsday.eu>
Co-authored-by: tamaina <tamaina@hotmail.co.jp>
2022-07-05 00:21:01 +09:00
syuilo
e5ccfa5158 feat: moderation note 2022-07-03 00:15:03 +09:00
syuilo
e23e7de453 feat: Log user ips (#8872)
* wip

* store ip and headers

* Update admin-file.vue

* require admin for view ip/headers

* IP (recent) 消した

* admin必須

* opt in

* clean ips periodically

* respect logging setting in drive/files/create
2022-07-02 15:12:11 +09:00
syuilo
31474fc66d fix(api): fix instance schema 2022-06-28 12:16:11 +09:00
syuilo
aa3914d7a2 fix(api): add missing themeColor property of instance 2022-06-28 10:40:49 +09:00
syuilo
69c45e4474 tweak client 2022-06-21 17:55:38 +09:00
syuilo
0fddc528ed fix(server): faviconUrl of federated instance is missing 2022-06-21 14:28:43 +09:00
Johann150
e161c0abe4 chore: synchronize visibility checks (#8687)
* reuse single meId parameter

* unify code style

Use template string to avoid having to use escaped quote marks.

* fix: follower only notes are visible to mentioned users

This synchronizes the visibility rules with the Notes.isVisibleForMe
method from packages/backend/src/models/repositories/note.ts

* add comment
2022-06-11 16:14:44 +09:00
syuilo
3f4101d17b use node 16 2022-06-04 17:26:56 +09:00
Johann150
ec47b46423 refactor: improve code quality (#8751)
* remove unnecessary if

`Array.prototype.some` already returns a boolean so an if to return
true or false is completely unnecessary in this case.

* perf: use count instead of find

When using `count` instead of `findOneBy`, the data is not
unnecessarily loaded.

* remove duplicate null check

The variable is checked for null in the lines above and the function
returns if so. Therefore, it can not be null at this point.

* simplify `getJsonSchema`

Because the assigned value is `null` and the used keys are only
shallow, use of `nestedProperty.set` seems inappropriate. Because the
value is not read, the initial for loop can be replaced by a `for..in`
loop.

Since all keys will be assigned `null`, the condition of the ternary
expression in the nested function will always be true. Therefore the
recursion case will never happen. With this the nested function can be
eliminated.

* remove duplicate condition

The code above already checks `dragging` and returns if it is truthy.
Checking it again later is therefore unnecessary.

To make this more obvious the `return` is removed in favour of using
an if...else construct.

* remove impossible "unknown" time

The `ago` variable will always be a number and all non-negative numbers
are already covered by other cases, the negative case is handled with
`future` so there is no case when `unkown` could be achieved.
2022-05-29 15:15:52 +09:00
Johann150
62ab5b4015 fix: assume remote users are following each other (#8734)
Misskey does not know if two remote users are following each other.
Because ActivityPub actions would otherwise fail on followers only
notes, we have to assume that two remote users are following each other
when an interaction about a remote note occurs.
2022-05-25 23:17:00 +09:00
Johann150
79072916af chore: synchronize code and database schema (#8577)
* chore: remove default null

null is always the default value if a table column is nullable, and typeorm's
@Column only accepts strings for default.

* chore: synchronize code with database schema

* chore: sync generated migrations with code
2022-05-05 22:45:22 +09:00
syuilo
4bf45e968e refactor: use structuredClone for deep clone 2022-04-23 12:38:02 +09:00
syuilo
cd7b04e90d fix ogp rendering and refactor 2022-04-17 21:18:18 +09:00
syuilo
3a2a9e3031 refactor: fix type 2022-04-17 12:59:41 +09:00
Johann150
5ac6bc5463 fix: validation (better #8456) (#8461)
* Revert "revert 484e023c0"

This reverts commit c03b70c949923b830a6d0361d1aa4d5f5614b7b7.

* also allow pure renote

* fix checks for pure renote
2022-04-03 13:57:26 +09:00
syuilo
74bbf670dd revert 484e023c0 2022-04-02 16:47:53 +09:00
syuilo
8b2a0a5773 feat: Webhook (#8457)
* feat: introduce webhook

* wip

* wip

* wip

* Update CHANGELOG.md
2022-04-02 15:28:49 +09:00
Johann150
2058d048d0 enhance(doc): required input fields (#8456)
* remove empty file

If the endpoint is to be implemented later, the file can be added back,
but for now it is confusing to have an empty file.

* enhance(doc): document defaults

Default for `isPublic` is based on the database schema default value.
Defaults for `local` and `withFiles` are based on the behaviour of the endpoint.

* enhance(doc): explain nullable emoji category

* fix: make nullable if default is null

* enhance(doc): explain mute attribute expiresAt

* fix: define required fields

- `notes/create`: the default for `text` has been removed because ajv can not handle
  `default` inside of `anyOf`, see
  https://ajv.js.org/guide/modifying-data.html#assigning-defaults
  and the default value cannot be `null` if text is `nullable: false` in the `anyOf`
  first alternative.
- `notes/create`: The `mediaIds` property has been marked as deprecated because it
  has the same behaviour as using `fileIds`, but the implementation tries to handlè
  `fileIds` first.
- The result schema for `admin/emoji/list` has been altered because the `host`
  property will always be `null` as it is filtered this way in the database query.
  See packages/backend/src/server/api/endpoints/admin/emoji/list.ts line 67.

* enhance(doc): explain nullable hostname

* update changelog

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
2022-04-02 15:04:36 +09:00
syuilo
c09c75c625 refactor and performance improvements 2022-03-26 17:19:27 +09:00
syuilo
523ee14a73 refactor: migrate to typeorm 3.0 (#8443)
* wip

* wip

* wip

* Update following.ts

* wip

* wip

* wip

* Update resolve-user.ts

* maxQueryExecutionTime

* wip

* wip
2022-03-26 15:34:00 +09:00
syuilo
921299b02f perf(server): refactor and performance improvements 2022-03-25 16:27:41 +09:00
syuilo
4c2d4d76e6 perf(server): reduce db query 2022-03-21 01:22:00 +09:00
syuilo
e3afe9fd82 delete needless instance drive columns 2022-03-07 21:20:14 +09:00
syuilo
3b86bdf18c feat: アンケート終了通知
Resolve #4664
2022-03-06 16:06:27 +09:00
syuilo
17f7b41240 feat: 時限ミュート
#7677
2022-03-04 20:23:53 +09:00
syuilo
f71aa3df32 feat: instance default theme 2022-03-01 23:58:01 +09:00
tamaina
13cc69fe1c Fix avatar/banner proxy (#8346)
* Fix avatar/banner proxy

Co-authored-by: mei23 <m@m544.net>

* use getAvatarUrl

* fix

* join avatar and banner to improve performance

* join

* Update hybrid-timeline.ts

* fix

Co-authored-by: mei23 <m@m544.net>
Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
2022-02-27 13:59:10 +09:00
syuilo
94228778c9 refactor: Use ESM (#8358)
* wip

* wip

* fix

* clean up

* Update tsconfig.json

* Update activitypub.ts

* wip
2022-02-27 11:07:39 +09:00
syuilo
b13aebab57 refactor 2022-02-25 20:03:17 +09:00
syuilo
18ea7a1142 remove max note text length setting
Resolve #8323
2022-02-20 16:07:43 +09:00
tamaina
706c1b054d SchemaTypeの型計算量を削減 (#8332)
* schema typeの型計算量を削減

* reduce some type error

* wip

* fix

* clean up

* more shrink
2022-02-19 23:21:28 +09:00
syuilo
81c7db0744 refactor: use ajv instead of cafy (#8324)
* wip

* wip

* Update abuse-user-reports.ts

* Update files.ts

* Update list-remote.ts

* Update list.ts

* Update show-users.ts

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* Update update.ts

* Update search.ts

* Update reactions.ts

* Update search.ts

* wip

* wip

* wip

* wip

* Update update.ts

* Update relation.ts

* Update available.ts

* wip

* wip

* wip

* Update packages/backend/src/server/api/define.ts

Co-authored-by: Johann150 <johann.galle@protonmail.com>

* Update define.ts

* Update define.ts

* typo

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* Update update.ts

* wip

* Update signup.ts

* Update call.ts

* minimum for limit

* type

* remove needless annotation

* wip

* Update signup.ts

* wip

* wip

* fix

* Update create.ts

Co-authored-by: Johann150 <johann.galle@protonmail.com>
2022-02-19 14:05:32 +09:00
syuilo
063330c9cf refactor: add InstanceRepository 2022-02-18 20:43:50 +09:00
syuilo
28c859ff93 enhance(server): add indexes for following host 2022-02-11 12:47:42 +09:00
syuilo
9e41714e6e feat: インスタンスのテーマカラーを設定できるように 2022-02-09 21:25:48 +09:00
nullobsi
92e94d688c feat: Option to show replies in timeline (rebase #7685) (#8202)
* Add an option for timeline replies. Credit to Emilis (puffaboo)

* update db on request
2022-02-06 16:02:48 +09:00
syuilo
b0536a5810 refactor: use toISOString 2022-02-03 20:45:18 +09:00
syuilo
e1b9c22874 enhance: convert svg to png of custom emojis 2022-01-21 18:47:02 +09:00
Johann150
627e3c07b9 enhance: Forward report (#8001)
* implement sending AP Flag object

Optionally allow a user to select to forward a report about a remote
user to the other instance. This is added in a backwards-compatible way.

* add locale string

* forward report only for moderators

* add switch to moderator UI to forward report

* fix report note url

* return forwarded status from API

apparently forgot to carry this over from my testing environment

* object in Flag activity has to be an array

For correct interoperability with Pleroma the "object" property of the Flag
activity has to be an array.

This array will in the future also hold the link to respective notes, so it
makes sense to correct this on our side.

* Update get-note-menu.ts

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
2022-01-21 03:06:38 +09:00
syuilo
3230cdaa4f feat(server): store mime type of webpublic 2022-01-20 02:40:13 +09:00
tamaina
66ef4f1ebe refactor: APIエンドポイントファイルの定義を良い感じにする (#8154)
* Fix API Schema Error

* Delete SimpleSchema/SimpleObj
and Move schemas to dedicated files

* Userのスキーマを分割してみる

* define packMany type

* add ,

* Ensure enum schema and Make "as const" put once

* test?

* Revert "test?"

This reverts commit 97dc9bfa70851bfb7d1cf38e883f8df20fb78b79.

* Revert "Fix API Schema Error"

This reverts commit 21b6176d974ed8e3eb73723ad21a105c5d297323.

* ✌️

* clean up

* test?

* wip

* wip

* better schema def

* ✌️

* fix

* add minLength property

* wip

* wip

* wip

* anyOf/oneOf/allOfに対応? ~ relation.ts

* refactor!

* Define MinimumSchema

* wip

* wip

* anyOf/oneOf/allOfが動作するようにUnionSchemaTypeを修正

* anyOf/oneOf/allOfが動作するようにUnionSchemaTypeを修正

* Update packages/backend/src/misc/schema.ts

Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>

* fix

* array oneOfをより正確な型に

* array oneOfをより正確な型に

* wip

* ✌️

* なんかもういろいろ

* remove

* very good schema

* api schema

* wip

* refactor: awaitAllの型定義を変えてみる

* fix

* specify types in awaitAll

* specify types in awaitAll

* ✌️

* wip

* ...

* ✌️

* AllowDateはやめておく

* 不必要なoptional: false, nullable: falseを廃止

* Packedが展開されないように

* 続packed

* wip

* define note type

* wip

* UserDetailedをMeDetailedかUserDetailedNotMeかを区別できるように

* wip

* wip

* wip specify user type of other schemas

* ok

* convertSchemaToOpenApiSchemaを改修

* convertSchemaToOpenApiSchemaを改修

* Fix

* fix

* ✌️

* wip

* 分割代入ではなくallOfで定義するように

Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
2022-01-18 22:27:10 +09:00