Merge remote-branch 'misskey/develop'

This commit is contained in:
NoriDev 2023-12-13 17:01:31 +09:00
commit 06ab376a46
33 changed files with 221 additions and 186 deletions

View file

@ -151,7 +151,7 @@ id: 'aidx'
# Job rate limiter
# deliverJobPerSec: 128
# inboxJobPerSec: 16
# inboxJobPerSec: 32
# Job attempts
# deliverJobMaxAttempts: 12

View file

@ -166,7 +166,7 @@ id: 'aidx'
# Job rate limiter
#deliverJobPerSec: 128
#inboxJobPerSec: 16
#inboxJobPerSec: 32
#relashionshipJobPerSec: 64
# Job attempts

View file

@ -147,7 +147,7 @@ id: 'aidx'
# Job rate limiter
# deliverJobPerSec: 128
# inboxJobPerSec: 16
# inboxJobPerSec: 32
# Job attempts
# deliverJobMaxAttempts: 12

View file

@ -35,6 +35,7 @@
- Enhance: ノートプレビューに「内容を隠す」が反映されるように
- Enhance: データセーバーの適用範囲を個別で設定できるように
- 従来のデータセーバーの設定はリセットされます
- Enhance: タイムライン上のタブからリスト、アンテナ、チャンネルの管理ページにジャンプできるように
- Feat: センシティブと判断されたウェブサイトのサムネイルをぼかすように
- ウェブサイトをセンシティブと判断する仕組みが動いていないため、summalyProxyを使用しないと機能しません。
- fix: 「設定のバックアップ」で一部の項目がバックアップに含まれていなかった問題を修正
@ -47,6 +48,7 @@
- Fix: 通知のグルーピング設定を変更してもリロードされるまで表示が変わらない問題を修正 #12470
- Fix: 長い名前のチャンネルにおける投稿フォームの表示が崩れる問題を修正
- Fix: セキュリティ向上のためAiScriptの`Mk:apiExternal`を無効化
- Fix: ノート中の絵文字をタップして「リアクションする」からリアクションした際にリアクションサウンドが鳴らない不具合を修正
### Server
- Enhance: MFM `$[ruby ]` が他ソフトウェアと連合されるように

View file

@ -167,7 +167,7 @@ id: "aidx"
# Job rate limiter
# deliverJobPerSec: 128
# inboxJobPerSec: 16
# inboxJobPerSec: 32
# Job attempts
# deliverJobMaxAttempts: 12

View file

@ -229,7 +229,7 @@ export class QueueProcessorService implements OnApplicationShutdown {
autorun: false,
concurrency: this.config.inboxJobConcurrency ?? 16,
limiter: {
max: this.config.inboxJobPerSec ?? 16,
max: this.config.inboxJobPerSec ?? 32,
duration: 1000,
},
settings: {

View file

@ -62,7 +62,7 @@ export function genOpenapiSpec(config: Config) {
let desc = (endpoint.meta.description ? endpoint.meta.description : 'No description provided.') + '\n\n';
if (endpoint.meta.secure) {
desc += '**Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.\n';
desc += '**Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.\n';
}
desc += `**Credential required**: *${endpoint.meta.requireCredential ? 'Yes' : 'No'}*`;

View file

@ -1,7 +1,7 @@
/*
* version: 4.6.0-beta.2
* basedMisskeyVersion: 2023.12.0-beta.3
* generatedAt: 2023-12-13T05:07:59.354Z
* generatedAt: 2023-12-13T07:55:59.676Z
*/
import type { SwitchCaseResponseType } from '../api.js';
@ -386,7 +386,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'admin/emoji/import-zip', P extends Endpoints[E]['req']>(
@ -1047,7 +1047,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'auth/accept', P extends Endpoints[E]['req']>(
@ -1752,7 +1752,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'export-custom-emojis', P extends Endpoints[E]['req']>(
@ -2127,7 +2127,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/2fa/done', P extends Endpoints[E]['req']>(
@ -2139,7 +2139,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/2fa/key-done', P extends Endpoints[E]['req']>(
@ -2151,7 +2151,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/2fa/password-less', P extends Endpoints[E]['req']>(
@ -2163,7 +2163,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/2fa/register-key', P extends Endpoints[E]['req']>(
@ -2175,7 +2175,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/2fa/register', P extends Endpoints[E]['req']>(
@ -2187,7 +2187,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/2fa/update-key', P extends Endpoints[E]['req']>(
@ -2199,7 +2199,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/2fa/remove-key', P extends Endpoints[E]['req']>(
@ -2211,7 +2211,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/2fa/unregister', P extends Endpoints[E]['req']>(
@ -2223,7 +2223,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/apps', P extends Endpoints[E]['req']>(
@ -2235,7 +2235,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/authorized-apps', P extends Endpoints[E]['req']>(
@ -2258,7 +2258,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/change-password', P extends Endpoints[E]['req']>(
@ -2270,7 +2270,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/delete-account', P extends Endpoints[E]['req']>(
@ -2282,7 +2282,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/export-blocking', P extends Endpoints[E]['req']>(
@ -2294,7 +2294,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/export-following', P extends Endpoints[E]['req']>(
@ -2306,7 +2306,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/export-mute', P extends Endpoints[E]['req']>(
@ -2318,7 +2318,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/export-notes', P extends Endpoints[E]['req']>(
@ -2330,7 +2330,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/export-favorites', P extends Endpoints[E]['req']>(
@ -2342,7 +2342,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/export-user-lists', P extends Endpoints[E]['req']>(
@ -2354,7 +2354,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/export-antennas', P extends Endpoints[E]['req']>(
@ -2399,7 +2399,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/import-blocking', P extends Endpoints[E]['req']>(
@ -2411,7 +2411,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/import-following', P extends Endpoints[E]['req']>(
@ -2423,7 +2423,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/import-muting', P extends Endpoints[E]['req']>(
@ -2435,7 +2435,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/import-user-lists', P extends Endpoints[E]['req']>(
@ -2447,7 +2447,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/import-antennas', P extends Endpoints[E]['req']>(
@ -2547,7 +2547,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/regenerate-token', P extends Endpoints[E]['req']>(
@ -2625,7 +2625,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/registry/scopes-with-domain', P extends Endpoints[E]['req']>(
@ -2648,7 +2648,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/revoke-token', P extends Endpoints[E]['req']>(
@ -2660,7 +2660,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/signin-history', P extends Endpoints[E]['req']>(
@ -2683,7 +2683,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/update-email', P extends Endpoints[E]['req']>(
@ -2717,7 +2717,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'i/move', P extends Endpoints[E]['req']>(
@ -2916,7 +2916,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'miauth/gen-token', P extends Endpoints[E]['req']>(
@ -3390,7 +3390,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'page-push', P extends Endpoints[E]['req']>(
@ -3512,7 +3512,7 @@ declare module '../api.js' {
/**
* No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
request<E extends 'flash/gen-token', P extends Endpoints[E]['req']>(

View file

@ -1,7 +1,7 @@
/*
* version: 4.6.0-beta.2
* basedMisskeyVersion: 2023.12.0-beta.3
* generatedAt: 2023-12-13T05:07:59.352Z
* generatedAt: 2023-12-13T07:55:59.674Z
*/
import type {

View file

@ -1,7 +1,7 @@
/*
* version: 4.6.0-beta.2
* basedMisskeyVersion: 2023.12.0-beta.3
* generatedAt: 2023-12-13T05:07:59.351Z
* generatedAt: 2023-12-13T07:55:59.673Z
*/
import { operations } from './types.js';

View file

@ -1,7 +1,7 @@
/*
* version: 4.6.0-beta.2
* basedMisskeyVersion: 2023.12.0-beta.3
* generatedAt: 2023-12-13T05:07:59.350Z
* generatedAt: 2023-12-13T07:55:59.672Z
*/
import { components } from './types.js';

View file

@ -4,7 +4,7 @@
/*
* version: 4.6.0-beta.2
* basedMisskeyVersion: 2023.12.0-beta.3
* generatedAt: 2023-12-13T05:07:59.277Z
* generatedAt: 2023-12-13T07:55:59.592Z
*/
/**
@ -329,7 +329,7 @@ export type paths = {
* admin/emoji/import-zip
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['admin/emoji/import-zip'];
@ -870,7 +870,7 @@ export type paths = {
* auth/accept
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['auth/accept'];
@ -1531,7 +1531,7 @@ export type paths = {
* export-custom-emojis
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['export-custom-emojis'];
@ -1866,7 +1866,7 @@ export type paths = {
* i/2fa/done
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/2fa/done'];
@ -1876,7 +1876,7 @@ export type paths = {
* i/2fa/key-done
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/2fa/key-done'];
@ -1886,7 +1886,7 @@ export type paths = {
* i/2fa/password-less
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/2fa/password-less'];
@ -1896,7 +1896,7 @@ export type paths = {
* i/2fa/register-key
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/2fa/register-key'];
@ -1906,7 +1906,7 @@ export type paths = {
* i/2fa/register
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/2fa/register'];
@ -1916,7 +1916,7 @@ export type paths = {
* i/2fa/update-key
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/2fa/update-key'];
@ -1926,7 +1926,7 @@ export type paths = {
* i/2fa/remove-key
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/2fa/remove-key'];
@ -1936,7 +1936,7 @@ export type paths = {
* i/2fa/unregister
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/2fa/unregister'];
@ -1946,7 +1946,7 @@ export type paths = {
* i/apps
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/apps'];
@ -1956,7 +1956,7 @@ export type paths = {
* i/authorized-apps
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/authorized-apps'];
@ -1975,7 +1975,7 @@ export type paths = {
* i/change-password
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/change-password'];
@ -1985,7 +1985,7 @@ export type paths = {
* i/delete-account
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/delete-account'];
@ -1995,7 +1995,7 @@ export type paths = {
* i/export-blocking
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/export-blocking'];
@ -2005,7 +2005,7 @@ export type paths = {
* i/export-following
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/export-following'];
@ -2015,7 +2015,7 @@ export type paths = {
* i/export-mute
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/export-mute'];
@ -2025,7 +2025,7 @@ export type paths = {
* i/export-notes
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/export-notes'];
@ -2035,7 +2035,7 @@ export type paths = {
* i/export-favorites
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/export-favorites'];
@ -2045,7 +2045,7 @@ export type paths = {
* i/export-user-lists
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/export-user-lists'];
@ -2055,7 +2055,7 @@ export type paths = {
* i/export-antennas
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/export-antennas'];
@ -2092,7 +2092,7 @@ export type paths = {
* i/import-blocking
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/import-blocking'];
@ -2102,7 +2102,7 @@ export type paths = {
* i/import-following
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/import-following'];
@ -2112,7 +2112,7 @@ export type paths = {
* i/import-muting
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/import-muting'];
@ -2122,7 +2122,7 @@ export type paths = {
* i/import-user-lists
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/import-user-lists'];
@ -2132,7 +2132,7 @@ export type paths = {
* i/import-antennas
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/import-antennas'];
@ -2214,7 +2214,7 @@ export type paths = {
* i/regenerate-token
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/regenerate-token'];
@ -2278,7 +2278,7 @@ export type paths = {
* i/registry/scopes-with-domain
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/registry/scopes-with-domain'];
@ -2297,7 +2297,7 @@ export type paths = {
* i/revoke-token
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/revoke-token'];
@ -2307,7 +2307,7 @@ export type paths = {
* i/signin-history
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/signin-history'];
@ -2326,7 +2326,7 @@ export type paths = {
* i/update-email
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/update-email'];
@ -2354,7 +2354,7 @@ export type paths = {
* i/move
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['i/move'];
@ -2531,7 +2531,7 @@ export type paths = {
* miauth/gen-token
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['miauth/gen-token'];
@ -2933,7 +2933,7 @@ export type paths = {
* page-push
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['page-push'];
@ -3033,7 +3033,7 @@ export type paths = {
* flash/gen-token
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
post: operations['flash/gen-token'];
@ -6839,7 +6839,7 @@ export type operations = {
* admin/emoji/import-zip
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'admin/emoji/import-zip': {
@ -10298,7 +10298,7 @@ export type operations = {
* auth/accept
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'auth/accept': {
@ -14046,7 +14046,7 @@ export type operations = {
* export-custom-emojis
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'export-custom-emojis': {
@ -15959,7 +15959,7 @@ export type operations = {
* i/2fa/done
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/2fa/done': {
@ -16011,7 +16011,7 @@ export type operations = {
* i/2fa/key-done
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/2fa/key-done': {
@ -16066,7 +16066,7 @@ export type operations = {
* i/2fa/password-less
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/2fa/password-less': {
@ -16118,7 +16118,7 @@ export type operations = {
* i/2fa/register-key
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/2fa/register-key': {
@ -16171,7 +16171,7 @@ export type operations = {
* i/2fa/register
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/2fa/register': {
@ -16224,7 +16224,7 @@ export type operations = {
* i/2fa/update-key
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/2fa/update-key': {
@ -16277,7 +16277,7 @@ export type operations = {
* i/2fa/remove-key
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/2fa/remove-key': {
@ -16331,7 +16331,7 @@ export type operations = {
* i/2fa/unregister
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/2fa/unregister': {
@ -16384,7 +16384,7 @@ export type operations = {
* i/apps
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/apps': {
@ -16437,7 +16437,7 @@ export type operations = {
* i/authorized-apps
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/authorized-apps': {
@ -16549,7 +16549,7 @@ export type operations = {
* i/change-password
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/change-password': {
@ -16603,7 +16603,7 @@ export type operations = {
* i/delete-account
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/delete-account': {
@ -16656,7 +16656,7 @@ export type operations = {
* i/export-blocking
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/export-blocking': {
@ -16707,7 +16707,7 @@ export type operations = {
* i/export-following
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/export-following': {
@ -16768,7 +16768,7 @@ export type operations = {
* i/export-mute
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/export-mute': {
@ -16819,7 +16819,7 @@ export type operations = {
* i/export-notes
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/export-notes': {
@ -16870,7 +16870,7 @@ export type operations = {
* i/export-favorites
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/export-favorites': {
@ -16921,7 +16921,7 @@ export type operations = {
* i/export-user-lists
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/export-user-lists': {
@ -16972,7 +16972,7 @@ export type operations = {
* i/export-antennas
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/export-antennas': {
@ -17201,7 +17201,7 @@ export type operations = {
* i/import-blocking
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/import-blocking': {
@ -17260,7 +17260,7 @@ export type operations = {
* i/import-following
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/import-following': {
@ -17320,7 +17320,7 @@ export type operations = {
* i/import-muting
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/import-muting': {
@ -17379,7 +17379,7 @@ export type operations = {
* i/import-user-lists
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/import-user-lists': {
@ -17438,7 +17438,7 @@ export type operations = {
* i/import-antennas
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/import-antennas': {
@ -17947,7 +17947,7 @@ export type operations = {
* i/regenerate-token
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/regenerate-token': {
@ -18320,7 +18320,7 @@ export type operations = {
* i/registry/scopes-with-domain
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/registry/scopes-with-domain': {
@ -18420,7 +18420,7 @@ export type operations = {
* i/revoke-token
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/revoke-token': {
@ -18474,7 +18474,7 @@ export type operations = {
* i/signin-history
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/signin-history': {
@ -18587,7 +18587,7 @@ export type operations = {
* i/update-email
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/update-email': {
@ -18815,7 +18815,7 @@ export type operations = {
* i/move
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'i/move': {
@ -19861,7 +19861,7 @@ export type operations = {
* miauth/gen-token
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'miauth/gen-token': {
@ -22495,7 +22495,7 @@ export type operations = {
* page-push
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'page-push': {
@ -23119,7 +23119,7 @@ export type operations = {
* flash/gen-token
* @description No description provided.
*
* **Internal Endpoint**: This endpoint is an API for the misskey mainframe and is not intended for use by third parties.
* **Internal Endpoint**: This endpoint is an API for the cherrypick mainframe and is not intended for use by third parties.
* **Credential required**: *Yes*
*/
'flash/gen-token': {

View file

@ -616,7 +616,7 @@ function getMenu() {
type: 'switch',
text: i18n.ts.keepOriginalUploading,
ref: keepOriginal,
}, null, {
}, { type: 'divider' }, {
text: i18n.ts.addFile,
type: 'label',
}, {
@ -627,7 +627,7 @@ function getMenu() {
text: i18n.ts.fromUrl,
icon: 'ti ti-link',
action: () => { urlUpload(); },
}, null, {
}, { type: 'divider' }, {
text: folder.value ? folder.value.name : i18n.ts.drive,
type: 'label',
}, folder.value ? {

View file

@ -13,7 +13,7 @@ SPDX-License-Identifier: AGPL-3.0-only
@contextmenu.self="e => e.preventDefault()"
>
<template v-for="(item, i) in items2">
<div v-if="item === null" role="separator" :class="$style.divider"></div>
<div v-if="item.type === 'divider'" role="separator" :class="$style.divider"></div>
<span v-else-if="item.type === 'label'" role="menuitem" :class="[$style.label, $style.item]">
<span>{{ item.text }}</span>
</span>

View file

@ -648,7 +648,7 @@ function showRenoteMenu(viaKeyboard = false): void {
pleaseLogin();
os.popupMenu([
getCopyNoteLinkMenu(note.value, i18n.ts.copyLinkRenote),
null,
{ type: 'divider' },
getUnrenote(),
], renoteTime.value, {
viaKeyboard: viaKeyboard,
@ -656,7 +656,7 @@ function showRenoteMenu(viaKeyboard = false): void {
} else {
os.popupMenu([
getCopyNoteLinkMenu(note.value, i18n.ts.copyLinkRenote),
null,
{ type: 'divider' },
getAbuseNoteMenu(note.value, i18n.ts.reportAbuseRenote),
$i.isModerator || $i.isAdmin ? getUnrenote() : undefined,
], renoteTime.value, {

View file

@ -31,7 +31,6 @@ import MkNoteHeader from '@/components/MkNoteHeader.vue';
import MkSubNoteContent from '@/components/MkSubNoteContent.vue';
import MkCwButton from '@/components/MkCwButton.vue';
import MkEvent from '@/components/MkEvent.vue';
import { $i } from '@/account.js';
import { globalEvents } from '@/events.js';
import { mainRouter, useRouter } from '@/router.js';
import { defaultStore } from '@/store.js';

View file

@ -105,7 +105,7 @@ function showMenu(ev) {
action: () => {
os.pageWindow('/about-misskey');
},
}, null, (instance.impressumUrl) ? {
}, { type: 'divider' }, (instance.impressumUrl) ? {
text: i18n.ts.impressum,
icon: 'ti ti-file-invoice',
action: () => {
@ -123,7 +123,7 @@ function showMenu(ev) {
action: () => {
window.open(instance.privacyPolicyUrl, '_blank', 'noopener');
},
} : undefined, (!instance.impressumUrl && !instance.tosUrl && !instance.privacyPolicyUrl) ? undefined : null, {
} : undefined, (!instance.impressumUrl && !instance.tosUrl && !instance.privacyPolicyUrl) ? undefined : { type: 'divider' }, {
text: i18n.ts.help,
icon: 'ti ti-help-circle',
action: () => {

View file

@ -106,8 +106,8 @@ function onClick(ev: MouseEvent) {
text: i18n.ts.doReaction,
icon: 'ti ti-mood-plus',
action: () => {
sound.play('reaction');
react(`:${props.name}:`);
sound.play('reaction');
},
}] : [])], ev.currentTarget ?? ev.target);
}

View file

@ -16,6 +16,7 @@ import { defaultStore } from '@/store.js';
import { getEmojiName } from '@/scripts/emojilist.js';
import * as os from '@/os.js';
import copyToClipboard from '@/scripts/copy-to-clipboard.js';
import * as sound from '@/scripts/sound.js';
import { i18n } from '@/i18n.js';
const props = defineProps<{
@ -56,6 +57,7 @@ function onClick(ev: MouseEvent) {
icon: 'ti ti-plus',
action: () => {
react(props.emoji);
sound.play('reaction');
},
}] : [])], ev.currentTarget ?? ev.target);
}

View file

@ -563,7 +563,7 @@ export async function openEmojiPicker(src?: HTMLElement, opts, initialTextarea:
});
}
export function popupMenu(items: MenuItem[] | Ref<MenuItem[]>, src?: HTMLElement, options?: {
export function popupMenu(items: MenuItem[] | Ref<MenuItem[]>, src?: HTMLElement | EventTarget | null, options?: {
align?: string;
width?: number;
viaKeyboard?: boolean;

View file

@ -60,7 +60,7 @@ function setFilter(ev) {
action: () => {
includeTypes.value = null;
},
}, null, ...typeItems] : typeItems;
}, { type: 'divider' }, ...typeItems] : typeItems;
os.popupMenu(items, ev.currentTarget ?? ev.target);
}

View file

@ -48,7 +48,7 @@ import { unisonReload } from '@/scripts/unison-reload.js';
import { useStream } from '@/stream.js';
import { $i } from '@/account.js';
import { i18n } from '@/i18n.js';
import { version, host } from '@/config.js';
import { version, basedMisskeyVersion, host } from '@/config.js';
import { definePageMetadata } from '@/scripts/page-metadata.js';
import { miLocalStorage } from '@/local-storage.js';
const { t, ts } = i18n;
@ -162,13 +162,14 @@ const coldDeviceStorageSaveKeys: (keyof typeof ColdDeviceStorage.default)[] = [
const scope = ['clientPreferencesProfiles'];
const profileProps = ['name', 'createdAt', 'updatedAt', 'cherrypickVersion', 'settings', 'host'];
const profileProps = ['name', 'createdAt', 'updatedAt', 'cherrypickVersion', 'basedMisskeyVersion', 'settings', 'host'];
type Profile = {
name: string;
createdAt: string;
updatedAt: string | null;
cherrypickVersion: string;
basedMisskeyVersion: string;
host: string;
settings: {
hot: Record<keyof typeof defaultStoreSaveKeys, unknown>;
@ -200,6 +201,7 @@ function validate(profile: any): void {
if (!profile.name) throw new Error('Missing required prop: name');
if (!profile.cherrypickVersion) throw new Error('Missing required prop: cherrypickVersion');
if (!profile.basedMisskeyVersion) throw new Error('Missing required prop: basedMisskeyVersion');
// Check if createdAt and updatedAt is Date
// https://zenn.dev/lollipop_onl/articles/eoz-judge-js-invalid-date
@ -257,6 +259,7 @@ async function saveNew(): Promise<void> {
createdAt: (new Date()).toISOString(),
updatedAt: null,
cherrypickVersion: version,
basedMisskeyVersion: basedMisskeyVersion,
host,
settings: getSettings(),
};
@ -398,6 +401,7 @@ async function save(id: string): Promise<void> {
createdAt,
updatedAt: (new Date()).toISOString(),
cherrypickVersion: version,
basedMisskeyVersion: basedMisskeyVersion,
host,
settings: getSettings(),
};
@ -445,7 +449,7 @@ function menu(ev: MouseEvent, profileId: string) {
icon: 'ti ti-download',
href: URL.createObjectURL(new Blob([JSON.stringify(profiles.value[profileId], null, 2)], { type: 'application/json' })),
download: `${profiles.value[profileId].name}.json`,
}, null, {
}, { type: 'divider' }, {
text: ts.rename,
icon: 'ti ti-forms',
action: () => rename(profileId),
@ -453,7 +457,7 @@ function menu(ev: MouseEvent, profileId: string) {
text: ts._preferencesBackups.save,
icon: 'ti ti-device-floppy',
action: () => save(profileId),
}, null, {
}, { type: 'divider' }, {
text: ts.delete,
icon: 'ti ti-trash',
action: () => deleteProfile(profileId),

View file

@ -87,6 +87,7 @@ import { antennasCache, userListsCache } from '@/cache.js';
import { globalEvents } from '@/events.js';
import { deviceKind } from '@/scripts/device-kind.js';
import { unisonReload } from '@/scripts/unison-reload.js';
import { MenuItem } from '@/types/menu.js';
const showEl = ref(false);
const isFriendly = ref(miLocalStorage.getItem('ui') === 'friendly');
@ -155,22 +156,40 @@ function top(): void {
async function chooseList(ev: MouseEvent): Promise<void> {
const lists = await userListsCache.fetch();
const items = lists.map(list => ({
type: 'link' as const,
text: list.name,
to: `/timeline/list/${list.id}`,
}));
const items: MenuItem[] = [
...lists.map(list => ({
type: 'link' as const,
text: list.name,
to: `/timeline/list/${list.id}`,
})),
(lists.length === 0 ? undefined : { type: 'divider' }),
{
type: 'link' as const,
icon: 'ti ti-plus',
text: i18n.ts.createNew,
to: '/my/lists',
},
];
os.popupMenu(items, ev.currentTarget ?? ev.target);
}
async function chooseAntenna(ev: MouseEvent): Promise<void> {
const antennas = await antennasCache.fetch();
const items = antennas.map(antenna => ({
type: 'link' as const,
text: antenna.name,
indicate: antenna.hasUnreadNote,
to: `/timeline/antenna/${antenna.id}`,
}));
const items: MenuItem[] = [
...antennas.map(antenna => ({
type: 'link' as const,
text: antenna.name,
indicate: antenna.hasUnreadNote,
to: `/timeline/antenna/${antenna.id}`,
})),
(antennas.length === 0 ? undefined : { type: 'divider' }),
{
type: 'link' as const,
icon: 'ti ti-plus',
text: i18n.ts.createNew,
to: '/my/antennas',
},
];
os.popupMenu(items, ev.currentTarget ?? ev.target);
}
@ -178,12 +197,21 @@ async function chooseChannel(ev: MouseEvent): Promise<void> {
const channels = await os.api('channels/my-favorites', {
limit: 100,
});
const items = channels.map(channel => ({
type: 'link' as const,
text: channel.name,
indicate: channel.hasUnreadNote,
to: `/channels/${channel.id}`,
}));
const items = [
...channels.map(channel => ({
type: 'link' as const,
text: channel.name,
indicate: channel.hasUnreadNote,
to: `/channels/${channel.id}`,
})),
(channels.length === 0 ? undefined : null),
{
type: 'link' as const,
icon: 'ti ti-plus',
text: i18n.ts.createNew,
to: '/channels',
},
];
os.popupMenu(items, ev.currentTarget ?? ev.target);
}

View file

@ -247,7 +247,7 @@ const age = computed(() => {
return calcAge(props.user.birthday);
});
function menu(ev) {
function menu(ev: MouseEvent) {
const { menu, cleanup } = getUserMenu(user.value, router);
os.popupMenu(menu, ev.currentTarget ?? ev.target).finally(cleanup);
}

View file

@ -82,7 +82,7 @@ export function getDriveFileMenu(file: Misskey.entities.DriveFile, folder?: Miss
to: `/my/drive/file/${file.id}`,
text: i18n.ts._fileViewer.title,
icon: 'ti ti-info-circle',
}, null, {
}, { type: 'divider' }, {
text: i18n.ts.rename,
icon: 'ti ti-forms',
action: () => rename(file),
@ -101,7 +101,7 @@ export function getDriveFileMenu(file: Misskey.entities.DriveFile, folder?: Miss
aspectRatio: NaN,
uploadFolder: folder ? folder.id : folder,
}),
}] : [], null, {
}] : [], { type: 'divider' }, {
text: i18n.ts.createNoteFromTheFile,
icon: 'ti ti-pencil',
action: () => os.post({
@ -118,7 +118,7 @@ export function getDriveFileMenu(file: Misskey.entities.DriveFile, folder?: Miss
text: i18n.ts.download,
icon: 'ti ti-download',
download: file.name,
}, null, {
}, { type: 'divider' }, {
text: i18n.ts.delete,
icon: 'ti ti-trash',
danger: true,
@ -126,7 +126,7 @@ export function getDriveFileMenu(file: Misskey.entities.DriveFile, folder?: Miss
}];
if (defaultStore.state.devMode) {
menu = menu.concat([null, {
menu = menu.concat([{ type: 'divider' }, {
icon: 'ti ti-id',
text: i18n.ts.copyFileId,
action: () => {

View file

@ -61,7 +61,7 @@ export async function getNoteClipMenu(props: {
},
);
},
})), clips.length > 0 ? null : undefined, {
})), clips.length > 0 ? { type: 'divider' } : undefined, {
icon: 'ti ti-plus',
text: i18n.ts.createNew,
action: async () => {
@ -339,7 +339,7 @@ export function getNoteMenu(props: {
text: i18n.ts.unclip,
danger: true,
action: unclip,
}, null] : []
}, { type: 'divider' }] : []
), ...(isSupportShare() ? [{
icon: 'ti ti-share',
text: i18n.ts.share,
@ -356,7 +356,7 @@ export function getNoteMenu(props: {
text: i18n.ts.translate,
action: translate,
} : undefined,
null,
{ type: 'divider' },
statePromise.then(state => state.isFavorited ? {
icon: 'ti ti-star-off',
text: i18n.ts.unfavorite,
@ -413,7 +413,7 @@ export function getNoteMenu(props: {
window.open(appearNote.url ?? appearNote.uri, '_blank', 'noopener');
},
} : undefined
, null
, { type: 'divider' }
, {
icon: 'ti ti-code',
text: i18n.ts.viewTextSource,
@ -428,7 +428,7 @@ export function getNoteMenu(props: {
text: i18n.ts.noNyaization,
action: noNyaizeText,
}
, (appearNote.userId === $i.id) ? null : undefined
, (appearNote.userId === $i.id) ? { type: 'divider' } : undefined
, (appearNote.userId === $i.id) ? {
icon: 'ti ti-edit-circle',
text: i18n.ts.copyAndEdit,
@ -448,7 +448,7 @@ export function getNoteMenu(props: {
},
/*
...($i.isModerator || $i.isAdmin ? [
null,
{ type: 'divider' },
{
icon: 'ti ti-speakerphone',
text: i18n.ts.promote,
@ -457,14 +457,14 @@ export function getNoteMenu(props: {
: []
),*/
...(appearNote.userId !== $i.id || (isRenote && props.note.userId !== $i.id) ? [
null,
{ type: 'divider' },
appearNote.userId !== $i.id ? getAbuseNoteMenu(appearNote, i18n.ts.reportAbuse) : undefined,
isRenote && props.note.userId !== $i.id ? getAbuseNoteMenu(props.note, i18n.ts.reportAbuseRenote) : undefined,
]
: []
),
...(appearNote.userId === $i.id || $i.isModerator || $i.isAdmin ? [
null,
{ type: 'divider' },
appearNote.userId === $i.id && $i.policies.canEditNote ? {
icon: 'ti ti-edit',
text: i18n.ts.edit,
@ -505,7 +505,7 @@ export function getNoteMenu(props: {
}
if (noteActions.length > 0) {
menu = menu.concat([null, ...noteActions.map(action => ({
menu = menu.concat([{ type: 'divider' }, ...noteActions.map(action => ({
icon: 'ti ti-plug',
text: action.title,
action: () => {
@ -515,7 +515,7 @@ export function getNoteMenu(props: {
}
if (defaultStore.state.devMode) {
menu = menu.concat([null, {
menu = menu.concat([{ type: 'divider' }, {
icon: 'ti ti-id',
text: i18n.ts.copyNoteId,
action: () => {
@ -644,10 +644,9 @@ export function getRenoteMenu(props: {
}]);
}
// nullを挟むことで区切り線を出せる
const renoteItems = [
...normalRenoteItems,
...(channelRenoteItems.length > 0 && normalRenoteItems.length > 0) ? [null] : [],
...(channelRenoteItems.length > 0 && normalRenoteItems.length > 0) ? [{ type: 'divider' }] : [],
...channelRenoteItems,
];

View file

@ -220,7 +220,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
icon: 'ti ti-users',
text: i18n.ts.inviteToGroup,
action: inviteGroup,
} : undefined, null, ...(defaultStore.state.nicknameEnabled ? [{
} : undefined, { type: 'divider' }, ...(defaultStore.state.nicknameEnabled ? [{
icon: 'ti ti-edit',
text: i18n.ts.editNickName,
action: () => {
@ -348,7 +348,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
}]);
//}
menu = menu.concat([null, {
menu = menu.concat([{ type: 'divider' }, {
icon: user.isMuted ? 'ti ti-eye' : 'ti ti-eye-off',
text: user.isMuted ? i18n.ts.unmute : i18n.ts.mute,
action: toggleMute,
@ -370,7 +370,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
}]);
}
menu = menu.concat([null, {
menu = menu.concat([{ type: 'divider' }, {
icon: 'ti ti-exclamation-circle',
text: i18n.ts.reportAbuse,
action: reportAbuse,
@ -378,7 +378,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
}
if (user.host !== null) {
menu = menu.concat([null, {
menu = menu.concat([{ type: 'divider' }, {
icon: 'ti ti-refresh',
text: i18n.ts.updateRemoteUser,
action: userInfoUpdate,
@ -386,7 +386,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
}
if (defaultStore.state.devMode) {
menu = menu.concat([null, {
menu = menu.concat([{ type: 'divider' }, {
icon: 'ti ti-id',
text: i18n.ts.copyUserId,
action: () => {
@ -396,7 +396,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
}
if ($i && meId === user.id) {
menu = menu.concat([null, {
menu = menu.concat([{ type: 'divider' }, {
icon: 'ti ti-pencil',
text: i18n.ts.editProfile,
action: () => {
@ -406,7 +406,7 @@ export function getUserMenu(user: Misskey.entities.UserDetailed, router: Router
}
if (userActions.length > 0) {
menu = menu.concat([null, ...userActions.map(action => ({
menu = menu.concat([{ type: 'divider' }, ...userActions.map(action => ({
icon: 'ti ti-plug',
text: action.title,
action: () => {

View file

@ -8,7 +8,7 @@ import { Ref } from 'vue';
export type MenuAction = (ev: MouseEvent) => void;
export type MenuDivider = null;
export type MenuDivider = { type: 'divider' };
export type MenuNull = undefined;
export type MenuLabel = { type: 'label', text: string };
export type MenuLink = { type: 'link', to: string, text: string, icon?: string, indicate?: boolean, avatar?: Misskey.entities.User };

View file

@ -74,7 +74,7 @@ export function openInstanceMenu(ev: MouseEvent) {
text: i18n.ts.charts,
icon: 'ti ti-chart-line',
to: '/about#charts',
}, null, {
}, { type: 'divider' }, {
type: 'link',
text: i18n.ts.ads,
icon: 'ti ti-ad',
@ -89,7 +89,7 @@ export function openInstanceMenu(ev: MouseEvent) {
text: i18n.ts.tools,
icon: 'ti ti-tool',
children: toolsMenuItems(),
}, null, (instance.impressumUrl) ? {
}, { type: 'divider' }, (instance.impressumUrl) ? {
text: i18n.ts.impressum,
icon: 'ti ti-file-invoice',
action: () => {
@ -107,7 +107,7 @@ export function openInstanceMenu(ev: MouseEvent) {
action: () => {
window.open(instance.privacyPolicyUrl, '_blank', 'noopener');
},
} : undefined, (!instance.impressumUrl && !instance.tosUrl && !instance.privacyPolicyUrl) ? undefined : null, {
} : undefined, (!instance.impressumUrl && !instance.tosUrl && !instance.privacyPolicyUrl) ? undefined : { type: 'divider' }, {
type: 'parent',
text: i18n.ts.help,
icon: 'ti ti-help-circle',

View file

@ -237,7 +237,7 @@ function changeProfile(ev: MouseEvent) {
deckStore.set('profile', k);
unisonReload();
},
}))), null, {
}))), { type: 'divider' }, {
text: i18n.ts._deck.newProfile,
icon: 'ti ti-plus',
action: async () => {

View file

@ -104,7 +104,7 @@ function toggleActive() {
}
function getMenu() {
let items = [{
let items: MenuItem[] = [{
icon: 'ti ti-settings',
text: i18n.ts._deck.configureColumn,
action: async () => {
@ -170,7 +170,7 @@ function getMenu() {
action: () => {
popRightColumn(props.column.id);
},
} : undefined, null, {
} : undefined, { type: 'divider' }, {
icon: 'ti ti-trash',
text: i18n.ts.remove,
danger: true,
@ -180,7 +180,7 @@ function getMenu() {
}];
if (props.menu) {
items.unshift(null);
items.unshift({ type: 'divider' });
items = props.menu.concat(items);
}

View file

@ -72,5 +72,6 @@ defineExpose<WidgetComponentExpose>({
height: 350px;
border: none;
pointer-events: none;
color-scheme: light;
}
</style>

View file

@ -131,7 +131,7 @@ const choose = async (ev) => {
text: i18n.ts._timelines.global,
icon: 'ti ti-world',
action: () => { setSrc('global'); },
}, antennaItems.length > 0 ? null : undefined, ...antennaItems, listItems.length > 0 ? null : undefined, ...listItems], ev.currentTarget ?? ev.target).then(() => {
}, antennaItems.length > 0 ? { type: 'divider' } : undefined, ...antennaItems, listItems.length > 0 ? { type: 'divider' } : undefined, ...listItems], ev.currentTarget ?? ev.target).then(() => {
menuOpened.value = false;
});
};