Compare commits
22 Commits
Author | SHA1 | Date | |
---|---|---|---|
eb15d31ebf | |||
e7f1ab2d01 | |||
9d3beb3174 | |||
b6c3399abe | |||
0a28573845 | |||
937df577f1 | |||
e54fd6c2cb | |||
3caea9d33e | |||
b9e9631195 | |||
76bded455a | |||
c94d9210ed | |||
0f5db9558c | |||
35a8c37922 | |||
6ff84a1061 | |||
aae9bc4cf4 | |||
426c2fa5d1 | |||
dab728278c | |||
7555ab097a | |||
5b5b64d251 | |||
eb84445796 | |||
364bd9ae74 | |||
d4b0761549 |
57
CHANGELOG.md
57
CHANGELOG.md
@ -1,6 +1,63 @@
|
|||||||
ChangeLog
|
ChangeLog
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
Next (2020/7/)
|
||||||
|
-------------------
|
||||||
|
### ✨Improvements
|
||||||
|
- サウンドを追加 [b9e9631](https://github.com/syuilo/misskey/commit/b9e9631195a8ca5ed1386daeacdc835456d52975)
|
||||||
|
|
||||||
|
### 🐛Fixes
|
||||||
|
-
|
||||||
|
|
||||||
|
12.41.2 (2020/7/12)
|
||||||
|
-------------------
|
||||||
|
### ✨Improvements
|
||||||
|
- モーダルにぼかし効果を使用するオプション [aae9bc4c](https://github.com/syuilo/misskey/commit/aae9bc4cf4c583b4d675391fe3da2fa53b7f18e0)
|
||||||
|
- スタイルの調整 [eb84445](https://github.com/syuilo/misskey/commit/eb84445796039b93d124fa615e96c08fedcd9bf9), [dab7282](https://github.com/syuilo/misskey/commit/dab728278ca577622c575d1968eb6a22c7b444b9), [35a8c379](https://github.com/syuilo/misskey/commit/35a8c37922193317b3f6397562c762f9a9169b91)
|
||||||
|
|
||||||
|
### 🐛Fixes
|
||||||
|
- Deckのタイムラインを追加した直後のタイムライン種別の選択がキャンセルできない問題を修正 [#6535](https://github.com/syuilo/misskey/pull/6535)
|
||||||
|
- ノート詳細 /notes/:id ページの直リンを踏むと Not Found になる問題を修正 [364bd9a](https://github.com/syuilo/misskey/commit/364bd9ae74226c46ccdad810884bce11b2bef156)
|
||||||
|
- Deckでメインカラムの「投稿があります」をクリックしても上に行かない問題を修正 [5b5b64d](https://github.com/syuilo/misskey/commit/5b5b64d2514cf445aa81a6750ac4185f4e7dd8cd)
|
||||||
|
- 翻訳の修正 [7555ab0](https://github.com/syuilo/misskey/commit/7555ab097a6aab68851782b641a33fb3fdf2f101), [426c2fa](https://github.com/syuilo/misskey/commit/426c2fa5d152610516337cc5a53810e136d573db)
|
||||||
|
|
||||||
|
12.41.1 (2020/7/12)
|
||||||
|
-------------------
|
||||||
|
### ✨Improvements
|
||||||
|
- ResizeObserver Polyfillを削除 [c89abda](https://github.com/syuilo/misskey/commit/c89abda3fb55857bb81c4f2163a4a0396a04fc27)
|
||||||
|
* Misskey Webのパフォーマンスが劇的に改善されました
|
||||||
|
- スタイルの調整 [7cbe95a](https://github.com/syuilo/misskey/commit/7cbe95a1cf67f2536a6332bbccc7129afcd92f73), [320352b](https://github.com/syuilo/misskey/commit/320352bf4ba56ddd67c9c6bc0816dab94c53191b)
|
||||||
|
|
||||||
|
### 🐛Fixes
|
||||||
|
- サイドバーのホームを押すことでのトップへのスクロールが動作しなくなっている問題を修正 [3c66990](https://github.com/syuilo/misskey/commit/3c669902632570bb1354f6b53253037f183718b5)
|
||||||
|
|
||||||
|
12.41.0 (2020/7/12)
|
||||||
|
-------------------
|
||||||
|
### ✨Improvements
|
||||||
|
- デッキの実装 [#6504](https://github.com/syuilo/misskey/pull/6504), [065ec8e](https://github.com/syuilo/misskey/commit/065ec8e17080887814b1912233d38e412b2811d2), [debc008](https://github.com/syuilo/misskey/commit/debc0086fab6c131cf37f00e8b03fbe5d6f09c64)
|
||||||
|
- テーマエディターの実装 [#6482](https://github.com/syuilo/misskey/pull/6482)
|
||||||
|
- プラグインシステムの実装 [#6479](https://github.com/syuilo/misskey/pull/6479)
|
||||||
|
- ウィジェットの位置を固定するオプションを追加 [3799708](https://github.com/syuilo/misskey/commit/3799708daf52c221c03ff0b1c11d8b888b22d32f)
|
||||||
|
- ウィジェットの位置を固定しない場合、Twitterのようにstickyに画面追従するように [c25cf7f](https://github.com/syuilo/misskey/commit/c25cf7f89a1d3d7e55331396bbc3f44920a38de5)
|
||||||
|
- サウンドを追加 (syuilo/pirori) [d4b4b61](https://github.com/syuilo/misskey/commit/d4b4b61535ee4f5f759ba3342b55e978e43f1c7b)
|
||||||
|
- タイムライン上でTwitterの埋め込みプレビューを表示できるように [#6496](https://github.com/syuilo/misskey/pull/6496)
|
||||||
|
- デザインや挙動の調整 [#6495](https://github.com/syuilo/misskey/pull/6495), [752669b](https://github.com/syuilo/misskey/commit/752669bf5ea83b81ddcabb804e795a24debe6dc0), [#6497](https://github.com/syuilo/misskey/pull/6497), [ade11aa](https://github.com/syuilo/misskey/commit/ade11aa447f0102c9202955e01c59fcb501f794e), [27a17b4](https://github.com/syuilo/misskey/commit/27a17b467d72aea81774c04b8ca3e01ed6874b24), [4fd0636](https://github.com/syuilo/misskey/commit/4fd06369d355f032b5eb245dfd98faadee2289f9), [ca2e53b](https://github.com/syuilo/misskey/commit/ca2e53bd6e3de50f2fdf62da16734873be37fcc4), [8ff2694](https://github.com/syuilo/misskey/commit/8ff2694cadd3ab3d51f96fc2ea3bbfde29475660), [11f8d74](https://github.com/syuilo/misskey/commit/11f8d742eb53e8b815abc8ed1c34627dcbaa9e2f)
|
||||||
|
- ソースコードのリファクタ [a591a33](https://github.com/syuilo/misskey/commit/a591a334ed6fd7f8ed936bf7e7edfcce08de035a)
|
||||||
|
|
||||||
|
### 🐛Fixes
|
||||||
|
- 依存パッケージの更新 [#6491](https://github.com/syuilo/misskey/pull/6491), [#6516](https://github.com/syuilo/misskey/pull/6516), [d327bb8](https://github.com/syuilo/misskey/commit/d327bb8ff1b8765e92d6815d244e74f0793f6157)
|
||||||
|
- サーバーへのファイルダウンロードのタイムアウトを11秒から60秒に緩和 [#6503](https://github.com/syuilo/misskey/pull/6503)
|
||||||
|
- 非ログイン時にキーボードショートカットで投稿フォームが開けてしまう問題を修正 [#6508](https://github.com/syuilo/misskey/pull/6508)
|
||||||
|
- キャッシュされてないリモートファイルのURLが相対URLで返ってくる問題を修正 [#6514](https://github.com/syuilo/misskey/pull/6514)
|
||||||
|
* リモートファイルをキャッシュしない設定のインスタンスにおいてサードパーティークライアントでリモートの画像が表示できない問題が修正されます
|
||||||
|
- Mastodon v2.5.0未満からのActivityが受け取れない問題の修正 [#6518](https://github.com/syuilo/misskey/pull/6518)
|
||||||
|
- music.youtube.comのURLプレビューの修正 [#6496](https://github.com/syuilo/misskey/pull/6496)
|
||||||
|
- URLプレビューの翻訳を修正 [#6496](https://github.com/syuilo/misskey/pull/6496)
|
||||||
|
- ノートの表示幅が狭いとTwitterウィジェットがはみ出すのをなんとか修正 [#6496](https://github.com/syuilo/misskey/pull/6496)
|
||||||
|
- HiDPi環境でMisskey v12 Roomの家具を選択できない問題を修正 [#6507](https://github.com/syuilo/misskey/pull/6507)
|
||||||
|
- Safariでの検索インプット・検索ボタンのデザインが適用されないのを修正 [#6484](https://github.com/syuilo/misskey/pull/6484)
|
||||||
|
- フォロワーではないリモートユーザーに削除通知が配信されない問題を修正 [#6475](https://github.com/syuilo/misskey/pull/6475)
|
||||||
|
|
||||||
12.40.0 (2020/7/5)
|
12.40.0 (2020/7/5)
|
||||||
-------------------
|
-------------------
|
||||||
### ✨Improvements
|
### ✨Improvements
|
||||||
|
@ -33,6 +33,7 @@ copyLink: "انسخ الرابط"
|
|||||||
delete: "حذف"
|
delete: "حذف"
|
||||||
deleteAndEdit: "إزالة وإعادة الصياغة"
|
deleteAndEdit: "إزالة وإعادة الصياغة"
|
||||||
addToList: "أضفه إلى قائمة"
|
addToList: "أضفه إلى قائمة"
|
||||||
|
sendMessage: "أرسل رسالة"
|
||||||
copyUsername: "انسخ اسم المستخدم"
|
copyUsername: "انسخ اسم المستخدم"
|
||||||
reply: "رد"
|
reply: "رد"
|
||||||
loadMore: "عرض المزيد"
|
loadMore: "عرض المزيد"
|
||||||
@ -57,17 +58,20 @@ retry: "حاول مجددًا"
|
|||||||
enterListName: "اسم القائمة"
|
enterListName: "اسم القائمة"
|
||||||
privacy: "الخصوصية"
|
privacy: "الخصوصية"
|
||||||
makeFollowManuallyApprove: "القبول يدويا طلبات الإشتراك"
|
makeFollowManuallyApprove: "القبول يدويا طلبات الإشتراك"
|
||||||
|
defaultNoteVisibility: "مدى الرؤية الافتراضي"
|
||||||
follow: "تابِع"
|
follow: "تابِع"
|
||||||
followRequest: "طلب اشتراك"
|
followRequest: "طلب اشتراك"
|
||||||
followRequests: "طلبات الإشتراك"
|
followRequests: "طلبات الإشتراك"
|
||||||
unfollow: "إلغاء الاشتراك"
|
unfollow: "إلغاء الاشتراك"
|
||||||
followRequestPending: "طلبات الإشتراك المعلّقة"
|
followRequestPending: "طلبات الإشتراك المعلّقة"
|
||||||
|
unrenote: "إلغاء مشاركة الملاحظة"
|
||||||
quote: "اقتبس"
|
quote: "اقتبس"
|
||||||
pinnedNote: "ملاحظة مدبسة"
|
pinnedNote: "ملاحظة مدبسة"
|
||||||
you: "أنت"
|
you: "أنت"
|
||||||
clickToShow: "اضغط للعرض"
|
clickToShow: "اضغط للعرض"
|
||||||
sensitive: "محتوى حساس"
|
sensitive: "محتوى حساس"
|
||||||
add: "إضافة"
|
add: "إضافة"
|
||||||
|
rememberNoteVisibility: "تذكر إعدادت مدى رؤية الملاحظات"
|
||||||
enterFileName: "ادخل اسم الملف"
|
enterFileName: "ادخل اسم الملف"
|
||||||
mute: "اكتم"
|
mute: "اكتم"
|
||||||
unmute: "إلغاء الكتم"
|
unmute: "إلغاء الكتم"
|
||||||
@ -227,6 +231,7 @@ manageAntennas: "إدارة الهوائيات"
|
|||||||
name: "الإسم"
|
name: "الإسم"
|
||||||
antennaSource: "مصدر الهوائي"
|
antennaSource: "مصدر الهوائي"
|
||||||
antennaKeywords: "الكلمات المفتاحية للإستقبال"
|
antennaKeywords: "الكلمات المفتاحية للإستقبال"
|
||||||
|
withReplies: "بالردود"
|
||||||
notesAndReplies: "الملاحظات والردود"
|
notesAndReplies: "الملاحظات والردود"
|
||||||
withFiles: "بالمرفقات"
|
withFiles: "بالمرفقات"
|
||||||
silence: "اكتم"
|
silence: "اكتم"
|
||||||
@ -250,6 +255,7 @@ unregister: "إلغاء التسجيل"
|
|||||||
passwordLessLogin: "لِج مِن دون كلمة سرية"
|
passwordLessLogin: "لِج مِن دون كلمة سرية"
|
||||||
resetPassword: "أعد تعيين كلمتك السرية"
|
resetPassword: "أعد تعيين كلمتك السرية"
|
||||||
newPasswordIs: "كلمتك السرية الجديدة هي {password}"
|
newPasswordIs: "كلمتك السرية الجديدة هي {password}"
|
||||||
|
autoNoteWatch: "راقب الملاحظات تلقائيا"
|
||||||
share: "شارِك"
|
share: "شارِك"
|
||||||
notFound: "غير موجود"
|
notFound: "غير موجود"
|
||||||
help: "المساعدة"
|
help: "المساعدة"
|
||||||
@ -271,6 +277,8 @@ next: "التالية"
|
|||||||
retype: "أعد الكتابة"
|
retype: "أعد الكتابة"
|
||||||
noteOf: "ملاحظات {user}"
|
noteOf: "ملاحظات {user}"
|
||||||
inviteToGroup: "دعوة إلى فريق"
|
inviteToGroup: "دعوة إلى فريق"
|
||||||
|
noMessagesYet: "ليس هناك رسائل بعد"
|
||||||
|
newMessageExists: "لقد تلقيت رسالة جديدة"
|
||||||
invitationCode: "رمز الدعوة"
|
invitationCode: "رمز الدعوة"
|
||||||
checking: "التحقق جارٍ"
|
checking: "التحقق جارٍ"
|
||||||
available: "متوفر"
|
available: "متوفر"
|
||||||
@ -288,6 +296,7 @@ uiLanguage: "لغة واجهة المستخدم"
|
|||||||
aboutX: "عن {x}"
|
aboutX: "عن {x}"
|
||||||
useOsNativeEmojis: "استخدم الإيموجيات الخاصة بنظام التشغيل"
|
useOsNativeEmojis: "استخدم الإيموجيات الخاصة بنظام التشغيل"
|
||||||
youHaveNoGroups: "لا تمتلك أية فِرَق"
|
youHaveNoGroups: "لا تمتلك أية فِرَق"
|
||||||
|
noHistory: "السجل فارغ"
|
||||||
doing: "انتظر لحظة"
|
doing: "انتظر لحظة"
|
||||||
category: "الفئات"
|
category: "الفئات"
|
||||||
tags: "الوسوم"
|
tags: "الوسوم"
|
||||||
@ -330,10 +339,15 @@ rooms: "الغرفة"
|
|||||||
relays: "المُرَحلات"
|
relays: "المُرَحلات"
|
||||||
addRelay: "إضافة مُرحّل"
|
addRelay: "إضافة مُرحّل"
|
||||||
addedRelays: "المرحلات التي تم إضافتها"
|
addedRelays: "المرحلات التي تم إضافتها"
|
||||||
|
deletedNote: "ملاحظة محذوفة"
|
||||||
|
invisibleNote: "ملاحظة مخفية"
|
||||||
_theme:
|
_theme:
|
||||||
explore: "استكشف قوالب المظهر"
|
explore: "استكشف قوالب المظهر"
|
||||||
|
keys:
|
||||||
|
messageBg: "خلفية الدردشة"
|
||||||
_sfx:
|
_sfx:
|
||||||
note: "الملاحظات"
|
note: "الملاحظات"
|
||||||
|
noteMy: "ملاحظتي"
|
||||||
notification: "الإشعارات"
|
notification: "الإشعارات"
|
||||||
chat: "الدردشة"
|
chat: "الدردشة"
|
||||||
_ago:
|
_ago:
|
||||||
@ -409,6 +423,7 @@ _profile:
|
|||||||
username: "اسم المستخدم"
|
username: "اسم المستخدم"
|
||||||
youCanIncludeHashtags: "يمكنك أيضًا إضافة وسوم إلى نبذتك التعريفية."
|
youCanIncludeHashtags: "يمكنك أيضًا إضافة وسوم إلى نبذتك التعريفية."
|
||||||
_exportOrImport:
|
_exportOrImport:
|
||||||
|
allNotes: "كل الملاحظات"
|
||||||
followingList: "المتابَعون"
|
followingList: "المتابَعون"
|
||||||
muteList: "اكتم"
|
muteList: "اكتم"
|
||||||
blockingList: "احجب"
|
blockingList: "احجب"
|
||||||
@ -426,6 +441,7 @@ _rooms:
|
|||||||
default: "افتراضي"
|
default: "افتراضي"
|
||||||
_furnitures:
|
_furnitures:
|
||||||
monitor: "شاشة التحكم"
|
monitor: "شاشة التحكم"
|
||||||
|
banknote: "أوراق نقدية"
|
||||||
_pages:
|
_pages:
|
||||||
blocks:
|
blocks:
|
||||||
image: "الصور"
|
image: "الصور"
|
||||||
@ -453,6 +469,8 @@ _pages:
|
|||||||
types:
|
types:
|
||||||
array: "القوائم"
|
array: "القوائم"
|
||||||
_notification:
|
_notification:
|
||||||
|
youGotMessagingMessageFromUser: "لقد تلقيت رسالة مِن {name}"
|
||||||
|
youGotMessagingMessageFromGroup: "لقد أرسِلَت رسالة إلى الفريق {name}"
|
||||||
youWereFollowed: "يتابعك"
|
youWereFollowed: "يتابعك"
|
||||||
_deck:
|
_deck:
|
||||||
_columns:
|
_columns:
|
||||||
|
@ -523,6 +523,9 @@ themeEditor: "Farbthemen-Editor"
|
|||||||
description: "Beschreibung"
|
description: "Beschreibung"
|
||||||
author: "Autor"
|
author: "Autor"
|
||||||
leaveConfirm: "Es gibt unspeicherte Änderungen. Möchtest du diese verwerfen?"
|
leaveConfirm: "Es gibt unspeicherte Änderungen. Möchtest du diese verwerfen?"
|
||||||
|
manage: "Verwaltung"
|
||||||
|
plugins: "Plugins"
|
||||||
|
pluginInstallWarn: "Installiere nur vertrauenswürdige Plugins."
|
||||||
deck: "Deck"
|
deck: "Deck"
|
||||||
undeck: "Deck verlassen"
|
undeck: "Deck verlassen"
|
||||||
_theme:
|
_theme:
|
||||||
@ -1166,6 +1169,7 @@ _notification:
|
|||||||
_deck:
|
_deck:
|
||||||
alwaysShowMainColumn: "Hauptspalte immer zeigen"
|
alwaysShowMainColumn: "Hauptspalte immer zeigen"
|
||||||
columnAlign: "Spalten ausrichten"
|
columnAlign: "Spalten ausrichten"
|
||||||
|
addColumn: "Spalte hinzufügen"
|
||||||
_columns:
|
_columns:
|
||||||
widgets: "Widgets"
|
widgets: "Widgets"
|
||||||
notifications: "Benachrichtigungen"
|
notifications: "Benachrichtigungen"
|
||||||
|
@ -523,6 +523,9 @@ themeEditor: "Theme editor"
|
|||||||
description: "Description"
|
description: "Description"
|
||||||
author: "Author"
|
author: "Author"
|
||||||
leaveConfirm: "There are unsaved changes. Do you want to discard them?"
|
leaveConfirm: "There are unsaved changes. Do you want to discard them?"
|
||||||
|
manage: "Management"
|
||||||
|
plugins: "Plugins"
|
||||||
|
pluginInstallWarn: "Please do not install untrustworthy plugins."
|
||||||
deck: "Deck"
|
deck: "Deck"
|
||||||
undeck: "Leave Deck"
|
undeck: "Leave Deck"
|
||||||
_theme:
|
_theme:
|
||||||
@ -1166,6 +1169,7 @@ _notification:
|
|||||||
_deck:
|
_deck:
|
||||||
alwaysShowMainColumn: "Always show main column"
|
alwaysShowMainColumn: "Always show main column"
|
||||||
columnAlign: "Align columns"
|
columnAlign: "Align columns"
|
||||||
|
addColumn: "Add column"
|
||||||
_columns:
|
_columns:
|
||||||
widgets: "Widgets"
|
widgets: "Widgets"
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
|
@ -523,6 +523,9 @@ themeEditor: "Editor de temas"
|
|||||||
description: "Descripción"
|
description: "Descripción"
|
||||||
author: "Autor"
|
author: "Autor"
|
||||||
leaveConfirm: "Hay modificaciones sin guardar. ¿Desea descartarlas?"
|
leaveConfirm: "Hay modificaciones sin guardar. ¿Desea descartarlas?"
|
||||||
|
manage: "Administrar"
|
||||||
|
plugins: "Plugins"
|
||||||
|
pluginInstallWarn: "Por favor no instale plugins que no son de confianza"
|
||||||
_theme:
|
_theme:
|
||||||
explore: "Explorar temas"
|
explore: "Explorar temas"
|
||||||
install: "Instalar tema"
|
install: "Instalar tema"
|
||||||
@ -573,6 +576,27 @@ _theme:
|
|||||||
divider: "Divisor"
|
divider: "Divisor"
|
||||||
scrollbarHandle: "Cuadro de la barra de desplazamiento"
|
scrollbarHandle: "Cuadro de la barra de desplazamiento"
|
||||||
scrollbarHandleHover: "Cuadro de la barra de desplazamiento (hover)"
|
scrollbarHandleHover: "Cuadro de la barra de desplazamiento (hover)"
|
||||||
|
dateLabelFg: "Texto de la etiqueta de fecha"
|
||||||
|
infoBg: "Fondo de información"
|
||||||
|
infoFg: "Texto de información"
|
||||||
|
infoWarnBg: "Fondo de advertencias"
|
||||||
|
infoWarnFg: "Texto de advertencias"
|
||||||
|
cwBg: "Fondo del botón CW"
|
||||||
|
cwFg: "Texto del botón CW"
|
||||||
|
cwHoverBg: "Fondo del botón CW (hover)"
|
||||||
|
toastBg: "Fondo de notificaciones"
|
||||||
|
toastFg: "Texto de notificaciones"
|
||||||
|
buttonBg: "Fondo de botón"
|
||||||
|
buttonHoverBg: "Fondo de botón (hover)"
|
||||||
|
inputBorder: "Borde de los campos de entrada"
|
||||||
|
listItemHoverBg: "Fondo de elemento de listas (hover)"
|
||||||
|
driveFolderBg: "Fondo de capeta del drive"
|
||||||
|
wallpaperOverlay: "Transparencia del fondo de pantalla"
|
||||||
|
badge: "Medalla"
|
||||||
|
messageBg: "Fondo de chat"
|
||||||
|
accentDarken: "Acento (oscuro)"
|
||||||
|
accentLighten: "Acento (claro)"
|
||||||
|
fgHighlighted: "Texto resaltado"
|
||||||
_sfx:
|
_sfx:
|
||||||
note: "Notas"
|
note: "Notas"
|
||||||
noteMy: "Nota (a mí mismo)"
|
noteMy: "Nota (a mí mismo)"
|
||||||
@ -686,6 +710,7 @@ _widgets:
|
|||||||
rss: "Lector RSS"
|
rss: "Lector RSS"
|
||||||
activity: "Actividad"
|
activity: "Actividad"
|
||||||
photos: "Fotos"
|
photos: "Fotos"
|
||||||
|
digitalClock: "Reloj digital"
|
||||||
_cw:
|
_cw:
|
||||||
hide: "Ocultar"
|
hide: "Ocultar"
|
||||||
show: "Ver más"
|
show: "Ver más"
|
||||||
@ -1140,7 +1165,10 @@ _notification:
|
|||||||
yourFollowRequestAccepted: "Tu solicitud de seguimiento fue aceptada"
|
yourFollowRequestAccepted: "Tu solicitud de seguimiento fue aceptada"
|
||||||
youWereInvitedToGroup: "Invitado al grupo"
|
youWereInvitedToGroup: "Invitado al grupo"
|
||||||
_deck:
|
_deck:
|
||||||
|
alwaysShowMainColumn: "Siempre mostrar la columna principal"
|
||||||
|
columnAlign: "Alinear columnas"
|
||||||
_columns:
|
_columns:
|
||||||
|
widgets: "Widgets"
|
||||||
notifications: "Notificaciones"
|
notifications: "Notificaciones"
|
||||||
tl: "Linea de tiempo"
|
tl: "Linea de tiempo"
|
||||||
antenna: "Antenas"
|
antenna: "Antenas"
|
||||||
|
@ -516,6 +516,14 @@ visibility: "Visibilité"
|
|||||||
poll: "Sondage"
|
poll: "Sondage"
|
||||||
useCw: "Masquer le contenu"
|
useCw: "Masquer le contenu"
|
||||||
fixedWidgetsPosition: "Rendre la position du widget fixe"
|
fixedWidgetsPosition: "Rendre la position du widget fixe"
|
||||||
|
enablePlayer: "Activer le lecteur vidéo"
|
||||||
|
disablePlayer: "Désactiver le lecteur vidéo"
|
||||||
|
expandTweet: "Étendre le tweet"
|
||||||
|
themeEditor: "Éditeur de thèmes"
|
||||||
|
description: "Description"
|
||||||
|
author: "Auteur·rice"
|
||||||
|
manage: "Gestion"
|
||||||
|
plugins: "Extensions"
|
||||||
_theme:
|
_theme:
|
||||||
explore: "Explorer les thèmes"
|
explore: "Explorer les thèmes"
|
||||||
install: "Installer un thème"
|
install: "Installer un thème"
|
||||||
@ -524,12 +532,28 @@ _theme:
|
|||||||
installed: "{name} a été installé"
|
installed: "{name} a été installé"
|
||||||
alreadyInstalled: "Ce thème est déjà installé"
|
alreadyInstalled: "Ce thème est déjà installé"
|
||||||
invalid: "Le format du thème n'est pas valide"
|
invalid: "Le format du thème n'est pas valide"
|
||||||
|
make: "Créer un thème"
|
||||||
|
base: "Base"
|
||||||
defaultValue: "Valeur par défaut"
|
defaultValue: "Valeur par défaut"
|
||||||
|
color: "Couleur"
|
||||||
func: "Fonction"
|
func: "Fonction"
|
||||||
|
argument: "Argument"
|
||||||
|
alpha: "Transparence"
|
||||||
|
darken: "Assombrir"
|
||||||
keys:
|
keys:
|
||||||
|
bg: "Arrière-plan"
|
||||||
|
fg: "Texte"
|
||||||
|
focus: "Mise au point"
|
||||||
|
indicator: "Indicateur"
|
||||||
|
panel: "Panneau"
|
||||||
|
shadow: "Ombre"
|
||||||
|
header: "Entête"
|
||||||
|
navBg: "Fond de la barre latérale"
|
||||||
|
hashtag: "Hashtags"
|
||||||
mention: "Mentionner"
|
mention: "Mentionner"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
divider: "Séparateur"
|
divider: "Séparateur"
|
||||||
|
messageBg: "Arrière plan de la discussion"
|
||||||
_sfx:
|
_sfx:
|
||||||
note: "Nouvelle note"
|
note: "Nouvelle note"
|
||||||
noteMy: "Ma note"
|
noteMy: "Ma note"
|
||||||
@ -891,7 +915,7 @@ _pages:
|
|||||||
pushEvent: "Envoyer un évènement"
|
pushEvent: "Envoyer un évènement"
|
||||||
_pushEvent:
|
_pushEvent:
|
||||||
event: "Nom de l’évènement"
|
event: "Nom de l’évènement"
|
||||||
message: "Message à afficher lorsque appuyé"
|
message: "Message à afficher lorsqu’il est activé"
|
||||||
variable: "Variable à envoyer"
|
variable: "Variable à envoyer"
|
||||||
no-variable: "Rien"
|
no-variable: "Rien"
|
||||||
callAiScript: "Appeler AiScript"
|
callAiScript: "Appeler AiScript"
|
||||||
@ -1097,7 +1121,10 @@ _notification:
|
|||||||
yourFollowRequestAccepted: "Votre demande d’abonnement a été accepté"
|
yourFollowRequestAccepted: "Votre demande d’abonnement a été accepté"
|
||||||
youWereInvitedToGroup: "Invité au groupe"
|
youWereInvitedToGroup: "Invité au groupe"
|
||||||
_deck:
|
_deck:
|
||||||
|
alwaysShowMainColumn: "Toujours afficher la colonne principale"
|
||||||
|
columnAlign: "Aligner les colonnes"
|
||||||
_columns:
|
_columns:
|
||||||
|
widgets: "Widgets"
|
||||||
notifications: "Notifications"
|
notifications: "Notifications"
|
||||||
tl: "Fil"
|
tl: "Fil"
|
||||||
antenna: "Antennes"
|
antenna: "Antennes"
|
||||||
|
@ -528,6 +528,7 @@ plugins: "プラグイン"
|
|||||||
pluginInstallWarn: "信頼できないプラグインはインストールしないでください。"
|
pluginInstallWarn: "信頼できないプラグインはインストールしないでください。"
|
||||||
deck: "デッキ"
|
deck: "デッキ"
|
||||||
undeck: "デッキ解除"
|
undeck: "デッキ解除"
|
||||||
|
useBlurEffectForModal: "モーダルにぼかし効果を使用"
|
||||||
|
|
||||||
_theme:
|
_theme:
|
||||||
explore: "テーマを探す"
|
explore: "テーマを探す"
|
||||||
@ -1206,6 +1207,7 @@ _notification:
|
|||||||
_deck:
|
_deck:
|
||||||
alwaysShowMainColumn: "常にメインカラムを表示"
|
alwaysShowMainColumn: "常にメインカラムを表示"
|
||||||
columnAlign: "カラムの寄せ"
|
columnAlign: "カラムの寄せ"
|
||||||
|
addColumn: "カラムを追加"
|
||||||
|
|
||||||
_columns:
|
_columns:
|
||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
|
@ -511,9 +511,23 @@ addedRelays: "추가된 릴레이"
|
|||||||
serviceworkerInfo: "푸시 알림을 수행하려면 활성화해야 합니다."
|
serviceworkerInfo: "푸시 알림을 수행하려면 활성화해야 합니다."
|
||||||
deletedNote: "삭제된 노트"
|
deletedNote: "삭제된 노트"
|
||||||
invisibleNote: "비공개 노트"
|
invisibleNote: "비공개 노트"
|
||||||
|
enableInfiniteScroll: "자동으로 좀 더 보기"
|
||||||
visibility: "공개 범위"
|
visibility: "공개 범위"
|
||||||
poll: "투표"
|
poll: "투표"
|
||||||
useCw: "내용 숨기기"
|
useCw: "내용 숨기기"
|
||||||
|
fixedWidgetsPosition: "위젯의 위치 고정"
|
||||||
|
enablePlayer: "플레이어 열기"
|
||||||
|
disablePlayer: "플레이어 닫기"
|
||||||
|
expandTweet: "트윗 확장하기"
|
||||||
|
themeEditor: "테마 에디터"
|
||||||
|
description: "설명"
|
||||||
|
author: "작성자"
|
||||||
|
leaveConfirm: "저장하지 않은 변경사항이 있습니다. 취소하시겠습니까?"
|
||||||
|
manage: "관리"
|
||||||
|
plugins: "플러그인"
|
||||||
|
pluginInstallWarn: "신뢰할 수 없는 플러그인은 설치하지 마십시오."
|
||||||
|
deck: "덱"
|
||||||
|
undeck: "덱 해제"
|
||||||
_theme:
|
_theme:
|
||||||
explore: "테마 찾아보기"
|
explore: "테마 찾아보기"
|
||||||
install: "테마 설치"
|
install: "테마 설치"
|
||||||
@ -522,8 +536,18 @@ _theme:
|
|||||||
installed: "{name} 테마가 설치되었습니다"
|
installed: "{name} 테마가 설치되었습니다"
|
||||||
alreadyInstalled: "이미 설치된 테마입니다"
|
alreadyInstalled: "이미 설치된 테마입니다"
|
||||||
invalid: "테마 형식이 올바르지 않습니다"
|
invalid: "테마 형식이 올바르지 않습니다"
|
||||||
|
make: "테마 만들기"
|
||||||
|
base: "베이스"
|
||||||
|
addConstant: "상수 추가"
|
||||||
|
constant: "상수"
|
||||||
defaultValue: "기본값"
|
defaultValue: "기본값"
|
||||||
|
color: "색"
|
||||||
|
refProp: "프로퍼티를 참조"
|
||||||
|
refConst: "상수를 참조"
|
||||||
|
key: "키"
|
||||||
func: "함수"
|
func: "함수"
|
||||||
|
funcKind: "함수 종류"
|
||||||
|
argument: "매개변수"
|
||||||
keys:
|
keys:
|
||||||
mention: "멘션"
|
mention: "멘션"
|
||||||
renote: "Renote"
|
renote: "Renote"
|
||||||
|
@ -46,7 +46,7 @@ youGotNewFollower: "你有新的关注者"
|
|||||||
receiveFollowRequest: "您收到了关注请求"
|
receiveFollowRequest: "您收到了关注请求"
|
||||||
followRequestAccepted: "您的关注请求被通过了"
|
followRequestAccepted: "您的关注请求被通过了"
|
||||||
mention: "提及"
|
mention: "提及"
|
||||||
mentions: "提到我的"
|
mentions: "提及"
|
||||||
directNotes: "私信"
|
directNotes: "私信"
|
||||||
importAndExport: "导入和导出"
|
importAndExport: "导入和导出"
|
||||||
import: "导入"
|
import: "导入"
|
||||||
@ -523,6 +523,9 @@ themeEditor: "主题编辑器"
|
|||||||
description: "描述"
|
description: "描述"
|
||||||
author: "作者"
|
author: "作者"
|
||||||
leaveConfirm: "存在未保存的更改。要放弃更改吗?"
|
leaveConfirm: "存在未保存的更改。要放弃更改吗?"
|
||||||
|
manage: "管理"
|
||||||
|
plugins: "插件"
|
||||||
|
pluginInstallWarn: "请不要安装不明来源的插件"
|
||||||
deck: "Deck"
|
deck: "Deck"
|
||||||
undeck: "取消Deck"
|
undeck: "取消Deck"
|
||||||
_theme:
|
_theme:
|
||||||
@ -534,17 +537,66 @@ _theme:
|
|||||||
alreadyInstalled: "此主题已经安装"
|
alreadyInstalled: "此主题已经安装"
|
||||||
invalid: "主题格式错误"
|
invalid: "主题格式错误"
|
||||||
make: "主题制作"
|
make: "主题制作"
|
||||||
|
base: "基于"
|
||||||
|
addConstant: "添加常量"
|
||||||
constant: "常量"
|
constant: "常量"
|
||||||
defaultValue: "默认值"
|
defaultValue: "默认值"
|
||||||
color: "颜色"
|
color: "颜色"
|
||||||
|
refProp: "查看属性"
|
||||||
|
refConst: "查看常量"
|
||||||
|
key: "主要"
|
||||||
func: "函数"
|
func: "函数"
|
||||||
|
funcKind: "功能类型"
|
||||||
|
argument: "参数"
|
||||||
|
basedProp: "基于的属性名称"
|
||||||
alpha: "不透明度"
|
alpha: "不透明度"
|
||||||
|
darken: "暗色"
|
||||||
|
lighten: "亮色"
|
||||||
|
inputConstantName: "请输入常量名称"
|
||||||
|
importInfo: "您可以在此处粘贴主题代码,将其导入到编辑器中"
|
||||||
|
deleteConstantConfirm: "确定要删除常量{const}吗?"
|
||||||
keys:
|
keys:
|
||||||
header: "页眉"
|
accent: "强调色"
|
||||||
|
bg: "背景"
|
||||||
|
fg: "文本"
|
||||||
|
focus: "聚焦"
|
||||||
|
indicator: "标记"
|
||||||
|
panel: "面板"
|
||||||
|
shadow: "阴影"
|
||||||
|
header: "顶栏"
|
||||||
navBg: "侧边栏背景"
|
navBg: "侧边栏背景"
|
||||||
|
navFg: "侧栏文本"
|
||||||
|
navHoverFg: "侧栏文本(悬停)"
|
||||||
|
navActive: "侧栏文本(活动)"
|
||||||
|
navIndicator: "侧栏标记"
|
||||||
|
link: "链接"
|
||||||
|
hashtag: "话题标签"
|
||||||
mention: "提及"
|
mention: "提及"
|
||||||
|
mentionMe: "提及"
|
||||||
renote: "转发"
|
renote: "转发"
|
||||||
|
modalBg: "模块背景"
|
||||||
divider: "分割线"
|
divider: "分割线"
|
||||||
|
scrollbarHandle: "滚动条"
|
||||||
|
scrollbarHandleHover: "滚动条(悬停)"
|
||||||
|
dateLabelFg: "日期标签文字"
|
||||||
|
infoBg: "信息背景"
|
||||||
|
infoFg: "信息文本"
|
||||||
|
infoWarnBg: "警告背景"
|
||||||
|
infoWarnFg: "警告文本"
|
||||||
|
cwBg: "CW 按钮背景"
|
||||||
|
cwFg: "CW 按钮文本"
|
||||||
|
cwHoverBg: "CW 按钮背景(悬停)"
|
||||||
|
toastBg: "吐司提示背景"
|
||||||
|
toastFg: "土司提示文本"
|
||||||
|
buttonBg: "按钮背景"
|
||||||
|
buttonHoverBg: "按钮背景(悬停)"
|
||||||
|
inputBorder: "输入框边框"
|
||||||
|
listItemHoverBg: "下拉列表项目背景(悬停)"
|
||||||
|
driveFolderBg: "驱动器文件夹背景"
|
||||||
|
wallpaperOverlay: "壁纸叠加层"
|
||||||
|
badge: "徽章"
|
||||||
|
messageBg: "聊天背景"
|
||||||
|
fgHighlighted: "高亮显示文本"
|
||||||
_sfx:
|
_sfx:
|
||||||
note: "帖子"
|
note: "帖子"
|
||||||
noteMy: "我的帖子"
|
noteMy: "我的帖子"
|
||||||
@ -1121,5 +1173,5 @@ _deck:
|
|||||||
tl: "时间线"
|
tl: "时间线"
|
||||||
antenna: "天线"
|
antenna: "天线"
|
||||||
list: "列表"
|
list: "列表"
|
||||||
mentions: "提到我的"
|
mentions: "提及"
|
||||||
direct: "指定用户"
|
direct: "指定用户"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"author": "syuilo <syuilotan@yahoo.co.jp>",
|
"author": "syuilo <syuilotan@yahoo.co.jp>",
|
||||||
"version": "12.41.1",
|
"version": "12.41.3",
|
||||||
"codename": "indigo",
|
"codename": "indigo",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@ -45,7 +45,7 @@
|
|||||||
"@fortawesome/vue-fontawesome": "0.1.10",
|
"@fortawesome/vue-fontawesome": "0.1.10",
|
||||||
"@koa/cors": "3.1.0",
|
"@koa/cors": "3.1.0",
|
||||||
"@koa/multer": "3.0.0",
|
"@koa/multer": "3.0.0",
|
||||||
"@koa/router": "9.3.1",
|
"@koa/router": "9.0.1",
|
||||||
"@sinonjs/fake-timers": "6.0.1",
|
"@sinonjs/fake-timers": "6.0.1",
|
||||||
"@syuilo/aiscript": "0.7.2",
|
"@syuilo/aiscript": "0.7.2",
|
||||||
"@types/bcryptjs": "2.4.2",
|
"@types/bcryptjs": "2.4.2",
|
||||||
|
@ -375,7 +375,8 @@ export default Vue.extend({
|
|||||||
$left-widgets-hide-threshold: 1600px;
|
$left-widgets-hide-threshold: 1600px;
|
||||||
$right-widgets-hide-threshold: 1090px;
|
$right-widgets-hide-threshold: 1090px;
|
||||||
|
|
||||||
min-height: 100vh;
|
// ほんとは単に 100vh と書きたいところだが... https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
|
||||||
|
min-height: calc(var(--vh, 1vh) * 100);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding-top: $header-height;
|
padding-top: $header-height;
|
||||||
|
|
||||||
@ -544,7 +545,8 @@ export default Vue.extend({
|
|||||||
|
|
||||||
> .content {
|
> .content {
|
||||||
> * {
|
> * {
|
||||||
min-height: calc(100vh - #{$header-height});
|
// ほんとは単に calc(100vh - #{$header-height}) と書きたいところだが... https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
|
||||||
|
min-height: calc((var(--vh, 1vh) * 100) - #{$header-height});
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: var(--margin);
|
padding: var(--margin);
|
||||||
|
|
||||||
@ -597,7 +599,8 @@ export default Vue.extend({
|
|||||||
&.fixed {
|
&.fixed {
|
||||||
position: sticky;
|
position: sticky;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
height: calc(100vh - #{$header-height});
|
// ほんとは単に calc(100vh - #{$header-height}) と書きたいところだが... https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
|
||||||
|
height: calc((var(--vh, 1vh) * 100) - #{$header-height});
|
||||||
top: $header-height;
|
top: $header-height;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -620,7 +623,8 @@ export default Vue.extend({
|
|||||||
> .container {
|
> .container {
|
||||||
position: sticky;
|
position: sticky;
|
||||||
height: min-content;
|
height: min-content;
|
||||||
min-height: calc(100vh - #{$header-height});
|
// ほんとは単に calc(100vh - #{$header-height}) と書きたいところだが... https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
|
||||||
|
min-height: calc((var(--vh, 1vh) * 100) - #{$header-height});
|
||||||
padding: var(--margin) 0;
|
padding: var(--margin) 0;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
BIN
src/client/assets/sounds/syuilo/pirori-square-wet.mp3
Normal file
BIN
src/client/assets/sounds/syuilo/pirori-square-wet.mp3
Normal file
Binary file not shown.
BIN
src/client/assets/sounds/syuilo/pirori-wet.mp3
Normal file
BIN
src/client/assets/sounds/syuilo/pirori-wet.mp3
Normal file
Binary file not shown.
@ -95,7 +95,7 @@ export default Vue.extend({
|
|||||||
});
|
});
|
||||||
if (canceled) {
|
if (canceled) {
|
||||||
if (this.column.tl == null) {
|
if (this.column.tl == null) {
|
||||||
this.setType();
|
this.$store.commit('deviceUser/removeDeckColumn', this.column.id);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-dialog" :class="{ iconOnly }">
|
<div class="mk-dialog" :class="{ iconOnly }">
|
||||||
<transition :name="$store.state.device.animation ? 'bg-fade' : ''" appear>
|
<transition :name="$store.state.device.animation ? 'bg-fade' : ''" appear>
|
||||||
<div class="bg" ref="bg" @click="onBgClick" v-if="show"></div>
|
<div class="bg _modalBg" ref="bg" @click="onBgClick" v-if="show"></div>
|
||||||
</transition>
|
</transition>
|
||||||
<transition :name="$store.state.device.animation ? 'dialog' : ''" appear @after-leave="() => { destroyDom(); }">
|
<transition :name="$store.state.device.animation ? 'dialog' : ''" appear @after-leave="() => { destroyDom(); }">
|
||||||
<div class="main" ref="main" v-if="show">
|
<div class="main" ref="main" v-if="show">
|
||||||
@ -245,16 +245,6 @@ export default Vue.extend({
|
|||||||
width: initial;
|
width: initial;
|
||||||
}
|
}
|
||||||
|
|
||||||
> .bg {
|
|
||||||
display: block;
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: rgba(0,0,0,0.7);
|
|
||||||
}
|
|
||||||
|
|
||||||
> .main {
|
> .main {
|
||||||
display: block;
|
display: block;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-modal" v-hotkey.global="keymap">
|
<div class="mk-modal" v-hotkey.global="keymap">
|
||||||
<transition :name="$store.state.device.animation ? 'bg-fade' : ''" appear>
|
<transition :name="$store.state.device.animation ? 'bg-fade' : ''" appear>
|
||||||
<div class="bg" ref="bg" v-if="show" @click="canClose ? close() : () => {}"></div>
|
<div class="bg _modalBg" ref="bg" v-if="show" @click="canClose ? close() : () => {}"></div>
|
||||||
</transition>
|
</transition>
|
||||||
<transition :name="$store.state.device.animation ? 'modal' : ''" appear @after-leave="() => { $emit('closed'); destroyDom(); }">
|
<transition :name="$store.state.device.animation ? 'modal' : ''" appear @after-leave="() => { $emit('closed'); destroyDom(); }">
|
||||||
<div class="content" ref="content" v-if="show" @click.self="canClose ? close() : () => {}"><slot></slot></div>
|
<div class="content" ref="content" v-if="show" @click.self="canClose ? close() : () => {}"><slot></slot></div>
|
||||||
@ -60,13 +60,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
.mk-modal {
|
.mk-modal {
|
||||||
> .bg {
|
> .bg {
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: 10000;
|
z-index: 10000;
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: var(--modalBg)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
> .content {
|
> .content {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-popup" v-hotkey.global="keymap">
|
<div class="mk-popup" v-hotkey.global="keymap">
|
||||||
<transition :name="$store.state.device.animation ? 'bg-fade' : ''" appear>
|
<transition :name="$store.state.device.animation ? 'bg-fade' : ''" appear>
|
||||||
<div class="bg" ref="bg" @click="close()" v-if="show"></div>
|
<div class="bg _modalBg" ref="bg" @click="close()" v-if="show"></div>
|
||||||
</transition>
|
</transition>
|
||||||
<transition :name="$store.state.device.animation ? 'popup' : ''" appear @after-leave="() => { $emit('closed'); destroyDom(); }">
|
<transition :name="$store.state.device.animation ? 'popup' : ''" appear @after-leave="() => { $emit('closed'); destroyDom(); }">
|
||||||
<div class="content" :class="{ fixed }" ref="content" v-if="show" :style="{ width: width ? width + 'px' : 'auto' }"><slot></slot></div>
|
<div class="content" :class="{ fixed }" ref="content" v-if="show" :style="{ width: width ? width + 'px' : 'auto' }"><slot></slot></div>
|
||||||
@ -128,13 +128,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
.mk-popup {
|
.mk-popup {
|
||||||
> .bg {
|
> .bg {
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: 10000;
|
z-index: 10000;
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: var(--modalBg)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
> .content {
|
> .content {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="ulveipglmagnxfgvitaxyszerjwiqmwl">
|
<div class="ulveipgl">
|
||||||
<transition :name="$store.state.device.animation ? 'form-fade' : ''" appear @after-leave="$emit('closed');">
|
<transition :name="$store.state.device.animation ? 'form-fade' : ''" appear @after-leave="$emit('closed');">
|
||||||
<div class="bg" ref="bg" v-if="show" @click="close()"></div>
|
<div class="bg _modalBg" ref="bg" v-if="show" @click="close()"></div>
|
||||||
</transition>
|
</transition>
|
||||||
<div class="main" ref="main" @click.self="close()" @keydown="onKeydown">
|
<div class="main" ref="main" @click.self="close()" @keydown="onKeydown">
|
||||||
<transition :name="$store.state.device.animation ? 'form' : ''" appear
|
<transition :name="$store.state.device.animation ? 'form' : ''" appear
|
||||||
@ -119,16 +119,9 @@ export default Vue.extend({
|
|||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ulveipglmagnxfgvitaxyszerjwiqmwl {
|
.ulveipgl {
|
||||||
> .bg {
|
> .bg {
|
||||||
display: block;
|
|
||||||
position: fixed;
|
|
||||||
z-index: 10000;
|
z-index: 10000;
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: rgba(#000, 0.7);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
> .main {
|
> .main {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mvcprjjd">
|
<div class="mvcprjjd">
|
||||||
<transition name="nav-back">
|
<transition name="nav-back">
|
||||||
<div class="nav-back"
|
<div class="nav-back _modalBg"
|
||||||
v-if="showing"
|
v-if="showing"
|
||||||
@click="showing = false"
|
@click="showing = false"
|
||||||
@touchstart="showing = false"
|
@touchstart="showing = false"
|
||||||
@ -320,13 +320,7 @@ export default Vue.extend({
|
|||||||
$nav-hide-threshold: 650px; // TODO: どこかに集約したい
|
$nav-hide-threshold: 650px; // TODO: どこかに集約したい
|
||||||
|
|
||||||
> .nav-back {
|
> .nav-back {
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
z-index: 1001;
|
z-index: 1001;
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background: var(--modalBg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
> .nav {
|
> .nav {
|
||||||
@ -359,7 +353,8 @@ export default Vue.extend({
|
|||||||
left: 0;
|
left: 0;
|
||||||
z-index: 1001;
|
z-index: 1001;
|
||||||
width: $nav-width;
|
width: $nav-width;
|
||||||
height: 100vh;
|
// ほんとは単に 100vh と書きたいところだが... https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
|
||||||
|
height: calc(var(--vh, 1vh) * 100);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
background: var(--navBg);
|
background: var(--navBg);
|
||||||
|
@ -61,6 +61,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
tick() {
|
tick() {
|
||||||
|
// TODO: パフォーマンス向上のため、このコンポーネントが画面内に表示されている場合のみ更新する
|
||||||
this.now = new Date();
|
this.now = new Date();
|
||||||
|
|
||||||
this.tickId = setTimeout(() => {
|
this.tickId = setTimeout(() => {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="fgmtyycl _panel" :style="{ top: top + 'px', left: left + 'px' }">
|
<div class="fgmtyycl _panel _shadow" :style="{ top: top + 'px', left: left + 'px' }">
|
||||||
<mk-url-preview :url="url"/>
|
<mk-url-preview :url="url"/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<transition name="popup" appear @after-leave="() => { $emit('closed'); destroyDom(); }">
|
<transition name="popup" appear @after-leave="() => { $emit('closed'); destroyDom(); }">
|
||||||
<div v-if="show" class="fxxzrfni _panel" ref="content" :style="{ top: top + 'px', left: left + 'px' }" @mouseover="() => { $emit('mouseover'); }" @mouseleave="() => { $emit('mouseleave'); }">
|
<div v-if="show" class="fxxzrfni _panel _shadow" ref="content" :style="{ top: top + 'px', left: left + 'px' }" @mouseover="() => { $emit('mouseover'); }" @mouseleave="() => { $emit('mouseleave'); }">
|
||||||
<div class="banner" :style="u.bannerUrl ? `background-image: url(${u.bannerUrl})` : ''"></div>
|
<div class="banner" :style="u.bannerUrl ? `background-image: url(${u.bannerUrl})` : ''"></div>
|
||||||
<mk-avatar class="avatar" :user="u" :disable-preview="true"/>
|
<mk-avatar class="avatar" :user="u" :disable-preview="true"/>
|
||||||
<div class="title">
|
<div class="title">
|
||||||
|
@ -211,7 +211,8 @@ export default Vue.extend({
|
|||||||
--margin: var(--marginHalf);
|
--margin: var(--marginHalf);
|
||||||
|
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 100vh;
|
// ほんとは単に 100vh と書きたいところだが... https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
|
||||||
|
height: calc(var(--vh, 1vh) * 100);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
padding: $deckMargin 0 $deckMargin $deckMargin;
|
padding: $deckMargin 0 $deckMargin $deckMargin;
|
||||||
|
@ -59,6 +59,16 @@ if (localStorage.getItem('theme') == null) {
|
|||||||
applyTheme(lightTheme);
|
applyTheme(lightTheme);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//#region SEE: https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
|
||||||
|
// TODO: いつの日にか消したい
|
||||||
|
const vh = window.innerHeight * 0.01;
|
||||||
|
document.documentElement.style.setProperty('--vh', `${vh}px`);
|
||||||
|
window.addEventListener('resize', () => {
|
||||||
|
const vh = window.innerHeight * 0.01;
|
||||||
|
document.documentElement.style.setProperty('--vh', `${vh}px`);
|
||||||
|
});
|
||||||
|
//#endregion
|
||||||
|
|
||||||
//#region Detect the user language
|
//#region Detect the user language
|
||||||
let lang = localStorage.getItem('lang');
|
let lang = localStorage.getItem('lang');
|
||||||
|
|
||||||
@ -98,44 +108,26 @@ const html = document.documentElement;
|
|||||||
html.setAttribute('lang', lang);
|
html.setAttribute('lang', lang);
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
// http://qiita.com/junya/items/3ff380878f26ca447f85
|
|
||||||
document.body.setAttribute('ontouchstart', '');
|
|
||||||
|
|
||||||
// アプリ基底要素マウント
|
// アプリ基底要素マウント
|
||||||
document.body.innerHTML = '<div id="app"></div>';
|
document.body.innerHTML = '<div id="app"></div>';
|
||||||
|
|
||||||
const store = createStore();
|
const store = createStore();
|
||||||
|
|
||||||
|
// 他のタブと永続化されたstateを同期
|
||||||
|
window.addEventListener('storage', e => {
|
||||||
|
if (e.key === 'vuex') {
|
||||||
|
store.replaceState({
|
||||||
|
...store.state,
|
||||||
|
...JSON.parse(e.newValue)
|
||||||
|
});
|
||||||
|
} else if (e.key === 'i') {
|
||||||
|
location.reload();
|
||||||
|
}
|
||||||
|
}, false);
|
||||||
|
|
||||||
const os = new MiOS(store);
|
const os = new MiOS(store);
|
||||||
|
|
||||||
os.init(async () => {
|
os.init(async () => {
|
||||||
window.addEventListener('storage', e => {
|
|
||||||
if (e.key === 'vuex') {
|
|
||||||
store.replaceState(JSON.parse(localStorage['vuex']));
|
|
||||||
} else if (e.key === 'i') {
|
|
||||||
location.reload();
|
|
||||||
}
|
|
||||||
}, false);
|
|
||||||
|
|
||||||
store.watch(state => state.device.darkMode, darkMode => {
|
|
||||||
import('./scripts/theme').then(({ builtinThemes }) => {
|
|
||||||
const themes = builtinThemes.concat(store.state.device.themes);
|
|
||||||
applyTheme(themes.find(x => x.id === (darkMode ? store.state.device.darkTheme : store.state.device.lightTheme)));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
//#region Sync dark mode
|
|
||||||
if (store.state.device.syncDeviceDarkMode) {
|
|
||||||
store.commit('device/set', { key: 'darkMode', value: isDeviceDarkmode() });
|
|
||||||
}
|
|
||||||
|
|
||||||
window.matchMedia('(prefers-color-scheme: dark)').addListener(mql => {
|
|
||||||
if (store.state.device.syncDeviceDarkMode) {
|
|
||||||
store.commit('device/set', { key: 'darkMode', value: mql.matches });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
//#endregion
|
|
||||||
|
|
||||||
//#region Fetch locale data
|
//#region Fetch locale data
|
||||||
const i18n = new VueI18n();
|
const i18n = new VueI18n();
|
||||||
|
|
||||||
@ -148,13 +140,6 @@ os.init(async () => {
|
|||||||
});
|
});
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
if ('Notification' in window && store.getters.isSignedIn) {
|
|
||||||
// 許可を得ていなかったらリクエスト
|
|
||||||
if (Notification.permission === 'default') {
|
|
||||||
Notification.requestPermission();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const app = new Vue({
|
const app = new Vue({
|
||||||
store: store,
|
store: store,
|
||||||
i18n,
|
i18n,
|
||||||
@ -228,6 +213,29 @@ os.init(async () => {
|
|||||||
// マウント
|
// マウント
|
||||||
app.$mount('#app');
|
app.$mount('#app');
|
||||||
|
|
||||||
|
store.watch(state => state.device.darkMode, darkMode => {
|
||||||
|
import('./scripts/theme').then(({ builtinThemes }) => {
|
||||||
|
const themes = builtinThemes.concat(store.state.device.themes);
|
||||||
|
applyTheme(themes.find(x => x.id === (darkMode ? store.state.device.darkTheme : store.state.device.lightTheme)));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
//#region Sync dark mode
|
||||||
|
if (store.state.device.syncDeviceDarkMode) {
|
||||||
|
store.commit('device/set', { key: 'darkMode', value: isDeviceDarkmode() });
|
||||||
|
}
|
||||||
|
|
||||||
|
window.matchMedia('(prefers-color-scheme: dark)').addListener(mql => {
|
||||||
|
if (store.state.device.syncDeviceDarkMode) {
|
||||||
|
store.commit('device/set', { key: 'darkMode', value: mql.matches });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//#endregion
|
||||||
|
|
||||||
|
store.watch(state => state.device.useBlurEffectForModal, v => {
|
||||||
|
document.documentElement.style.setProperty('--modalBgFilter', v ? 'blur(4px)' : 'none');
|
||||||
|
}, { immediate: true });
|
||||||
|
|
||||||
os.stream.on('emojiAdded', data => {
|
os.stream.on('emojiAdded', data => {
|
||||||
// TODO
|
// TODO
|
||||||
//store.commit('instance/set', );
|
//store.commit('instance/set', );
|
||||||
@ -263,6 +271,13 @@ os.init(async () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (store.getters.isSignedIn) {
|
if (store.getters.isSignedIn) {
|
||||||
|
if ('Notification' in window) {
|
||||||
|
// 許可を得ていなかったらリクエスト
|
||||||
|
if (Notification.permission === 'default') {
|
||||||
|
Notification.requestPermission();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const main = os.stream.useSharedConnection('main');
|
const main = os.stream.useSharedConnection('main');
|
||||||
|
|
||||||
// 自分の情報が更新されたとき
|
// 自分の情報が更新されたとき
|
||||||
|
@ -30,6 +30,7 @@ import { faComments } from '@fortawesome/free-regular-svg-icons';
|
|||||||
import Progress from '../scripts/loading';
|
import Progress from '../scripts/loading';
|
||||||
import XTimeline from '../components/timeline.vue';
|
import XTimeline from '../components/timeline.vue';
|
||||||
import XPostForm from '../components/post-form.vue';
|
import XPostForm from '../components/post-form.vue';
|
||||||
|
import { scroll } from '../scripts/scroll';
|
||||||
|
|
||||||
export default Vue.extend({
|
export default Vue.extend({
|
||||||
metaInfo() {
|
metaInfo() {
|
||||||
@ -120,7 +121,7 @@ export default Vue.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
top() {
|
top() {
|
||||||
window.scroll({ top: 0, behavior: 'instant' });
|
scroll(this.$el, 0);
|
||||||
},
|
},
|
||||||
|
|
||||||
async choose(ev) {
|
async choose(ev) {
|
||||||
@ -223,7 +224,7 @@ export default Vue.extend({
|
|||||||
|
|
||||||
> i {
|
> i {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 16px;
|
top: initial;
|
||||||
right: 8px;
|
right: 8px;
|
||||||
color: var(--indicator);
|
color: var(--indicator);
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="mk-messaging">
|
<div class="mk-messaging" v-size="[{ max: 400 }]">
|
||||||
<portal to="icon"><fa :icon="faComments"/></portal>
|
<portal to="icon"><fa :icon="faComments"/></portal>
|
||||||
<portal to="title">{{ $t('messaging') }}</portal>
|
<portal to="title">{{ $t('messaging') }}</portal>
|
||||||
|
|
||||||
@ -168,18 +168,14 @@ export default Vue.extend({
|
|||||||
.mk-messaging {
|
.mk-messaging {
|
||||||
|
|
||||||
> .start {
|
> .start {
|
||||||
margin: 0 auto 16px auto;
|
margin: 0 auto var(--margin) auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
> .history {
|
> .history {
|
||||||
> .message {
|
> .message {
|
||||||
display: block;
|
display: block;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
margin-bottom: 16px;
|
margin-bottom: var(--margin);
|
||||||
|
|
||||||
@media (max-width: 500px) {
|
|
||||||
margin-bottom: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
* {
|
* {
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
@ -284,7 +280,7 @@ export default Vue.extend({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 400px) {
|
&.max-width_400px {
|
||||||
> .history {
|
> .history {
|
||||||
> .message {
|
> .message {
|
||||||
&:not([data-is-me]):not([data-is-read]) {
|
&:not([data-is-me]):not([data-is-read]) {
|
||||||
|
@ -78,6 +78,7 @@
|
|||||||
<mk-switch v-model="imageNewTab">{{ $t('openImageInNewTab') }}</mk-switch>
|
<mk-switch v-model="imageNewTab">{{ $t('openImageInNewTab') }}</mk-switch>
|
||||||
<mk-switch v-model="disableAnimatedMfm">{{ $t('disableAnimatedMfm') }}</mk-switch>
|
<mk-switch v-model="disableAnimatedMfm">{{ $t('disableAnimatedMfm') }}</mk-switch>
|
||||||
<mk-switch v-model="reduceAnimation">{{ $t('reduceUiAnimation') }}</mk-switch>
|
<mk-switch v-model="reduceAnimation">{{ $t('reduceUiAnimation') }}</mk-switch>
|
||||||
|
<mk-switch v-model="useBlurEffectForModal">{{ $t('useBlurEffectForModal') }}</mk-switch>
|
||||||
<mk-switch v-model="useOsNativeEmojis">
|
<mk-switch v-model="useOsNativeEmojis">
|
||||||
{{ $t('useOsNativeEmojis') }}
|
{{ $t('useOsNativeEmojis') }}
|
||||||
<template #desc><mfm text="🍮🍦🍭🍩🍰🍫🍬🥞🍪"/></template>
|
<template #desc><mfm text="🍮🍦🍭🍩🍰🍫🍬🥞🍪"/></template>
|
||||||
@ -133,6 +134,8 @@ const sounds = [
|
|||||||
'syuilo/poi1',
|
'syuilo/poi1',
|
||||||
'syuilo/poi2',
|
'syuilo/poi2',
|
||||||
'syuilo/pirori',
|
'syuilo/pirori',
|
||||||
|
'syuilo/pirori-wet',
|
||||||
|
'syuilo/pirori-square-wet',
|
||||||
'aisha/1',
|
'aisha/1',
|
||||||
'aisha/2',
|
'aisha/2',
|
||||||
'aisha/3',
|
'aisha/3',
|
||||||
@ -178,6 +181,11 @@ export default Vue.extend({
|
|||||||
set(value) { this.$store.commit('device/set', { key: 'animation', value: !value }); }
|
set(value) { this.$store.commit('device/set', { key: 'animation', value: !value }); }
|
||||||
},
|
},
|
||||||
|
|
||||||
|
useBlurEffectForModal: {
|
||||||
|
get() { return this.$store.state.device.useBlurEffectForModal; },
|
||||||
|
set(value) { this.$store.commit('device/set', { key: 'useBlurEffectForModal', value: value }); }
|
||||||
|
},
|
||||||
|
|
||||||
disableAnimatedMfm: {
|
disableAnimatedMfm: {
|
||||||
get() { return !this.$store.state.device.animatedMfm; },
|
get() { return !this.$store.state.device.animatedMfm; },
|
||||||
set(value) { this.$store.commit('device/set', { key: 'animatedMfm', value: !value }); }
|
set(value) { this.$store.commit('device/set', { key: 'animatedMfm', value: !value }); }
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
<mk-input v-model="author" required><span>{{ $t('author') }}</span></mk-input>
|
<mk-input v-model="author" required><span>{{ $t('author') }}</span></mk-input>
|
||||||
<mk-textarea v-model="description"><span>{{ $t('description') }}</span></mk-textarea>
|
<mk-textarea v-model="description"><span>{{ $t('description') }}</span></mk-textarea>
|
||||||
<div class="_inputs">
|
<div class="_inputs">
|
||||||
<div v-text="$t('_theme.baseTheme')" />
|
<div v-text="$t('_theme.base')" />
|
||||||
<mk-radio v-model="baseTheme" value="light">{{ $t('light') }}</mk-radio>
|
<mk-radio v-model="baseTheme" value="light">{{ $t('light') }}</mk-radio>
|
||||||
<mk-radio v-model="baseTheme" value="dark">{{ $t('dark') }}</mk-radio>
|
<mk-radio v-model="baseTheme" value="dark">{{ $t('dark') }}</mk-radio>
|
||||||
</div>
|
</div>
|
||||||
|
@ -25,3 +25,12 @@ export function onScrollTop(el: Element, cb) {
|
|||||||
};
|
};
|
||||||
container.addEventListener('scroll', onScroll, { passive: true });
|
container.addEventListener('scroll', onScroll, { passive: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function scroll(el: Element, top: number) {
|
||||||
|
const container = getScrollContainer(el);
|
||||||
|
if (container == null) {
|
||||||
|
window.scroll({ top: top, behavior: 'instant' });
|
||||||
|
} else {
|
||||||
|
container.scrollTop = top;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -22,7 +22,7 @@ export class StickySidebar {
|
|||||||
|
|
||||||
if (this.isTop) {
|
if (this.isTop) {
|
||||||
this.isTop = false;
|
this.isTop = false;
|
||||||
this.spacer.style.marginTop = `${scrollTop}px`;
|
this.spacer.style.marginTop = `${this.lastScrollTop}px`;
|
||||||
}
|
}
|
||||||
} else { // upscroll
|
} else { // upscroll
|
||||||
const overflow = this.el.clientHeight - window.innerHeight;
|
const overflow = this.el.clientHeight - window.innerHeight;
|
||||||
|
@ -68,6 +68,7 @@ export const defaultDeviceSettings = {
|
|||||||
disablePagesScript: true,
|
disablePagesScript: true,
|
||||||
enableInfiniteScroll: true,
|
enableInfiniteScroll: true,
|
||||||
fixedWidgetsPosition: false,
|
fixedWidgetsPosition: false,
|
||||||
|
useBlurEffectForModal: true,
|
||||||
roomGraphicsQuality: 'medium',
|
roomGraphicsQuality: 'medium',
|
||||||
roomUseOrthographicCamera: true,
|
roomUseOrthographicCamera: true,
|
||||||
deckColumnAlign: 'left',
|
deckColumnAlign: 'left',
|
||||||
@ -301,6 +302,7 @@ export default () => new Vuex.Store({
|
|||||||
},
|
},
|
||||||
|
|
||||||
mergeMe(ctx, me) {
|
mergeMe(ctx, me) {
|
||||||
|
// TODO: プロパティ一つ一つに対してコミットが発生するのはアレなので良い感じにする
|
||||||
for (const [key, value] of Object.entries(me)) {
|
for (const [key, value] of Object.entries(me)) {
|
||||||
ctx.commit('updateIKeyValue', { key, value });
|
ctx.commit('updateIKeyValue', { key, value });
|
||||||
}
|
}
|
||||||
|
@ -197,6 +197,20 @@ hr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
._modalBg {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: var(--modalBg);
|
||||||
|
backdrop-filter: var(--modalBgFilter);
|
||||||
|
}
|
||||||
|
|
||||||
|
._shadow {
|
||||||
|
box-shadow: 0px 4px 32px var(--shadow) !important;
|
||||||
|
}
|
||||||
|
|
||||||
._button {
|
._button {
|
||||||
appearance: none;
|
appearance: none;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
panelHeaderFg: '@fg',
|
panelHeaderFg: '@fg',
|
||||||
panelHeaderDivider: 'rgba(0, 0, 0, 0)',
|
panelHeaderDivider: 'rgba(0, 0, 0, 0)',
|
||||||
panelBorder: 'rgba(0, 0, 0, 0)',
|
panelBorder: 'rgba(0, 0, 0, 0)',
|
||||||
shadow: 'rgba(0, 0, 0, 0.1)',
|
shadow: 'rgba(0, 0, 0, 0.3)',
|
||||||
header: ':alpha<0.7<@bg',
|
header: ':alpha<0.7<@bg',
|
||||||
navBg: '@bg',
|
navBg: '@bg',
|
||||||
navFg: '@fg',
|
navFg: '@fg',
|
||||||
@ -57,6 +57,7 @@
|
|||||||
badge: '#31b1ce',
|
badge: '#31b1ce',
|
||||||
messageBg: ':lighten<5<@bg',
|
messageBg: ':lighten<5<@bg',
|
||||||
deckColumnBorder: ':lighten<10<@panel',
|
deckColumnBorder: ':lighten<10<@panel',
|
||||||
|
htmlThemeColor: '@bg',
|
||||||
X1: ':alpha<0<@bg',
|
X1: ':alpha<0<@bg',
|
||||||
X2: ':darken<2<@panel',
|
X2: ':darken<2<@panel',
|
||||||
X3: 'rgba(255, 255, 255, 0.05)',
|
X3: 'rgba(255, 255, 255, 0.05)',
|
||||||
|
@ -57,6 +57,7 @@
|
|||||||
badge: '#31b1ce',
|
badge: '#31b1ce',
|
||||||
messageBg: '@panel',
|
messageBg: '@panel',
|
||||||
deckColumnBorder: ':darken<20<@panel',
|
deckColumnBorder: ':darken<20<@panel',
|
||||||
|
htmlThemeColor: '@bg',
|
||||||
X1: ':alpha<0<@bg',
|
X1: ':alpha<0<@bg',
|
||||||
X2: ':darken<2<@panel',
|
X2: ':darken<2<@panel',
|
||||||
X3: 'rgba(0, 0, 0, 0.05)',
|
X3: 'rgba(0, 0, 0, 0.05)',
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
panelHeaderBg: '@panel',
|
panelHeaderBg: '@panel',
|
||||||
panelHeaderDivider: '@divider',
|
panelHeaderDivider: '@divider',
|
||||||
panelBorder: '@divider',
|
panelBorder: '@divider',
|
||||||
|
shadow: 'rgba(255, 255, 255, 0.05)',
|
||||||
|
modalBg: 'rgba(255, 255, 255, 0.1)',
|
||||||
messageBg: '#1d1d1d',
|
messageBg: '#1d1d1d',
|
||||||
deckColumnBorder: '@divider',
|
deckColumnBorder: '@divider',
|
||||||
},
|
},
|
||||||
|
@ -40,7 +40,7 @@ html
|
|||||||
if (theme) {
|
if (theme) {
|
||||||
for (const [k, v] of Object.entries(JSON.parse(theme))) {
|
for (const [k, v] of Object.entries(JSON.parse(theme))) {
|
||||||
document.documentElement.style.setProperty(`--${k}`, v.toString());
|
document.documentElement.style.setProperty(`--${k}`, v.toString());
|
||||||
if (k === 'html') {
|
if (k === 'htmlThemeColor') {
|
||||||
for (const tag of document.head.children) {
|
for (const tag of document.head.children) {
|
||||||
if (tag.tagName === 'META' && tag.getAttribute('name') === 'theme-color') {
|
if (tag.tagName === 'META' && tag.getAttribute('name') === 'theme-color') {
|
||||||
tag.setAttribute('content', v);
|
tag.setAttribute('content', v);
|
||||||
@ -61,7 +61,8 @@ html
|
|||||||
document.documentElement.style.backgroundImage = `url(${wallpaper})`;
|
document.documentElement.style.backgroundImage = `url(${wallpaper})`;
|
||||||
}
|
}
|
||||||
|
|
||||||
body
|
//- https://qiita.com/junya/items/3ff380878f26ca447f85
|
||||||
|
body(ontouchstart='')
|
||||||
noscript: p
|
noscript: p
|
||||||
| JavaScriptを有効にしてください
|
| JavaScriptを有効にしてください
|
||||||
br
|
br
|
||||||
|
@ -160,10 +160,10 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@koa/multer/-/multer-3.0.0.tgz#439777949f28097d7b329c0b4ce3048074c862f8"
|
resolved "https://registry.yarnpkg.com/@koa/multer/-/multer-3.0.0.tgz#439777949f28097d7b329c0b4ce3048074c862f8"
|
||||||
integrity sha512-y+OQBmex5D1jIl723gAEUYcAWPEicIXppaAKw/zCMfpllQ08ZNweDPwoCLxEoatqd5pCu2XG6V8dl67JRq3RJw==
|
integrity sha512-y+OQBmex5D1jIl723gAEUYcAWPEicIXppaAKw/zCMfpllQ08ZNweDPwoCLxEoatqd5pCu2XG6V8dl67JRq3RJw==
|
||||||
|
|
||||||
"@koa/router@9.3.1":
|
"@koa/router@9.0.1":
|
||||||
version "9.3.1"
|
version "9.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@koa/router/-/router-9.3.1.tgz#814b0f357da616b99ee22259644cd928f2c9e60e"
|
resolved "https://registry.yarnpkg.com/@koa/router/-/router-9.0.1.tgz#4090a14223ea7e78aa13b632761209cba69acd95"
|
||||||
integrity sha512-OOy4pOEO+Zz5vy+zqc8mWRGKYIpDqjgbVTF/U41fCwBwVWHGmkedvcJ9V5MLI7Ivy0iTv8o0XLDtGWtYHquvxg==
|
integrity sha512-OI+OU49CJV4px0WkIMmayBeqVXB/JS1ZMq7UoGlTZt6Y7ijK7kdeQ18+SEHHJPytmtI1y6Hf8XLrpxva3mhv5Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
http-errors "^1.7.3"
|
http-errors "^1.7.3"
|
||||||
|
Reference in New Issue
Block a user