Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release: 4.12.1 #522

Merged
merged 69 commits into from
Nov 5, 2024
Merged

Release: 4.12.1 #522

merged 69 commits into from
Nov 5, 2024

Conversation

noridev
Copy link
Collaborator

@noridev noridev commented Oct 29, 2024

기반 Misskey 버전: 2024.9.0

NOTE

  • 오브젝트 스토리지 (리모트)의 내부 변경으로 인해 DB 마이그레이션 과정에서 이전에 설정한 값이 제거됩니다. 마이그레이션 이후 값을 다시 설정해 주십시오.

General

Client

  • Enhance: (Friendly) 모바일 환경에서 계정 목록을 표시할 때 내 프로필을 표시함
  • Enhance: 업데이트 및 마이그레이션 알림에서 CherryPick의 변경 사항만 표시함
  • Enhance: 검색과 같은 입력 블록에서 Enter를 입력하면 자동으로 가상 키보드를 숨김
  • Enhance: 환영 페이지의 타임라인에서 사용할 수 있는 일부 노트 메뉴 추가
    • QR 코드 생성
    • 새 탭에서 열기
    • 리노트 목록
    • 리액션 목록
    • 텍스트 소스 보기
    • 고양이체로 표시하지 않기
  • Enhance: 노트 작성 폼의 사용자 선택 메뉴에서 현재 계정과 로그인된 추가 계정 영역을 구분함
  • Enhance: 모바일 환경에서 토스트 알림의 디자인 및 배치를 개선함
  • Enhance: 로그인 시 표시되는 환영 메시지의 표시 유무를 선택할 수 있음
  • Ehhance: 텍스트 소스 보기를 사용하면 자동으로 내용을 펼침
  • Enhance: 사용자 메뉴에서 서버 정보 페이지로 갈 수 있는 바로 가기를 추가함
  • Enhance: 사용자 페이지와 사용자 팝업 개선
    • 사용자 페이지와 사용자 팝업에 새 노트 알림 켜기 버튼이 추가됨
    • 사용자 페이지에 사용자 노트 검색 버튼이 추가됨
  • Enhance: 상대방이 나를 차단한 경우 차단되었음을 알 수 있도록 개선함
    • 차단되면 다음 기능들이 화면 상에서 사라지고 사용이 제한됩니다.
      • 팔로우 버튼
      • 사용자 페이지에서 기본 정보 외 다른 모든 정보는 열람할 수 없음
      • 사용자 페이지에서 요약 탭 외에 모든 탭이 사용할 수 없게됨
  • Fix: 임베디드 코드에서 CherryPick의 색상 설정이 반영되지 않음
  • Fix: 임베디드 코드에 fadeTemml(KaTex)가 반영되지 않음
  • Fix: 노트의 QR 코드를 생성했을 때 링크 복사 버튼을 누르면 잘못된 토스트 알림이 표시됨
  • Fix: 노트 메뉴에 링크 복사 옵션이 표시되지 않음
  • Fix: 서버 이름에 마크업 언어가 포함되어 있으면 외부 사이트로 이동할 때 표시되는 대화상자에서 서버 이름이 잘못 표시될 수 있음
  • Fix: 로그인 하지 않은 사용자가 노트 내용에 포함된 이모지를 누르면 이모지 복사 및 리액션 메뉴에 접근할 수 있음
  • Fix: 모바일 환경에서 노트 작성 폼의 미리보기 디자인이 잘못 표시될 수 있음
  • Fix: 리버시에서 커스텀 이모지를 리액션으로 보낼 수 없음
  • Fix: 리버시에서 리액션할 때 말풍선의 위치가 어긋나 보일 수 있음
  • Fix: 특정 조건에서 노트 동작 버튼을 비활성화 해도 버튼이 사라지지 않음
    • 노트에 답글을 작성할 수 없을 때
    • 노트를 리노트할 수 없을 때
  • Fix: 캡션이 512자를 초과하면 초과한 내용이 잘릴 수 있음 (텍스트 본문이 길면 대체 텍스트가 삭제됩니다. 또한 대체 텍스트의 글자 수 제한은 표시되지 않습니다. (Alternative text is deleted if the text body is long. Additionally, there is no indication of the character limit for alternative text.) #518)
    • 캡션을 512자를 초과해서 작성하면 캡션 내용을 저장하기 전에 경고를 표시합니다.
  • Fix: 노트 상세 페이지의 InstanceTicker에 커서를 올릴 때 마우스 포인터가 올바르게 표시되지 않음
  • Fix: UI에 흐림 효과 사용 옵션이 토스트 알림에서 제대로 적용되지 않음
    • 모바일 환경에서만 적용되는 문제를 해결합니다.
  • Fix: 모바일 환경에서 제어판의 인디케이터가 잘못된 위치에 표시될 수 있음
  • Fix: 답글을 자동으로 더 보기를 활성화하면 3개 미만의 답글이 있는 노트에서 답글이 보이지 않음 (frontend: 'Show more automatically replies' does not show the reply when reply is less than 3 #521)
  • Fix: 제어판에서 문의처 URL이 설정되지 않았을 때 표시되는 경고의 바로가기가 잘못 설정되어 있음
  • Fix: 캡션이 설정된 이미지 위에 마우스 커서를 올려도 캡션이 표시되지 않음 (사진 위로 마우스를 가져가면 대체 텍스트는 표시되지 않지만 파일 이름은 표시됩니다. ( When you hover over a photo, the alt text is not displayed, but the filename is.) #514)
  • Fix: 코드 편집기의 커서 위치가 올바르게 표시되지 않을 수 있음 (fix(frontend): Fix mismatched fonts of code editor #520)
  • Fix: 투표 기한을 기간 지정으로 설정한 경우 투표가 즉시 종료될 수 있음 (투표 기능 오작동 #523)
  • Fix: 로그인하지 않은 사용자가 리버시 전적을 볼 수 없음 (非ログインでリバーシの戦績が見れるように yojo-art/cherrypick#404)

Server

noridev and others added 30 commits October 8, 2024 15:41
  - QR 코드 생성
  - 새 탭에서 열기
  - 리노트 목록
  - 리액션 목록
  - 텍스트 소스 보기
  - 고양이체로 표시하지 않기

fix(frontend): 노트 메뉴에 `링크 복사` 옵션이 표시되지 않음
enhance(frontend): 노트 작성 폼의 사용자 선택 메뉴에서 현재 계정과 로그인된 추가 계정 영역을 구분함
  - 노트에 답글을 작성할 수 없을 때
  - 노트를 리노트할 수 없을 때
  - 캡션을 512자를 초과해서 작성하면 캡션 내용을 저장하기 전에 경고를 표시합니다.
fix(frontend): `UI에 흐림 효과 사용` 옵션이 토스트 알림에서 제대로 적용되지 않음
  - 모바일 환경에서만 적용되던 문제를 해결했습니다.
  - 1시간에 10번 편집할 수 있던 것을 5분에 10번 편집할 수 있도록 완화함.
Copy link
Contributor

github-actions bot commented Oct 29, 2024

이 PR에 의한 api.json 차이

차이점은 여기에서 볼 수 있음
--- base
+++ head
@@ -1,7 +1,7 @@
 {
   "openapi": "3.1.0",
   "info": {
-    "version": "4.12.0 (2024.9.0)",
+    "version": "4.12.1 (2024.9.0)",
     "title": "CherryPick API"
   },
   "externalDocs": {
@@ -127,6 +127,12 @@
                         "null"
                       ]
                     },
+                    "youBlockedImageUrl": {
+                      "type": [
+                        "string",
+                        "null"
+                      ]
+                    },
                     "iconUrl": {
                       "type": [
                         "string",
@@ -356,64 +362,64 @@
                     "objectStorageSetPublicRead": {
                       "type": "boolean"
                     },
-                    "useObjectStorageRemote": {
+                    "useRemoteObjectStorage": {
                       "type": "boolean"
                     },
-                    "objectStorageRemoteBaseUrl": {
+                    "remoteObjectStorageBaseUrl": {
                       "type": [
                         "string",
                         "null"
                       ]
                     },
-                    "objectStorageRemoteBucket": {
+                    "remoteObjectStorageBucket": {
                       "type": [
                         "string",
                         "null"
                       ]
                     },
-                    "objectStorageRemotePrefix": {
+                    "remoteObjectStoragePrefix": {
                       "type": [
                         "string",
                         "null"
                       ]
                     },
-                    "objectStorageRemoteEndpoint": {
+                    "remoteObjectStorageEndpoint": {
                       "type": [
                         "string",
                         "null"
                       ]
                     },
-                    "objectStorageRemoteRegion": {
+                    "remoteObjectStorageRegion": {
                       "type": [
                         "string",
                         "null"
                       ]
                     },
-                    "objectStorageRemotePort": {
+                    "remoteObjectStoragePort": {
                       "type": [
                         "number",
                         "null"
                       ]
                     },
-                    "objectStorageRemoteAccessKey": {
+                    "remoteObjectStorageAccessKey": {
                       "type": [
                         "string",
                         "null"
                       ]
                     },
-                    "objectStorageRemoteSecretKey": {
+                    "remoteObjectStorageSecretKey": {
                       "type": [
                         "string",
                         "null"
                       ]
                     },
-                    "objectStorageRemoteUseSSL": {
+                    "remoteObjectStorageUseSSL": {
                       "type": "boolean"
                     },
-                    "objectStorageRemoteUseProxy": {
+                    "remoteObjectStorageUseProxy": {
                       "type": "boolean"
                     },
-                    "objectStorageRemoteSetPublicRead": {
+                    "remoteObjectStorageSetPublicRead": {
                       "type": "boolean"
                     },
                     "enableIpLogging": {
@@ -557,7 +563,7 @@
                     "objectStorageS3ForcePathStyle": {
                       "type": "boolean"
                     },
-                    "objectStorageRemoteS3ForcePathStyle": {
+                    "remoteObjectStorageS3ForcePathStyle": {
                       "type": "boolean"
                     },
                     "privacyPolicyUrl": {
@@ -690,6 +696,7 @@
                     "serverErrorImageUrl",
                     "infoImageUrl",
                     "notFoundImageUrl",
+                    "youBlockedImageUrl",
                     "iconUrl",
                     "app192IconUrl",
                     "app512IconUrl",
@@ -732,6 +739,18 @@
                     "objectStorageUseSSL",
                     "objectStorageUseProxy",
                     "objectStorageSetPublicRead",
+                    "useRemoteObjectStorage",
+                    "remoteObjectStorageBaseUrl",
+                    "remoteObjectStorageBucket",
+                    "remoteObjectStoragePrefix",
+                    "remoteObjectStorageEndpoint",
+                    "remoteObjectStorageRegion",
+                    "remoteObjectStoragePort",
+                    "remoteObjectStorageAccessKey",
+                    "remoteObjectStorageSecretKey",
+                    "remoteObjectStorageUseSSL",
+                    "remoteObjectStorageUseProxy",
+                    "remoteObjectStorageSetPublicRead",
                     "enableIpLogging",
                     "enableActiveEmailValidation",
                     "enableVerifymailApi",
@@ -766,7 +785,7 @@
                     "name",
                     "shortName",
                     "objectStorageS3ForcePathStyle",
-                    "objectStorageRemoteS3ForcePathStyle",
+                    "remoteObjectStorageS3ForcePathStyle",
                     "privacyPolicyUrl",
                     "inquiryUrl",
                     "repositoryUrl",
@@ -14968,6 +14987,12 @@
                       "null"
                     ]
                   },
+                  "youBlockedImageUrl": {
+                    "type": [
+                      "string",
+                      "null"
+                    ]
+                  },
                   "iconUrl": {
                     "type": [
                       "string",
@@ -15348,67 +15373,67 @@
                   "objectStorageS3ForcePathStyle": {
                     "type": "boolean"
                   },
-                  "useObjectStorageRemote": {
+                  "useRemoteObjectStorage": {
                     "type": "boolean"
                   },
-                  "objectStorageRemoteBaseUrl": {
+                  "remoteObjectStorageBaseUrl": {
                     "type": [
                       "string",
                       "null"
                     ]
                   },
-                  "objectStorageRemoteBucket": {
+                  "remoteObjectStorageBucket": {
                     "type": [
                       "string",
                       "null"
                     ]
                   },
-                  "objectStorageRemotePrefix": {
+                  "remoteObjectStoragePrefix": {
                     "type": [
                       "string",
                       "null"
                     ]
                   },
-                  "objectStorageRemoteEndpoint": {
+                  "remoteObjectStorageEndpoint": {
                     "type": [
                       "string",
                       "null"
                     ]
                   },
-                  "objectStorageRemoteRegion": {
+                  "remoteObjectStorageRegion": {
                     "type": [
                       "string",
                       "null"
                     ]
                   },
-                  "objectStorageRemotePort": {
+                  "remoteObjectStoragePort": {
                     "type": [
                       "integer",
                       "null"
                     ]
                   },
-                  "objectStorageRemoteAccessKey": {
+                  "remoteObjectStorageAccessKey": {
                     "type": [
                       "string",
                       "null"
                     ]
                   },
-                  "objectStorageRemoteSecretKey": {
+                  "remoteObjectStorageSecretKey": {
                     "type": [
                       "string",
                       "null"
                     ]
                   },
-                  "objectStorageRemoteUseSSL": {
+                  "remoteObjectStorageUseSSL": {
                     "type": "boolean"
                   },
-                  "objectStorageRemoteUseProxy": {
+                  "remoteObjectStorageUseProxy": {
                     "type": "boolean"
                   },
-                  "objectStorageRemoteSetPublicRead": {
+                  "remoteObjectStorageSetPublicRead": {
                     "type": "boolean"
                   },
-                  "objectStorageRemoteS3ForcePathStyle": {
+                  "remoteObjectStorageS3ForcePathStyle": {
                     "type": "boolean"
                   },
                   "enableIpLogging": {
@@ -47983,6 +48008,7 @@
                         "test",
                         "reaction:grouped",
                         "renote:grouped",
+                        "note:grouped",
                         "pollVote"
                       ]
                     }
@@ -48010,6 +48036,7 @@
                         "test",
                         "reaction:grouped",
                         "renote:grouped",
+                        "note:grouped",
                         "pollVote"
                       ]
                     }
@@ -62952,6 +62979,946 @@
         }
       }
     },
+    "/notes/schedule/create": {
+      "post": {
+        "operationId": "notes___schedule___create",
+        "summary": "notes/schedule/create",
+        "description": "No description provided.\n\n**Credential required**: *Yes* / **Permission**: *write:notes-schedule*",
+        "externalDocs": {
+          "description": "Source code",
+          "url": "https://github.com/kokonect-link/cherrypick/blob/develop/packages/backend/src/server/api/endpoints/notes/schedule/create.ts"
+        },
+        "tags": [
+          "notes"
+        ],
+        "security": [
+          {
+            "bearerAuth": []
+          }
+        ],
+        "requestBody": {
+          "required": true,
+          "content": {
+            "application/json": {
+              "schema": {
+                "type": "object",
+                "properties": {
+                  "visibility": {
+                    "type": "string",
+                    "enum": [
+                      "public",
+                      "home",
+                      "followers",
+                      "specified"
+                    ],
+                    "default": "public"
+                  },
+                  "visibleUserIds": {
+                    "type": "array",
+                    "uniqueItems": true,
+                    "items": {
+                      "type": "string",
+                      "format": "misskey:id"
+                    }
+                  },
+                  "cw": {
+                    "type": [
+                      "string",
+                      "null"
+                    ],
+                    "minLength": 1,
+                    "maxLength": 100
+                  },
+                  "reactionAcceptance": {
+                    "type": [
+                      "string",
+                      "null"
+                    ],
+                    "enum": [
+                      null,
+                      "likeOnly",
+                      "likeOnlyForRemote",
+                      "nonSensitiveOnly",
+                      "nonSensitiveOnlyForLocalLikeOnlyForRemote"
+                    ],
+                    "default": null
+                  },
+                  "disableRightClick": {
+                    "type": "boolean",
+                    "default": false
+                  },
+                  "noExtractMentions": {
+                    "type": "boolean",
+                    "default": false
+                  },
+                  "noExtractHashtags": {
+                    "type": "boolean",
+                    "default": false
+                  },
+                  "noExtractEmojis": {
+                    "type": "boolean",
+                    "default": false
+                  },
+                  "replyId": {
+                    "type": [
+                      "string",
+                      "null"
+                    ],
+                    "format": "misskey:id"
+                  },
+                  "renoteId": {
+                    "type": [
+                      "string",
+                      "null"
+                    ],
+                    "format": "misskey:id"
+                  },
+                  "text": {
+                    "type": [
+                      "string",
+                      "null"
+                    ],
+                    "minLength": 1,
+                    "maxLength": 3000
+                  },
+                  "fileIds": {
+                    "type": "array",
+                    "uniqueItems": true,
+                    "minItems": 1,
+                    "maxItems": 16,
+                    "items": {
+                      "type": "string",
+                      "format": "misskey:id"
+                    }
+                  },
+                  "mediaIds": {
+                    "type": "array",
+                    "uniqueItems": true,
+                    "minItems": 1,
+                    "maxItems": 16,
+                    "items": {
+                      "type": "string",
+                      "format": "misskey:id"
+                    }
+                  },
+                  "poll": {
+                    "type": [
+                      "object",
+                      "null"
+                    ],
+                    "properties": {
+                      "choices": {
+                        "type": "array",
+                        "uniqueItems": true,
+                        "minItems": 2,
+                        "maxItems": 10,
+                        "items": {
+                          "type": "string",
+                          "minLength": 1,
+                          "maxLength": 50
+                        }
+                      },
+                      "multiple": {
+                        "type": "boolean"
+                      },
+                      "expiresAt": {
+                        "type": [
+                          "integer",
+                          "null"
+                        ]
+                      },
+                      "expiredAfter": {
+                        "type": [
+                          "integer",
+                          "null"
+                        ],
+                        "minimum": 1
+                      }
+                    },
+                    "required": [
+                      "choices"
+                    ]
+                  },
+                  "event": {
+                    "type": [
+                      "object",
+                      "null"
+                    ],
+                    "properties": {
+                      "title": {
+                        "type": "string",
+                        "minLength": 1,
+                        "maxLength": 128
+                      },
+                      "start": {
+                        "type": "integer"
+                      },
+                      "end": {
+                        "type": [
+                          "integer",
+                          "null"
+                        ]
+                      },
+                      "metadata": {
+                        "type": "object"
+                      }
+                    }
+                  },
+                  "scheduleNote": {
+                    "type": "object",
+                    "properties": {
+                      "scheduledAt": {
+                        "type": "integer"
+                      }
+                    }
+                  }
+                },
+                "anyOf": [
+                  {
+                    "required": [
+                      "text"
+                    ]
+                  },
+                  {
+                    "required": [
+                      "renoteId"
+                    ]
+                  },
+                  {
+                    "required": [
+                      "fileIds"
+                    ]
+                  },
+                  {
+                    "required": [
+                      "mediaIds"
+                    ]
+                  },
+                  {
+                    "required": [
+                      "poll"
+                    ]
+                  }
+                ],
+                "required": [
+                  "scheduleNote"
+                ]
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "OK (without any results)"
+          },
+          "400": {
+            "description": "Client error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "SCHEDULE_NOTE_MAX": {
+                    "value": {
+                      "error": {
+                        "message": "Schedule note max.",
+                        "code": "SCHEDULE_NOTE_MAX",
+                        "id": "168707c3-e7da-4031-989e-f42aa3a274b2"
+                      }
+                    }
+                  },
+                  "NO_SUCH_RENOTE_TARGET": {
+                    "value": {
+                      "error": {
+                        "message": "No such renote target.",
+                        "code": "NO_SUCH_RENOTE_TARGET",
+                        "id": "b5c90186-4ab0-49c8-9bba-a1f76c282ba4"
+                      }
+                    }
+                  },
+                  "CANNOT_RENOTE_TO_A_PURE_RENOTE": {
+                    "value": {
+                      "error": {
+                        "message": "You can not Renote a pure Renote.",
+                        "code": "CANNOT_RENOTE_TO_A_PURE_RENOTE",
+                        "id": "fd4cc33e-2a37-48dd-99cc-9b806eb2031a"
+                      }
+                    }
+                  },
+                  "CANNOT_RENOTE_DUE_TO_VISIBILITY": {
+                    "value": {
+                      "error": {
+                        "message": "You can not Renote due to target visibility.",
+                        "code": "CANNOT_RENOTE_DUE_TO_VISIBILITY",
+                        "id": "be9529e9-fe72-4de0-ae43-0b363c4938af"
+                      }
+                    }
+                  },
+                  "NO_SUCH_REPLY_TARGET": {
+                    "value": {
+                      "error": {
+                        "message": "No such reply target.",
+                        "code": "NO_SUCH_REPLY_TARGET",
+                        "id": "749ee0f6-d3da-459a-bf02-282e2da4292c"
+                      }
+                    }
+                  },
+                  "CANNOT_REPLY_TO_A_PURE_RENOTE": {
+                    "value": {
+                      "error": {
+                        "message": "You can not reply to a pure Renote.",
+                        "code": "CANNOT_REPLY_TO_A_PURE_RENOTE",
+                        "id": "3ac74a84-8fd5-4bb0-870f-01804f82ce15"
+                      }
+                    }
+                  },
+                  "CANNOT_CREATE_ALREADY_EXPIRED_POLL": {
+                    "value": {
+                      "error": {
+                        "message": "Poll is already expired.",
+                        "code": "CANNOT_CREATE_ALREADY_EXPIRED_POLL",
+                        "id": "04da457d-b083-4055-9082-955525eda5a5"
+                      }
+                    }
+                  },
+                  "CANNOT_CREATE_ALREADY_EXPIRED_SCHEDULE": {
+                    "value": {
+                      "error": {
+                        "message": "Schedule is already expired.",
+                        "code": "CANNOT_CREATE_ALREADY_EXPIRED_SCHEDULE",
+                        "id": "8a9bfb90-fc7e-4878-a3e8-d97faaf5fb07"
+                      }
+                    }
+                  },
+                  "NO_SUCH_CHANNEL": {
+                    "value": {
+                      "error": {
+                        "message": "No such channel.",
+                        "code": "NO_SUCH_CHANNEL",
+                        "id": "b1653923-5453-4edc-b786-7c4f39bb0bbb"
+                      }
+                    }
+                  },
+                  "NO_SUCH_SCHEDULE": {
+                    "value": {
+                      "error": {
+                        "message": "No such schedule.",
+                        "code": "NO_SUCH_SCHEDULE",
+                        "id": "44dee229-8da1-4a61-856d-e3a4bbc12032"
+                      }
+                    }
+                  },
+                  "YOU_HAVE_BEEN_BLOCKED": {
+                    "value": {
+                      "error": {
+                        "message": "You have been blocked by this user.",
+                        "code": "YOU_HAVE_BEEN_BLOCKED",
+                        "id": "b390d7e1-8a5e-46ed-b625-06271cafd3d3"
+                      }
+                    }
+                  },
+                  "NO_SUCH_FILE": {
+                    "value": {
+                      "error": {
+                        "message": "Some files are not found.",
+                        "code": "NO_SUCH_FILE",
+                        "id": "b6992544-63e7-67f0-fa7f-32444b1b5306"
+                      }
+                    }
+                  },
+                  "CANNOT_RENOTE_OUTSIDE_OF_CHANNEL": {
+                    "value": {
+                      "error": {
+                        "message": "Cannot renote outside of channel.",
+                        "code": "CANNOT_RENOTE_OUTSIDE_OF_CHANNEL",
+                        "id": "33510210-8452-094c-6227-4a6c05d99f00"
+                      }
+                    }
+                  },
+                  "INVALID_PARAM": {
+                    "value": {
+                      "error": {
+                        "message": "Invalid param.",
+                        "code": "INVALID_PARAM",
+                        "id": "3d81ceae-475f-4600-b2a8-2bc116157532"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "CREDENTIAL_REQUIRED": {
+                    "value": {
+                      "error": {
+                        "message": "Credential required.",
+                        "code": "CREDENTIAL_REQUIRED",
+                        "id": "1384574d-a912-4b81-8601-c7b1c4085df1"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "AUTHENTICATION_FAILED": {
+                    "value": {
+                      "error": {
+                        "message": "Authentication failed. Please ensure your token is correct.",
+                        "code": "AUTHENTICATION_FAILED",
+                        "id": "b0a7f5f8-dc2f-4171-b91f-de88ad238e14"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "418": {
+            "description": "I'm Ai",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "I_AM_AI": {
+                    "value": {
+                      "error": {
+                        "message": "You sent a request to Ai-chan, CherryPick's showgirl, instead of the server.",
+                        "code": "I_AM_AI",
+                        "id": "60c46cd1-f23a-46b1-bebe-5d2b73951a84"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "429": {
+            "description": "To many requests",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "RATE_LIMIT_EXCEEDED": {
+                    "value": {
+                      "error": {
+                        "message": "Rate limit exceeded. Please try again later.",
+                        "code": "RATE_LIMIT_EXCEEDED",
+                        "id": "d5826d14-3982-4d2e-8011-b9e9f02499ef"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Internal server error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "INTERNAL_ERROR": {
+                    "value": {
+                      "error": {
+                        "message": "Internal error occurred. Please contact us if the error persists.",
+                        "code": "INTERNAL_ERROR",
+                        "id": "5d37dbcb-891e-41ca-a3d6-e690c97775ac"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/notes/schedule/delete": {
+      "post": {
+        "operationId": "notes___schedule___delete",
+        "summary": "notes/schedule/delete",
+        "description": "No description provided.\n\n**Credential required**: *Yes* / **Permission**: *write:notes-schedule*",
+        "externalDocs": {
+          "description": "Source code",
+          "url": "https://github.com/kokonect-link/cherrypick/blob/develop/packages/backend/src/server/api/endpoints/notes/schedule/delete.ts"
+        },
+        "tags": [
+          "notes"
+        ],
+        "security": [
+          {
+            "bearerAuth": []
+          }
+        ],
+        "requestBody": {
+          "required": true,
+          "content": {
+            "application/json": {
+              "schema": {
+                "type": "object",
+                "properties": {
+                  "noteId": {
+                    "type": "string",
+                    "format": "misskey:id"
+                  }
+                },
+                "required": [
+                  "noteId"
+                ]
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "OK (without any results)"
+          },
+          "400": {
+            "description": "Client error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "NO_SUCH_NOTE": {
+                    "value": {
+                      "error": {
+                        "message": "No such note.",
+                        "code": "NO_SUCH_NOTE",
+                        "id": "a58056ba-8ba1-4323-8ebf-e0b585bc244f"
+                      }
+                    }
+                  },
+                  "PERMISSION_DENIED": {
+                    "value": {
+                      "error": {
+                        "message": "Permission denied.",
+                        "code": "PERMISSION_DENIED",
+                        "id": "c0da2fed-8f61-4c47-a41d-431992607b5c",
+                        "httpStatusCode": 403
+                      }
+                    }
+                  },
+                  "INVALID_PARAM": {
+                    "value": {
+                      "error": {
+                        "message": "Invalid param.",
+                        "code": "INVALID_PARAM",
+                        "id": "3d81ceae-475f-4600-b2a8-2bc116157532"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "CREDENTIAL_REQUIRED": {
+                    "value": {
+                      "error": {
+                        "message": "Credential required.",
+                        "code": "CREDENTIAL_REQUIRED",
+                        "id": "1384574d-a912-4b81-8601-c7b1c4085df1"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "AUTHENTICATION_FAILED": {
+                    "value": {
+                      "error": {
+                        "message": "Authentication failed. Please ensure your token is correct.",
+                        "code": "AUTHENTICATION_FAILED",
+                        "id": "b0a7f5f8-dc2f-4171-b91f-de88ad238e14"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "418": {
+            "description": "I'm Ai",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "I_AM_AI": {
+                    "value": {
+                      "error": {
+                        "message": "You sent a request to Ai-chan, CherryPick's showgirl, instead of the server.",
+                        "code": "I_AM_AI",
+                        "id": "60c46cd1-f23a-46b1-bebe-5d2b73951a84"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "429": {
+            "description": "To many requests",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "RATE_LIMIT_EXCEEDED": {
+                    "value": {
+                      "error": {
+                        "message": "Rate limit exceeded. Please try again later.",
+                        "code": "RATE_LIMIT_EXCEEDED",
+                        "id": "d5826d14-3982-4d2e-8011-b9e9f02499ef"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Internal server error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "INTERNAL_ERROR": {
+                    "value": {
+                      "error": {
+                        "message": "Internal error occurred. Please contact us if the error persists.",
+                        "code": "INTERNAL_ERROR",
+                        "id": "5d37dbcb-891e-41ca-a3d6-e690c97775ac"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    "/notes/schedule/list": {
+      "post": {
+        "operationId": "notes___schedule___list",
+        "summary": "notes/schedule/list",
+        "description": "No description provided.\n\n**Credential required**: *Yes* / **Permission**: *read:notes-schedule*",
+        "externalDocs": {
+          "description": "Source code",
+          "url": "https://github.com/kokonect-link/cherrypick/blob/develop/packages/backend/src/server/api/endpoints/notes/schedule/list.ts"
+        },
+        "tags": [
+          "notes"
+        ],
+        "security": [
+          {
+            "bearerAuth": []
+          }
+        ],
+        "requestBody": {
+          "required": true,
+          "content": {
+            "application/json": {
+              "schema": {
+                "type": "object",
+                "properties": {
+                  "sinceId": {
+                    "type": "string",
+                    "format": "misskey:id"
+                  },
+                  "untilId": {
+                    "type": "string",
+                    "format": "misskey:id"
+                  },
+                  "limit": {
+                    "type": "integer",
+                    "minimum": 1,
+                    "maximum": 100,
+                    "default": 10
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK (with results)",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "array",
+                  "items": {
+                    "type": "object",
+                    "properties": {
+                      "id": {
+                        "type": "string",
+                        "format": "misskey:id"
+                      },
+                      "note": {
+                        "type": "object",
+                        "properties": {
+                          "createdAt": {
+                            "type": "string"
+                          },
+                          "text": {
+                            "type": "string"
+                          },
+                          "cw": {
+                            "type": [
+                              "string",
+                              "null"
+                            ]
+                          },
+                          "fileIds": {
+                            "type": "array",
+                            "items": {
+                              "type": "string",
+                              "format": "misskey:id"
+                            }
+                          },
+                          "visibility": {
+                            "type": "string",
+                            "enum": [
+                              "public",
+                              "home",
+                              "followers",
+                              "specified"
+                            ]
+                          },
+                          "visibleUsers": {
+                            "type": "array",
+                            "items": {
+                              "type": "object",
+                              "$ref": "#/components/schemas/UserLite"
+                            }
+                          },
+                          "user": {
+                            "type": "object",
+                            "$ref": "#/components/schemas/User"
+                          },
+                          "reactionAcceptance": {
+                            "type": [
+                              "string",
+                              "null"
+                            ],
+                            "enum": [
+                              null,
+                              "likeOnly",
+                              "likeOnlyForRemote",
+                              "nonSensitiveOnly",
+                              "nonSensitiveOnlyForLocalLikeOnlyForRemote"
+                            ],
+                            "default": null
+                          },
+                          "isSchedule": {
+                            "type": "boolean"
+                          }
+                        },
+                        "required": [
+                          "createdAt",
+                          "fileIds",
+                          "visibility",
+                          "visibleUsers",
+                          "user",
+                          "reactionAcceptance",
+                          "isSchedule"
+                        ]
+                      },
+                      "userId": {
+                        "type": "string"
+                      },
+                      "scheduledAt": {
+                        "type": "string"
+                      }
+                    },
+                    "required": [
+                      "id",
+                      "note",
+                      "userId",
+                      "scheduledAt"
+                    ]
+                  }
+                }
+              }
+            }
+          },
+          "400": {
+            "description": "Client error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "INVALID_PARAM": {
+                    "value": {
+                      "error": {
+                        "message": "Invalid param.",
+                        "code": "INVALID_PARAM",
+                        "id": "3d81ceae-475f-4600-b2a8-2bc116157532"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "401": {
+            "description": "Authentication error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "CREDENTIAL_REQUIRED": {
+                    "value": {
+                      "error": {
+                        "message": "Credential required.",
+                        "code": "CREDENTIAL_REQUIRED",
+                        "id": "1384574d-a912-4b81-8601-c7b1c4085df1"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "403": {
+            "description": "Forbidden error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "AUTHENTICATION_FAILED": {
+                    "value": {
+                      "error": {
+                        "message": "Authentication failed. Please ensure your token is correct.",
+                        "code": "AUTHENTICATION_FAILED",
+                        "id": "b0a7f5f8-dc2f-4171-b91f-de88ad238e14"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "418": {
+            "description": "I'm Ai",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "I_AM_AI": {
+                    "value": {
+                      "error": {
+                        "message": "You sent a request to Ai-chan, CherryPick's showgirl, instead of the server.",
+                        "code": "I_AM_AI",
+                        "id": "60c46cd1-f23a-46b1-bebe-5d2b73951a84"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "429": {
+            "description": "To many requests",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "RATE_LIMIT_EXCEEDED": {
+                    "value": {
+                      "error": {
+                        "message": "Rate limit exceeded. Please try again later.",
+                        "code": "RATE_LIMIT_EXCEEDED",
+                        "id": "d5826d14-3982-4d2e-8011-b9e9f02499ef"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          },
+          "500": {
+            "description": "Internal server error",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/Error"
+                },
+                "examples": {
+                  "INTERNAL_ERROR": {
+                    "value": {
+                      "error": {
+                        "message": "Internal error occurred. Please contact us if the error persists.",
+                        "code": "INTERNAL_ERROR",
+                        "id": "5d37dbcb-891e-41ca-a3d6-e690c97775ac"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    },
     "/notes/search-by-tag": {
       "post": {
         "operationId": "notes___search-by-tag",
@@ -87609,6 +88576,9 @@
           },
           "canEditNote": {
             "type": "boolean"
+          },
+          "scheduleNoteMax": {
+            "type": "integer"
           }
         },
         "required": [
@@ -87644,7 +88614,8 @@
           "canImportFollowing",
           "canImportMuting",
           "canImportUserLists",
-          "canEditNote"
+          "canEditNote",
+          "scheduleNoteMax"
         ]
       },
       "ReversiGameLite": {
@@ -88109,6 +89080,12 @@
               "null"
             ]
           },
+          "youBlockedImageUrl": {
+            "type": [
+              "string",
+              "null"
+            ]
+          },
           "iconUrl": {
             "type": [
               "string",
@@ -88272,6 +89249,7 @@
           "serverErrorImageUrl",
           "infoImageUrl",
           "notFoundImageUrl",
+          "youBlockedImageUrl",
           "iconUrl",
           "maxNoteTextLength",
           "ads",

Get diff files from Workflow Page

Copy link

codecov bot commented Oct 29, 2024

Codecov Report

Attention: Patch coverage is 53.90909% with 507 lines in your changes missing coverage. Please review.

Project coverage is 59.20%. Comparing base (6d0de6a) to head (91ad618).

Files with missing lines Patch % Lines
.../src/server/api/endpoints/notes/schedule/create.ts 52.92% 185 Missing ⚠️
...eue/processors/ScheduleNotePostProcessorService.ts 17.00% 83 Missing ⚠️
...nd/src/server/api/endpoints/notes/schedule/list.ts 60.93% 50 Missing ⚠️
packages/backend/src/core/DriveService.ts 13.63% 38 Missing ⚠️
...kend/src/server/api/endpoints/admin/update-meta.ts 31.11% 31 Missing ⚠️
...end/src/core/entities/NotificationEntityService.ts 0.00% 22 Missing ⚠️
...rc/server/api/endpoints/i/notifications-grouped.ts 0.00% 18 Missing ⚠️
.../src/server/api/endpoints/notes/schedule/delete.ts 73.13% 18 Missing ⚠️
...ges/backend/src/server/api/endpoints/admin/meta.ts 67.44% 14 Missing ⚠️
...ackages/backend/src/queue/QueueProcessorService.ts 7.14% 13 Missing ⚠️
... and 10 more
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #522      +/-   ##
==========================================
- Coverage   59.25%   59.20%   -0.06%     
==========================================
  Files         880      885       +5     
  Lines       99516   100475     +959     
  Branches     2424     1346    -1078     
==========================================
+ Hits        58971    59487     +516     
- Misses      40485    40968     +483     
+ Partials       60       20      -40     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

…pick#510)

  - 이모지를 등록한 사용자가 계정을 삭제하면 이모지도 같이 삭제되기 때문에 변경되었습니다.
  - 사용자 페이지와 사용자 팝업에 `새 노트 알림 켜기` 버튼이 추가됨
  - 사용자 페이지에 `사용자 노트 검색` 버튼이 추가됨
  - 차단되면 다음 기능들이 화면 상에서 사라지고 사용이 제한됩니다.
    - 팔로우 버튼
    - 사용자 페이지에서 기본 정보 외 다른 모든 정보는 열람할 수 없음
    - 사용자 페이지에서 요약 탭 외에 모든 탭이 사용할 수 없게됨
@noridev noridev marked this pull request as ready for review November 5, 2024 04:27
@noridev noridev merged commit d3f4d31 into master Nov 5, 2024
49 of 61 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants