Merge branch 'develop' into feat/hide-sensitive-from-antenna
This commit is contained in:
commit
1a151560b4
|
@ -9,6 +9,10 @@ on:
|
||||||
paths:
|
paths:
|
||||||
- packages/misskey-js/**
|
- packages/misskey-js/**
|
||||||
- .github/workflows/api-misskey-js.yml
|
- .github/workflows/api-misskey-js.yml
|
||||||
|
|
||||||
|
env:
|
||||||
|
COREPACK_DEFAULT_TO_LATEST: 0
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
report:
|
report:
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,10 @@ on:
|
||||||
paths:
|
paths:
|
||||||
- packages/backend/**
|
- packages/backend/**
|
||||||
- .github/workflows/get-api-diff.yml
|
- .github/workflows/get-api-diff.yml
|
||||||
|
|
||||||
|
env:
|
||||||
|
COREPACK_DEFAULT_TO_LATEST: 0
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
get-from-misskey:
|
get-from-misskey:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
|
@ -28,6 +28,10 @@ on:
|
||||||
- packages/misskey-reversi/**
|
- packages/misskey-reversi/**
|
||||||
- packages/shared/eslint.config.js
|
- packages/shared/eslint.config.js
|
||||||
- .github/workflows/lint.yml
|
- .github/workflows/lint.yml
|
||||||
|
|
||||||
|
env:
|
||||||
|
COREPACK_DEFAULT_TO_LATEST: 0
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
pnpm_install:
|
pnpm_install:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
|
@ -9,6 +9,10 @@ on:
|
||||||
paths:
|
paths:
|
||||||
- locales/**
|
- locales/**
|
||||||
- .github/workflows/locale.yml
|
- .github/workflows/locale.yml
|
||||||
|
|
||||||
|
env:
|
||||||
|
COREPACK_DEFAULT_TO_LATEST: 0
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
locale_verify:
|
locale_verify:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
|
@ -6,6 +6,9 @@ on:
|
||||||
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
COREPACK_DEFAULT_TO_LATEST: 0
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
publish-misskey-js:
|
publish-misskey-js:
|
||||||
name: Publish misskey-js
|
name: Publish misskey-js
|
||||||
|
|
|
@ -13,6 +13,9 @@ on:
|
||||||
# This is a waste of chromatic build quota, so we don't run storybook CI on pull requests targets master.
|
# This is a waste of chromatic build quota, so we don't run storybook CI on pull requests targets master.
|
||||||
- master
|
- master
|
||||||
|
|
||||||
|
env:
|
||||||
|
COREPACK_DEFAULT_TO_LATEST: 0
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
# chromatic is not likely to be available for fork repositories, so we disable for fork repositories.
|
# chromatic is not likely to be available for fork repositories, so we disable for fork repositories.
|
||||||
|
|
|
@ -18,6 +18,10 @@ on:
|
||||||
- packages/misskey-js/**
|
- packages/misskey-js/**
|
||||||
- .github/workflows/test-backend.yml
|
- .github/workflows/test-backend.yml
|
||||||
- .github/misskey/test.yml
|
- .github/misskey/test.yml
|
||||||
|
|
||||||
|
env:
|
||||||
|
COREPACK_DEFAULT_TO_LATEST: 0
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
unit:
|
unit:
|
||||||
name: Unit tests (backend)
|
name: Unit tests (backend)
|
||||||
|
|
|
@ -15,6 +15,9 @@ on:
|
||||||
- packages/misskey-js/**
|
- packages/misskey-js/**
|
||||||
- .github/workflows/test-federation.yml
|
- .github/workflows/test-federation.yml
|
||||||
|
|
||||||
|
env:
|
||||||
|
COREPACK_DEFAULT_TO_LATEST: 0
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
name: Federation test
|
name: Federation test
|
||||||
|
|
|
@ -22,6 +22,10 @@ on:
|
||||||
- packages/backend/**
|
- packages/backend/**
|
||||||
- .github/workflows/test-frontend.yml
|
- .github/workflows/test-frontend.yml
|
||||||
- .github/misskey/test.yml
|
- .github/misskey/test.yml
|
||||||
|
|
||||||
|
env:
|
||||||
|
COREPACK_DEFAULT_TO_LATEST: 0
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
vitest:
|
vitest:
|
||||||
name: Unit tests (frontend)
|
name: Unit tests (frontend)
|
||||||
|
|
|
@ -14,6 +14,10 @@ on:
|
||||||
paths:
|
paths:
|
||||||
- packages/misskey-js/**
|
- packages/misskey-js/**
|
||||||
- .github/workflows/test-misskey-js.yml
|
- .github/workflows/test-misskey-js.yml
|
||||||
|
|
||||||
|
env:
|
||||||
|
COREPACK_DEFAULT_TO_LATEST: 0
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
name: Unit tests (misskey.js)
|
name: Unit tests (misskey.js)
|
||||||
|
|
|
@ -9,6 +9,7 @@ on:
|
||||||
|
|
||||||
env:
|
env:
|
||||||
NODE_ENV: production
|
NODE_ENV: production
|
||||||
|
COREPACK_DEFAULT_TO_LATEST: 0
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
production:
|
production:
|
||||||
|
|
|
@ -12,6 +12,10 @@ on:
|
||||||
paths:
|
paths:
|
||||||
- packages/backend/**
|
- packages/backend/**
|
||||||
- .github/workflows/validate-api-json.yml
|
- .github/workflows/validate-api-json.yml
|
||||||
|
|
||||||
|
env:
|
||||||
|
COREPACK_DEFAULT_TO_LATEST: 0
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
validate-api-json:
|
validate-api-json:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
28
CHANGELOG.md
28
CHANGELOG.md
|
@ -1,16 +1,36 @@
|
||||||
## 2025.2.0
|
## Unreleased
|
||||||
|
|
||||||
### General
|
### General
|
||||||
- Enhance: アンテナでセンシティブなチャンネルのノートを除外できるように ( #14177 )
|
- Enhance: アンテナでセンシティブなチャンネルのノートを除外できるように ( #14177 )
|
||||||
|
|
||||||
### Client
|
### Client
|
||||||
- Fix: 一部環境でセンシティブなファイルを含むノートの非表示が効かない問題
|
-
|
||||||
- Fix: データセーバー有効時にもユーザーページの「ファイル」タブで画像が読み込まれてしまう問題を修正
|
|
||||||
|
|
||||||
### Server
|
### Server
|
||||||
- Fix: 個別お知らせページのmetaタグ出力の条件が間違っていたのを修正
|
-
|
||||||
|
|
||||||
|
|
||||||
|
## 2025.2.0
|
||||||
|
|
||||||
|
### General
|
||||||
|
- Fix: Docker のビルドに失敗する問題を修正
|
||||||
|
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/883)
|
||||||
|
|
||||||
|
### Client
|
||||||
|
- Fix: パスキーでパスワードレスログインが出来ない問題を修正
|
||||||
|
- Fix: 一部環境でセンシティブなファイルを含むノートの非表示が効かない問題
|
||||||
|
- Fix: データセーバー有効時にもユーザーページの「ファイル」タブで画像が読み込まれてしまう問題を修正
|
||||||
|
- Fix: MFMの `sparkle` エフェクトが正しく表示されない問題を修正
|
||||||
|
- Fix: ページのURLにスラッシュが含まれている場合にページが正しく表示されない問題を修正
|
||||||
|
- Fix: デッキのプロファイルが新規作成できない問題を修正
|
||||||
|
- Fix: セキュリティに関する修正
|
||||||
|
- ローカライゼーションの更新
|
||||||
|
- Playが実装されたため、ページ機能の「ソースを見る」は削除されました
|
||||||
|
|
||||||
|
### Server
|
||||||
|
- Enhance: ページのURLに使用可能な文字を限定するように
|
||||||
|
- Fix: 個別お知らせページのmetaタグ出力の条件が間違っていたのを修正
|
||||||
|
|
||||||
## 2025.1.0
|
## 2025.1.0
|
||||||
|
|
||||||
### Note
|
### Note
|
||||||
|
|
|
@ -6,6 +6,8 @@ ARG NODE_VERSION=22.11.0-bookworm
|
||||||
|
|
||||||
FROM --platform=$BUILDPLATFORM node:${NODE_VERSION} AS native-builder
|
FROM --platform=$BUILDPLATFORM node:${NODE_VERSION} AS native-builder
|
||||||
|
|
||||||
|
ENV COREPACK_DEFAULT_TO_LATEST=0
|
||||||
|
|
||||||
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
|
||||||
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
--mount=type=cache,target=/var/lib/apt,sharing=locked \
|
||||||
rm -f /etc/apt/apt.conf.d/docker-clean \
|
rm -f /etc/apt/apt.conf.d/docker-clean \
|
||||||
|
@ -44,6 +46,8 @@ RUN rm -rf .git/
|
||||||
|
|
||||||
FROM --platform=$TARGETPLATFORM node:${NODE_VERSION} AS target-builder
|
FROM --platform=$TARGETPLATFORM node:${NODE_VERSION} AS target-builder
|
||||||
|
|
||||||
|
ENV COREPACK_DEFAULT_TO_LATEST=0
|
||||||
|
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -yqq --no-install-recommends \
|
&& apt-get install -yqq --no-install-recommends \
|
||||||
build-essential
|
build-essential
|
||||||
|
@ -68,6 +72,7 @@ FROM --platform=$TARGETPLATFORM node:${NODE_VERSION}-slim AS runner
|
||||||
|
|
||||||
ARG UID="991"
|
ARG UID="991"
|
||||||
ARG GID="991"
|
ARG GID="991"
|
||||||
|
ENV COREPACK_DEFAULT_TO_LATEST=0
|
||||||
|
|
||||||
RUN apt-get update \
|
RUN apt-get update \
|
||||||
&& apt-get install -y --no-install-recommends \
|
&& apt-get install -y --no-install-recommends \
|
||||||
|
|
|
@ -1460,9 +1460,6 @@ _pages:
|
||||||
newPage: "أنشئ صفحة جديدة"
|
newPage: "أنشئ صفحة جديدة"
|
||||||
editPage: "عدّل الصفحة"
|
editPage: "عدّل الصفحة"
|
||||||
readPage: "نُشّط عرض المصدر"
|
readPage: "نُشّط عرض المصدر"
|
||||||
created: "نجح إنشاء الصفحة"
|
|
||||||
updated: "نجح تعديل الصفحة"
|
|
||||||
deleted: "نجح حذف الصفحة"
|
|
||||||
pageSetting: "إعدادات الصفحة"
|
pageSetting: "إعدادات الصفحة"
|
||||||
nameAlreadyExists: "رابط الصفحة موجود مسبقًا"
|
nameAlreadyExists: "رابط الصفحة موجود مسبقًا"
|
||||||
invalidNameTitle: "رابط الصفحة ليس صالحًا"
|
invalidNameTitle: "رابط الصفحة ليس صالحًا"
|
||||||
|
|
|
@ -1237,9 +1237,6 @@ _pages:
|
||||||
newPage: "নতুন পৃষ্ঠা বানান"
|
newPage: "নতুন পৃষ্ঠা বানান"
|
||||||
editPage: "পৃষ্ঠাটি সম্পাদনা করুন"
|
editPage: "পৃষ্ঠাটি সম্পাদনা করুন"
|
||||||
readPage: "উৎস দেখছেন"
|
readPage: "উৎস দেখছেন"
|
||||||
created: "পৃষ্ঠা তৈরি করা হয়েছে"
|
|
||||||
updated: "পৃষ্ঠা সম্পাদনা করা হয়েছে"
|
|
||||||
deleted: "পৃষ্ঠা মুছে ফেলা হয়েছে"
|
|
||||||
pageSetting: "পৃষ্ঠার সেটিংস"
|
pageSetting: "পৃষ্ঠার সেটিংস"
|
||||||
nameAlreadyExists: "পৃষ্ঠার URLটি ইতিমধ্যেই ব্যাবহার করা হয়েছে"
|
nameAlreadyExists: "পৃষ্ঠার URLটি ইতিমধ্যেই ব্যাবহার করা হয়েছে"
|
||||||
invalidNameTitle: "পৃষ্ঠার URL অবৈধ"
|
invalidNameTitle: "পৃষ্ঠার URL অবৈধ"
|
||||||
|
|
|
@ -2365,9 +2365,6 @@ _pages:
|
||||||
newPage: "pa"
|
newPage: "pa"
|
||||||
editPage: "Editar la pàgina"
|
editPage: "Editar la pàgina"
|
||||||
readPage: "Veure el codi font d'aquesta pàgina"
|
readPage: "Veure el codi font d'aquesta pàgina"
|
||||||
created: "La pàgina ha sigut creada correctament"
|
|
||||||
updated: "La pàgina s'ha editat correctament"
|
|
||||||
deleted: "La pàgina s'ha esborrat sense problemes"
|
|
||||||
pageSetting: "Configuració de la pàgina"
|
pageSetting: "Configuració de la pàgina"
|
||||||
nameAlreadyExists: "L'adreça URL de la pàgina ja existeix"
|
nameAlreadyExists: "L'adreça URL de la pàgina ja existeix"
|
||||||
invalidNameTitle: "L'adreça URL de la pàgina no és vàlida"
|
invalidNameTitle: "L'adreça URL de la pàgina no és vàlida"
|
||||||
|
|
|
@ -1883,9 +1883,6 @@ _pages:
|
||||||
newPage: "Vytvořit novou stránku"
|
newPage: "Vytvořit novou stránku"
|
||||||
editPage: "Upravit stránku"
|
editPage: "Upravit stránku"
|
||||||
readPage: "Prohlížení zdroje této stránky"
|
readPage: "Prohlížení zdroje této stránky"
|
||||||
created: "Stránka byla úspěšně vytvořena"
|
|
||||||
updated: "Stránka byla úspěšně aktualizována"
|
|
||||||
deleted: "Stránka byla úspěšně smazána"
|
|
||||||
pageSetting: "Nastavení stránky"
|
pageSetting: "Nastavení stránky"
|
||||||
nameAlreadyExists: "Zadaná adresa URL stránky již existuje"
|
nameAlreadyExists: "Zadaná adresa URL stránky již existuje"
|
||||||
invalidNameTitle: "Zadaná adresa URL stránky je neplatná"
|
invalidNameTitle: "Zadaná adresa URL stránky je neplatná"
|
||||||
|
|
|
@ -5,6 +5,7 @@ introMisskey: "Willkommen! Misskey ist eine dezentralisierte Open-Source Microbl
|
||||||
poweredByMisskeyDescription: "{name} ist einer der durch die Open-Source-Plattform <b>Misskey</b> betriebenen Dienste."
|
poweredByMisskeyDescription: "{name} ist einer der durch die Open-Source-Plattform <b>Misskey</b> betriebenen Dienste."
|
||||||
monthAndDay: "{day}.{month}."
|
monthAndDay: "{day}.{month}."
|
||||||
search: "Suchen"
|
search: "Suchen"
|
||||||
|
reset: "Zurücksetzen"
|
||||||
notifications: "Benachrichtigungen"
|
notifications: "Benachrichtigungen"
|
||||||
username: "Benutzername"
|
username: "Benutzername"
|
||||||
password: "Passwort"
|
password: "Passwort"
|
||||||
|
@ -48,6 +49,7 @@ pin: "An dein Profil anheften"
|
||||||
unpin: "Von deinem Profil lösen"
|
unpin: "Von deinem Profil lösen"
|
||||||
copyContent: "Inhalt kopieren"
|
copyContent: "Inhalt kopieren"
|
||||||
copyLink: "Link kopieren"
|
copyLink: "Link kopieren"
|
||||||
|
copyRemoteLink: "Renote-Link kopieren"
|
||||||
copyLinkRenote: "Renote-Link kopieren"
|
copyLinkRenote: "Renote-Link kopieren"
|
||||||
delete: "Löschen"
|
delete: "Löschen"
|
||||||
deleteAndEdit: "Löschen und Bearbeiten"
|
deleteAndEdit: "Löschen und Bearbeiten"
|
||||||
|
@ -517,6 +519,7 @@ emojiStyle: "Emoji-Stil"
|
||||||
native: "Nativ"
|
native: "Nativ"
|
||||||
menuStyle: "Menü Stil"
|
menuStyle: "Menü Stil"
|
||||||
style: "Stil"
|
style: "Stil"
|
||||||
|
drawer: "App-Übersicht"
|
||||||
popup: "Pop-up"
|
popup: "Pop-up"
|
||||||
showNoteActionsOnlyHover: "Notizmenü nur bei Mouseover anzeigen"
|
showNoteActionsOnlyHover: "Notizmenü nur bei Mouseover anzeigen"
|
||||||
showReactionsCount: "Zeige die Anzahl der Reaktionen auf Notizen an"
|
showReactionsCount: "Zeige die Anzahl der Reaktionen auf Notizen an"
|
||||||
|
@ -691,6 +694,7 @@ regexpError: "Fehler in einem regulären Ausdruck"
|
||||||
regexpErrorDescription: "Im regulären Ausdruck deiner in Zeile {line} von {tab}en Wortstummschaltungen ist ein Fehler aufgetreten:"
|
regexpErrorDescription: "Im regulären Ausdruck deiner in Zeile {line} von {tab}en Wortstummschaltungen ist ein Fehler aufgetreten:"
|
||||||
instanceMute: "Instanzstummschaltungen"
|
instanceMute: "Instanzstummschaltungen"
|
||||||
userSaysSomething: "{name} hat etwas gesagt"
|
userSaysSomething: "{name} hat etwas gesagt"
|
||||||
|
userSaysSomethingAbout: "{name} sagt etwas über '{word}'"
|
||||||
makeActive: "Aktivieren"
|
makeActive: "Aktivieren"
|
||||||
display: "Anzeigeart"
|
display: "Anzeigeart"
|
||||||
copy: "Kopieren"
|
copy: "Kopieren"
|
||||||
|
@ -859,6 +863,7 @@ administration: "Verwaltung"
|
||||||
accounts: "Benutzerkonten"
|
accounts: "Benutzerkonten"
|
||||||
switch: "Wechseln"
|
switch: "Wechseln"
|
||||||
noMaintainerInformationWarning: "Betreiberinformationen sind nicht konfiguriert."
|
noMaintainerInformationWarning: "Betreiberinformationen sind nicht konfiguriert."
|
||||||
|
noInquiryUrlWarning: "Keine gültige URL."
|
||||||
noBotProtectionWarning: "Schutz vor Bots ist nicht konfiguriert."
|
noBotProtectionWarning: "Schutz vor Bots ist nicht konfiguriert."
|
||||||
configure: "Konfigurieren"
|
configure: "Konfigurieren"
|
||||||
postToGallery: "Neuen Galeriebeitrag erstellen"
|
postToGallery: "Neuen Galeriebeitrag erstellen"
|
||||||
|
@ -1091,6 +1096,7 @@ retryAllQueuesConfirmTitle: "Wirklich erneut versuchen?"
|
||||||
retryAllQueuesConfirmText: "Dies wird zu einer temporären Erhöhung der Serverlast führen."
|
retryAllQueuesConfirmText: "Dies wird zu einer temporären Erhöhung der Serverlast führen."
|
||||||
enableChartsForRemoteUser: "Diagramme für Nutzer fremder Instanzen erstellen"
|
enableChartsForRemoteUser: "Diagramme für Nutzer fremder Instanzen erstellen"
|
||||||
enableChartsForFederatedInstances: "Diagramme für fremde Instanzen erstellen"
|
enableChartsForFederatedInstances: "Diagramme für fremde Instanzen erstellen"
|
||||||
|
enableStatsForFederatedInstances: "Abruf von Informationen über förderierte Server"
|
||||||
showClipButtonInNoteFooter: "\"Clip\" zum Notizmenu hinzufügen"
|
showClipButtonInNoteFooter: "\"Clip\" zum Notizmenu hinzufügen"
|
||||||
reactionsDisplaySize: "Reaktionsanzeigegröße"
|
reactionsDisplaySize: "Reaktionsanzeigegröße"
|
||||||
limitWidthOfReaction: "Begrenze die Breite der Reaktion und zeige sie verkleinert an"
|
limitWidthOfReaction: "Begrenze die Breite der Reaktion und zeige sie verkleinert an"
|
||||||
|
@ -1139,6 +1145,8 @@ preventAiLearningDescription: "Fordert Crawler auf, gepostetes Text- oder Bildma
|
||||||
options: "Optionen"
|
options: "Optionen"
|
||||||
specifyUser: "Spezifischer Benutzer"
|
specifyUser: "Spezifischer Benutzer"
|
||||||
lookupConfirm: "Zustimmen?"
|
lookupConfirm: "Zustimmen?"
|
||||||
|
openTagPageConfirm: "Hashtag Seite wirklich öffnen?"
|
||||||
|
specifyHost: "Host"
|
||||||
failedToPreviewUrl: "Vorschau nicht anzeigbar"
|
failedToPreviewUrl: "Vorschau nicht anzeigbar"
|
||||||
update: "Aktualisieren"
|
update: "Aktualisieren"
|
||||||
rolesThatCanBeUsedThisEmojiAsReaction: "Rollen, die dieses Emoji als Reaktion verwenden können"
|
rolesThatCanBeUsedThisEmojiAsReaction: "Rollen, die dieses Emoji als Reaktion verwenden können"
|
||||||
|
@ -1197,6 +1205,7 @@ showRenotes: "Renotes anzeigen"
|
||||||
edited: "Bearbeitet"
|
edited: "Bearbeitet"
|
||||||
notificationRecieveConfig: "Benachrichtigungseinstellungen"
|
notificationRecieveConfig: "Benachrichtigungseinstellungen"
|
||||||
mutualFollow: "Gegenseitig gefolgt"
|
mutualFollow: "Gegenseitig gefolgt"
|
||||||
|
followingOrFollower: "Follow oder Follower"
|
||||||
fileAttachedOnly: "Nur Notizen mit Dateien"
|
fileAttachedOnly: "Nur Notizen mit Dateien"
|
||||||
showRepliesToOthersInTimeline: "Antworten in Chronik anzeigen"
|
showRepliesToOthersInTimeline: "Antworten in Chronik anzeigen"
|
||||||
hideRepliesToOthersInTimeline: "Antworten nicht in Chronik anzeigen"
|
hideRepliesToOthersInTimeline: "Antworten nicht in Chronik anzeigen"
|
||||||
|
@ -2268,9 +2277,6 @@ _pages:
|
||||||
newPage: "Seite erstellen"
|
newPage: "Seite erstellen"
|
||||||
editPage: "Seite bearbeiten"
|
editPage: "Seite bearbeiten"
|
||||||
readPage: "Quelltextansicht"
|
readPage: "Quelltextansicht"
|
||||||
created: "Seite erfolgreich erstellt"
|
|
||||||
updated: "Seite erfolgreich aktualisiert"
|
|
||||||
deleted: "Seite erfolgreich gelöscht"
|
|
||||||
pageSetting: "Seiteneinstellungen"
|
pageSetting: "Seiteneinstellungen"
|
||||||
nameAlreadyExists: "Die angegebene Seiten-URL existiert bereits"
|
nameAlreadyExists: "Die angegebene Seiten-URL existiert bereits"
|
||||||
invalidNameTitle: "Die angegebene Seiten-URL ist ungültig"
|
invalidNameTitle: "Die angegebene Seiten-URL ist ungültig"
|
||||||
|
|
|
@ -2366,9 +2366,6 @@ _pages:
|
||||||
newPage: "Create a new Page"
|
newPage: "Create a new Page"
|
||||||
editPage: "Edit this Page"
|
editPage: "Edit this Page"
|
||||||
readPage: "Viewing this Page's source"
|
readPage: "Viewing this Page's source"
|
||||||
created: "Page successfully created"
|
|
||||||
updated: "Page successfully edited"
|
|
||||||
deleted: "Page successfully deleted"
|
|
||||||
pageSetting: "Page settings"
|
pageSetting: "Page settings"
|
||||||
nameAlreadyExists: "The specified Page URL already exists"
|
nameAlreadyExists: "The specified Page URL already exists"
|
||||||
invalidNameTitle: "The specified Page URL is invalid"
|
invalidNameTitle: "The specified Page URL is invalid"
|
||||||
|
@ -2746,6 +2743,7 @@ _customEmojisManager:
|
||||||
deleteSelectionRanges: "Delete rows in the selection"
|
deleteSelectionRanges: "Delete rows in the selection"
|
||||||
searchSettings: "Search settings"
|
searchSettings: "Search settings"
|
||||||
searchSettingCaption: "Set detailed search criteria."
|
searchSettingCaption: "Set detailed search criteria."
|
||||||
|
searchLimit: ""
|
||||||
sortOrder: "Sort order"
|
sortOrder: "Sort order"
|
||||||
registrationLogs: "Registration log"
|
registrationLogs: "Registration log"
|
||||||
registrationLogsCaption: "Logs will be displayed when updating or deleting Emojis. They will disappear after updating or deleting them, moving to a new page, or reloading."
|
registrationLogsCaption: "Logs will be displayed when updating or deleting Emojis. They will disappear after updating or deleting them, moving to a new page, or reloading."
|
||||||
|
@ -2770,8 +2768,12 @@ _customEmojisManager:
|
||||||
markAsDeleteTargetRanges: "Mark rows in the selection as a target to delete"
|
markAsDeleteTargetRanges: "Mark rows in the selection as a target to delete"
|
||||||
alertUpdateEmojisNothingDescription: "There are no updated Emojis."
|
alertUpdateEmojisNothingDescription: "There are no updated Emojis."
|
||||||
alertDeleteEmojisNothingDescription: "There are no Emojis to be deleted."
|
alertDeleteEmojisNothingDescription: "There are no Emojis to be deleted."
|
||||||
|
confirmMovePage: ""
|
||||||
|
confirmChangeView: ""
|
||||||
confirmUpdateEmojisDescription: "Update {count} Emoji(s). Are you sure to continue?"
|
confirmUpdateEmojisDescription: "Update {count} Emoji(s). Are you sure to continue?"
|
||||||
confirmDeleteEmojisDescription: "Delete checked {count} Emoji(s). Are you sure to continue?"
|
confirmDeleteEmojisDescription: "Delete checked {count} Emoji(s). Are you sure to continue?"
|
||||||
|
confirmResetDescription: ""
|
||||||
|
confirmMovePageDesciption: "Changes have been made to the Emojis on this page.\nIf you leave the page without saving, all changes made on this page will be discarded."
|
||||||
dialogSelectRoleTitle: "Search by roll set in Emojis"
|
dialogSelectRoleTitle: "Search by roll set in Emojis"
|
||||||
_register:
|
_register:
|
||||||
uploadSettingTitle: "Upload settings"
|
uploadSettingTitle: "Upload settings"
|
||||||
|
|
|
@ -5,6 +5,7 @@ introMisskey: "¡Bienvenido/a! Misskey es un servicio de microblogging descentra
|
||||||
poweredByMisskeyDescription: "{name} es uno de los servicios (también llamado instancia) que usa la plataforma de código abierto <b>Misskey</b>"
|
poweredByMisskeyDescription: "{name} es uno de los servicios (también llamado instancia) que usa la plataforma de código abierto <b>Misskey</b>"
|
||||||
monthAndDay: "{day}/{month}"
|
monthAndDay: "{day}/{month}"
|
||||||
search: "Buscar"
|
search: "Buscar"
|
||||||
|
reset: "Reiniciar"
|
||||||
notifications: "Notificaciones"
|
notifications: "Notificaciones"
|
||||||
username: "Nombre de usuario"
|
username: "Nombre de usuario"
|
||||||
password: "Contraseña"
|
password: "Contraseña"
|
||||||
|
@ -518,6 +519,7 @@ emojiStyle: "Estilo de emoji"
|
||||||
native: "Nativo"
|
native: "Nativo"
|
||||||
menuStyle: "Diseño del menú"
|
menuStyle: "Diseño del menú"
|
||||||
style: "Diseño"
|
style: "Diseño"
|
||||||
|
drawer: "Cajón de Aplicaciones"
|
||||||
popup: "Ventana emergente"
|
popup: "Ventana emergente"
|
||||||
showNoteActionsOnlyHover: "Mostrar acciones de la nota sólo al pasar el cursor"
|
showNoteActionsOnlyHover: "Mostrar acciones de la nota sólo al pasar el cursor"
|
||||||
showReactionsCount: "Mostrar el número de reacciones en las notas"
|
showReactionsCount: "Mostrar el número de reacciones en las notas"
|
||||||
|
@ -683,7 +685,10 @@ smtpSecure: "Usar SSL/TLS implícito en la conexión SMTP"
|
||||||
smtpSecureInfo: "Apagar cuando se use STARTTLS"
|
smtpSecureInfo: "Apagar cuando se use STARTTLS"
|
||||||
testEmail: "Prueba de envío"
|
testEmail: "Prueba de envío"
|
||||||
wordMute: "Silenciar palabras"
|
wordMute: "Silenciar palabras"
|
||||||
|
wordMuteDescription: "Minimiza las notas que contienen la palabra o frase especificada. Las notas minimizadas pueden visualizarse haciendo clic sobre ellas."
|
||||||
hardWordMute: "Filtro de palabra fuerte"
|
hardWordMute: "Filtro de palabra fuerte"
|
||||||
|
showMutedWord: "Mostrar palabras silenciadas."
|
||||||
|
hardWordMuteDescription: "Oculta las notas que contienen la palabra o frase especificada. A diferencia de Silenciar palabra, la nota quedará completamente oculta a la vista."
|
||||||
regexpError: "Error de la expresión regular"
|
regexpError: "Error de la expresión regular"
|
||||||
regexpErrorDescription: "Ocurrió un error en la expresión regular en la linea {line} de las palabras muteadas {tab}"
|
regexpErrorDescription: "Ocurrió un error en la expresión regular en la linea {line} de las palabras muteadas {tab}"
|
||||||
instanceMute: "Instancias silenciadas"
|
instanceMute: "Instancias silenciadas"
|
||||||
|
@ -1134,6 +1139,7 @@ preventAiLearningDescription: "Pedirle a las arañas (crawlers) no usar los text
|
||||||
options: "Opción"
|
options: "Opción"
|
||||||
specifyUser: "Especificar usuario"
|
specifyUser: "Especificar usuario"
|
||||||
lookupConfirm: "¿Quiere informarse?"
|
lookupConfirm: "¿Quiere informarse?"
|
||||||
|
specifyHost: "Especificar Host"
|
||||||
failedToPreviewUrl: "No se pudo generar la vista previa"
|
failedToPreviewUrl: "No se pudo generar la vista previa"
|
||||||
update: "Actualizar"
|
update: "Actualizar"
|
||||||
rolesThatCanBeUsedThisEmojiAsReaction: "Roles que pueden usar este emoji como reacción"
|
rolesThatCanBeUsedThisEmojiAsReaction: "Roles que pueden usar este emoji como reacción"
|
||||||
|
@ -2288,9 +2294,6 @@ _pages:
|
||||||
newPage: "Crear página"
|
newPage: "Crear página"
|
||||||
editPage: "Editar página"
|
editPage: "Editar página"
|
||||||
readPage: "Viendo la fuente"
|
readPage: "Viendo la fuente"
|
||||||
created: "La página fue creada"
|
|
||||||
updated: "La página fue actualizada"
|
|
||||||
deleted: "La página borrada"
|
|
||||||
pageSetting: "Configurar página"
|
pageSetting: "Configurar página"
|
||||||
nameAlreadyExists: "La URL de la página especificada ya existe"
|
nameAlreadyExists: "La URL de la página especificada ya existe"
|
||||||
invalidNameTitle: "URL inválida"
|
invalidNameTitle: "URL inválida"
|
||||||
|
|
|
@ -2118,9 +2118,6 @@ _pages:
|
||||||
newPage: "Créer une page"
|
newPage: "Créer une page"
|
||||||
editPage: "Modifier une page"
|
editPage: "Modifier une page"
|
||||||
readPage: "Affichage de la source en cours"
|
readPage: "Affichage de la source en cours"
|
||||||
created: "La page a été créée !"
|
|
||||||
updated: "La page a été mise à jour !"
|
|
||||||
deleted: "La page a été supprimée"
|
|
||||||
pageSetting: "Paramètres de la Page"
|
pageSetting: "Paramètres de la Page"
|
||||||
nameAlreadyExists: "L'URL de page spécifiée existe déjà"
|
nameAlreadyExists: "L'URL de page spécifiée existe déjà"
|
||||||
invalidNameTitle: "L'URL de page spécifiée n’est pas valide"
|
invalidNameTitle: "L'URL de page spécifiée n’est pas valide"
|
||||||
|
|
|
@ -2285,9 +2285,6 @@ _pages:
|
||||||
newPage: "Buat halaman baru"
|
newPage: "Buat halaman baru"
|
||||||
editPage: "Sunting halaman"
|
editPage: "Sunting halaman"
|
||||||
readPage: "Lihat sumber kode aktif"
|
readPage: "Lihat sumber kode aktif"
|
||||||
created: "Halaman berhasil dibuat"
|
|
||||||
updated: "Halaman berhasil diperbaharui!"
|
|
||||||
deleted: "Halaman telah dihapus"
|
|
||||||
pageSetting: "Pengaturan Halaman"
|
pageSetting: "Pengaturan Halaman"
|
||||||
nameAlreadyExists: "URL Halaman yang ditentukan sudah ada"
|
nameAlreadyExists: "URL Halaman yang ditentukan sudah ada"
|
||||||
invalidNameTitle: "URL Halaman yang ditentukan tidak valid"
|
invalidNameTitle: "URL Halaman yang ditentukan tidak valid"
|
||||||
|
|
|
@ -4199,7 +4199,7 @@ export interface Locale extends ILocale {
|
||||||
*/
|
*/
|
||||||
"invalidParamError": string;
|
"invalidParamError": string;
|
||||||
/**
|
/**
|
||||||
* リクエストパラメータに問題があります。通常これはバグですが、入力した文字数が多すぎる等の可能性もあります。
|
* リクエストパラメータに問題があります。通常これはバグですが、入力した文字数が多すぎる・許可されていない文字を入力している等の可能性もあります。
|
||||||
*/
|
*/
|
||||||
"invalidParamErrorDescription": string;
|
"invalidParamErrorDescription": string;
|
||||||
/**
|
/**
|
||||||
|
@ -9184,18 +9184,6 @@ export interface Locale extends ILocale {
|
||||||
* ソースを表示中
|
* ソースを表示中
|
||||||
*/
|
*/
|
||||||
"readPage": string;
|
"readPage": string;
|
||||||
/**
|
|
||||||
* ページを作成しました
|
|
||||||
*/
|
|
||||||
"created": string;
|
|
||||||
/**
|
|
||||||
* ページを更新しました
|
|
||||||
*/
|
|
||||||
"updated": string;
|
|
||||||
/**
|
|
||||||
* ページを削除しました
|
|
||||||
*/
|
|
||||||
"deleted": string;
|
|
||||||
/**
|
/**
|
||||||
* ページ設定
|
* ページ設定
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -107,7 +107,7 @@ makeFollowManuallyApprove: "Approva i follower manualmente"
|
||||||
defaultNoteVisibility: "Privacy predefinita delle note"
|
defaultNoteVisibility: "Privacy predefinita delle note"
|
||||||
follow: "Segui"
|
follow: "Segui"
|
||||||
followRequest: "Richiesta di follow"
|
followRequest: "Richiesta di follow"
|
||||||
followRequests: "Richieste di follow"
|
followRequests: "Relazioni"
|
||||||
unfollow: "Togli Following"
|
unfollow: "Togli Following"
|
||||||
followRequestPending: "Richiesta in approvazione"
|
followRequestPending: "Richiesta in approvazione"
|
||||||
enterEmoji: "Inserisci emoji"
|
enterEmoji: "Inserisci emoji"
|
||||||
|
@ -537,7 +537,7 @@ regenerate: "Generare di nuovo"
|
||||||
fontSize: "Dimensione carattere"
|
fontSize: "Dimensione carattere"
|
||||||
mediaListWithOneImageAppearance: "Altezza dell'elenco media con una sola immagine "
|
mediaListWithOneImageAppearance: "Altezza dell'elenco media con una sola immagine "
|
||||||
limitTo: "Limita a {x}"
|
limitTo: "Limita a {x}"
|
||||||
noFollowRequests: "Non hai alcuna richiesta di follow"
|
noFollowRequests: "Non ci sono richieste di relazione"
|
||||||
openImageInNewTab: "Apri le immagini in un nuovo tab"
|
openImageInNewTab: "Apri le immagini in un nuovo tab"
|
||||||
dashboard: "Pannello di controllo"
|
dashboard: "Pannello di controllo"
|
||||||
local: "Locale"
|
local: "Locale"
|
||||||
|
@ -1933,7 +1933,7 @@ _serverDisconnectedBehavior:
|
||||||
quiet: "Visualizza avviso in modo discreto"
|
quiet: "Visualizza avviso in modo discreto"
|
||||||
_channel:
|
_channel:
|
||||||
create: "Nuovo canale"
|
create: "Nuovo canale"
|
||||||
edit: "Gerisci canale"
|
edit: "Modifica il canale"
|
||||||
setBanner: "Scegli intestazione"
|
setBanner: "Scegli intestazione"
|
||||||
removeBanner: "Rimuovi intestazione"
|
removeBanner: "Rimuovi intestazione"
|
||||||
featured: "Popolari nel canale"
|
featured: "Popolari nel canale"
|
||||||
|
@ -1961,7 +1961,7 @@ _instanceMute:
|
||||||
_theme:
|
_theme:
|
||||||
explore: "Esplora temi"
|
explore: "Esplora temi"
|
||||||
install: "Installa un tema"
|
install: "Installa un tema"
|
||||||
manage: "Gestione temi"
|
manage: "Gestione dei temi"
|
||||||
code: "Codice tema"
|
code: "Codice tema"
|
||||||
description: "Descrizione"
|
description: "Descrizione"
|
||||||
installed: "{name} è installato"
|
installed: "{name} è installato"
|
||||||
|
@ -2108,12 +2108,12 @@ _permissions:
|
||||||
"read:messaging": "Visualizzare la chat"
|
"read:messaging": "Visualizzare la chat"
|
||||||
"write:messaging": "Gestire la chat"
|
"write:messaging": "Gestire la chat"
|
||||||
"read:mutes": "Vedi i profili silenziati"
|
"read:mutes": "Vedi i profili silenziati"
|
||||||
"write:mutes": "Gestisci i profili silenziati"
|
"write:mutes": "Gestione dei profili silenziati"
|
||||||
"write:notes": "Creare / Eliminare note"
|
"write:notes": "Creare / Eliminare note"
|
||||||
"read:notifications": "Visualizzare notifiche"
|
"read:notifications": "Visualizzare notifiche"
|
||||||
"write:notifications": "Gestire notifiche"
|
"write:notifications": "Gestione delle notifiche"
|
||||||
"read:reactions": "Vedi reazioni"
|
"read:reactions": "Vedi reazioni"
|
||||||
"write:reactions": "Gerisci reazioni"
|
"write:reactions": "Gestione delle reazioni"
|
||||||
"write:votes": "Votare"
|
"write:votes": "Votare"
|
||||||
"read:pages": "Visualizzare pagine"
|
"read:pages": "Visualizzare pagine"
|
||||||
"write:pages": "Gestire pagine"
|
"write:pages": "Gestire pagine"
|
||||||
|
@ -2122,7 +2122,7 @@ _permissions:
|
||||||
"read:user-groups": "Vedere i gruppi di utenti"
|
"read:user-groups": "Vedere i gruppi di utenti"
|
||||||
"write:user-groups": "Gestire i gruppi di utenti"
|
"write:user-groups": "Gestire i gruppi di utenti"
|
||||||
"read:channels": "Visualizza canali"
|
"read:channels": "Visualizza canali"
|
||||||
"write:channels": "Gerisci canali"
|
"write:channels": "Gestione dei canali"
|
||||||
"read:gallery": "Visualizza la galleria."
|
"read:gallery": "Visualizza la galleria."
|
||||||
"write:gallery": "Gestione della galleria"
|
"write:gallery": "Gestione della galleria"
|
||||||
"read:gallery-likes": "Visualizza i contenuti della galleria."
|
"read:gallery-likes": "Visualizza i contenuti della galleria."
|
||||||
|
@ -2365,9 +2365,6 @@ _pages:
|
||||||
newPage: "Crea pagina"
|
newPage: "Crea pagina"
|
||||||
editPage: "Modifica pagina"
|
editPage: "Modifica pagina"
|
||||||
readPage: "Visualizzando fonte "
|
readPage: "Visualizzando fonte "
|
||||||
created: "Pagina creata!"
|
|
||||||
updated: "Pagina aggiornata con successo!"
|
|
||||||
deleted: "Pagina eliminata"
|
|
||||||
pageSetting: "Impostazioni pagina"
|
pageSetting: "Impostazioni pagina"
|
||||||
nameAlreadyExists: "Esiste già una pagina con lo stesso URL."
|
nameAlreadyExists: "Esiste già una pagina con lo stesso URL."
|
||||||
invalidNameTitle: "L'URL di pagina definito non è valido"
|
invalidNameTitle: "L'URL di pagina definito non è valido"
|
||||||
|
|
|
@ -1045,7 +1045,7 @@ youCannotCreateAnymore: "これ以上作成することはできません。"
|
||||||
cannotPerformTemporary: "一時的に利用できません"
|
cannotPerformTemporary: "一時的に利用できません"
|
||||||
cannotPerformTemporaryDescription: "操作回数が制限を超過するため一時的に利用できません。しばらく時間を置いてから再度お試しください。"
|
cannotPerformTemporaryDescription: "操作回数が制限を超過するため一時的に利用できません。しばらく時間を置いてから再度お試しください。"
|
||||||
invalidParamError: "パラメータエラー"
|
invalidParamError: "パラメータエラー"
|
||||||
invalidParamErrorDescription: "リクエストパラメータに問題があります。通常これはバグですが、入力した文字数が多すぎる等の可能性もあります。"
|
invalidParamErrorDescription: "リクエストパラメータに問題があります。通常これはバグですが、入力した文字数が多すぎる・許可されていない文字を入力している等の可能性もあります。"
|
||||||
permissionDeniedError: "操作が拒否されました"
|
permissionDeniedError: "操作が拒否されました"
|
||||||
permissionDeniedErrorDescription: "このアカウントにはこの操作を行うための権限がありません。"
|
permissionDeniedErrorDescription: "このアカウントにはこの操作を行うための権限がありません。"
|
||||||
preset: "プリセット"
|
preset: "プリセット"
|
||||||
|
@ -2423,9 +2423,6 @@ _pages:
|
||||||
newPage: "ページの作成"
|
newPage: "ページの作成"
|
||||||
editPage: "ページの編集"
|
editPage: "ページの編集"
|
||||||
readPage: "ソースを表示中"
|
readPage: "ソースを表示中"
|
||||||
created: "ページを作成しました"
|
|
||||||
updated: "ページを更新しました"
|
|
||||||
deleted: "ページを削除しました"
|
|
||||||
pageSetting: "ページ設定"
|
pageSetting: "ページ設定"
|
||||||
nameAlreadyExists: "指定されたページURLは既に存在しています"
|
nameAlreadyExists: "指定されたページURLは既に存在しています"
|
||||||
invalidNameTitle: "不正なページURLです"
|
invalidNameTitle: "不正なページURLです"
|
||||||
|
|
|
@ -2357,9 +2357,6 @@ _pages:
|
||||||
newPage: "ページを作る"
|
newPage: "ページを作る"
|
||||||
editPage: "ページの編集"
|
editPage: "ページの編集"
|
||||||
readPage: "ソースを表示中"
|
readPage: "ソースを表示中"
|
||||||
created: "ページを作成したで"
|
|
||||||
updated: "ページを更新したで"
|
|
||||||
deleted: "ページを削除したで"
|
|
||||||
pageSetting: "ページ設定"
|
pageSetting: "ページ設定"
|
||||||
nameAlreadyExists: "指定されたページURLはもうあるみたいや"
|
nameAlreadyExists: "指定されたページURLはもうあるみたいや"
|
||||||
invalidNameTitle: "正しくないページURLみたいやで"
|
invalidNameTitle: "正しくないページURLみたいやで"
|
||||||
|
|
|
@ -1283,7 +1283,7 @@ confirmWhenRevealingSensitiveMedia: "민감한 미디어를 열 때 두 번 확
|
||||||
sensitiveMediaRevealConfirm: "민감한 미디어입니다. 표시할까요?"
|
sensitiveMediaRevealConfirm: "민감한 미디어입니다. 표시할까요?"
|
||||||
createdLists: "만든 리스트"
|
createdLists: "만든 리스트"
|
||||||
createdAntennas: "만든 안테나"
|
createdAntennas: "만든 안테나"
|
||||||
fromX: "{x}부터"
|
fromX: "{x}에서"
|
||||||
genEmbedCode: "임베디드 코드 만들기"
|
genEmbedCode: "임베디드 코드 만들기"
|
||||||
noteOfThisUser: "이 유저의 노트 목록"
|
noteOfThisUser: "이 유저의 노트 목록"
|
||||||
clipNoteLimitExceeded: "더 이상 이 클립에 노트를 추가 할 수 없습니다."
|
clipNoteLimitExceeded: "더 이상 이 클립에 노트를 추가 할 수 없습니다."
|
||||||
|
@ -2365,9 +2365,6 @@ _pages:
|
||||||
newPage: "페이지 만들기"
|
newPage: "페이지 만들기"
|
||||||
editPage: "페이지 수정"
|
editPage: "페이지 수정"
|
||||||
readPage: "소스 표시 중"
|
readPage: "소스 표시 중"
|
||||||
created: "페이지를 만들었습니다"
|
|
||||||
updated: "페이지를 수정했습니다"
|
|
||||||
deleted: "페이지가 삭제되었습니다"
|
|
||||||
pageSetting: "페이지 설정"
|
pageSetting: "페이지 설정"
|
||||||
nameAlreadyExists: "지정한 페이지 URL이 이미 존재합니다"
|
nameAlreadyExists: "지정한 페이지 URL이 이미 존재합니다"
|
||||||
invalidNameTitle: "유효하지 않은 페이지 URL입니다"
|
invalidNameTitle: "유효하지 않은 페이지 URL입니다"
|
||||||
|
|
|
@ -1459,9 +1459,6 @@ _pages:
|
||||||
newPage: "Utwórz stronę"
|
newPage: "Utwórz stronę"
|
||||||
editPage: "Edytuj tę stronę"
|
editPage: "Edytuj tę stronę"
|
||||||
readPage: "Aktywowano widok źródła"
|
readPage: "Aktywowano widok źródła"
|
||||||
created: "Pomyślnie utworzono stronę!"
|
|
||||||
updated: "Pomyślnie zaktualizowano stronę!"
|
|
||||||
deleted: "Strona została usunięta"
|
|
||||||
pageSetting: "Ustawienia strony"
|
pageSetting: "Ustawienia strony"
|
||||||
nameAlreadyExists: "Określony adres URL strony już istnieje"
|
nameAlreadyExists: "Określony adres URL strony już istnieje"
|
||||||
invalidNameTitle: "Podany adres URL strony jest nieprawidłowy"
|
invalidNameTitle: "Podany adres URL strony jest nieprawidłowy"
|
||||||
|
|
|
@ -2357,9 +2357,6 @@ _pages:
|
||||||
newPage: "Criar uma Página"
|
newPage: "Criar uma Página"
|
||||||
editPage: "Editar essa Página"
|
editPage: "Editar essa Página"
|
||||||
readPage: "Ver a fonte dessa Página"
|
readPage: "Ver a fonte dessa Página"
|
||||||
created: "Página criada com sucesso"
|
|
||||||
updated: "Página atualizada com sucesso"
|
|
||||||
deleted: "Página excluída com sucesso"
|
|
||||||
pageSetting: "Configurações da página"
|
pageSetting: "Configurações da página"
|
||||||
nameAlreadyExists: "O URL de Página especificado já existe"
|
nameAlreadyExists: "O URL de Página especificado já existe"
|
||||||
invalidNameTitle: "O URL de Página especificado é inválido"
|
invalidNameTitle: "O URL de Página especificado é inválido"
|
||||||
|
|
|
@ -1976,9 +1976,6 @@ _pages:
|
||||||
newPage: "Создать страницу"
|
newPage: "Создать страницу"
|
||||||
editPage: "Править страницу"
|
editPage: "Править страницу"
|
||||||
readPage: "Читать страницу"
|
readPage: "Читать страницу"
|
||||||
created: "Страница успешно создана."
|
|
||||||
updated: "Страница успешно обновлена."
|
|
||||||
deleted: "Страница успешно удалена."
|
|
||||||
pageSetting: "Настройки страницы"
|
pageSetting: "Настройки страницы"
|
||||||
nameAlreadyExists: "Указанный адрес страницы уже существует."
|
nameAlreadyExists: "Указанный адрес страницы уже существует."
|
||||||
invalidNameTitle: "Указанный адрес страницы недопустим."
|
invalidNameTitle: "Указанный адрес страницы недопустим."
|
||||||
|
|
|
@ -1332,9 +1332,6 @@ _pages:
|
||||||
newPage: "Vytvoriť novú stránku"
|
newPage: "Vytvoriť novú stránku"
|
||||||
editPage: "Upraviť túto stránku"
|
editPage: "Upraviť túto stránku"
|
||||||
readPage: "Zobrazenie zdroja aktívne"
|
readPage: "Zobrazenie zdroja aktívne"
|
||||||
created: "Stránka úspešne vytvorená"
|
|
||||||
updated: "Stránka úspešne upravená"
|
|
||||||
deleted: "Stránka úspešne odstránená"
|
|
||||||
pageSetting: "Nastavenia stránky"
|
pageSetting: "Nastavenia stránky"
|
||||||
nameAlreadyExists: "Zadaná URL stránku už existuje"
|
nameAlreadyExists: "Zadaná URL stránku už existuje"
|
||||||
invalidNameTitle: "Zadaná URL stránku je nesprávna"
|
invalidNameTitle: "Zadaná URL stránku je nesprávna"
|
||||||
|
|
|
@ -2331,9 +2331,6 @@ _pages:
|
||||||
newPage: "สร้างหน้าเพจใหม่"
|
newPage: "สร้างหน้าเพจใหม่"
|
||||||
editPage: "แก้ไขหน้าเพจ"
|
editPage: "แก้ไขหน้าเพจ"
|
||||||
readPage: "กำลังดูแหล่งที่มาของเพจนี้"
|
readPage: "กำลังดูแหล่งที่มาของเพจนี้"
|
||||||
created: "สร้างหน้าเพจสำเร็จเรียบร้อยแล้ว"
|
|
||||||
updated: "แก้ไขหน้าเพจสำเร็จเรียบร้อยแล้ว"
|
|
||||||
deleted: "ลบหน้าเพจสำเร็จเรียบร้อยแล้ว"
|
|
||||||
pageSetting: "การตั้งค่าหน้าเพจ"
|
pageSetting: "การตั้งค่าหน้าเพจ"
|
||||||
nameAlreadyExists: "URL ของหน้าที่ระบุนั้นมีอยู่แล้ว"
|
nameAlreadyExists: "URL ของหน้าที่ระบุนั้นมีอยู่แล้ว"
|
||||||
invalidNameTitle: "URL ของหน้าที่ระบุนั้นไม่ถูกต้อง"
|
invalidNameTitle: "URL ของหน้าที่ระบุนั้นไม่ถูกต้อง"
|
||||||
|
|
|
@ -1513,9 +1513,6 @@ _pages:
|
||||||
newPage: "Створити сторінку"
|
newPage: "Створити сторінку"
|
||||||
editPage: "Редагувати сторінку"
|
editPage: "Редагувати сторінку"
|
||||||
readPage: "Перегляд вихідного коду"
|
readPage: "Перегляд вихідного коду"
|
||||||
created: "Сторінка успішно створена."
|
|
||||||
updated: "Сторінка успішно оновлена."
|
|
||||||
deleted: "Сторінку видалено"
|
|
||||||
pageSetting: "Налаштування сторінки"
|
pageSetting: "Налаштування сторінки"
|
||||||
nameAlreadyExists: "Вказана адреса сторінки вже існує."
|
nameAlreadyExists: "Вказана адреса сторінки вже існує."
|
||||||
invalidNameTitle: "Вказана адреса сторінки неприпустима."
|
invalidNameTitle: "Вказана адреса сторінки неприпустима."
|
||||||
|
|
|
@ -1004,9 +1004,6 @@ _play:
|
||||||
_pages:
|
_pages:
|
||||||
newPage: "Yangi Sahifa yaratish"
|
newPage: "Yangi Sahifa yaratish"
|
||||||
editPage: "Ushbu Sahifani tahrirlash"
|
editPage: "Ushbu Sahifani tahrirlash"
|
||||||
created: "Sahifa muvaffaqiyatli yaratildi"
|
|
||||||
updated: "Sahifa muvaffaqiyatli tahrirlandi"
|
|
||||||
deleted: "Sahifa muvaffaqiyatli o'chirildi"
|
|
||||||
pageSetting: "Sahifa sozlamalari"
|
pageSetting: "Sahifa sozlamalari"
|
||||||
nameAlreadyExists: "Ko'rsatilgan Sahifa URL'i allaqachon mavjud"
|
nameAlreadyExists: "Ko'rsatilgan Sahifa URL'i allaqachon mavjud"
|
||||||
invalidNameTitle: "Ko'rsatilgan Sahifa URL'i yaroqsiz"
|
invalidNameTitle: "Ko'rsatilgan Sahifa URL'i yaroqsiz"
|
||||||
|
|
|
@ -1802,9 +1802,6 @@ _pages:
|
||||||
newPage: "Tạo Trang mới"
|
newPage: "Tạo Trang mới"
|
||||||
editPage: "Sửa Trang này"
|
editPage: "Sửa Trang này"
|
||||||
readPage: "Xem mã nguồn Trang này"
|
readPage: "Xem mã nguồn Trang này"
|
||||||
created: "Trang đã được tạo thành công"
|
|
||||||
updated: "Trang đã được cập nhật thành công"
|
|
||||||
deleted: "Trang đã được xóa thành công"
|
|
||||||
pageSetting: "Cài đặt trang"
|
pageSetting: "Cài đặt trang"
|
||||||
nameAlreadyExists: "URL Trang đã tồn tại"
|
nameAlreadyExists: "URL Trang đã tồn tại"
|
||||||
invalidNameTitle: "URL Trang không hợp lệ"
|
invalidNameTitle: "URL Trang không hợp lệ"
|
||||||
|
|
|
@ -49,7 +49,7 @@ pin: "置顶"
|
||||||
unpin: "取消置顶"
|
unpin: "取消置顶"
|
||||||
copyContent: "复制内容"
|
copyContent: "复制内容"
|
||||||
copyLink: "复制链接"
|
copyLink: "复制链接"
|
||||||
copyRemoteLink: "复制远程连接"
|
copyRemoteLink: "复制远程链接"
|
||||||
copyLinkRenote: "复制转帖链接"
|
copyLinkRenote: "复制转帖链接"
|
||||||
delete: "删除"
|
delete: "删除"
|
||||||
deleteAndEdit: "删除并编辑"
|
deleteAndEdit: "删除并编辑"
|
||||||
|
@ -2365,9 +2365,6 @@ _pages:
|
||||||
newPage: "创建页面"
|
newPage: "创建页面"
|
||||||
editPage: "编辑页面"
|
editPage: "编辑页面"
|
||||||
readPage: "查看页面"
|
readPage: "查看页面"
|
||||||
created: "页面已创建"
|
|
||||||
updated: "页面已更新"
|
|
||||||
deleted: "该页面已被删除"
|
|
||||||
pageSetting: "页面设置"
|
pageSetting: "页面设置"
|
||||||
nameAlreadyExists: "该页面 URL 已存在"
|
nameAlreadyExists: "该页面 URL 已存在"
|
||||||
invalidNameTitle: "无效的页面 URL"
|
invalidNameTitle: "无效的页面 URL"
|
||||||
|
|
|
@ -2365,9 +2365,6 @@ _pages:
|
||||||
newPage: "建立頁面"
|
newPage: "建立頁面"
|
||||||
editPage: "編輯頁面"
|
editPage: "編輯頁面"
|
||||||
readPage: "正在檢視原始碼"
|
readPage: "正在檢視原始碼"
|
||||||
created: "頁面已建立"
|
|
||||||
updated: "頁面已更新"
|
|
||||||
deleted: "頁面已被刪除"
|
|
||||||
pageSetting: "頁面設定"
|
pageSetting: "頁面設定"
|
||||||
nameAlreadyExists: "該頁面 URL 已存在"
|
nameAlreadyExists: "該頁面 URL 已存在"
|
||||||
invalidNameTitle: "無效的頁面 URL"
|
invalidNameTitle: "無效的頁面 URL"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"version": "2025.2.0-alpha.0",
|
"version": "2025.2.0",
|
||||||
"codename": "nasubi",
|
"codename": "nasubi",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
|
|
@ -118,3 +118,5 @@ export class MiPage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const pageNameSchema = { type: 'string', pattern: /^[^\s:\/?#\[\]@!$&'()*+,;=\\%\x00-\x20]{1,256}$/.source } as const;
|
||||||
|
|
|
@ -7,7 +7,7 @@ import ms from 'ms';
|
||||||
import { Inject, Injectable } from '@nestjs/common';
|
import { Inject, Injectable } from '@nestjs/common';
|
||||||
import type { DriveFilesRepository, PagesRepository } from '@/models/_.js';
|
import type { DriveFilesRepository, PagesRepository } from '@/models/_.js';
|
||||||
import { IdService } from '@/core/IdService.js';
|
import { IdService } from '@/core/IdService.js';
|
||||||
import { MiPage } from '@/models/Page.js';
|
import { MiPage, pageNameSchema } from '@/models/Page.js';
|
||||||
import { Endpoint } from '@/server/api/endpoint-base.js';
|
import { Endpoint } from '@/server/api/endpoint-base.js';
|
||||||
import { PageEntityService } from '@/core/entities/PageEntityService.js';
|
import { PageEntityService } from '@/core/entities/PageEntityService.js';
|
||||||
import { DI } from '@/di-symbols.js';
|
import { DI } from '@/di-symbols.js';
|
||||||
|
@ -51,7 +51,7 @@ export const paramDef = {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
properties: {
|
properties: {
|
||||||
title: { type: 'string' },
|
title: { type: 'string' },
|
||||||
name: { type: 'string', minLength: 1 },
|
name: { ...pageNameSchema, minLength: 1 },
|
||||||
summary: { type: 'string', nullable: true },
|
summary: { type: 'string', nullable: true },
|
||||||
content: { type: 'array', items: {
|
content: { type: 'array', items: {
|
||||||
type: 'object', additionalProperties: true,
|
type: 'object', additionalProperties: true,
|
||||||
|
|
|
@ -10,6 +10,7 @@ import type { PagesRepository, DriveFilesRepository } from '@/models/_.js';
|
||||||
import { Endpoint } from '@/server/api/endpoint-base.js';
|
import { Endpoint } from '@/server/api/endpoint-base.js';
|
||||||
import { DI } from '@/di-symbols.js';
|
import { DI } from '@/di-symbols.js';
|
||||||
import { ApiError } from '../../error.js';
|
import { ApiError } from '../../error.js';
|
||||||
|
import { pageNameSchema } from '@/models/Page.js';
|
||||||
|
|
||||||
export const meta = {
|
export const meta = {
|
||||||
tags: ['pages'],
|
tags: ['pages'],
|
||||||
|
@ -31,13 +32,11 @@ export const meta = {
|
||||||
code: 'NO_SUCH_PAGE',
|
code: 'NO_SUCH_PAGE',
|
||||||
id: '21149b9e-3616-4778-9592-c4ce89f5a864',
|
id: '21149b9e-3616-4778-9592-c4ce89f5a864',
|
||||||
},
|
},
|
||||||
|
|
||||||
accessDenied: {
|
accessDenied: {
|
||||||
message: 'Access denied.',
|
message: 'Access denied.',
|
||||||
code: 'ACCESS_DENIED',
|
code: 'ACCESS_DENIED',
|
||||||
id: '3c15cd52-3b4b-4274-967d-6456fc4f792b',
|
id: '3c15cd52-3b4b-4274-967d-6456fc4f792b',
|
||||||
},
|
},
|
||||||
|
|
||||||
noSuchFile: {
|
noSuchFile: {
|
||||||
message: 'No such file.',
|
message: 'No such file.',
|
||||||
code: 'NO_SUCH_FILE',
|
code: 'NO_SUCH_FILE',
|
||||||
|
@ -56,7 +55,7 @@ export const paramDef = {
|
||||||
properties: {
|
properties: {
|
||||||
pageId: { type: 'string', format: 'misskey:id' },
|
pageId: { type: 'string', format: 'misskey:id' },
|
||||||
title: { type: 'string' },
|
title: { type: 'string' },
|
||||||
name: { type: 'string', minLength: 1 },
|
name: { ...pageNameSchema, minLength: 1 },
|
||||||
summary: { type: 'string', nullable: true },
|
summary: { type: 'string', nullable: true },
|
||||||
content: { type: 'array', items: {
|
content: { type: 'array', items: {
|
||||||
type: 'object', additionalProperties: true,
|
type: 'object', additionalProperties: true,
|
||||||
|
|
|
@ -17,6 +17,7 @@ services:
|
||||||
- ./.config/docker.env
|
- ./.config/docker.env
|
||||||
environment:
|
environment:
|
||||||
- NODE_ENV=production
|
- NODE_ENV=production
|
||||||
|
- COREPACK_DEFAULT_TO_LATEST=0
|
||||||
volumes:
|
volumes:
|
||||||
- type: bind
|
- type: bind
|
||||||
source: ../../../built
|
source: ../../../built
|
||||||
|
|
|
@ -25,6 +25,7 @@ services:
|
||||||
environment:
|
environment:
|
||||||
- NODE_ENV=development
|
- NODE_ENV=development
|
||||||
- NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/rootCA.crt
|
- NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/rootCA.crt
|
||||||
|
- COREPACK_DEFAULT_TO_LATEST=0
|
||||||
volumes:
|
volumes:
|
||||||
- type: bind
|
- type: bind
|
||||||
source: ../package.json
|
source: ../package.json
|
||||||
|
@ -85,6 +86,8 @@ services:
|
||||||
depends_on:
|
depends_on:
|
||||||
redis.test:
|
redis.test:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
environment:
|
||||||
|
- COREPACK_DEFAULT_TO_LATEST=0
|
||||||
volumes:
|
volumes:
|
||||||
- type: bind
|
- type: bind
|
||||||
source: ../package.json
|
source: ../package.json
|
||||||
|
|
|
@ -47,6 +47,7 @@ export default [
|
||||||
'@typescript-eslint/no-empty-interface': ['error', {
|
'@typescript-eslint/no-empty-interface': ['error', {
|
||||||
allowSingleExtends: true,
|
allowSingleExtends: true,
|
||||||
}],
|
}],
|
||||||
|
'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
|
||||||
// window の禁止理由: グローバルスコープと衝突し、予期せぬ結果を招くため
|
// window の禁止理由: グローバルスコープと衝突し、予期せぬ結果を招くため
|
||||||
// e の禁止理由: error や event など、複数のキーワードの頭文字であり分かりにくいため
|
// e の禁止理由: error や event など、複数のキーワードの頭文字であり分かりにくいため
|
||||||
'id-denylist': ['error', 'window', 'e'],
|
'id-denylist': ['error', 'window', 'e'],
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { VNode, h, SetupContext, provide } from 'vue';
|
import { h, provide } from 'vue';
|
||||||
|
import type { VNode, SetupContext } from 'vue';
|
||||||
import * as mfm from 'mfm-js';
|
import * as mfm from 'mfm-js';
|
||||||
import * as Misskey from 'misskey-js';
|
import * as Misskey from 'misskey-js';
|
||||||
import { host } from '@@/js/config.js';
|
import { host } from '@@/js/config.js';
|
||||||
|
|
|
@ -22,7 +22,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { useTemplateRef } from 'vue';
|
import { useTemplateRef } from 'vue';
|
||||||
import EmNote from '@/components/EmNote.vue';
|
import EmNote from '@/components/EmNote.vue';
|
||||||
import EmPagination, { Paging } from '@/components/EmPagination.vue';
|
import EmPagination from '@/components/EmPagination.vue';
|
||||||
|
import type { Paging } from '@/components/EmPagination.vue';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import * as Misskey from 'misskey-js';
|
import * as Misskey from 'misskey-js';
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
"allowSyntheticDefaultImports": true,
|
"allowSyntheticDefaultImports": true,
|
||||||
"isolatedModules": true,
|
"isolatedModules": true,
|
||||||
"useDefineForClassFields": true,
|
"useDefineForClassFields": true,
|
||||||
|
"verbatimModuleSyntax": true,
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
"paths": {
|
"paths": {
|
||||||
"@/*": ["./src/*"],
|
"@/*": ["./src/*"],
|
||||||
|
|
|
@ -52,6 +52,7 @@ export default [
|
||||||
'@typescript-eslint/no-empty-interface': ['error', {
|
'@typescript-eslint/no-empty-interface': ['error', {
|
||||||
allowSingleExtends: true,
|
allowSingleExtends: true,
|
||||||
}],
|
}],
|
||||||
|
'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
|
||||||
// window の禁止理由: グローバルスコープと衝突し、予期せぬ結果を招くため
|
// window の禁止理由: グローバルスコープと衝突し、予期せぬ結果を招くため
|
||||||
// e の禁止理由: error や event など、複数のキーワードの頭文字であり分かりにくいため
|
// e の禁止理由: error や event など、複数のキーワードの頭文字であり分かりにくいため
|
||||||
'id-denylist': ['error', 'window', 'e'],
|
'id-denylist': ['error', 'window', 'e'],
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"noImplicitReturns": true,
|
"noImplicitReturns": true,
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
|
"verbatimModuleSyntax": true,
|
||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
"paths": {
|
"paths": {
|
||||||
"@/*": ["./*"],
|
"@/*": ["./*"],
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { DefaultBodyType, HttpResponse, HttpResponseResolver, JsonBodyType, PathParams, http } from 'msw';
|
import { HttpResponse, http } from 'msw';
|
||||||
|
import type { DefaultBodyType, HttpResponseResolver, JsonBodyType, PathParams } from 'msw';
|
||||||
import seedrandom from 'seedrandom';
|
import seedrandom from 'seedrandom';
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,7 @@ export default [
|
||||||
'@typescript-eslint/no-empty-interface': ['error', {
|
'@typescript-eslint/no-empty-interface': ['error', {
|
||||||
allowSingleExtends: true,
|
allowSingleExtends: true,
|
||||||
}],
|
}],
|
||||||
|
'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
|
||||||
// window の禁止理由: グローバルスコープと衝突し、予期せぬ結果を招くため
|
// window の禁止理由: グローバルスコープと衝突し、予期せぬ結果を招くため
|
||||||
// e の禁止理由: error や event など、複数のキーワードの頭文字であり分かりにくいため
|
// e の禁止理由: error や event など、複数のキーワードの頭文字であり分かりにくいため
|
||||||
'id-denylist': ['error', 'window', 'e'],
|
'id-denylist': ['error', 'window', 'e'],
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { generate } from 'astring';
|
import { generate } from 'astring';
|
||||||
import * as estree from 'estree';
|
|
||||||
import { walk } from '../node_modules/estree-walker/src/index.js';
|
import { walk } from '../node_modules/estree-walker/src/index.js';
|
||||||
|
import type * as estree from 'estree';
|
||||||
import type * as estreeWalker from 'estree-walker';
|
import type * as estreeWalker from 'estree-walker';
|
||||||
import type { Plugin } from 'vite';
|
import type { Plugin } from 'vite';
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { computed, watch, version as vueVersion, App } from 'vue';
|
import { computed, watch, version as vueVersion } from 'vue';
|
||||||
|
import type { App } from 'vue';
|
||||||
import { compareVersions } from 'compare-versions';
|
import { compareVersions } from 'compare-versions';
|
||||||
import { version, lang, updateLocale, locale } from '@@/js/config.js';
|
import { version, lang, updateLocale, locale } from '@@/js/config.js';
|
||||||
import widgets from '@/widgets/index.js';
|
import widgets from '@/widgets/index.js';
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
import { createApp, defineAsyncComponent, markRaw } from 'vue';
|
import { createApp, defineAsyncComponent, markRaw } from 'vue';
|
||||||
import { ui } from '@@/js/config.js';
|
import { ui } from '@@/js/config.js';
|
||||||
import { common } from './common.js';
|
import { common } from './common.js';
|
||||||
import type * as Misskey from 'misskey-js';
|
import * as Misskey from 'misskey-js';
|
||||||
import type { Component } from 'vue';
|
import type { Component } from 'vue';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import { alert, confirm, popup, post, toast } from '@/os.js';
|
import { alert, confirm, popup, post, toast } from '@/os.js';
|
||||||
|
@ -22,7 +22,8 @@ import { initializeSw } from '@/scripts/initialize-sw.js';
|
||||||
import { deckStore } from '@/ui/deck/deck-store.js';
|
import { deckStore } from '@/ui/deck/deck-store.js';
|
||||||
import { emojiPicker } from '@/scripts/emoji-picker.js';
|
import { emojiPicker } from '@/scripts/emoji-picker.js';
|
||||||
import { mainRouter } from '@/router/main.js';
|
import { mainRouter } from '@/router/main.js';
|
||||||
import { type Keymap, makeHotkey } from '@/scripts/hotkey.js';
|
import { makeHotkey } from '@/scripts/hotkey.js';
|
||||||
|
import type { Keymap } from '@/scripts/hotkey.js';
|
||||||
import { addCustomEmoji, removeCustomEmojis, updateCustomEmojis } from '@/custom-emojis.js';
|
import { addCustomEmoji, removeCustomEmojis, updateCustomEmojis } from '@/custom-emojis.js';
|
||||||
|
|
||||||
export async function mainBoot() {
|
export async function mainBoot() {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { HttpResponse, http } from 'msw';
|
import { HttpResponse, http } from 'msw';
|
||||||
import { userDetailed } from '../../.storybook/fakes.js';
|
import { userDetailed } from '../../.storybook/fakes.js';
|
||||||
import { commonHandlers } from '../../.storybook/mocks.js';
|
import { commonHandlers } from '../../.storybook/mocks.js';
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { HttpResponse, http } from 'msw';
|
import { HttpResponse, http } from 'msw';
|
||||||
import { commonHandlers } from '../../.storybook/mocks.js';
|
import { commonHandlers } from '../../.storybook/mocks.js';
|
||||||
import { userDetailed } from '../../.storybook/fakes.js';
|
import { userDetailed } from '../../.storybook/fakes.js';
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { HttpResponse, http } from 'msw';
|
import { HttpResponse, http } from 'msw';
|
||||||
import { userDetailed } from '../../.storybook/fakes.js';
|
import { userDetailed } from '../../.storybook/fakes.js';
|
||||||
import { commonHandlers } from '../../.storybook/mocks.js';
|
import { commonHandlers } from '../../.storybook/mocks.js';
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import isChromatic from 'chromatic/isChromatic';
|
import isChromatic from 'chromatic/isChromatic';
|
||||||
import MkAnalogClock from './MkAnalogClock.vue';
|
import MkAnalogClock from './MkAnalogClock.vue';
|
||||||
export const Default = {
|
export const Default = {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { HttpResponse, http } from 'msw';
|
import { HttpResponse, http } from 'msw';
|
||||||
import { commonHandlers } from '../../.storybook/mocks.js';
|
import { commonHandlers } from '../../.storybook/mocks.js';
|
||||||
import MkAnnouncementDialog from './MkAnnouncementDialog.vue';
|
import MkAnnouncementDialog from './MkAnnouncementDialog.vue';
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { HttpResponse, http } from 'msw';
|
import { HttpResponse, http } from 'msw';
|
||||||
import { commonHandlers } from '../../.storybook/mocks.js';
|
import { commonHandlers } from '../../.storybook/mocks.js';
|
||||||
import MkAntennaEditor from './MkAntennaEditor.vue';
|
import MkAntennaEditor from './MkAntennaEditor.vue';
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { HttpResponse, http } from 'msw';
|
import { HttpResponse, http } from 'msw';
|
||||||
import { commonHandlers } from '../../.storybook/mocks.js';
|
import { commonHandlers } from '../../.storybook/mocks.js';
|
||||||
import MkAntennaEditorDialog from './MkAntennaEditorDialog.vue';
|
import MkAntennaEditorDialog from './MkAntennaEditorDialog.vue';
|
||||||
|
|
|
@ -63,14 +63,15 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { Ref, ref, computed } from 'vue';
|
import { ref, computed } from 'vue';
|
||||||
|
import type { Ref } from 'vue';
|
||||||
import * as os from '@/os.js';
|
import * as os from '@/os.js';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import MkInput from '@/components/MkInput.vue';
|
import MkInput from '@/components/MkInput.vue';
|
||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import MkTextarea from '@/components/MkTextarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkSelect from '@/components/MkSelect.vue';
|
import MkSelect from '@/components/MkSelect.vue';
|
||||||
import { AsUiComponent, AsUiRoot, AsUiPostFormButton } from '@/scripts/aiscript/ui.js';
|
import type { AsUiComponent, AsUiRoot, AsUiPostFormButton } from '@/scripts/aiscript/ui.js';
|
||||||
import MkFolder from '@/components/MkFolder.vue';
|
import MkFolder from '@/components/MkFolder.vue';
|
||||||
import MkPostForm from '@/components/MkPostForm.vue';
|
import MkPostForm from '@/components/MkPostForm.vue';
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { expect, userEvent, waitFor, within } from '@storybook/test';
|
import { expect, userEvent, waitFor, within } from '@storybook/test';
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { HttpResponse, http } from 'msw';
|
import { HttpResponse, http } from 'msw';
|
||||||
import { userDetailed } from '../../.storybook/fakes.js';
|
import { userDetailed } from '../../.storybook/fakes.js';
|
||||||
import { commonHandlers } from '../../.storybook/mocks.js';
|
import { commonHandlers } from '../../.storybook/mocks.js';
|
||||||
|
|
|
@ -57,7 +57,8 @@ import { i18n } from '@/i18n.js';
|
||||||
import { miLocalStorage } from '@/local-storage.js';
|
import { miLocalStorage } from '@/local-storage.js';
|
||||||
import { customEmojis } from '@/custom-emojis.js';
|
import { customEmojis } from '@/custom-emojis.js';
|
||||||
import { MFM_TAGS, MFM_PARAMS } from '@@/js/const.js';
|
import { MFM_TAGS, MFM_PARAMS } from '@@/js/const.js';
|
||||||
import { searchEmoji, EmojiDef } from '@/scripts/search-emoji.js';
|
import { searchEmoji } from '@/scripts/search-emoji.js';
|
||||||
|
import type { EmojiDef } from '@/scripts/search-emoji.js';
|
||||||
|
|
||||||
const lib = emojilist.filter(x => x.category !== 'flags');
|
const lib = emojilist.filter(x => x.category !== 'flags');
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { HttpResponse, http } from 'msw';
|
import { HttpResponse, http } from 'msw';
|
||||||
import { userDetailed } from '../../.storybook/fakes.js';
|
import { userDetailed } from '../../.storybook/fakes.js';
|
||||||
import { commonHandlers } from '../../.storybook/mocks.js';
|
import { commonHandlers } from '../../.storybook/mocks.js';
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
/* eslint-disable import/no-default-export */
|
/* eslint-disable import/no-default-export */
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import MkButton from './MkButton.vue';
|
import MkButton from './MkButton.vue';
|
||||||
export const Default = {
|
export const Default = {
|
||||||
render(args) {
|
render(args) {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
/* eslint-disable import/no-default-export */
|
/* eslint-disable import/no-default-export */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { HttpResponse, http } from 'msw';
|
import { HttpResponse, http } from 'msw';
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { expect, userEvent, within } from '@storybook/test';
|
import { expect, userEvent, within } from '@storybook/test';
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
/* eslint-disable import/no-default-export */
|
/* eslint-disable import/no-default-export */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { HttpResponse, http } from 'msw';
|
import { HttpResponse, http } from 'msw';
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { channel } from '../../.storybook/fakes.js';
|
import { channel } from '../../.storybook/fakes.js';
|
||||||
|
|
|
@ -20,7 +20,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import MkChannelPreview from '@/components/MkChannelPreview.vue';
|
import MkChannelPreview from '@/components/MkChannelPreview.vue';
|
||||||
import MkPagination, { Paging } from '@/components/MkPagination.vue';
|
import MkPagination from '@/components/MkPagination.vue';
|
||||||
|
import type { Paging } from '@/components/MkPagination.vue';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import { infoImageUrl } from '@/instance.js';
|
import { infoImageUrl } from '@/instance.js';
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
/* eslint-disable import/no-default-export */
|
/* eslint-disable import/no-default-export */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { channel } from '../../.storybook/fakes.js';
|
import { channel } from '../../.storybook/fakes.js';
|
||||||
import MkChannelPreview from './MkChannelPreview.vue';
|
import MkChannelPreview from './MkChannelPreview.vue';
|
||||||
export const Default = {
|
export const Default = {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
/* eslint-disable import/no-default-export */
|
/* eslint-disable import/no-default-export */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { http } from 'msw';
|
import { http } from 'msw';
|
||||||
import { commonHandlers } from '../../.storybook/mocks.js';
|
import { commonHandlers } from '../../.storybook/mocks.js';
|
||||||
import { getChartResolver } from '../../.storybook/charts.js';
|
import { getChartResolver } from '../../.storybook/charts.js';
|
||||||
|
|
|
@ -14,7 +14,8 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { shallowRef } from 'vue';
|
import { shallowRef } from 'vue';
|
||||||
import { Chart, LegendItem } from 'chart.js';
|
import { Chart } from 'chart.js';
|
||||||
|
import type { LegendItem } from 'chart.js';
|
||||||
|
|
||||||
const chart = shallowRef<Chart>();
|
const chart = shallowRef<Chart>();
|
||||||
const type = shallowRef<string>();
|
const type = shallowRef<string>();
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
/* eslint-disable import/no-default-export */
|
/* eslint-disable import/no-default-export */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { HttpResponse, http } from 'msw';
|
import { HttpResponse, http } from 'msw';
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { expect, userEvent, within } from '@storybook/test';
|
import { expect, userEvent, within } from '@storybook/test';
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
/* eslint-disable import/no-default-export */
|
/* eslint-disable import/no-default-export */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { clip } from '../../.storybook/fakes.js';
|
import { clip } from '../../.storybook/fakes.js';
|
||||||
import MkClipPreview from './MkClipPreview.vue';
|
import MkClipPreview from './MkClipPreview.vue';
|
||||||
export const Default = {
|
export const Default = {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
/* eslint-disable import/no-default-export */
|
/* eslint-disable import/no-default-export */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import MkCode from './MkCode.vue';
|
import MkCode from './MkCode.vue';
|
||||||
const code = `for (let i, 100) {
|
const code = `for (let i, 100) {
|
||||||
<: if (i % 15 == 0) "FizzBuzz"
|
<: if (i % 15 == 0) "FizzBuzz"
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
/* eslint-disable import/no-default-export */
|
/* eslint-disable import/no-default-export */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import MkCodeEditor from './MkCodeEditor.vue';
|
import MkCodeEditor from './MkCodeEditor.vue';
|
||||||
const code = `for (let i, 100) {
|
const code = `for (let i, 100) {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
/* eslint-disable import/no-default-export */
|
/* eslint-disable import/no-default-export */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import MkCodeInline from './MkCodeInline.vue';
|
import MkCodeInline from './MkCodeInline.vue';
|
||||||
export const Default = {
|
export const Default = {
|
||||||
render(args) {
|
render(args) {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
/* eslint-disable import/no-default-export */
|
/* eslint-disable import/no-default-export */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import MkColorInput from './MkColorInput.vue';
|
import MkColorInput from './MkColorInput.vue';
|
||||||
export const Default = {
|
export const Default = {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
/* eslint-disable import/no-default-export */
|
/* eslint-disable import/no-default-export */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { userEvent, within } from '@storybook/test';
|
import { userEvent, within } from '@storybook/test';
|
||||||
import MkContextMenu from './MkContextMenu.vue';
|
import MkContextMenu from './MkContextMenu.vue';
|
||||||
import * as os from '@/os.js';
|
import * as os from '@/os.js';
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
/* eslint-disable import/no-default-export */
|
/* eslint-disable import/no-default-export */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { HttpResponse, http } from 'msw';
|
import { HttpResponse, http } from 'msw';
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { file } from '../../.storybook/fakes.js';
|
import { file } from '../../.storybook/fakes.js';
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
/* eslint-disable import/no-default-export */
|
/* eslint-disable import/no-default-export */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { emojiDetailed } from '../../.storybook/fakes.js';
|
import { emojiDetailed } from '../../.storybook/fakes.js';
|
||||||
import MkCustomEmojiDetailedDialog from './MkCustomEmojiDetailedDialog.vue';
|
import MkCustomEmojiDetailedDialog from './MkCustomEmojiDetailedDialog.vue';
|
||||||
export const Default = {
|
export const Default = {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
/* eslint-disable import/no-default-export */
|
/* eslint-disable import/no-default-export */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { expect, userEvent, within } from '@storybook/test';
|
import { expect, userEvent, within } from '@storybook/test';
|
||||||
import { file } from '../../.storybook/fakes.js';
|
import { file } from '../../.storybook/fakes.js';
|
||||||
|
|
|
@ -4,14 +4,15 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { defineComponent, h, PropType, TransitionGroup, useCssModule } from 'vue';
|
import { defineComponent, h, TransitionGroup, useCssModule } from 'vue';
|
||||||
|
import type { PropType } from 'vue';
|
||||||
import MkAd from '@/components/global/MkAd.vue';
|
import MkAd from '@/components/global/MkAd.vue';
|
||||||
import { isDebuggerEnabled, stackTraceInstances } from '@/debug.js';
|
import { isDebuggerEnabled, stackTraceInstances } from '@/debug.js';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import * as os from '@/os.js';
|
import * as os from '@/os.js';
|
||||||
import { instance } from '@/instance.js';
|
import { instance } from '@/instance.js';
|
||||||
import { defaultStore } from '@/store.js';
|
import { defaultStore } from '@/store.js';
|
||||||
import { MisskeyEntity } from '@/types/date-separated-list.js';
|
import type { MisskeyEntity } from '@/types/date-separated-list.js';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
props: {
|
props: {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { expect, userEvent, waitFor, within } from '@storybook/test';
|
import { expect, userEvent, waitFor, within } from '@storybook/test';
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import MkDialog from './MkDialog.vue';
|
import MkDialog from './MkDialog.vue';
|
||||||
const Base = {
|
const Base = {
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import isChromatic from 'chromatic/isChromatic';
|
import isChromatic from 'chromatic/isChromatic';
|
||||||
import MkDigitalClock from './MkDigitalClock.vue';
|
import MkDigitalClock from './MkDigitalClock.vue';
|
||||||
export const Default = {
|
export const Default = {
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { onBeforeUnmount } from 'vue';
|
import { onBeforeUnmount } from 'vue';
|
||||||
import MkDonation from './MkDonation.vue';
|
import MkDonation from './MkDonation.vue';
|
||||||
import { instance } from '@/instance.js';
|
import { instance } from '@/instance.js';
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import MkDrive_file from './MkDrive.file.vue';
|
import MkDrive_file from './MkDrive.file.vue';
|
||||||
import { file } from '../../.storybook/fakes.js';
|
import { file } from '../../.storybook/fakes.js';
|
||||||
export const Default = {
|
export const Default = {
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { http, HttpResponse } from 'msw';
|
import { http, HttpResponse } from 'msw';
|
||||||
import * as Misskey from 'misskey-js';
|
import * as Misskey from 'misskey-js';
|
||||||
import MkDrive_folder from './MkDrive.folder.vue';
|
import MkDrive_folder from './MkDrive.folder.vue';
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { http, HttpResponse } from 'msw';
|
import { http, HttpResponse } from 'msw';
|
||||||
import * as Misskey from 'misskey-js';
|
import * as Misskey from 'misskey-js';
|
||||||
import MkDrive from './MkDrive.vue';
|
import MkDrive from './MkDrive.vue';
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import MkDriveFileThumbnail from './MkDriveFileThumbnail.vue';
|
import MkDriveFileThumbnail from './MkDriveFileThumbnail.vue';
|
||||||
import { file } from '../../.storybook/fakes.js';
|
import { file } from '../../.storybook/fakes.js';
|
||||||
export const Default = {
|
export const Default = {
|
||||||
|
|
|
@ -61,8 +61,10 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref, computed, Ref } from 'vue';
|
import { ref, computed } from 'vue';
|
||||||
import { CustomEmojiFolderTree, getEmojiName } from '@@/js/emojilist.js';
|
import type { Ref } from 'vue';
|
||||||
|
import { getEmojiName } from '@@/js/emojilist.js';
|
||||||
|
import type { CustomEmojiFolderTree } from '@@/js/emojilist.js';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import { customEmojis } from '@/custom-emojis.js';
|
import { customEmojis } from '@/custom-emojis.js';
|
||||||
import MkEmojiPickerSection from '@/components/MkEmojiPicker.section.vue';
|
import MkEmojiPickerSection from '@/components/MkEmojiPicker.section.vue';
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { expect, userEvent, waitFor, within } from '@storybook/test';
|
import { expect, userEvent, waitFor, within } from '@storybook/test';
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import MkEmojiPicker from './MkEmojiPicker.vue';
|
import MkEmojiPicker from './MkEmojiPicker.vue';
|
||||||
export const Default = {
|
export const Default = {
|
||||||
|
|
|
@ -120,12 +120,14 @@ import * as Misskey from 'misskey-js';
|
||||||
import {
|
import {
|
||||||
emojilist,
|
emojilist,
|
||||||
emojiCharByCategory,
|
emojiCharByCategory,
|
||||||
UnicodeEmojiDef,
|
|
||||||
unicodeEmojiCategories as categories,
|
unicodeEmojiCategories as categories,
|
||||||
getEmojiName,
|
getEmojiName,
|
||||||
CustomEmojiFolderTree,
|
|
||||||
getUnicodeEmoji,
|
getUnicodeEmoji,
|
||||||
} from '@@/js/emojilist.js';
|
} from '@@/js/emojilist.js';
|
||||||
|
import type {
|
||||||
|
UnicodeEmojiDef,
|
||||||
|
CustomEmojiFolderTree,
|
||||||
|
} from '@@/js/emojilist.js';
|
||||||
import XSection from '@/components/MkEmojiPicker.section.vue';
|
import XSection from '@/components/MkEmojiPicker.section.vue';
|
||||||
import MkRippleEffect from '@/components/MkRippleEffect.vue';
|
import MkRippleEffect from '@/components/MkRippleEffect.vue';
|
||||||
import * as os from '@/os.js';
|
import * as os from '@/os.js';
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import MkExtensionInstaller from './MkExtensionInstaller.vue';
|
import MkExtensionInstaller from './MkExtensionInstaller.vue';
|
||||||
import lightTheme from '@@/themes/_light.json5';
|
import lightTheme from '@@/themes/_light.json5';
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import MkFlashPreview from './MkFlashPreview.vue';
|
import MkFlashPreview from './MkFlashPreview.vue';
|
||||||
import { flash } from './../../.storybook/fakes.js';
|
import { flash } from './../../.storybook/fakes.js';
|
||||||
export const Public = {
|
export const Public = {
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
import { expect, userEvent, waitFor, within } from '@storybook/test';
|
import { expect, userEvent, waitFor, within } from '@storybook/test';
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { galleryPost } from '../../.storybook/fakes.js';
|
import { galleryPost } from '../../.storybook/fakes.js';
|
||||||
import MkGalleryPostPreview from './MkGalleryPostPreview.vue';
|
import MkGalleryPostPreview from './MkGalleryPostPreview.vue';
|
||||||
export const Default = {
|
export const Default = {
|
||||||
|
|
|
@ -44,12 +44,14 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { onMounted, onUnmounted, nextTick, ref, shallowRef, watch, computed, toRefs, InputHTMLAttributes } from 'vue';
|
import { onMounted, onUnmounted, nextTick, ref, shallowRef, watch, computed, toRefs } from 'vue';
|
||||||
|
import type { InputHTMLAttributes } from 'vue';
|
||||||
import { debounce } from 'throttle-debounce';
|
import { debounce } from 'throttle-debounce';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import { useInterval } from '@@/js/use-interval.js';
|
import { useInterval } from '@@/js/use-interval.js';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import { Autocomplete, SuggestionType } from '@/scripts/autocomplete.js';
|
import { Autocomplete } from '@/scripts/autocomplete.js';
|
||||||
|
import type { SuggestionType } from '@/scripts/autocomplete.js';
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
modelValue: string | number | null;
|
modelValue: string | number | null;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
||||||
import { StoryObj } from '@storybook/vue3';
|
import type { StoryObj } from '@storybook/vue3';
|
||||||
import { HttpResponse, http } from 'msw';
|
import { HttpResponse, http } from 'msw';
|
||||||
import { federationInstance } from '../../.storybook/fakes.js';
|
import { federationInstance } from '../../.storybook/fakes.js';
|
||||||
import { commonHandlers } from '../../.storybook/mocks.js';
|
import { commonHandlers } from '../../.storybook/mocks.js';
|
||||||
|
|
|
@ -94,7 +94,8 @@ import * as os from '@/os.js';
|
||||||
import { misskeyApiGet } from '@/scripts/misskey-api.js';
|
import { misskeyApiGet } from '@/scripts/misskey-api.js';
|
||||||
import { instance } from '@/instance.js';
|
import { instance } from '@/instance.js';
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import MkHeatmap, { type HeatmapSource } from '@/components/MkHeatmap.vue';
|
import MkHeatmap from '@/components/MkHeatmap.vue';
|
||||||
|
import type { HeatmapSource } from '@/components/MkHeatmap.vue';
|
||||||
import MkFoldableSection from '@/components/MkFoldableSection.vue';
|
import MkFoldableSection from '@/components/MkFoldableSection.vue';
|
||||||
import MkRetentionHeatmap from '@/components/MkRetentionHeatmap.vue';
|
import MkRetentionHeatmap from '@/components/MkRetentionHeatmap.vue';
|
||||||
import MkRetentionLineChart from '@/components/MkRetentionLineChart.vue';
|
import MkRetentionLineChart from '@/components/MkRetentionLineChart.vue';
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue