Compare commits
	
		
			44 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | ea60565b0d | ||
|   | a26585dcc7 | ||
|   | 008e5bd24c | ||
|   | ebc6564fbb | ||
|   | 06b5078245 | ||
|   | 68337f95ff | ||
|   | 72e148002a | ||
|   | f0a03f71eb | ||
|   | 6049473e46 | ||
|   | f9f2787dfc | ||
|   | b0a068e269 | ||
|   | dd5546690a | ||
|   | d87b6d38ab | ||
|   | 4069bb170a | ||
|   | 600c009549 | ||
|   | c953a28201 | ||
|   | f6541df42a | ||
|   | a57e9460c8 | ||
|   | c7bcf31105 | ||
|   | a397c040fe | ||
|   | e311d73ffc | ||
|   | 2a3599a14d | ||
|   | b85dc8a658 | ||
|   | 7513123052 | ||
|   | 2526b86ec5 | ||
|   | e45aa0532c | ||
|   | 71fc84e224 | ||
|   | 6b726eea39 | ||
|   | acd4b101e1 | ||
|   | 98b8a94f2b | ||
|   | 7d31bd97ff | ||
|   | 828a2a73c9 | ||
|   | bdc7167cf4 | ||
|   | 45b94086ed | ||
|   | e62bb7cdaf | ||
|   | c5f65d9eeb | ||
|   | 4557856104 | ||
|   | 4a23c36740 | ||
|   | 2553b20130 | ||
|   | 6982faf668 | ||
|   | 4db972318f | ||
|   | 81006566a5 | ||
|   | 6abc053a48 | ||
|   | 03a3c56a54 | 
							
								
								
									
										3
									
								
								.autogen/check_pr.jq
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,3 @@ | ||||
| .[] | ||||
| .head | ||||
| .label | ||||
							
								
								
									
										2
									
								
								.autogen/next_url.jq
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,2 @@ | ||||
| .links | ||||
| .next | ||||
							
								
								
									
										39
									
								
								.autogen/patreon.jq
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,39 @@ | ||||
| ( | ||||
|   .data | | ||||
|   map( | ||||
|     select( | ||||
|       .relationships | ||||
|       .currently_entitled_tiers | ||||
|       .data[] | ||||
|     ) | ||||
|   ) | | ||||
|   map( | ||||
|     .relationships | ||||
|     .user | ||||
|     .data | ||||
|     .id | ||||
|   ) | ||||
| ) as $data | | ||||
| .included | | ||||
| map( | ||||
|   select( | ||||
|     .id as $id | | ||||
|     $data | | ||||
|     contains( | ||||
|       [ | ||||
|         $id | ||||
|       ] | ||||
|     ) | ||||
|   ) | ||||
| ) | | ||||
| map( | ||||
|   .attributes | | ||||
|   [ | ||||
|     .full_name, | ||||
|     .thumb_url, | ||||
|     .url | ||||
|   ] | | ||||
|   @tsv | ||||
| ) | | ||||
| .[] | | ||||
| @text | ||||
							
								
								
									
										87
									
								
								.autogen/update_readme_patreon.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						| @@ -0,0 +1,87 @@ | ||||
| #!/usr/bin/env bash | ||||
| # __MISSKEY_BEARER_TOKEN= | ||||
| # __MISSKEY_CAMPAIGN_ID= | ||||
| # __MISSKEY_GITHUB_TOKEN= | ||||
| # __MISSKEY_HEAD=syuilo:patch-autogen | ||||
| # __MISSKEY_REPO=syuilo/misskey | ||||
| # __MISSKEY_BRANCH=develop | ||||
| test "$(curl -LSs -w '\n' -- "https://api.github.com/repos/$REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN" | jq -r -f check_pr.jq | grep $__MISSKEY_HEAD)" && exit 1 | ||||
| cd "$(dirname $0)/.." && \ | ||||
| touch null.cache && \ | ||||
| rm *.cache && \ | ||||
| git checkout $__MISSKEY_BRANCH && \ | ||||
| git pull origin $__MISSKEY_BRANCH && \ | ||||
| git pull upstream $__MISSKEY_BRANCH && \ | ||||
| git stash && \ | ||||
| git rebase -f upstream/$__MISSKEY_BRANCH && \ | ||||
| git branch patch-autogen && \ | ||||
| git checkout patch-autogen && \ | ||||
| git reset --hard HEAD || \ | ||||
| exit 1 | ||||
| touch patreon.md.cache && \ | ||||
| rm patreon.md.cache && \ | ||||
| echo '<!-- PATREON_START -->' > patreon.md.cache && \ | ||||
| url="https://www.patreon.com/api/oauth2/v2/campaigns/$__MISSKEY_CAMPAIGN_ID/members?include=currently_entitled_tiers,user&fields%5Btier%5D=title&fields%5Buser%5D=full_name,thumb_url,url,hide_pledges" | ||||
| while : | ||||
|  do | ||||
|   touch patreon.raw.cache && \ | ||||
|   rm patreon.raw.cache && \ | ||||
|   curl -LSs -w '\n' -H "Authorization: Bearer $__MISSKEY_BEARER_TOKEN" -- $url > patreon.raw.cache && \ | ||||
|   touch patreon.cache && \ | ||||
|   rm patreon.cache && \ | ||||
|   cat patreon.raw.cache | \ | ||||
|   jq -r -f patreon.jq >> patreon.cache && \ | ||||
|   echo '<table><tr>' >> patreon.md.cache && \ | ||||
|   cat patreon.cache | \ | ||||
|   awk -F'\t' '{print $2,$1}' | \ | ||||
|   sed -e 's/ /\\" alt=\\"/' | \ | ||||
|   xargs -I% echo '<td><img src="%" width="100"></td>' >> patreon.md.cache && \ | ||||
|   echo '</tr><tr>' >> patreon.md.cache && \ | ||||
|   cat patreon.cache | \ | ||||
|   awk -F'\t' '{print $3,$1}' | \ | ||||
|   sed -e 's/ /\\">/' | \ | ||||
|   xargs -I% echo '<td><a href="%</a></td>' >> patreon.md.cache && \ | ||||
|   echo '</tr></table>' >> patreon.md.cache || \ | ||||
|   exit 1 | ||||
|   new_url="$(cat patreon.raw.cache | jq -r -f next_url.jq)" | ||||
|   test "$new_url" = 'null' && \ | ||||
|   break || \ | ||||
|   URL="$url" | ||||
| done | ||||
| ignore= && \ | ||||
| echo -e "\n**Last updated:** $(date -uR | sed 's/\+0000/UTC/')\n<!-- PATREON_END -->" >> patreon.md.cache && \ | ||||
| touch README.md && \ | ||||
| touch .autogen/README.md && \ | ||||
| rm .autogen/README.md && \ | ||||
| mv README.md .autogen/README.md && \ | ||||
| cat .autogen/README.md | while IFS= read line; | ||||
|  do | ||||
|   if [[ -z "$ignore" ]] | ||||
|    then | ||||
|     if [[ "$line" = '<!-- PATREON_START -->' ]] | ||||
|      then | ||||
|       ignore='PATREON_INSIDE' | ||||
|      else | ||||
|       echo "$line" >> README.md | ||||
|     fi | ||||
|    else | ||||
|     if [[ "$LINE" = '<!-- PATREON_END -->' ]] | ||||
|      then | ||||
|       ignore= | ||||
|       cat patreon.md.cache >> README.md | ||||
|     fi | ||||
|   fi | ||||
| done | ||||
| cat patreon.md.cache | ||||
| touch null.cache && \ | ||||
| rm *.cache && \ | ||||
| diff .autogen/README.md README.md > diff.cache | ||||
| cat diff.cache && \ | ||||
| test 4 -lt $(cat diff.cache | wc -l) && \ | ||||
| git add README.md && \ | ||||
| git commit -m 'Update README.md [AUTOGEN]' && \ | ||||
| git push -f origin patch-autogen && \ | ||||
| curl -LSs -w '\n' -X POST -d '{"title":"[AUTOMATED] Update README.md","body":"*This pull request was created by a tool.*","head":"'$__MISSKEY_HEAD'","base":"'$__MISSKEY_BRANCH'"}' -- "https://api.github.com/repos/$__MISSKEY_REPO/pulls?access_token=$__MISSKEY_GITHUB_TOKEN" | ||||
| git stash | ||||
| git checkout $__MISSKEY_BRANCH | ||||
| git branch -D patch-autogen | ||||
							
								
								
									
										13
									
								
								.babelrc
									
									
									
									
									
								
							
							
						
						| @@ -1,13 +0,0 @@ | ||||
| { | ||||
| 	"plugins": [ | ||||
| 		[ | ||||
| 			"@babel/plugin-transform-runtime", | ||||
| 			{ | ||||
| 				"corejs": { | ||||
| 					"version": 3, | ||||
| 					"proposals": true | ||||
| 				} | ||||
| 			} | ||||
| 		] | ||||
| 	] | ||||
| } | ||||
| @@ -1,12 +1,93 @@ | ||||
| version: 2.1 | ||||
|  | ||||
| executors: | ||||
|   default: | ||||
|     working_directory: /tmp/workspace | ||||
|     docker: | ||||
|       - image: misskey/ci:latest | ||||
|       - image: circleci/mongo:latest | ||||
|   with-redis: | ||||
|     working_directory: /tmp/workspace | ||||
|     docker: | ||||
|       - image: misskey/ci:latest | ||||
|       - image: circleci/mongo:latest | ||||
|       - image: circleci/redis:latest | ||||
|   docker: | ||||
|     working_directory: /tmp/workspace | ||||
|     docker: | ||||
|       - image: docker:latest | ||||
|  | ||||
| jobs: | ||||
|   build: | ||||
|     executor: default | ||||
|     steps: | ||||
|       - checkout | ||||
|       - run: | ||||
|           name: Ensure yarn.lock | ||||
|           command: | | ||||
|             touch yarn.lock | ||||
|       - restore_cache: | ||||
|           name: Restore npm package caches | ||||
|           keys: | ||||
|             - yarn-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "yarn.lock" }} | ||||
|             - yarn-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}- | ||||
|             - yarn-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}- | ||||
|             - yarn-v1-arch-{{ arch }}- | ||||
|             - yarn-v1- | ||||
|       - run: | ||||
|           name: Install Dependencies | ||||
|           command: | | ||||
|             yarn install | ||||
|       - run: | ||||
|           name: Configure | ||||
|           command: | | ||||
|             cp .circleci/misskey/default.yml .config | ||||
|             cp .circleci/misskey/test.yml .config | ||||
|       - run: | ||||
|           name: Build | ||||
|           command: | | ||||
|             yarn build | ||||
|             touch yarn.lock | ||||
|       - save_cache: | ||||
|           name: Cache npm packages | ||||
|           key: yarn-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "yarn.lock" }} | ||||
|           paths: | ||||
|             - node_modules | ||||
|       - persist_to_workspace: | ||||
|           root: . | ||||
|           paths: | ||||
|             - . | ||||
|   test: | ||||
|     parameters: | ||||
|       executor: | ||||
|         type: string | ||||
|         default: "default" | ||||
|       without_redis: | ||||
|         type: boolean | ||||
|         default: false | ||||
|     executor: <<parameters.executor>> | ||||
|     steps: | ||||
|       - attach_workspace: | ||||
|           at: /tmp/workspace | ||||
|       - when: | ||||
|           condition: <<parameters.without_redis>> | ||||
|           steps: | ||||
|             - run: | ||||
|                 name: Configure | ||||
|                 command: | | ||||
|                   mv .config/test.yml .config/test_redis.yml | ||||
|                   touch .config/test.yml | ||||
|                   cat .config/test_redis.yml | while IFS= read line; do if [[ "$line" = '# __REDIS__' ]]; then break; else echo "$line" >> .config/test.yml; fi; done | ||||
|       - run: | ||||
|           name: Test | ||||
|           command: | | ||||
|             yarn test | ||||
|             touch yarn.lock | ||||
|       - save_cache: | ||||
|           name: Cache npm packages | ||||
|           key: yarn-v1-arch-{{ arch }}-env-{{ .Environment.variableName }}-package-{{ checksum "package.json" }}-lock-{{ checksum "yarn.lock" }} | ||||
|           paths: | ||||
|             - node_modules | ||||
|   docker: | ||||
|     parameters: | ||||
|       with_deploy: | ||||
| @@ -15,8 +96,7 @@ jobs: | ||||
|     executor: docker | ||||
|     steps: | ||||
|       - checkout | ||||
|       - setup_remote_docker: | ||||
|           version: 19.03.13 | ||||
|       - setup_remote_docker | ||||
|       - run: | ||||
|           name: Build | ||||
|           command: | | ||||
| @@ -32,15 +112,80 @@ jobs: | ||||
|                     apk update && apk add jq | ||||
|                     docker tag misskey/misskey misskey/misskey:$(cat package.json | jq -r .version) | ||||
|                     docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD | ||||
|                     docker push -a misskey/misskey | ||||
|                     docker push misskey/misskey | ||||
|                    else | ||||
|                     echo -e '\033[0;33mAborted deploying to Docker Hub\033[0;39m' | ||||
|                   fi | ||||
|  | ||||
| workflows: | ||||
|   version: 2 | ||||
|   nodejs: | ||||
|     jobs: | ||||
|       - hold: | ||||
|           name: manual-build-trigger | ||||
|           type: approval | ||||
|           filters: | ||||
|             branches: | ||||
|               ignore: master | ||||
|       - build: | ||||
|           name: manual-build | ||||
|           requires: | ||||
|             - manual-build-trigger | ||||
|           filters: | ||||
|             branches: | ||||
|               ignore: master | ||||
|       - build: | ||||
|           name: auto-build | ||||
|           filters: | ||||
|             branches: | ||||
|               only: master | ||||
|       - test: | ||||
|           name: manual-test-with-redis | ||||
|           executor: with-redis | ||||
|           requires: | ||||
|             - manual-build | ||||
|           filters: | ||||
|             branches: | ||||
|               ignore: master | ||||
|       - test: | ||||
|           name: auto-test-without-redis | ||||
|           executor: with-redis | ||||
|           requires: | ||||
|             - auto-build | ||||
|           filters: | ||||
|             branches: | ||||
|               only: master | ||||
|       - test: | ||||
|           name: manual-test-with-redis | ||||
|           without_redis: true | ||||
|           requires: | ||||
|             - manual-build | ||||
|           filters: | ||||
|             branches: | ||||
|               ignore: master | ||||
|       - test: | ||||
|           name: auto-test-without-redis | ||||
|           without_redis: true | ||||
|           requires: | ||||
|             - auto-build | ||||
|           filters: | ||||
|             branches: | ||||
|               only: master | ||||
|   docker: | ||||
|     jobs: | ||||
|       - hold: | ||||
|           name: manual-build-trigger | ||||
|           type: approval | ||||
|           filters: | ||||
|             branches: | ||||
|               ignore: master | ||||
|       - docker: | ||||
|           name: manual-build | ||||
|           requires: | ||||
|             - manual-build-trigger | ||||
|           filters: | ||||
|             branches: | ||||
|               ignore: master | ||||
|       - docker: | ||||
|           name: auto-build | ||||
|           with_deploy: true | ||||
|   | ||||
| @@ -1,12 +1,14 @@ | ||||
| url: 'http://misskey.local' | ||||
| port: 8080 | ||||
| db: | ||||
| port: 80 | ||||
| mongodb: | ||||
|   host: localhost | ||||
|   port: 5432 | ||||
|   db: test-misskey | ||||
|   user: postgres | ||||
|   port: 27017 | ||||
|   db: misskey | ||||
|   user: syuilo | ||||
|   pass: '' | ||||
| drive: | ||||
|   storage: 'db' | ||||
| redis: | ||||
|   host: localhost | ||||
|   port: 6379 | ||||
| id: aid | ||||
|   pass: '' | ||||
|   | ||||
| @@ -1,12 +1,15 @@ | ||||
| url: 'http://misskey.local' | ||||
| port: 8080 | ||||
| db: | ||||
| port: 80 | ||||
| mongodb: | ||||
|   host: localhost | ||||
|   port: 5432 | ||||
|   port: 27017 | ||||
|   db: test-misskey | ||||
|   user: postgres | ||||
|   user: admin | ||||
|   pass: '' | ||||
| drive: | ||||
|   storage: 'db' | ||||
| # __REDIS__ | ||||
| redis: | ||||
|   host: localhost | ||||
|   port: 6379 | ||||
| id: aid | ||||
|   pass: '' | ||||
|   | ||||
| @@ -1,4 +0,0 @@ | ||||
| # db settings | ||||
| POSTGRES_PASSWORD=example-misskey-pass | ||||
| POSTGRES_USER=example-misskey-user | ||||
| POSTGRES_DB=misskey | ||||
| @@ -1,19 +1,8 @@ | ||||
| #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | ||||
| # Misskey configuration | ||||
| #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | ||||
|  | ||||
| #   ┌─────┐ | ||||
| #───┘ URL └───────────────────────────────────────────────────── | ||||
|  | ||||
| # Final accessible URL seen by a user. | ||||
| url: https://example.tld/ | ||||
|  | ||||
| # ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE | ||||
| # URL SETTINGS AFTER THAT! | ||||
|  | ||||
| #   ┌───────────────────────┐ | ||||
| #───┘ Port and TLS settings └─────────────────────────────────── | ||||
|  | ||||
| ### Port and TLS settings ###################################### | ||||
| # | ||||
| # Misskey supports two deployment options for public. | ||||
| # | ||||
| @@ -41,119 +30,103 @@ url: https://example.tld/ | ||||
| #   You need to set Certificate in 'https' section. | ||||
|  | ||||
| # To use option 1, uncomment below line. | ||||
| #port: 3000    # A port that your Misskey server should listen. | ||||
| # port: 3000    # A port that your Misskey server should listen. | ||||
|  | ||||
| # To use option 2, uncomment below lines. | ||||
| #port: 443 | ||||
| # port: 443 | ||||
| # | ||||
| # https: | ||||
| #   # path for certification | ||||
| #   key: /etc/letsencrypt/live/example.tld/privkey.pem | ||||
| #   cert: /etc/letsencrypt/live/example.tld/fullchain.pem | ||||
|  | ||||
| #https: | ||||
| #  # path for certification | ||||
| #  key: /etc/letsencrypt/live/example.tld/privkey.pem | ||||
| #  cert: /etc/letsencrypt/live/example.tld/fullchain.pem | ||||
| ################################################################ | ||||
|  | ||||
| #   ┌──────────────────────────┐ | ||||
| #───┘ PostgreSQL configuration └──────────────────────────────── | ||||
|  | ||||
| db: | ||||
| mongodb: | ||||
|   host: localhost | ||||
|   port: 5432 | ||||
|  | ||||
|   # Database name | ||||
|   port: 27017 | ||||
|   db: misskey | ||||
|  | ||||
|   # Auth | ||||
|   user: example-misskey-user | ||||
|   pass: example-misskey-pass | ||||
|  | ||||
|   # Whether disable Caching queries | ||||
|   #disableCache: true | ||||
| drive: | ||||
|   storage: 'db' | ||||
|  | ||||
|   # Extra Connection options | ||||
|   #extra: | ||||
|   #  ssl: true | ||||
| # OR | ||||
|  | ||||
| #   ┌─────────────────────┐ | ||||
| #───┘ Redis configuration └───────────────────────────────────── | ||||
| #drive: | ||||
| #  storage: 'minio' | ||||
| #  bucket: | ||||
| #  prefix: | ||||
| #  config: | ||||
| #    endPoint: | ||||
| #    port: | ||||
| #    useSSL: | ||||
| #    accessKey: | ||||
| #    secretKey: | ||||
|  | ||||
| redis: | ||||
|   host: localhost | ||||
|   port: 6379 | ||||
|   #pass: example-pass | ||||
|   #prefix: example-prefix | ||||
|   #db: 1 | ||||
| # S3/GCS example | ||||
| # | ||||
| # * Replace <endpoint> to | ||||
| #     S3: see https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region | ||||
| #     GCS: use 'storage.googleapis.com' | ||||
| # | ||||
| # * Replace <region> to | ||||
| #     S3: see https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region | ||||
| #     GCS: not needed (just delete the region line) | ||||
| # | ||||
| #drive: | ||||
| #  storage: 'minio' | ||||
| #  bucket: bucket-name | ||||
| #  prefix: files | ||||
| #  baseUrl: https://bucket-name.<endpoint> | ||||
| #  config: | ||||
| #    endPoint: <endpoint> | ||||
| #    region: <region> | ||||
| #    useSSL: true | ||||
| #    accessKey: XXX | ||||
| #    secretKey: YYY | ||||
|  | ||||
| #   ┌─────────────────────────────┐ | ||||
| #───┘ Elasticsearch configuration └───────────────────────────── | ||||
| # S3/GCS example (with CDN, custom domain) | ||||
| # | ||||
| #drive: | ||||
| #  storage: 'minio' | ||||
| #  bucket: drive.example.com | ||||
| #  prefix: files | ||||
| #  baseUrl: https://drive.example.com | ||||
| #  config: | ||||
| #    endPoint: <endpoint> | ||||
| #    region: <region> | ||||
| #    useSSL: true | ||||
| #    accessKey: XXX | ||||
| #    secretKey: YYY | ||||
|  | ||||
| # If enabled: | ||||
| #  The first account created is automatically marked as Admin. | ||||
| autoAdmin: true | ||||
|  | ||||
| # | ||||
| # Below settings are optional | ||||
| # | ||||
|  | ||||
| # Redis | ||||
| #redis: | ||||
| #  host: localhost | ||||
| #  port: 6379 | ||||
| #  pass: example-pass | ||||
|  | ||||
| # Elasticsearch | ||||
| #elasticsearch: | ||||
| #  host: localhost | ||||
| #  port: 9200 | ||||
| #  ssl: false | ||||
| #  user:  | ||||
| #  pass:  | ||||
|  | ||||
| #   ┌───────────────┐ | ||||
| #───┘ ID generation └─────────────────────────────────────────── | ||||
|  | ||||
| # You can select the ID generation method. | ||||
| # You don't usually need to change this setting, but you can | ||||
| # change it according to your preferences. | ||||
|  | ||||
| # Available methods: | ||||
| # aid ... Short, Millisecond accuracy | ||||
| # meid ... Similar to ObjectID, Millisecond accuracy | ||||
| # ulid ... Millisecond accuracy | ||||
| # objectid ... This is left for backward compatibility | ||||
|  | ||||
| # ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE | ||||
| # ID SETTINGS AFTER THAT! | ||||
|  | ||||
| id: 'aid' | ||||
|  | ||||
| #   ┌─────────────────────┐ | ||||
| #───┘ Other configuration └───────────────────────────────────── | ||||
| #  pass: null | ||||
|  | ||||
| # Whether disable HSTS | ||||
| #disableHsts: true | ||||
|  | ||||
| # Number of worker processes | ||||
| # Clustering | ||||
| #clusterLimit: 1 | ||||
|  | ||||
| # Job concurrency per worker | ||||
| # deliverJobConcurrency: 128 | ||||
| # inboxJobConcurrency: 16 | ||||
|  | ||||
| # Job rate limiter | ||||
| # deliverJobPerSec: 128 | ||||
| # inboxJobPerSec: 16 | ||||
|  | ||||
| # Job attempts | ||||
| # deliverJobMaxAttempts: 12 | ||||
| # inboxJobMaxAttempts: 8 | ||||
|  | ||||
| # IP address family used for outgoing request (ipv4, ipv6 or dual) | ||||
| #outgoingAddressFamily: ipv4 | ||||
|  | ||||
| # Syslog option | ||||
| #syslog: | ||||
| #  host: localhost | ||||
| #  port: 514 | ||||
|  | ||||
| # Proxy for HTTP/HTTPS | ||||
| #proxy: http://127.0.0.1:3128 | ||||
|  | ||||
| #proxyBypassHosts: [ | ||||
| #  'example.com', | ||||
| #  '192.0.2.8' | ||||
| #] | ||||
|  | ||||
| # Proxy for SMTP/SMTPS | ||||
| #proxySmtp: http://127.0.0.1:3128   # use HTTP/1.1 CONNECT | ||||
| #proxySmtp: socks4://127.0.0.1:1080 # use SOCKS4 | ||||
| #proxySmtp: socks5://127.0.0.1:1080 # use SOCKS5 | ||||
|  | ||||
| # Media Proxy | ||||
| #mediaProxy: https://example.com/proxy | ||||
|  | ||||
| # Sign to ActivityPub GET request (default: false) | ||||
| #signToActivityPubGet: true | ||||
|   | ||||
							
								
								
									
										13
									
								
								.config/mongo_initdb_example.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,13 @@ | ||||
| var user = { | ||||
| 	user: 'example-misskey-user', | ||||
| 	pwd: 'example-misskey-pass', | ||||
| 	roles: [ | ||||
| 	    { | ||||
| 		    role: 'readWrite', | ||||
| 		    db: 'misskey' | ||||
| 	    } | ||||
| 	] | ||||
| }; | ||||
|  | ||||
| db.createUser(user); | ||||
|  | ||||
							
								
								
									
										6
									
								
								.dockerignore
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| @@ -5,10 +5,8 @@ | ||||
| .vscode | ||||
| Dockerfile | ||||
| build/ | ||||
| built/ | ||||
| db/ | ||||
| docker-compose.yml | ||||
| elasticsearch/ | ||||
| node_modules/ | ||||
| mongo/ | ||||
| redis/ | ||||
| files/ | ||||
| elasticsearch/ | ||||
|   | ||||
							
								
								
									
										22
									
								
								.eslintrc
									
									
									
									
									
								
							
							
						
						| @@ -1,13 +1,31 @@ | ||||
| { | ||||
| 	"parserOptions": { | ||||
| 		"parser": "@typescript-eslint/parser" | ||||
| 		"parser": "typescript-eslint-parser" | ||||
| 	}, | ||||
| 	"extends": [ | ||||
| 		"eslint:recommended" | ||||
| 		"eslint:recommended", | ||||
| 		"plugin:vue/recommended" | ||||
| 	], | ||||
| 	"rules": { | ||||
| 		"vue/require-v-for-key": false, | ||||
| 		"vue/max-attributes-per-line": false, | ||||
| 		"vue/html-indent": false, | ||||
| 		"vue/html-self-closing": false, | ||||
| 		"vue/no-unused-vars": false, | ||||
| 		"vue/attributes-order": false, | ||||
| 		"vue/require-prop-types": false, | ||||
| 		"vue/require-default-prop": false, | ||||
| 		"vue/html-closing-bracket-spacing": false, | ||||
| 		"vue/singleline-html-element-content-newline": false, | ||||
| 		"vue/no-v-html": false, | ||||
| 		"no-console": 0, | ||||
| 		"no-unused-vars": 0, | ||||
| 		"no-empty": 0 | ||||
| 	}, | ||||
| 	"globals": { | ||||
| 		"ENV": true, | ||||
| 		"VERSION": true, | ||||
| 		"API": true, | ||||
| 		"LANGS": true | ||||
| 	} | ||||
| } | ||||
|   | ||||
							
								
								
									
										6
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -1,7 +1,5 @@ | ||||
| *.svg -diff -text | ||||
| *.psd -diff -text | ||||
| *.ai -diff -text | ||||
| *.mqo -diff -text | ||||
| *.glb -diff -text | ||||
| *.blend -diff -text | ||||
| *.afdesign -diff -text | ||||
| yarn.lock -diff -text | ||||
| package-lock.json -diff -text | ||||
|   | ||||
							
								
								
									
										1
									
								
								.github/CODEOWNERS
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -6,6 +6,7 @@ | ||||
| /.github/                                       @syuilo @AyaMorisawa @acid-chicken | ||||
| /.vscode/                                       @acid-chicken | ||||
| /assets/                                        @syuilo # @tamaina | ||||
| /cli/                                           @syuilo | ||||
| /docs/                                          @syuilo | ||||
| /docs/*.en.md                                   @AyaMorisawa # @skid9000 | ||||
| # /docs/*.fr.md                                 @BoFFire | ||||
|   | ||||
							
								
								
									
										3
									
								
								.github/FUNDING.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -1,3 +0,0 @@ | ||||
| # These are supported funding model platforms | ||||
|  | ||||
| patreon: syuilo | ||||
							
								
								
									
										5
									
								
								.github/ISSUE_TEMPLATE/01_bug-report.md
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -7,11 +7,6 @@ assignees: '' | ||||
|  | ||||
| --- | ||||
|  | ||||
| <!-- | ||||
| Thanks for reporting! | ||||
| First, in order to avoid duplicate Issues, please search to see if the problem you found has already been reported. | ||||
| --> | ||||
|  | ||||
| ## 💡 Summary | ||||
|  | ||||
| <!-- Tell us what the bug is --> | ||||
|   | ||||
							
								
								
									
										53
									
								
								.github/workflows/nodejs.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -1,53 +0,0 @@ | ||||
| name: Node.js CI | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|       - develop | ||||
|   pull_request: | ||||
|  | ||||
| jobs: | ||||
|   build_and_test: | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     strategy: | ||||
|       matrix: | ||||
|         node-version: [14.x, 16.x] | ||||
|  | ||||
|     services: | ||||
|       postgres: | ||||
|         image: postgres:10-alpine | ||||
|         ports: | ||||
|           - 5432:5432 | ||||
|         env: | ||||
|           POSTGRES_DB: test-misskey | ||||
|           POSTGRES_HOST_AUTH_METHOD: trust | ||||
|       redis: | ||||
|         image: redis:alpine | ||||
|         ports: | ||||
|           - 6379:6379 | ||||
|  | ||||
|     steps: | ||||
|     - uses: actions/checkout@v2 | ||||
|     - name: Use Node.js ${{ matrix.node-version }} | ||||
|       uses: actions/setup-node@v1 | ||||
|       with: | ||||
|         node-version: ${{ matrix.node-version }} | ||||
|     - name: Install dependencies | ||||
|       run: yarn install | ||||
|     - name: Copy Configure | ||||
|       run: cp .circleci/misskey/*.yml .config | ||||
|     - name: Build | ||||
|       run: yarn build | ||||
|     - name: Test | ||||
|       run: yarn test | ||||
|  | ||||
|   lint: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@v2 | ||||
|     - uses: actions/setup-node@v1 | ||||
|       with: | ||||
|         node-version: 12.x | ||||
|     - run: yarn install | ||||
|     - run: yarn lint | ||||
							
								
								
									
										32
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -1,40 +1,22 @@ | ||||
| # Visual Studio Code | ||||
| /.vscode | ||||
| !/.vscode/extensions.json | ||||
|  | ||||
| # Intelij-IDEA | ||||
| /.idea | ||||
|  | ||||
| # Node.js | ||||
| /node_modules | ||||
| report.*.json | ||||
|  | ||||
| # config | ||||
| /.config/* | ||||
| !/.config/example.yml | ||||
| !/.config/docker_example.env | ||||
|  | ||||
| # misskey | ||||
| !/.config/mongo_initdb_example.js | ||||
| /.vscode | ||||
| /node_modules | ||||
| /build | ||||
| /built | ||||
| built | ||||
| /data | ||||
| /.cache-loader | ||||
| /db | ||||
| /elasticsearch | ||||
| npm-debug.log | ||||
| *.pem | ||||
| run.bat | ||||
| api-docs.json | ||||
| *.log | ||||
| /redis | ||||
| /mongo | ||||
| /elasticsearch | ||||
| *.code-workspace | ||||
| yarn.lock | ||||
| .DS_Store | ||||
| /files | ||||
| ormconfig.json | ||||
|  | ||||
| # blender backups | ||||
| *.blend1 | ||||
| *.blend2 | ||||
| *.blend3 | ||||
| *.blend4 | ||||
| *.blend5 | ||||
|   | ||||
| @@ -1,5 +0,0 @@ | ||||
| { | ||||
| 	"ignoredFiles": [ | ||||
| 		"test/resources/*" | ||||
| 	] | ||||
| } | ||||
| @@ -1,7 +0,0 @@ | ||||
| { | ||||
| 	"extension": ["ts","js","cjs","mjs"], | ||||
| 	"require": ["ts-node/register", "tsconfig-paths/register"], | ||||
| 	"slow": 1000, | ||||
| 	"timeout": 30000, | ||||
| 	"exit": true | ||||
| } | ||||
| @@ -1 +1 @@ | ||||
| v16.2.0 | ||||
| v11.7.0 | ||||
|   | ||||
							
								
								
									
										2
									
								
								.vscode/extensions.json
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -2,10 +2,10 @@ | ||||
| 	"recommendations": [ | ||||
| 		"ducksoupdev.vue2", | ||||
| 		"editorconfig.editorconfig", | ||||
| 		"eg2.tslint", | ||||
| 		"eg2.vscode-npm-script", | ||||
| 		"hollowtree.vue-snippets", | ||||
| 		"ms-vscode.typescript-javascript-grammar", | ||||
| 		"ms-vscode.vscode-typescript-tslint-plugin", | ||||
| 		"octref.vetur", | ||||
| 		"sysoev.language-stylus" | ||||
| 	] | ||||
|   | ||||
							
								
								
									
										794
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						| @@ -1 +1,793 @@ | ||||
| see [releases](https://github.com/misskey-dev/misskey/releases) | ||||
| ChangeLog | ||||
| ========= | ||||
|  | ||||
| If you encounter any problems with updating, please try the following: | ||||
| 1. `npm run clean` or `npm run cleanall` | ||||
| 2. Retry update (Don't forget `npm i`) | ||||
|  | ||||
| 10.102.1 | ||||
| ---------- | ||||
| * 投稿が増殖する問題を修正 | ||||
| * リモートユーザーの修復処理が自動的に実行されない問題を修正 | ||||
|  | ||||
| 10.101.0 | ||||
| ---------- | ||||
| * WebFingerリクエストで Proxy, Keep-Alive などをサポート | ||||
| * AP actor Service のサポートが不完全な問題を修正 | ||||
| * Punycodeなインスタンスが重複登録される問題を修正 | ||||
| * ObjectStrage利用時にドライブファイルアイコンが表示されない問題を修正 | ||||
|  | ||||
| 10.100.0 | ||||
| ---------- | ||||
| * ユーザーリストでフォローボタンを表示するように | ||||
| * ドライブのファイルのサムネイルを修正 | ||||
| * 投稿ウィジットでローカルのみの公開範囲で投稿できない問題を修正 | ||||
| * TLを遡った時に抜けがある時がある問題を修正 | ||||
| * ユーザータイムラインが投稿日時順ではなくなっているのを修正 | ||||
| * 10.99.0 でチャートのレンダリングがおかしい問題を修正 | ||||
|  | ||||
| 10.99.0 | ||||
| ---------- | ||||
| * manifest.json にインスタンス名を反映させるように | ||||
| * Metaに投稿やユーザーのIDを設定するように | ||||
| * 設定でポートが指定されていない場合、環境変数を参照するように | ||||
| * フォローインポートで途中にエラーになるユーザーがいると途中で終了してしまう問題を修正 | ||||
| * フォローインポートで自分が含まれていた場合自分をフォローしてしまう問題を修正 | ||||
| * ServiceWorkerの設定がUIで有効にならない問題を修正 | ||||
| * ユーザー一覧でのユーザーの自己紹介が複数行になることがある問題を修正 | ||||
| * フォローインポートでAPI limitに達していても正常にリクエストされたように表示されてしまう問題を修正 | ||||
| * DBに保存されたrepository urlを変更する方法がない問題を修正 | ||||
| * デスクトップDeckだとviaが投稿内に2箇所表示される問題を修正 | ||||
| * デザインの調整 | ||||
| * 依存関係の更新 | ||||
| * ローカリゼーション | ||||
|  | ||||
| 10.98.3 | ||||
| ---------- | ||||
| * リアクションのカスタム絵文字の情報がNoteに添付されない問題を修正 | ||||
| * フォルダーの移動をするとき親フォルダーに自分自身を指定できてしまう問題を修正 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.98.2 | ||||
| ---------- | ||||
| * 他のインスタンスから添付画像が見れない問題を修正 | ||||
|  | ||||
| 10.98.1 | ||||
| ---------- | ||||
| * ドライブのファイルのサムネイルが表示されない問題を修正 | ||||
| * APでカスタム絵文字を送る時に常にimage/pngで送っている問題を修正 | ||||
| * いくらいじってもページリロードするとmisskeyのテーマがdark(future)になっちゃう問題を修正 | ||||
|  | ||||
| 10.98.0 | ||||
| ---------- | ||||
| * ドライブのファイルダウンロード時に元のファイル名を尊重するように | ||||
| * ドライブで画像以外のファイルを分かりやすく表示するように | ||||
| * TwemojiのCDNを変更 | ||||
| * モバイルで通知の設定がない問題を修正 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.97.2 | ||||
| ---------- | ||||
| * ビルド時に警告が出ないように修正 | ||||
|  | ||||
| 10.97.1 | ||||
| ---------- | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.97.0 | ||||
| ---------- | ||||
| * リアクションに絵文字やカスタム絵文字を使えるように | ||||
| * 不明なリアクションのフォールバックに star を使えるように | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.96.0 | ||||
| ---------- | ||||
| * 連合ユーザーの投稿に対してActivityPubオブジェクトを要求されたら元のインスタンスにリダイレクトするように | ||||
| * updatePersonを試行した時点でもlastFetchedAtを更新するように | ||||
| * 管理画面でリモートインスタンスの登録日時を表示 | ||||
| * ユーザーサジェストが機能しなくなっていた問題を修正 | ||||
| * 最近使ったハッシュタグ表示が機能していない問題を修正 | ||||
| * バグ修正 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.95.0 | ||||
| ---------- | ||||
| * ジョブを一覧できるように | ||||
| * MFMでURLを明示する構文の追加 | ||||
| * Articleタイプのアクティビティを受け入れるように | ||||
| * 凍結されたユーザーをサジェストしないように | ||||
| * ファビコンが保存されないのを修正 | ||||
| * キューのジョブクリアの動作を修正 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.94.0 | ||||
| ---------- | ||||
| * Faviconを設定できるように | ||||
| * アカウントを凍結したときすべてのフォローを解除するように | ||||
| * シェアページが機能していない問題を修正 | ||||
| * インスタンスブロックをしていてもRenote等すると取得されてしまう問題を修正 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.93.1 | ||||
| ---------- | ||||
| * データのエクスポートとインポートの動作を修正 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.93.0 | ||||
| ---------- | ||||
| * フォローリストをインポートできるように | ||||
| * embedプレイヤーを閉じれるように | ||||
| * リストをインポートしたときにプロキシアカウントがフォローするように修正 | ||||
| * Web Share Targetの動作を修正 | ||||
| * おすすめアンケートのチョイスを修正 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.92.4 | ||||
| ---------- | ||||
| * リストのエクスポートをできるように | ||||
| * ジョブキューウィジェットを追加 | ||||
| * URLプレビューのサムネイルが表示されないことがある問題を修正 | ||||
|  | ||||
| 10.92.3 | ||||
| ---------- | ||||
| * 管理画面の各種ジョブ数がおかしい問題を修正 | ||||
| * ジョブキューの動作を調整 | ||||
|  | ||||
| 10.92.2 | ||||
| ---------- | ||||
| * 管理画面で各種ジョブ数を一覧できるように | ||||
| * ジョブキューの動作を修正 | ||||
| * notes/children が遅い問題を修正 | ||||
|  | ||||
| 10.92.1 | ||||
| ---------- | ||||
| * アンケートの結果をリモートと同期するように | ||||
| * ジョブキューを有効に | ||||
| * 投稿の返信一覧に引用Renoteも含めるように | ||||
| * robots.txt追加 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.92.0 | ||||
| ---------- | ||||
| * Mastodonのアンケートに対応 | ||||
| * 複数回答できるアンケートを作成できるように | ||||
| * アンケートに期限を設定できるように | ||||
| * 絵文字ピッカーを改良 | ||||
| * ハッシュタグの判定を改善 | ||||
| * デッキのタグTLで別のタグをクリックしてもTLが変わらない問題を修正 | ||||
| * ユーザーサジェストで表示名が変わらない問題を修正 | ||||
| * UIのバグ修正 | ||||
| * デザインの調整 | ||||
| * など | ||||
|  | ||||
| 10.91.2 | ||||
| ---------- | ||||
| * 10.91.1 で追加した依存関係にXSS脆弱性があったので他のパッケージに差し替え | ||||
| * 初期アクセスでテーマが正しく設定されない問題を修正 | ||||
|  | ||||
| 10.91.1 | ||||
| ---------- | ||||
| * ログビューを強化 | ||||
| * テーマの切り替えをなめらかに | ||||
| * SVGの判定を修正 | ||||
|  | ||||
| 10.91.0 | ||||
| ---------- | ||||
| * ログを管理画面で見れるように | ||||
| * 文字サイズを設定できるように | ||||
| * 返信が表示されない問題を修正 | ||||
| * ユーザーページでユーザーを切り替えても前の人の情報が残る問題を修正 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.90.4 | ||||
| ---------- | ||||
| * url-previewでembedプレイヤー展開をオプトインにするように | ||||
| * デザインの調整 | ||||
| * ユーザビリティの強化 | ||||
|  | ||||
| 10.90.3 | ||||
| ---------- | ||||
| * モバイルのデッキで投稿フォームウィジェットが設置できなかった問題を修正 | ||||
| * ドキュメントの強化 | ||||
| * デザインの調整 | ||||
| * ユーザビリティの強化 | ||||
|  | ||||
| 10.90.2 | ||||
| ---------- | ||||
| * アカウントが削除できない問題を修正 | ||||
| * ドキュメントの強化 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.90.1 | ||||
| ---------- | ||||
| * アカウントを作成したときに自動でホームに遷移しない問題を修正 | ||||
| * ユーザビリティの強化 | ||||
|  | ||||
| 10.90.0 | ||||
| ---------- | ||||
| * モバイル版でもデッキを使えるように | ||||
| * 公開範囲がホームの投稿はハイライトに載せないように | ||||
| * ドキュメントの強化 | ||||
| * ユーザーをリストに追加できない問題を修正 | ||||
| * UIの修正 | ||||
|  | ||||
| 10.89.1 | ||||
| ---------- | ||||
| * リアクション数を表示するように | ||||
| * モバイル版でドライブのフォルダを削除できるように | ||||
| * ドキュメントの強化 | ||||
| * プロフィールが更新できない場合がある問題を修正 | ||||
| * UIの修正 | ||||
|  | ||||
| 10.89.0 | ||||
| ---------- | ||||
| * APIのエラーの形式を統一 | ||||
| * APIドキュメント刷新 | ||||
| * /api/v1/instance/peers 復活 | ||||
| * 「返信が遷移後も残り続ける問題を修正」([9beddc9](https://github.com/syuilo/misskey/commit/9beddc941a716f1322ae0b7d71d159edd642a399)) によって遷移前に返信が表示されなくなった問題を修正 | ||||
| * デッキモードにてユーザーのプロフィールを連続で見たとき、アクティビティや画像が前のユーザーのもののまま表示される問題を修正 | ||||
|  | ||||
| 10.88.0 | ||||
| ---------- | ||||
| * アカウントの削除を試験的に実装 | ||||
| * デッキでメディア投稿のみ表示するオプションが機能していない問題を修正 | ||||
| * デッキでユーザーを表示したときにタイムラインが残存する問題を修正 | ||||
| * モバイルのユーザーページで、ユーザーAのタイムラインから他のユーザーBを選択してユーザーBのタイムラインに移動したとき、ユーザーAのタイムラインが残る問題を修正 | ||||
| * ハイライトでミュートしているユーザーの投稿が含まれる問題を修正 | ||||
| * 「みつける」でミュートしているユーザーが含まれる問題を修正 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.87.5 | ||||
| ---------- | ||||
| * モバイル版でも連携サービスを表示するように | ||||
| * webfingerのacceptが反映されない問題を修正 | ||||
| * 返信が遷移後も残り続ける問題を修正 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.87.4 | ||||
| ---------- | ||||
| * フォローリクエストを許可するときにエラーになる問題を修正 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.87.3 | ||||
| ---------- | ||||
| * 開発モードでビルドしてもスクリプトが404になる問題を修正 | ||||
| * 拡張子判別だとアイコンやバナー設定で対応していないと表示される問題を修正 | ||||
| * フォローリクエスト数がおかしい場合の応急処置APIを追加 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.87.2 | ||||
| ---------- | ||||
| * みつけるの人気のタグを第2ソートで連合含めたユーザー数にしたりユーザーのタグ以外は除外するように | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.87.1 | ||||
| ---------- | ||||
| * ハッシュタグ検索で大文字小文字が区別されてしまう問題を修正 | ||||
|  | ||||
| 10.87.0 | ||||
| ---------- | ||||
| * ハッシュタグでユーザー検索できるように | ||||
| * Exploreページに新規ユーザー一覧を追加 | ||||
| * デッキ使用中にホーム扱いで開かれた時にタイムラインボタン等がない問題を修正 | ||||
| * デッキ使用中に / 以外でリロードした際にホームモードになる問題を修正 | ||||
|  | ||||
| 10.86.2 | ||||
| ---------- | ||||
| * 別タブでルートより下を開いたときにはデッキにしないように | ||||
| * 横のナビゲーションバーの改善 | ||||
| * MIDIファイルがオーディオ扱いになる問題を修正 | ||||
| * ミュートワードで正規表現を使えるように | ||||
| * デッキで無効になったタイムラインに警告を表示するように | ||||
| * デザインの調整 | ||||
| * その他細かな修正 | ||||
|  | ||||
| 10.86.1 | ||||
| ---------- | ||||
| * ナビゲーションバーの「ホーム」を「タイムライン」に改称 | ||||
| * モバイル版でユーザーページが二重に描画される問題を修正 | ||||
| * ユーザー一覧の「もっと読み込む」の動作がおかしい問題を修正 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.86.0 | ||||
| ---------- | ||||
| * Exploreページを実装 | ||||
| * UIを改良 | ||||
| * その他細かな修正 | ||||
|  | ||||
| 10.85.2 | ||||
| ---------- | ||||
| * デッキから フォロー/フォロワー ページに行けるように | ||||
| * ナビゲーションが発生したときに最上部までスクロールように | ||||
| * 検索結果でページ遷移が発生する問題を修正 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.85.1 | ||||
| ---------- | ||||
| * ローカルのみ投稿をログイン画面のタイムラインに表示しないように | ||||
| * ナビゲーションバーを横にしてるとデッキに行けない問題を修正 | ||||
|  | ||||
| 10.85.0 | ||||
| ---------- | ||||
| * デスクトップ版のUIを改良 | ||||
| * 投稿ハイライトページを実装 | ||||
| * 無効化されているタイムラインのフォールバック | ||||
| * 既にフォローされている場合はフォローリクエストを生成しないように | ||||
| * その他細かな修正 | ||||
|  | ||||
| 10.84.2 | ||||
| ---------- | ||||
| * GIF画像にGIFバッジを表示 | ||||
| * よく話すユーザーからサスペンドされたユーザーを隠すなど | ||||
| * nodeinfoが重い問題を修正 | ||||
| * ハッシュタグクラウド取得が重い問題を軽減 | ||||
|  | ||||
| 10.84.1 | ||||
| ---------- | ||||
| * deckにフォローされていますマークを追加 | ||||
| * URLプレビューのサムネイルの調整 | ||||
| * 管理画面でサイレンスされているユーザーを一覧できるように | ||||
| * ドキュメントにアクセスできない問題を修正 | ||||
| * ジョブキューを無効化 | ||||
| * 軽微なバグ修正 | ||||
|  | ||||
| 10.84.0 | ||||
| ---------- | ||||
| * インスタンス管理の強化 | ||||
| * パフォーマンスの問題の修正 | ||||
| * バグ修正 | ||||
|  | ||||
| 10.83.0 | ||||
| ---------- | ||||
| * 特定のインスタンスをブロックをできるように | ||||
| * 特定のインスタンスからのフォローを全解除できるように | ||||
| * インスタンスごとのチャートを追加 | ||||
|  | ||||
| 10.82.4 | ||||
| ---------- | ||||
| * 10.82.3でオブジェクトストレージの設定をしていると起動しなくなるバグを修正 | ||||
|  | ||||
| 10.82.3 | ||||
| ---------- | ||||
| * フォロー/ミュート/ブロックデータをエクスポート可能に | ||||
| * バグ修正 | ||||
| * デザインの調整 | ||||
| * ジョブキューの動作を修正 | ||||
|  | ||||
| 10.82.2 | ||||
| ---------- | ||||
| * ジョブキューの動作を修正 | ||||
|  | ||||
| 10.82.1 | ||||
| ---------- | ||||
| * クラスタリング環境でのジョブキューの動作を修正 | ||||
| * その他の軽微な改善 | ||||
|  | ||||
| 10.82.0 | ||||
| ---------- | ||||
| * 自分の投稿情報をエクスポートできるように | ||||
| * アニメーションする画像を再生しないで表示するオプションを実装 | ||||
| * 個別に投稿のウォッチ/ウォッチ解除をできるように | ||||
|  | ||||
| 10.81.0 | ||||
| ---------- | ||||
| * 動画のサムネイルを作成するように | ||||
| * リモートの外部サービス認証情報を表示するように | ||||
| * public の Renote/Reply/Quote先 が public以外 だったら、public => homeに | ||||
| * ユーザーページから管理者/モデレーターがアカウントのサイレンス/凍結をできるように | ||||
| * 凍結されたユーザーをタイムライン等に表示しないように | ||||
| * おすすめのアンケートでミュートユーザーのものは表示しないように | ||||
| * おすすめのアンケートで凍結済みユーザーのものは表示しないように | ||||
| * 画像でないファイルのサムネイルとしてオリジナルファイルを返してしまうのを修正 | ||||
| * URLプレビューのサムネイルが表示されない場合がある問題を修正 | ||||
| * ダークモードで読みにくいボタンがあるのを修正 | ||||
|  | ||||
| 10.80.0 | ||||
| ---------- | ||||
| * サイレンス機能の追加 | ||||
| * リプライ/メンションされていれば非フォロワーへのフォロワー限定でも参照可能に | ||||
| * MFMの解析を強化 | ||||
| * Misskey以外のインスタンスからMisskeyの投稿を見たときに改行が多い問題を修正 | ||||
| * Misskey以外のインスタンスからMisskeyの投稿を見たときにメンションのURLが展開されるのを修正 | ||||
|  | ||||
| 10.79.1 | ||||
| ---------- | ||||
| * jump構文の追加 | ||||
| * MFMで左回転、往復回転を行えるように | ||||
| * MFMに関する制限を若干緩和 | ||||
| * シンタックスハイライトに関するバグ修正 | ||||
|  | ||||
| 10.79.0 | ||||
| ---------- | ||||
| * 返信するときにCWを維持するかどうか設定できるように | ||||
| * 外部サービス認証情報の配信 | ||||
| * 管理画面のモデレーションのUIを強化 | ||||
| * 管理画面からリモートユーザーの情報を更新できるように | ||||
| * 回転構文の追加 | ||||
| * 左右反転構文の追加 | ||||
| * 複数行の数式構文を追加 | ||||
| * シンタックスハイライトの強化 | ||||
| * 引用投稿を削除したとき単なるRenoteとしてタイムラインに残る問題を修正 | ||||
| * イタリック構文の判定の改善 | ||||
| * タイトル構文の判定の改善 | ||||
| * テーマが反映されないことがある問題を修正 | ||||
| * ホームにフォロワー限定投稿が表示されない問題を修正 | ||||
| * 返信一覧を取得すると非公開投稿も取得されてしまう問題を修正 | ||||
| * メンション一覧を取得すると非公開投稿も取得されてしまう問題を修正 | ||||
| * 通知に非公開投稿が表示される問題を修正 | ||||
| * ダイレクトで投稿すると100%の確率で表示が二重になる問題を修正 | ||||
| * ウィジットの投稿フォームで投稿するとデフォルトの公開範囲が適用されない問題を修正 | ||||
|  | ||||
| 10.78.5 | ||||
| ---------- | ||||
| * アンケートの選択肢にカスタム絵文字を使えるように | ||||
| * 投稿の返信を取得したときにミュートが適用されていない問題を修正 | ||||
| * ユーザビリティの強化 | ||||
|  | ||||
| 10.78.4 | ||||
| ---------- | ||||
| * フォロワー限定投稿がユーザータイムラインに含まれていない問題を修正 | ||||
| * データベースのインデックス設定を修正 | ||||
| * UIの修正 | ||||
| * など | ||||
|  | ||||
| 10.78.3 | ||||
| ---------- | ||||
| * 投票未対応インスタンス向けメッセージをわかりやすく | ||||
| * リバーシが404になる問題を修正 | ||||
| * デザインの修正 | ||||
|  | ||||
| 10.78.2 | ||||
| ---------- | ||||
| * リバーシが404になる問題を修正 | ||||
| * ストリームで流れてくる投稿とAPIでタイムラインを取得したときとの不一致を修正 | ||||
|  | ||||
| 10.78.1 | ||||
| ---------- | ||||
| * 「関係のない返信がタイムラインに流れる問題を修正」を取り消し | ||||
| * デザインの修正 | ||||
|  | ||||
| 10.78.0 | ||||
| ---------- | ||||
| * 他のインスタンスからアンケートに投票できるように | ||||
| * スパムアカウントを報告できるように | ||||
| * アクティブユーザー数のチャートを追加 | ||||
| * 管理画面でドライブのファイルをURLやIDから操作できるように | ||||
| * リアクション解除を他のサーバーと送受信するように | ||||
| * ログイン時に二段階認証が分かりにくいのを改善 | ||||
| * 投稿のツールチップを出すのは時間の上だけに変更 | ||||
| * `*`や`_`でもイタリック構文を使えるように(アルファベットのみ) | ||||
| * `__`でも太字構文を使えるように(アルファベットのみ) | ||||
| * ハッシュタグ判定の強化 | ||||
| * ストーク機能の廃止 | ||||
| * ソーシャルタイムラインにフォロワー限定投稿が含まれていない問題を修正 | ||||
| * リストタイムラインでフォロワー限定投稿が含まれていない問題を修正 | ||||
| * リストタイムラインに自分宛てでないダイレクト投稿が非公開扱いで表示される問題を修正 | ||||
| * 自分宛てのダイレクト投稿がホーム/ソーシャルタイムラインにストリームで流れない問題を修正 | ||||
| * ストリームで投稿が流れてきたとき、返信先が「この投稿は非公開です」となる問題を修正 | ||||
| * 関係のない返信がタイムラインに流れる問題を修正 | ||||
| * 常にメディアを閲覧注意として投稿するオプションが機能していなかった問題を修正 | ||||
| * リモートユーザーのアイコンが消えることがある問題を修正 | ||||
| * ドライブのファイルメニューからアバターやバナーに設定することができない問題を修正 | ||||
| * クライアントのAPIリクエストをストリーム経由で行うオプションを廃止 | ||||
| * 一部箇所でカスタム絵文字が適用されていないのを修正 | ||||
|  | ||||
| 10.77.0 | ||||
| ---------- | ||||
| * ローカルタイムライン無効オプションをグローバルタイムライン無効オプションと分離 | ||||
| * モデレータはLTL無効時でもUIからLTLを消さない | ||||
| * インスタンス情報ページに各種タイムラインの有効/無効を表示 | ||||
|  | ||||
| 10.76.0 | ||||
| ---------- | ||||
| * disableLocalTimeline機能を強化 | ||||
| * インスタンス情報ページの強化 | ||||
| * ハッシュタグ判定の強化 | ||||
| * SVGサムネイルを表示するように | ||||
| * CWの引き継ぎ機能を無効化 | ||||
|  | ||||
| 10.75.0 | ||||
| ---------- | ||||
| * ダイレクトを非公開のように使えるように | ||||
| * モデレーターを凍結できないように | ||||
| * モデレーター登録を解除できるように | ||||
| * NSFWなメディアをユーザーページなどで表示しないように | ||||
| * 管理画面でユーザーを状態でフィルタできるように | ||||
| * 管理者がサインイン履歴を参照できるツール | ||||
| * Renote数を再度表示するように | ||||
| * インスタンス情報ページの追加 | ||||
| * テーマの調整 | ||||
| * UIの改善 | ||||
|  | ||||
| 10.74.0 | ||||
| ---------- | ||||
| * Pleromaとのフェデレーションを修正 | ||||
| * インスタンスのキャラクター画像を設定できるように | ||||
| * Catモードの朝鮮語対応 | ||||
| * CWが付いた投稿に返信する際、そのCWを引き継ぐように | ||||
| * 投稿のソースをクリップボードにコピーできるように | ||||
| * i/notifications API で取得する通知の種別を配列で指定できるように | ||||
| * パフォーマンスの改善 | ||||
| * バグ修正 | ||||
|  | ||||
| 10.73.0 | ||||
| ------- | ||||
| * テーマの強化 | ||||
| * line thiknessの設定はデバイスに保存するように | ||||
|  | ||||
| 10.72.0 | ||||
| ------- | ||||
| * いくつかのテーマの追加 | ||||
| * デザインの調整 | ||||
| * バグ修正 | ||||
| * など | ||||
|  | ||||
| 10.71.0 | ||||
| ------- | ||||
| * いくつかのテーマの追加 | ||||
|  | ||||
| 10.70.1 | ||||
| ------- | ||||
| * notes/mentions にミュートを適用するように | ||||
| * Add id to return of users/relation | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.70.0 | ||||
| ------- | ||||
| * フォローしているユーザーからのフォローを自動承認するオプション | ||||
| * 「非公開」の公開範囲を廃止 | ||||
| * Renote数の表示を廃止 | ||||
| * 投稿のフィルタリングを強化 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.69.0 | ||||
| ------- | ||||
| * 通知の管理を強化 | ||||
| * ユーザビリティの強化 | ||||
| * デザインの調整 | ||||
|  | ||||
| 10.68.0 | ||||
| ------- | ||||
| * 特定ユーザーにメンション付きで新規投稿ができるボタンを追加 | ||||
| * 自分の投稿にリアクションできないように | ||||
| * 数式に文法エラーがあるとき、数式のソースをそのまま表示するように | ||||
| * CWボタンにアンケートの有無を表記するように | ||||
| * デスクトップ版で設定を新しいタブで開くように | ||||
| * モバイル版で検索ができない問題を修正 | ||||
| * i18nの修正 | ||||
|  | ||||
| 10.67.0 | ||||
| ------- | ||||
| * トークのメッセージを削除できるように | ||||
| * リアクションを取り消せるように | ||||
| * Misskey以外のソフトウェアからの「Like」アクティビティをプリンではなく「いいね」として扱うように | ||||
| * i18nの修正 | ||||
| * バグ修正 | ||||
| * など | ||||
|  | ||||
| 10.66.2 | ||||
| ------- | ||||
| * i18nの修正 | ||||
| * ドライブのファイル一覧取得APIでファイルサイズによるソートが機能していなかった問題を修正 | ||||
| * リモートユーザーの更新時に、各ピン留め投稿の取得失敗は無視するように | ||||
| * リモートMisskeyユーザーの情報が登録/更新出来なくなっていたのを修正 | ||||
| * メンションのリンク先URLに余計な@がプリフィクスされていたのを修正 | ||||
| * ダイレクトでリプライする際、リプライ先のユーザーは自動的に公開先として追加するように | ||||
| * ダイレクトでメンションでもユーザーを指定できるように | ||||
|  | ||||
| 10.66.1 | ||||
| ------- | ||||
| * ActivityPubのsharedInboxに関して修正 | ||||
| * MFMでのカッコの判定を改善 | ||||
| * バグ修正 | ||||
|  | ||||
| 10.66.0 | ||||
| ------- | ||||
| * ユーザーごとのRSSフィードを提供するように | ||||
| * リストのユーザーがすべて表示できない問題を修正 | ||||
| * デザインの調整 | ||||
| * パフォーマンスの改善 | ||||
|  | ||||
| 10.65.0 | ||||
| ------- | ||||
| * 検索で投稿やユーザーのURLを入力した際にそれをフェッチして表示するように | ||||
| * リストのリネームと削除をできるように | ||||
| * リストからユーザーを削除できるように | ||||
| * リモートの絵文字を更新するように | ||||
| * ActivityPubのための絵文字エンドポイントを実装 | ||||
| * 管理者がドライブのファイルのNSFWを設定できるように | ||||
| * ServiceWorkerの設定を管理者ページで行えるように | ||||
| * メンションの判定を改善 | ||||
| * リモートの投稿を引用した際にオリジナルのURLを挿入するように | ||||
| * クライアントのパフォーマンス改善 | ||||
| * CWの内容がタブタイトルに表示されるのを修正 | ||||
| * アカウントを作成したときにログイン状態にならない問題を修正 | ||||
| * 時計の針にテーマカラーが適用されていなかったのを修正 | ||||
| * 一部の日時の表示が日本語で表示されていたのを修正 | ||||
| * プロフィールの写真欄に画像以外のファイルが含まれる問題を修正 | ||||
| * メンションが含まれる投稿に返信する際、フォームに予めそれらのメンションがセットされた状態にならない問題を修正 | ||||
| * デッキのTLにUIの動きを減らすオプションが適用されていなかったのを修正 | ||||
| * ログイン画面のタイムラインに隠した投稿が表示される問題を修正 | ||||
| * サジェストが複数開いてしまう問題を修正 | ||||
| * APから来たタグに登録時の長さ制限が適用されていなかったのを修正 | ||||
|  | ||||
| 10.64.2 | ||||
| ------- | ||||
| * UIの動きを減らすオプションが一部のアニメーションに適用されなかったのを修正 | ||||
|  | ||||
| 10.64.1 | ||||
| ------- | ||||
| * レートリミットの調整 | ||||
| * アニメーションの調整 | ||||
|  | ||||
| 10.64.0 | ||||
| ------- | ||||
| * いくつかのアニメーションを追加 | ||||
| * OGP向けにインスタンスのバナー画像を提供するように | ||||
| * 管理者ページでドライブのファイルを表示できるように | ||||
| * ユーザビリティの強化 | ||||
| * バグ修正 | ||||
|  | ||||
| 10.63.1 | ||||
| ------- | ||||
| * メンションの表示を改善 | ||||
| * バグ修正 | ||||
|  | ||||
| 10.63.0 | ||||
| ------- | ||||
| * ActivityPubのユーザーフィールドをユーザーページに表示 | ||||
| * 404ページの実装 | ||||
| * パフォーマンスの向上 | ||||
| * バグ修正 | ||||
|  | ||||
| 10.62.2 | ||||
| ------- | ||||
| * バグ修正 | ||||
| * ユーザビリティの向上 | ||||
|  | ||||
| 10.0.0 | ||||
| ------ | ||||
|  | ||||
| ストリーミングAPIに破壊的変更があります。運営者がすべきことはありません。 | ||||
|  | ||||
| 変更は以下の通りです | ||||
|  | ||||
| * ストリーミングでやり取りする際の snake_case が全て camelCase に | ||||
| * リバーシのストリームエンドポイント名が reversi → gamesReversi、reversiGame → gamesReversiGame に | ||||
| * ストリーミングの個々のエンドポイントが廃止され、一旦元となるストリームに接続してから、個々のチャンネル(今までのエンドポイント)に接続します。詳細は後述します。 | ||||
| * ストリームから流れてくる、キャプチャした投稿の更新イベントに投稿自体のデータは含まれず、代わりにアクションが設定されるようになります。詳細は後述します。 | ||||
| * ストリームに接続する際に追加で指定していたパラメータ(トークン除く)が、URLにクエリとして含むのではなくチャンネル接続時にパラメータ指定するように | ||||
|  | ||||
| ### 個々のエンドポイントが廃止されることによる新しいストリーミングAPIの利用方法 | ||||
| 具体的には、まず https://example.misskey/streaming にwebsocket接続します。 | ||||
| 次に、例えば「messaging」ストリーム(チャンネルと呼びます)に接続したいときは、ストリームに次のようなデータを送信します: | ||||
| ``` javascript | ||||
| { | ||||
|   type: 'connect', | ||||
|   body: { | ||||
|     channel: 'messaging', | ||||
|     id: 'foobar', | ||||
|     params: { | ||||
|       otherparty: 'xxxxxxxxxxxx' | ||||
|     } | ||||
|   } | ||||
| } | ||||
| ``` | ||||
| ここで、`id`にはそのチャンネルとやり取りするための任意のIDを設定します。 | ||||
| IDはチャンネルごとではなく「チャンネルの接続ごと」です。なぜなら、同じチャンネルに異なるパラメータで複数接続するケースもあるからです。 | ||||
| `params`はチャンネルに接続する際のパラメータです。チャンネルによって接続時に必要とされるパラメータは異なります。パラメータ不要のチャンネルに接続する際は、このプロパティは省略可能です。 | ||||
|  | ||||
| チャンネルにメッセージを送信するには、次のようなデータを送信します: | ||||
| ``` javascript | ||||
| { | ||||
|   type: 'channel', | ||||
|   body: { | ||||
|     id: 'foobar', | ||||
|     type: 'something', | ||||
|     body: { | ||||
|       some: 'thing' | ||||
|     } | ||||
|   } | ||||
| } | ||||
| ``` | ||||
| ここで、`id`にはチャンネルに接続するときに指定したIDを設定します。 | ||||
|  | ||||
| 逆に、チャンネルからメッセージが流れてくると、次のようなデータが受信されます: | ||||
| ``` javascript | ||||
| { | ||||
|   type: 'channel', | ||||
|   body: { | ||||
|     id: 'foobar', | ||||
|     type: 'something', | ||||
|     body: { | ||||
|       some: 'thing' | ||||
|     } | ||||
|   } | ||||
| } | ||||
| ``` | ||||
| ここで、`id`にはチャンネルに接続するときに指定したIDが設定されています。 | ||||
|  | ||||
| ### 投稿のキャプチャに関する変更 | ||||
| 投稿の更新イベントに投稿情報は含まれなくなりました。代わりに、その投稿が「リアクションされた」「アンケートに投票された」「削除された」といったアクション情報が設定されます。 | ||||
|  | ||||
| 具体的には次のようなデータが受信されます: | ||||
| ``` javascript | ||||
| { | ||||
|   type: 'noteUpdated', | ||||
|   body: { | ||||
|     id: 'xxxxxxxxxxx', | ||||
|     type: 'reacted', | ||||
|     body: { | ||||
|       reaction: 'hmm' | ||||
|     } | ||||
|   } | ||||
| } | ||||
| ``` | ||||
|  | ||||
| * reacted ... 投稿にリアクションされた。`reaction`プロパティにリアクションコードが含まれます。 | ||||
| * pollVoted ... アンケートに投票された。`choice`プロパティに選択肢ID、`userId`に投票者IDが含まれます。 | ||||
|  | ||||
| 9.0.0 | ||||
| ----- | ||||
|  | ||||
| Misskey v8.64.0 を使っている方は、9.0.0に際しては特にすべきことはありません。 | ||||
| Misskey v8.64.0 に満たないバージョンをお使いの方は、一旦8.64.0にアップデートして(そして起動して)から9.0.0に再度アップデートしてください。 | ||||
|  | ||||
| 8.0.0 | ||||
| ----- | ||||
|  | ||||
| ### Migration | ||||
|  | ||||
| 起動する前に、`node cli/migration/8.0.0`してください。 | ||||
|  | ||||
| Please run `node cli/migration/8.0.0` before launch. | ||||
|  | ||||
|  | ||||
| 7.0.0 | ||||
| ----- | ||||
|  | ||||
| ### Migration | ||||
|  | ||||
| 起動する前に、`node cli/migration/7.0.0`してください。 | ||||
|  | ||||
| Please run `node cli/migration/7.0.0` before launch. | ||||
|  | ||||
| 6.0.0 | ||||
| ----- | ||||
|  | ||||
| ### Migration | ||||
|  | ||||
| オブジェクトストレージを使用している場合、設定ファイルの`drive.config.secure`を`drive.config.useSSL`にリネームしてください。 | ||||
|  | ||||
| If you use object storage, please rename `drive.config.secure` to `drive.config.useSSL` in config. | ||||
|  | ||||
| 5.0.0 | ||||
| ----- | ||||
|  | ||||
| ### Migration | ||||
|  | ||||
| 起動する前に、`node cli/migration/5.0.0`してください。 | ||||
|  | ||||
| Please run `node cli/migration/5.0.0` before launch. | ||||
|  | ||||
| 4.0.0 | ||||
| ----- | ||||
|  | ||||
| オセロがリバーシに変更されました。 | ||||
|  | ||||
| Othello is rename to Reversi. | ||||
|  | ||||
| ### Migration | ||||
|  | ||||
| MongoDBの、`othelloGames`と`othelloMatchings`コレクションをそれぞれ`reversiGames`と`reversiMatchings`にリネームしてください。 | ||||
|  | ||||
| Please rename `othelloGames` and `othelloMatchings` MongoDB collections to `reversiGames` and `reversiMatchings` respectively. | ||||
|  | ||||
| 3.0.0 | ||||
| ----- | ||||
|  | ||||
| ### Migration | ||||
|  | ||||
| 起動する前に、`node cli/recount-stats`してください。 | ||||
|  | ||||
| Please run `node cli/recount-stats` before launch. | ||||
|   | ||||
							
								
								
									
										205
									
								
								CONTRIBUTING.md
									
									
									
									
									
								
							
							
						
						| @@ -1,64 +1,30 @@ | ||||
| # Contribution guide | ||||
| :v: Thanks for your contributions :v: | ||||
|  | ||||
| ## When you contribute... | ||||
| - 任意のIssueについて、せっかく実装してくださっても、実装方法や設計の認識が揃ってないとマージできない/しないことになりかねないので、初めにそのIssue上で着手することを宣言し、必要に応じて他メンバーと実装方法や設計のすり合わせを行ってください。宣言することは作業が他の人と被るのを防止する効果もあります。 | ||||
|   - 設計に迷った時はプロジェクトリーダーの判断を仰いでください。 | ||||
| - 時間や優先度の都合上、提出してくださったPRが長期間放置されることもありますがご理解ください。 | ||||
|   - 温度感高めで見てほしいものは責付いてください。 | ||||
|  | ||||
| ## Issues | ||||
| Feature suggestions and bug reports are filed in https://github.com/misskey-dev/misskey/issues . | ||||
|  | ||||
| * Please search existing issues to avoid duplication. If your issue is already filed, please add your reaction or comment to the existing one. | ||||
| * If you have multiple independent issues, please submit them separately. | ||||
|  | ||||
| ## Branches | ||||
| * **master** branch is tracking the latest release and used for production purposes. | ||||
| * **develop** branch is where we work for the next release. | ||||
| * **l10n_develop** branch is reserved for localization management. | ||||
| Feature suggestions and bug reports are filed in https://github.com/syuilo/misskey/issues . | ||||
| Before creating a new issue, please search existing issues to avoid duplication. | ||||
| If you find the existing issue, please add your reaction or comment to the issue. | ||||
|  | ||||
| ## Localization (l10n) | ||||
| Misskey uses [Crowdin](https://crowdin.com/project/misskey) for localization management. | ||||
| You can improve our translations with your Crowdin account. | ||||
| Your changes in Crowdin are automatically submitted as a PR (with the title "New Crowdin translations") to the repository. | ||||
| The owner [@syuilo](https://github.com/syuilo) merges the PR into the develop branch before the next release. | ||||
|  | ||||
| If your language is not listed in Crowdin, please open an issue. | ||||
| Please use [Crowdin](https://crowdin.com/project/misskey) for localization. | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Internationalization (i18n) | ||||
| Misskey uses the Vue.js plugin [Vue I18n](https://github.com/kazupon/vue-i18n). | ||||
| Documentation of Vue I18n is available at http://kazupon.github.io/vue-i18n/introduction.html . | ||||
| Misskey uses [vue-i18n](https://github.com/kazupon/vue-i18n). | ||||
|  | ||||
| ## Documentation | ||||
| * Documents for contributors are located in [`/docs`](/docs). | ||||
| * Documents for instance admins are located in [`/docs`](/docs). | ||||
| * Documents for end users are located in [`/src/docs`](/src/docs). | ||||
| * Documents for contributors are located in `/docs`. | ||||
| * Documents for instance admins are located in `/docs`. | ||||
| * Documents for end users are located in `src/docs`. | ||||
|  | ||||
| ## Test | ||||
| * Test codes are located in [`/test`](/test). | ||||
| * Test codes are located in `/test`. | ||||
|  | ||||
| ## Continuous integration | ||||
| Misskey uses CircleCI for executing automated tests. | ||||
| Configuration files are located in [`/.circleci`](/.circleci). | ||||
|  | ||||
| ## Adding MisskeyRoom items | ||||
| * Use English for material, object and texture names. | ||||
| * Use meter for unit of length. | ||||
| * Your PR should include all source files (e.g. `.png`, `.blend`) of your models (for later editing). | ||||
| * Your PR must include the glTF binary files (`.glb`) of your models. | ||||
| * Add a locale key `room.furnitures.YOUR_ITEM` at [`/locales/ja-JP.yml`](/locales/ja-JP.yml). | ||||
| * Add a furniture definition at [`src/client/scripts/room/furnitures.json5`](src/client/scripts/room/furnitures.json5). | ||||
|  | ||||
| If you have no experience on 3D modeling, we suggest to use the free 3DCG software [Blender](https://www.blender.org/). | ||||
| You can find information on glTF 2.0 at [glTF 2.0 — Blender Manual]( https://docs.blender.org/manual/en/dev/addons/io_scene_gltf2.html). | ||||
|  | ||||
| ## FAQ | ||||
| ### How to resolve conflictions occurred at yarn.lock? | ||||
|  | ||||
| Just execute `yarn` to fix it. | ||||
| Misskey uses CircleCI for automated test. | ||||
| Configuration files are located in `/.circleci`. | ||||
|  | ||||
| ## Glossary | ||||
| ### AP | ||||
| @@ -79,65 +45,11 @@ Convert な(na) to にゃ(nya) | ||||
| #### Denyaize | ||||
| Revert Nyaize | ||||
|  | ||||
| ## TypeScript Coding Style | ||||
| ### Do not omit semicolons | ||||
| This is to avoid Automatic Semicolon Insertion (ASI) hazard. | ||||
|  | ||||
| Ref: | ||||
| * https://www.ecma-international.org/ecma-262/#sec-automatic-semicolon-insertion | ||||
| * https://github.com/tc39/ecma262/pull/1062 | ||||
|  | ||||
| ### Do not omit curly brackets | ||||
| Bad: | ||||
| ``` ts | ||||
| if (foo) | ||||
| 	bar; | ||||
| else | ||||
| 	baz; | ||||
| ``` | ||||
|  | ||||
| Good: | ||||
| ``` ts | ||||
| if (foo) { | ||||
| 	bar; | ||||
| } else { | ||||
| 	baz; | ||||
| } | ||||
| ``` | ||||
|  | ||||
| As a special case, you can omit the curly brackets if | ||||
|  | ||||
| * the body of the `if`-statement have only one statement and, | ||||
| * the `if`-statement does not have `else`-clause. | ||||
|  | ||||
| Good: | ||||
| ``` ts | ||||
| if (foo) bar; | ||||
| ``` | ||||
|  | ||||
| Make sure that the condition and the body statement are on the same line. | ||||
|  | ||||
| ### Do not use `==` when it can simply be replaced with `===`. | ||||
| 🥰 | ||||
|  | ||||
| ### Use only boolean (or null related) values in the condition of an `if`-statement. | ||||
| Bad: | ||||
| ``` ts | ||||
| if (foo.length) | ||||
| ``` | ||||
|  | ||||
| Good: | ||||
| ``` ts | ||||
| if (foo.length > 0) | ||||
| ``` | ||||
|  | ||||
| ### Do not use `export default` | ||||
| This is because the current language support does not work well with `export default`. | ||||
|  | ||||
| Ref: | ||||
| * https://basarat.gitbooks.io/typescript/docs/tips/defaultIsBad.html | ||||
| * https://gfx.hatenablog.com/entry/2017/11/24/135343 | ||||
| ## Code style | ||||
| ### Use semicolon | ||||
| To avoid ASI Hazard | ||||
|  | ||||
| ### Don't use `export default` | ||||
| Bad: | ||||
| ``` ts | ||||
| export default function(foo: string): string { | ||||
| @@ -163,90 +75,3 @@ src ... Source code | ||||
| test ... Test code | ||||
|  | ||||
| ``` | ||||
|  | ||||
| ## Notes | ||||
| ### placeholder | ||||
| SQLをクエリビルダで組み立てる際、使用するプレースホルダは重複してはならない | ||||
| 例えば | ||||
| ``` ts | ||||
| query.andWhere(new Brackets(qb => { | ||||
| 	for (const type of ps.fileType) { | ||||
| 		qb.orWhere(`:type = ANY(note.attachedFileTypes)`, { type: type }); | ||||
| 	} | ||||
| })); | ||||
| ``` | ||||
| と書くと、ループ中で`type`というプレースホルダが複数回使われてしまいおかしくなる | ||||
| だから次のようにする必要がある | ||||
| ```ts | ||||
| query.andWhere(new Brackets(qb => { | ||||
| 	for (const type of ps.fileType) { | ||||
| 		const i = ps.fileType.indexOf(type); | ||||
| 		qb.orWhere(`:type${i} = ANY(note.attachedFileTypes)`, { [`type${i}`]: type }); | ||||
| 	} | ||||
| })); | ||||
| ``` | ||||
|  | ||||
| ### Not `null` in TypeORM | ||||
| ```ts | ||||
| const foo = await Foos.findOne({ | ||||
| 	bar: Not(null) | ||||
| }); | ||||
| ``` | ||||
| のようなクエリ(`bar`が`null`ではない)は期待通りに動作しない。 | ||||
| 次のようにします: | ||||
| ```ts | ||||
| const foo = await Foos.findOne({ | ||||
| 	bar: Not(IsNull()) | ||||
| }); | ||||
| ``` | ||||
|  | ||||
| ### `null` in SQL | ||||
| SQLを発行する際、パラメータが`null`になる可能性のある場合はSQL文を出し分けなければならない | ||||
| 例えば | ||||
| ``` ts | ||||
| query.where('file.folderId = :folderId', { folderId: ps.folderId }); | ||||
| ``` | ||||
| という処理で、`ps.folderId`が`null`だと結果的に`file.folderId = null`のようなクエリが発行されてしまい、これは正しいSQLではないので期待した結果が得られない | ||||
| だから次のようにする必要がある | ||||
| ``` ts | ||||
| if (ps.folderId) { | ||||
| 	query.where('file.folderId = :folderId', { folderId: ps.folderId }); | ||||
| } else { | ||||
| 	query.where('file.folderId IS NULL'); | ||||
| } | ||||
| ``` | ||||
|  | ||||
| ### `[]` in SQL | ||||
| SQLを発行する際、`IN`のパラメータが`[]`(空の配列)になる可能性のある場合はSQL文を出し分けなければならない | ||||
| 例えば | ||||
| ``` ts | ||||
| const users = await Users.find({ | ||||
| 	id: In(userIds) | ||||
| }); | ||||
| ``` | ||||
| という処理で、`userIds`が`[]`だと結果的に`user.id IN ()`のようなクエリが発行されてしまい、これは正しいSQLではないので期待した結果が得られない | ||||
| だから次のようにする必要がある | ||||
| ``` ts | ||||
| const users = userIds.length > 0 ? await Users.find({ | ||||
| 	id: In(userIds) | ||||
| }) : []; | ||||
| ``` | ||||
|  | ||||
| ### 配列のインデックス in SQL | ||||
| SQLでは配列のインデックスは**1始まり**。 | ||||
| `[a, b, c]`の `a`にアクセスしたいなら`[0]`ではなく`[1]`と書く | ||||
|  | ||||
| ### `undefined`にご用心 | ||||
| MongoDBの時とは違い、findOneでレコードを取得する時に対象レコードが存在しない場合 **`undefined`** が返ってくるので注意。 | ||||
| MongoDBは`null`で返してきてたので、その感覚で`if (x === null)`とか書くとバグる。代わりに`if (x == null)`と書いてください | ||||
|  | ||||
| ### Migration作成方法 | ||||
| ``` | ||||
| npx ts-node ./node_modules/typeorm/cli.js migration:generate -n 変更の名前 | ||||
| ``` | ||||
|  | ||||
| 作成されたスクリプトは不必要な変更を含むため除去してください。 | ||||
|  | ||||
| ## その他 | ||||
| ### HTMLのクラス名で follow という単語は使わない | ||||
| 広告ブロッカーで誤ってブロックされる | ||||
|   | ||||
							
								
								
									
										19
									
								
								COPYING
									
									
									
									
									
								
							
							
						
						| @@ -1,19 +0,0 @@ | ||||
| Unless otherwise stated this repository is | ||||
| Copyright © 2014-2020 syuilo and contributers | ||||
|  | ||||
| And is distributed under The GNU Affero General Public License Version 3, you should have received a copy of the license file as LICENSE. | ||||
|  | ||||
|  | ||||
| Misskey includes several third-party Open-Source softwares. | ||||
|  | ||||
| Unicode emoji regular expressions by Twitter, Inc. | ||||
| License: MIT | ||||
| https://github.com/twitter/twemoji-parser/blob/master/LICENSE.md | ||||
|  | ||||
| Emoji keywords for Unicode 11 and below by Mu-An Chiou | ||||
| License: MIT | ||||
| https://github.com/muan/emojilib/blob/master/LICENSE | ||||
|  | ||||
| RsaSignature2017 implementation by Transmute Industries Inc | ||||
| License: MIT | ||||
| https://github.com/transmute-industries/RsaSignature2017/blob/master/LICENSE | ||||
							
								
								
									
										21
									
								
								Dockerfile
									
									
									
									
									
								
							
							
						
						| @@ -1,7 +1,9 @@ | ||||
| FROM node:16.2.0-alpine3.13 AS base | ||||
| FROM node:11-alpine AS base | ||||
|  | ||||
| ENV NODE_ENV=production | ||||
|  | ||||
| RUN npm i -g npm@latest | ||||
|  | ||||
| WORKDIR /misskey | ||||
|  | ||||
| FROM base AS builder | ||||
| @@ -17,27 +19,24 @@ RUN apk add --no-cache \ | ||||
|     make \ | ||||
|     nasm \ | ||||
|     pkgconfig \ | ||||
|     python3 \ | ||||
|     zlib-dev \ | ||||
|     vips-dev \ | ||||
|     vips | ||||
|     python \ | ||||
|     zlib-dev | ||||
| RUN npm i -g yarn | ||||
|  | ||||
| COPY package.json yarn.lock .yarnrc ./ | ||||
| RUN yarn install | ||||
| COPY . ./ | ||||
| RUN yarn install | ||||
| RUN yarn build | ||||
|  | ||||
| FROM base AS runner | ||||
|  | ||||
| RUN apk add --no-cache \ | ||||
|     ffmpeg \ | ||||
|     tini \ | ||||
|     vips | ||||
|  | ||||
|     tini | ||||
| RUN npm i -g web-push | ||||
| ENTRYPOINT ["/sbin/tini", "--"] | ||||
|  | ||||
| COPY --from=builder /misskey/node_modules ./node_modules | ||||
| COPY --from=builder /misskey/built ./built | ||||
| COPY . ./ | ||||
|  | ||||
| CMD ["npm", "run", "migrateandstart"] | ||||
| CMD ["npm", "start"] | ||||
|   | ||||
							
								
								
									
										220
									
								
								README.md
									
									
									
									
									
								
							
							
						
						| @@ -1,67 +1,77 @@ | ||||
| [](https://join.misskey.page/) | ||||
| <a href="https://ai.misskey.xyz/"><img src="https://github.com/syuilo/misskey/blob/develop/assets/ai-orig.png?raw=true" align="right" height="320px"/></a> | ||||
|  | ||||
| <h1 align="center">Misskey</h1> | ||||
| [](https://misskey.xyz/) | ||||
| ================================================================ | ||||
|  | ||||
| <div align="center"> | ||||
|  | ||||
| [](https://circleci.com/gh/misskey-dev/misskey) | ||||
| [](https://david-dm.org/misskey-dev/misskey) | ||||
| [](https://circleci.com/gh/syuilo/misskey) | ||||
| [](https://david-dm.org/syuilo/misskey) | ||||
| [](http://makeapullrequest.com) | ||||
| [](https://github.com/humanetech-community/awesome-humane-tech) | ||||
|  | ||||
| **A forever evolving, interplanetary microblogging platform.** | ||||
| **A forever evolving, sophisticated microblogging platform.** | ||||
|  | ||||
| <a href="https://join.misskey.page/">Misskey</a> is a decentralized microblogging platform born on Earth. | ||||
| <p align="justify"> | ||||
| <a href="https://misskey.xyz">Misskey</a> is a decentralized microblogging platform born on Earth. | ||||
| Since it exists within the Fediverse (a universe where various social media platforms are organized), | ||||
| it is mutually linked with other social media platforms. | ||||
| Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet? <a href="https://join.misskey.page/">Find an instance!</a> | ||||
| Why don't you take a short break from the hustle and bustle of the city, and dive into a new Internet? <a href="https://joinmisskey.github.io/">Find an instance!</a> | ||||
| </p> | ||||
|  | ||||
| <a href="https://www.patreon.com/syuilo"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160" /></a> | ||||
|  | ||||
| </div> | ||||
|  | ||||
| --- | ||||
|  | ||||
| Do you have a question? Or are you experiencing trouble? | ||||
| Visit [our forum](https://forum.misskey.io/)! | ||||
|  | ||||
| --- | ||||
|  | ||||
|  | ||||
|  | ||||
| :sparkles: Features | ||||
| ---------------------------------------------------------------- | ||||
| <a href="https://xn--931a.moe/"><img src="https://github.com/misskey-dev/misskey/blob/develop/assets/ai-orig.png?raw=true" align="right" height="320px"/></a> | ||||
|  | ||||
| <h3>Posting</h3> | ||||
| <p> | ||||
| <img src="/assets/about/post.png" align="left" height="200px"/> | ||||
|  | ||||
| <h3 align="left">Posting</h3> | ||||
| <p align="justify"> | ||||
| Post your ideas, discussion topics, fun moments, or anything else you want to share! Misskey supports text, emoji, pictures, videos, and polls! | ||||
| </p> | ||||
|  | ||||
| --- | ||||
|  | ||||
| <h3 >Reactions</h3> | ||||
| <p> | ||||
| <img src="/assets/about/reaction.png" align="right" height="200px"/> | ||||
|  | ||||
| <h3 align="right">Reactions</h3> | ||||
| <p align="justify"> | ||||
| Reactions are the simplest way to respond to others' posts. Simply pick a reaction emote from the list! Reactions on Misskey are much more expressive than other social media services which only allow “liking”. | ||||
| </p> | ||||
|  | ||||
| --- | ||||
|  | ||||
| <h3>Interface</h3> | ||||
| <p> | ||||
| <img src="/assets/about/ui.png" align="left" height="200px"/> | ||||
|  | ||||
| <h3 align="left">Interface</h3> | ||||
| <p align="justify"> | ||||
| Customize the UI to your own tastes! No UI will work for everyone, so Misskey is completely customizable. Make Misskey *yours* by editing the style, adjusting timeline layouts, and placing widgets. | ||||
| </p> | ||||
|  | ||||
| --- | ||||
|  | ||||
| <h3>Misskey Drive</h3> | ||||
| <p> | ||||
| <img src="/assets/about/drive.png" align="right" width="300px"/> | ||||
|  | ||||
| <h3 align="right">Misskey Drive</h3> | ||||
| <p align="justify"> | ||||
| Organize and store your files! Want to post a picture you have already uploaded? Wish you could organize your files into folders? Misskey Drive is a solution! | ||||
| </p> | ||||
|  | ||||
| --- | ||||
|  | ||||
| ...and more! | ||||
| ...and more! Experience Misskey with your own eyes at [misskey.xyz](https://misskey.xyz) or join one of the [other instances](https://joinmisskey.github.io/) that are available. | ||||
|  | ||||
| Screen shots | ||||
| ---------------------------------------------------------------- | ||||
| ### Profile page | ||||
| <img src="/assets/ss/user.jpg" width="500px"/> | ||||
|  | ||||
| ### Explore users | ||||
| <img src="/assets/ss/explore.jpg" width="500px"/> | ||||
|  | ||||
| :new: What's new | ||||
| ---------------------------------------------------------------- | ||||
| Please see the [Release notes](./CHANGELOG.md). | ||||
|  | ||||
| :package: Create your own instance | ||||
| ---------------------------------------------------------------- | ||||
| @@ -79,9 +89,6 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). | ||||
| 		<td><img src="https://avatars1.githubusercontent.com/u/30769358?s=460&v=4" alt="mei23" width="100"></td> | ||||
| 		<td><img src="https://avatars2.githubusercontent.com/u/20679825?s=460&v=4" alt="acid-chicken" width="100"></td> | ||||
| 		<td><img src="https://avatars2.githubusercontent.com/u/6533808?s=460&v=4" alt="rinsuki" width="100"></td> | ||||
| 		<td><img src="https://avatars0.githubusercontent.com/u/7973572?s=460&v=4" alt="tamaina" width="100"></td> | ||||
| 		<td><img src="https://avatars1.githubusercontent.com/u/7106976?s=460&v=4" alt="Xeltica" width="100"></td> | ||||
| 		<td><img src="https://avatars1.githubusercontent.com/u/17376330?s=460&v=4" alt="u1-liquid" width="100"></td> | ||||
| 	</tr> | ||||
| 	<tr> | ||||
| 		<td align="center"><a href="https://github.com/syuilo">@syuilo</a></td> | ||||
| @@ -89,122 +96,103 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). | ||||
| 		<td align="center"><a href="https://github.com/mei23">@mei23</a></td> | ||||
| 		<td align="center"><a href="https://github.com/acid-chicken">@acid-chicken</a></td> | ||||
| 		<td align="center"><a href="https://github.com/rinsuki">@rinsuki</a></td> | ||||
| 		<td align="center"><a href="https://github.com/tamaina">@tamaina</a></td> | ||||
| 		<td align="center"><a href="https://github.com/Xeltica">@Xeltica</a></td> | ||||
| 		<td align="center"><a href="https://github.com/u1-liquid">@u1-liquid</a></td> | ||||
| 	</tr> | ||||
| </table> | ||||
|  | ||||
| --- | ||||
|  | ||||
| To receive updates of this repo, follow [@repo@misskey.io](https://misskey.io/@repo) on fediverse. | ||||
|  | ||||
| :heart: Backers | ||||
| ---------------------------------------------------------------- | ||||
| <!-- PATREON_START --> | ||||
| <table><tr> | ||||
| <td><img src="https://c8.patreon.com/2/200/20832595" alt="Roujo " width="100"></td> | ||||
| <td><img src="https://c8.patreon.com/2/200/27956229" alt="Oliver Maximilian Seidel" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12190916/fb7fa7983c14425f890369535b1506a4/3.png?token-time=2145916800&token-hash=oH_i7gJjNT7Ot6j9JiVwy7ZJIBqACVnzLqlz4YrDAZA%3D" alt="weepjp " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/19045173/cb91c0f345c24d4ebfd05f19906d5e26/1.png?token-time=2145916800&token-hash=o_zKBytJs_AxHwSYw_5R8eD0eSJe3RoTR3kR3Q0syN0%3D" alt="kiritan " width="100"></td> | ||||
| <td><img src="https://c8.patreon.com/2/200/27648259" alt="みなしま " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/24430516/b1964ac5b9f746d2a12ff53dbc9aa40a/1.jpg?token-time=2145916800&token-hash=bmEiMGYpp3bS7hCCbymjGGsHBZM3AXuBOFO3Kro37PU%3D" alt="Eduardo Quiros" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5888816/36da0f7c15954df0ab13f9abdf227f66/1.jpeg?token-time=2145916800&token-hash=at8QpJXJ8C0zINY_NmoMKv-MhXVoUK-YzTgaJPJzJYU%3D" alt="Hiroshi Seki" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12190916/fb7fa7983c14425f890369535b1506a4/3.png?token-time=2145916800&token-hash=oH_i7gJjNT7Ot6j9JiVwy7ZJIBqACVnzLqlz4YrDAZA%3D" alt="weepjp" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/19045173/cb91c0f345c24d4ebfd05f19906d5e26/1.png?token-time=2145916800&token-hash=o_zKBytJs_AxHwSYw_5R8eD0eSJe3RoTR3kR3Q0syN0%3D" alt="kiritan" width="100"></td> | ||||
| <td><img src="https://c8.patreon.com/2/200/776209" alt="Denshi" width="100"></td> | ||||
| <td><img src="https://c8.patreon.com/2/200/557245" alt="mkatze" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13099460/43cecdbaa63a40d79bf50a96b9910b9d/1.jpe?token-time=2145916800&token-hash=bqwLTk0Wo0hUJJ8J5y7ii05bLzz-_CDA7Bo0Mp4RFU0%3D" alt="ne_moni" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12913507/f7181eacafe8469a93033d85f5969c29/4.jpe?token-time=2145916800&token-hash=zEyJqVM7u9d8Ri-65fJYSJcWF1jBH1nJ5a3taRzrTmw%3D" alt="Melilot" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5670915/ee175f0bfb6347ffa4ea101a8c097bff/1.jpg?token-time=2145916800&token-hash=mPLM9CA-riFHx-myr3bLZJuH2xBRHA9se5VbHhLIOuA%3D" alt="osapon" width="100"></td> | ||||
| </tr><tr> | ||||
| <td><a href="https://www.patreon.com/user?u=20832595">Roujo </a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=27956229">Oliver Maximilian Seidel</a></td> | ||||
| <td><a href="https://www.patreon.com/weepjp">weepjp </a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=19045173">kiritan </a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=27648259">みなしま </a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=24430516">Eduardo Quiros</a></td> | ||||
| <td><a href="https://www.patreon.com/rane_hs">Hiroshi Seki</a></td> | ||||
| <td><a href="https://www.patreon.com/weepjp">weepjp</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=19045173">kiritan</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=776209">Denshi</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=557245">mkatze</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=13099460">ne_moni</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=12913507">Melilot</a></td> | ||||
| <td><a href="https://www.patreon.com/osapon">osapon</a></td> | ||||
| </tr></table> | ||||
| <table><tr> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/14215107/1cbe1912c26143919fa0faca16f12ce1/4.jpg?token-time=2145916800&token-hash=BslMqDjTjz8KYANLvxL87agHTugHa0dMPUzT-hwR6Vk%3D" alt="Nesakko" width="100"></td> | ||||
| <td><img src="https://c8.patreon.com/2/200/776209" alt="Demogrognard" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/3075183/c2ae575c604e420297f000ccc396e395/1.jpeg?token-time=2145916800&token-hash=O9qmPtpo6wWb0OuvnkEekhk_1WO2MTdytLr7ZgsAr80%3D" alt="Liaizon Wakest" width="100"></td> | ||||
| <td><img src="https://c8.patreon.com/2/200/557245" alt="mkatze " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/23915207/25428766ecd745478e600b3d7f871eb2/1.png?token-time=2145916800&token-hash=urCLLA4KjJZX92Y1CxcBP4d8bVTHGkiaPnQZp-Tqz68%3D" alt="kabo2468y " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/8249688/4aacf36b6b244ab1bc6653591b6640df/2.png?token-time=2145916800&token-hash=1ZEf2w6L34253cZXS_HlVevLEENWS9QqrnxGUAYblPo%3D" alt="AureoleArk " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5670915/ee175f0bfb6347ffa4ea101a8c097bff/1.jpg?token-time=2145916800&token-hash=mPLM9CA-riFHx-myr3bLZJuH2xBRHA9se5VbHhLIOuA%3D" alt="osapon " width="100"></td> | ||||
| <td><img src="https://c8.patreon.com/2/200/16869916" alt="見当かなみ " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/36813045/29876ea679d443bcbba3c3f16edab8c2/2.jpeg?token-time=2145916800&token-hash=YCKWnIhrV9rjUCV9KqtJnEqjy_uGYF3WMXftjUdpi7o%3D" alt="Wataru Manji (manji0)" width="100"></td> | ||||
| </tr><tr> | ||||
| <td><a href="https://www.patreon.com/Nesakko">Nesakko</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=776209">Demogrognard</a></td> | ||||
| <td><a href="https://www.patreon.com/wakest">Liaizon Wakest</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=557245">mkatze </a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=23915207">kabo2468y </a></td> | ||||
| <td><a href="https://www.patreon.com/AureoleArk">AureoleArk </a></td> | ||||
| <td><a href="https://www.patreon.com/osapon">osapon </a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=16869916">見当かなみ </a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=36813045">Wataru Manji (manji0)</a></td> | ||||
| </tr></table> | ||||
| <table><tr> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/18899730/6a22797f68254034a854d69ea2445fc8/1.png?token-time=2145916800&token-hash=b_uj57yxo5VzkSOUS7oXE_762dyOTB_oxzbO6lFNG3k%3D" alt="YuzuRyo61 " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5788159/af42076ab3354bb49803cfba65f94bee/1.jpg?token-time=2145916800&token-hash=iSaxp_Yr2-ZiU2YVi9rcpZZj9mj3UvNSMrZr4CU4qtA%3D" alt="mewl hayabusa" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/28779508/3cd4cb7f017f4ee0864341e3464d42f9/1.png?token-time=2145916800&token-hash=eGQtR15be44kgvh8fw2Jx8Db4Bv15YBp2ldxh0EKRxA%3D" alt="S Y" width="100"></td> | ||||
| <td><img src="https://c8.patreon.com/2/200/16542964" alt="Takumi Sugita" width="100"></td> | ||||
| <td><img src="https://c8.patreon.com/2/200/17866454" alt="sikyosyounin " width="100"></td> | ||||
| <td><img src="https://c8.patreon.com/2/200/16869916" alt="見当かなみ" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/18899730/6a22797f68254034a854d69ea2445fc8/1.png?token-time=2145916800&token-hash=b_uj57yxo5VzkSOUS7oXE_762dyOTB_oxzbO6lFNG3k%3D" alt="YuzuRyo61" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12021162/963128bb8d14476dbd8407943db8f31a/1.png?token-time=2145916800&token-hash=FMV7cPKBD1TU2WTbl1jg6AcdKSvTb2BSFcDhgc-EO8w%3D" alt="gutfuckllc" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/11357794/923ce94cd8c44ba788ee931907881839/1.png?token-time=2145916800&token-hash=9nEQje_eMvUjq9a7L3uBqW-MQbS-rRMaMgd7UYVoFNM%3D" alt="mydarkstar" width="100"></td> | ||||
| <td><img src="https://c8.patreon.com/2/200/12718187" alt="Peter G." width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13039004/509d0c412eb14ae08d6a812a3054f7d6/1.jpe?token-time=2145916800&token-hash=UQRWf01TwHDV4Cls1K0YAOAjM29ssif7hLVq0ESQ0hs%3D" alt="nemu" width="100"></td> | ||||
| <td><img src="https://c8.patreon.com/2/200/17866454" alt="sikyosyounin" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5881381/6235ca5d3fb04c8e95ef5b4ff2abcc18/3.png?token-time=2145916800&token-hash=KjfQL8nf3AIf6WqzLshBYAyX44piAqOAZiYXgZS_H6A%3D" alt="YUKIMOCHI" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/38837364/9421361c54c645ac8f5fc442a40c32e9/1.png?token-time=2145916800&token-hash=TUZB48Nem3BeUPLBH6s3P6WyKBnQOy0xKaDSTBBUNzA%3D" alt="xianon" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/26340354/08834cf767b3449e93098ef73a434e2f/2.png?token-time=2145916800&token-hash=nyM8DnKRL8hR47HQ619mUzsqVRpkWZjgtgBU9RY15Uc%3D" alt="totokoro " width="100"></td> | ||||
| <td><img src="https://c8.patreon.com/2/200/17463605" alt="Sampot" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/19356899/496b4681d33b4520bd7688e0fd19c04d/2.jpeg?token-time=2145916800&token-hash=_sTj3dUBOhn9qwiJ7F19Qd-yWWfUqJC_0jG1h0agEqQ%3D" alt="sheeta.s" width="100"></td> | ||||
| </tr><tr> | ||||
| <td><a href="https://www.patreon.com/Yuzulia">YuzuRyo61 </a></td> | ||||
| <td><a href="https://www.patreon.com/hs_sh_net">mewl hayabusa</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=28779508">S Y</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=16542964">Takumi Sugita</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=17866454">sikyosyounin </a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=16869916">見当かなみ</a></td> | ||||
| <td><a href="https://www.patreon.com/Yuzulia">YuzuRyo61</a></td> | ||||
| <td><a href="https://www.patreon.com/gutfuckllc">gutfuckllc</a></td> | ||||
| <td><a href="https://www.patreon.com/mydarkstar">mydarkstar</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=12718187">Peter G.</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=13039004">nemu</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=17866454">sikyosyounin</a></td> | ||||
| <td><a href="https://www.patreon.com/yukimochi">YUKIMOCHI</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=38837364">xianon</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=26340354">totokoro </a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=17463605">Sampot</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=19356899">sheeta.s</a></td> | ||||
| </tr></table> | ||||
| <table><tr> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/19356899/496b4681d33b4520bd7688e0fd19c04d/2.jpeg?token-time=2145916800&token-hash=_sTj3dUBOhn9qwiJ7F19Qd-yWWfUqJC_0jG1h0agEqQ%3D" alt="sheeta.s " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5827393/59893c191dda408f9cabd0f20a3a5627/1.jpeg?token-time=2145916800&token-hash=i9N05vOph-eP1LTLb9_npATjYOpntL0ZsHNaZFSsPmE%3D" alt="motcha " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/20494440/540beaf2445f408ea6597bc61e077bb3/1.png?token-time=2145916800&token-hash=UJ0JQge64Bx9XmN_qYA1inMQhrWf4U91fqz7VAKJeSg%3D" alt="axtuki1 " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13737140/1adf7835017d479280d90fe8d30aade2/1.png?token-time=2145916800&token-hash=0pdle8h5pDZrww0BDOjdz6zO-HudeGTh36a3qi1biVU%3D" alt="Satsuki Yanagi" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/17880724/311738c8a48f4a6b9443c2445a75adde/1.jpg?token-time=2145916800&token-hash=nVAntpybQrznE0rg05keLrSE6ogPKJXB13rmrJng42c%3D" alt="takimura " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13100201/fc5be4fa90444f09a9c8a06f72385272/1.png?token-time=2145916800&token-hash=i8PjlgfOB2LPEdbtWyx8ZPsBKhGcNZqcw_FQmH71UGU%3D" alt="aqz tamaina" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/9109588/e3cffc48d20a4e43afe04123e696781d/3.png?token-time=2145916800&token-hash=T_VIUA0IFIbleZv4pIjiszZGnQonwn34sLCYFIhakBo%3D" alt="nafuchoco " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/16900731/619ab87cc08448439222631ebb26802f/1.gif?token-time=2145916800&token-hash=o27K7M02s1z-LkDUEO5Oa7cu-GviRXeOXxryi4o_6VU%3D" alt="Atsuko Tominaga" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/17880724/311738c8a48f4a6b9443c2445a75adde/1.jpe?token-time=2145916800&token-hash=CPxGQhKIlEaa6WUcgbyHixyKEhakiw9RFdOhsIJBQ_o%3D" alt="takimura" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/17195955/be45e5e14c3e48b2bee0456c84e19df4/4.jpe?token-time=2145916800&token-hash=UslrPVM-8TXOe8AapuNiaFYjcIJgPNcU-fKpGbfGJNI%3D" alt="Damillora" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/16900731/83884b38afc74d4cbe83c30a13b10edd/1.png?token-time=2145916800&token-hash=R5Tog8RWg0rguRoCIoir3lThokrdPvs8Utfikhc0nhY%3D" alt="Atsuko Tominaga" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/4389829/9f709180ac714651a70f74a82f3ffdb9/3.png?token-time=2145916800&token-hash=FTm3WVom4dJ9NwWMU4OpCL_8Yc13WiwEbKrDPyTZTPs%3D" alt="natalie" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/26144593/9514b10a5c1b42a3af58621aee213d1d/1.png?token-time=2145916800&token-hash=v1PYRsjzu4c_mndN4Hvi_dlispZJsuGRCQeNS82pUSM%3D" alt="EBISUME" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5923936/2a743cbfbff946c2af3f09026047c0da/2.png?token-time=2145916800&token-hash=h6yphW1qnM0n_NOWaf8qtszMRLXEwIxfk5beu4RxdT0%3D" alt="noellabo " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/13034746/c711c7f58e204ecfbc2fd646bc8a4eee/1.jpe?token-time=2145916800&token-hash=EWxXhVbZYH7KB4IDT3joc8TbIg8zPO40x1r5IDn3R7c%3D" alt="Hiratake" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5923936/2a743cbfbff946c2af3f09026047c0da/2.png?token-time=2145916800&token-hash=h6yphW1qnM0n_NOWaf8qtszMRLXEwIxfk5beu4RxdT0%3D" alt="noellabo" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/2384390/5681180e1efb46a8b28e0e8d4c8b9037/1.jpg?token-time=2145916800&token-hash=SJcMy-Q1BcS940-LFUVOMfR7-5SgrzsEQGhYb3yowFk%3D" alt="CG" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/18072312/98e894d960314fa7bc236a72a39488fe/1.jpe?token-time=2145916800&token-hash=qA8j97lIZNc-74AuZ0p4F3ms6sKPeKjtNt2vEuwpsyo%3D" alt="Hekovic" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/10789744/97175095d8f04c0f86225ff47cb98d40/1.jpeg?token-time=2145916800&token-hash=l4AoMR7Nj7K4yAHrkrk2hAoggPkbSPm12m1nmbe9Pb8%3D" alt="Naoki Hirayama" width="100"></td> | ||||
| </tr><tr> | ||||
| <td><a href="https://www.patreon.com/user?u=19356899">sheeta.s </a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=5827393">motcha </a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=20494440">axtuki1 </a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=13737140">Satsuki Yanagi</a></td> | ||||
| <td><a href="https://www.patreon.com/takimura">takimura </a></td> | ||||
| <td><a href="https://www.patreon.com/aqz">aqz tamaina</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=9109588">nafuchoco </a></td> | ||||
| <td><a href="https://www.patreon.com/takimura">takimura</a></td> | ||||
| <td><a href="https://www.patreon.com/damillora">Damillora</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=16900731">Atsuko Tominaga</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=4389829">natalie</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=26144593">EBISUME</a></td> | ||||
| <td><a href="https://www.patreon.com/noellabo">noellabo </a></td> | ||||
| <td><a href="https://www.patreon.com/hiratake">Hiratake</a></td> | ||||
| <td><a href="https://www.patreon.com/noellabo">noellabo</a></td> | ||||
| <td><a href="https://www.patreon.com/Corset">CG</a></td> | ||||
| <td><a href="https://www.patreon.com/hekovic">Hekovic</a></td> | ||||
| <td><a href="https://www.patreon.com/spinlock">Naoki Hirayama</a></td> | ||||
| </tr></table> | ||||
| <table><tr> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/2384390/5681180e1efb46a8b28e0e8d4c8b9037/1.jpg?token-time=2145916800&token-hash=SJcMy-Q1BcS940-LFUVOMfR7-5SgrzsEQGhYb3yowFk%3D" alt="CG " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/18072312/98e894d960314fa7bc236a72a39488fe/1.jpg?token-time=2145916800&token-hash=7bkMqTwHPRsJPGAq42PYdDXDZBVGLqdgr1ZmBxX8GFQ%3D" alt="Hekovic " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/24641572/b4fd175424814f15b0ca9178d2d2d2e4/1.png?token-time=2145916800&token-hash=e2fyqdbuJbpCckHcwux7rbuW6OPkKdERcus0u2wIEWU%3D" alt="uroco @99" width="100"></td> | ||||
| <td><img src="https://c8.patreon.com/2/200/14661394" alt="Chandler " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/4503830/ccf2cc867ea64de0b524bb2e24b9a1cb/1.jpeg?token-time=2145916800&token-hash=L55UhJ0rcuNAH3w_ryeeGN4hC6taoOixyAhraEi0bzw%3D" alt="dansup" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/619786/32cf01444db24e578cd1982c197f6fc6/1.jpeg?token-time=2145916800&token-hash=d8jBQLMOHD87KtXs5C9fk1o58DMF73pQ-dYH3uZJPBE%3D" alt="Gargron" width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/5731881/4b6038e6cda34c04b83a5fcce3806a93/1.png?token-time=2145916800&token-hash=hBayGfOmQH3kRMdNnDe4oCZD_9fsJWSt29xXR3KRMVk%3D" alt="Nokotaro Takeda" width="100"></td> | ||||
| <td><img src="https://c8.patreon.com/2/200/23932002" alt="nenohi " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/9481273/7fa89168e72943859c3d3c96e424ed31/4.jpeg?token-time=2145916800&token-hash=5w1QV1qXe-NdWbdFmp1H7O_-QBsSiV0haumk3XTHIEg%3D" alt="Efertone " width="100"></td> | ||||
| <td><img src="https://c10.patreonusercontent.com/3/eyJ3IjoyMDB9/patreon-media/p/user/12531784/93a45137841849329ba692da92ac7c60/1.jpeg?token-time=2145916800&token-hash=vGe7wXGqmA8Q7m-kDNb6fyGdwk-Dxk4F-ut8ZZu51RM%3D" alt="Takashi Shibuya" width="100"></td> | ||||
| </tr><tr> | ||||
| <td><a href="https://www.patreon.com/Corset">CG </a></td> | ||||
| <td><a href="https://www.patreon.com/hekovic">Hekovic </a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=24641572">uroco @99</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=14661394">Chandler </a></td> | ||||
| <td><a href="https://www.patreon.com/dansup">dansup</a></td> | ||||
| <td><a href="https://www.patreon.com/mastodon">Gargron</a></td> | ||||
| <td><a href="https://www.patreon.com/takenoko">Nokotaro Takeda</a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=23932002">nenohi </a></td> | ||||
| <td><a href="https://www.patreon.com/efertone">Efertone </a></td> | ||||
| <td><a href="https://www.patreon.com/user?u=12531784">Takashi Shibuya</a></td> | ||||
| </tr></table> | ||||
|  | ||||
| **Last updated:** Sun, 26 Jul 2020 07:00:10 UTC | ||||
| **Last updated:** Mon, 03 Jun 2019 17:28:09 UTC | ||||
| <!-- PATREON_END --> | ||||
|  | ||||
| :four_leaf_clover: Copyright | ||||
| ---------------------------------------------------------------- | ||||
| > Copyright (c) 2014-2019 syuilo | ||||
|  | ||||
| Misskey is open-source software licensed under the [GNU AGPLv3](LICENSE). | ||||
|  | ||||
| [![][agpl-3.0-badge]][AGPL-3.0] | ||||
|  | ||||
| [agpl-3.0]:           https://www.gnu.org/licenses/agpl-3.0.en.html | ||||
| [agpl-3.0-badge]:     https://img.shields.io/badge/license-AGPL--3.0-444444.svg?style=for-the-badge | ||||
|  | ||||
| [backer-url]: #backers | ||||
| [backer-badge]: https://opencollective.com/misskey/backers/badge.svg | ||||
| [backers-image]: https://opencollective.com/misskey/backers.svg | ||||
|   | ||||
| Before Width: | Height: | Size: 35 KiB | 
| Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 2.5 KiB | 
| Before Width: | Height: | Size: 20 KiB | 
| Before Width: | Height: | Size: 76 KiB | 
| Before Width: | Height: | Size: 9.2 KiB | 
| Before Width: | Height: | Size: 43 KiB | 
| Before Width: | Height: | Size: 3.4 KiB | 
| Before Width: | Height: | Size: 60 KiB | 
| Before Width: | Height: | Size: 8.4 KiB | 
| Before Width: | Height: | Size: 16 KiB | 
| Before Width: | Height: | Size: 4.5 KiB | 
| Before Width: | Height: | Size: 16 KiB | 
| Before Width: | Height: | Size: 3.5 KiB | 
| Before Width: | Height: | Size: 290 KiB | 
| Before Width: | Height: | Size: 10 KiB | 
| Before Width: | Height: | Size: 124 KiB | 
| Before Width: | Height: | Size: 22 KiB | 
| Before Width: | Height: | Size: 8.1 KiB | 
| Before Width: | Height: | Size: 11 KiB | 
| Before Width: | Height: | Size: 4.4 KiB | 
| Before Width: | Height: | Size: 688 B |