Compare commits
5 Commits
9f1a5c3cd1
...
de497a22d8
Author | SHA1 | Date |
---|---|---|
naskya | de497a22d8 | |
sup39 | ca67ca7bbe | |
naskya | 61b09eaf9a | |
sup39 | 6eab8fde16 | |
naskya | f468fe988d |
|
@ -2,6 +2,11 @@
|
|||
|
||||
Critical security updates are indicated by the :warning: icon.
|
||||
|
||||
## v20240225
|
||||
|
||||
- Fix bugs
|
||||
- Add syntax highlighting in MFM code blocks in various programming languages
|
||||
|
||||
## v20240222
|
||||
|
||||
- Enhance Mastodon post import feature (!10652)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Unreleased
|
||||
# v20240225
|
||||
|
||||
## For Docker/Podman users
|
||||
|
||||
|
|
|
@ -2215,9 +2215,6 @@ renotes: Impulsos
|
|||
moreUrls: Pàgines fixades
|
||||
moreUrlsDescription: "Introdueix les pàgines que vols fixar al menú d'ajuda a la part
|
||||
inferior esquerra fent servir aquesta notació:\n\"Nom a mostrar\": https://example.com/"
|
||||
useEmojiCdn: Aconsegueix Twemoji des d'un CDN
|
||||
useEmojiCdnDescription: Fes servir Twemoji des del CDN de JSDeliver en lloc de fer
|
||||
servir el del propi servidor.
|
||||
suggested: Suggerit
|
||||
noLanguage: Cap idioma definit
|
||||
showPreviewByDefault: Per defecte mostrar la previsualització al formulari per publicar
|
||||
|
|
|
@ -2234,8 +2234,5 @@ moreUrls: Angeheftete Seiten
|
|||
iconSet: Icon Satz
|
||||
renotes: Boosts
|
||||
quotes: Zitate
|
||||
useEmojiCdn: Hole Twemoji von einem CDN
|
||||
useEmojiCdnDescription: Benutze Twemoji von einem JSDelivr CDN anstelle der servereigenen
|
||||
Assets.
|
||||
moreUrlsDescription: "Die Seiten, welche angepinnt werde sollen, im Hilfe-Menü in
|
||||
der unteren linken Ecke in folgender Notation angeben:\n\"Anzeigename\": https://example.com/"
|
||||
|
|
|
@ -1157,10 +1157,10 @@ detectPostLanguage: "Automatically detect the language and show a translate butt
|
|||
vibrate: "Play vibrations"
|
||||
openServerInfo: "Show server information by clicking the server ticker on a post"
|
||||
iconSet: "Icon set"
|
||||
useCdn: "Get assets from CDN"
|
||||
useCdnDescription: "Load some static assets like Twemoji from the JSDelivr CDN instead of this Firefish server."
|
||||
suggested: "Suggested"
|
||||
noLanguage: "No language"
|
||||
useEmojiCdn: "Get Twemoji from CDN"
|
||||
useEmojiCdnDescription: "Use Twemoji from the JSDelivr CDN instead of the server's assets."
|
||||
showPreviewByDefault: "Show preview in posting form by default"
|
||||
preventMisclick: "Accidental click prevention"
|
||||
hideFollowButtons: "Hide follow buttons in a misclickable position"
|
||||
|
|
|
@ -2197,9 +2197,6 @@ _iconSets:
|
|||
replies: Respuestas
|
||||
renotes: Impulsos
|
||||
iconSet: Conjunto de iconos
|
||||
useEmojiCdn: Obtenga Twemoji desde un CDN
|
||||
useEmojiCdnDescription: Utilice Twemoji desde JSDelivr CDN en lugar de los assetos
|
||||
proporcionados del servidor.
|
||||
moreUrlsDescription: 'Ingrese los enlaces de las páginas que desea Fijar en el menú
|
||||
de ayuda, ubicado en la esquina inferior izquierda, usando este formato de notación:
|
||||
["Nombre para mostrar": https://su-enlace.com/]'
|
||||
|
|
|
@ -2240,8 +2240,6 @@ renotes: Boosts
|
|||
moreUrls: Pages épinglées
|
||||
squareCatAvatars: Afficher les avatars carrés pour les comptes avec oreilles de chat
|
||||
suggested: Suggéré
|
||||
useEmojiCdnDescription: Utiliser Twemoji depuis le CDN JSDelivr au lieu des actifs
|
||||
de ce serveur.
|
||||
replaceChatButtonWithAccountButton: Remplacer le bouton de discussion par le bouton
|
||||
de changement de compte
|
||||
showBigPostButton: Afficher un gros bouton de publication sur le formulaire de publication
|
||||
|
@ -2250,7 +2248,6 @@ moreUrlsDescription: "Saisir les pages que vous voulez épingler au menu d'aide
|
|||
attachedToNotes: Publications avec ce fichier
|
||||
showAttachedNotes: Afficher les publications avec ce fichier
|
||||
noLanguage: Aucune langue
|
||||
useEmojiCdn: Obtenir Twemoji depuis un CDN
|
||||
showPreviewByDefault: Afficher l'aperçu dans le formulaire de publication par défaut
|
||||
preventMisclick: Protection contre les clics accidentels
|
||||
hideFollowButtons: Masquer les boutons d'abonnement dans une position où nous ne pouvons
|
||||
|
|
|
@ -2196,8 +2196,6 @@ attachedToNotes: Posting dengan berkas ini
|
|||
moreUrls: Halaman tersemat
|
||||
moreUrlsDescription: "Masukkan halaman yang ingin kamu sematkan ke menu bantuan di
|
||||
pojok kiri bawah dengan notasi ini:\n\"Nama tampilan\": https://contoh.com/"
|
||||
useEmojiCdn: Dapatkan Twemoji dari CDN
|
||||
useEmojiCdnDescription: Gunakan Twemoji dari JSDelv CDN bukan dari aset server.
|
||||
squareCatAvatars: Tampilkan avatar kotak untuk akun kucing
|
||||
emojiModPerm: Perizinan pengelolaan emoji kustom
|
||||
emojiModPermDescription: "Tambah: Perbolehkan pengguna ini untuk menambahkan emoji
|
||||
|
|
|
@ -2185,8 +2185,6 @@ attachedToNotes: Post con questo allegato
|
|||
moreUrls: Pagine del menu di aiuto
|
||||
moreUrlsDescription: "Inserisci con questo formato le pagine che vuoi aggiungere al
|
||||
menu di aiuto nell'angolo in basso a sinistra:\n\"Nome link\": https://example.com/"
|
||||
useEmojiCdn: Scarica Twemoji da CDN
|
||||
useEmojiCdnDescription: Usa Twemoji dalla CDN di JSDelivr invece che dal server locale.
|
||||
noLanguage: Nessuna lingua
|
||||
showPreviewByDefault: Mostra sempre l'anteprima del messaggio
|
||||
replaceWidgetsButtonWithReloadButton: Sostituisci il bottone dei widget con quello
|
||||
|
|
|
@ -995,8 +995,8 @@ addRe: "閲覧注意の投稿への返信で、注釈の先頭に\"re:\"を追
|
|||
languageForTranslation: "投稿翻訳に使用する言語"
|
||||
detectPostLanguage: "投稿の言語を自動検出し、外国語の投稿に翻訳ボタンを表示する"
|
||||
iconSet: "アイコンのスタイル"
|
||||
useEmojiCdn: "CDNのTwemojiを利用する"
|
||||
useEmojiCdnDescription: "サーバー上に保存されているTwemojiのアセットの代わりに、JSDelivr CDNから配信されたものを用います。"
|
||||
useCdn: "CDNのアセットを利用する"
|
||||
useCdnDescription: "このFirefishサーバーからではなくJSDelivr CDNからTwiemojiなどのアセットを読み込みます。"
|
||||
|
||||
_sensitiveMediaDetection:
|
||||
description: "機械学習を使って自動でセンシティブなメディアを検出し、モデレーションに役立てられます。サーバーの負荷が少し増えます。"
|
||||
|
|
|
@ -2005,8 +2005,6 @@ _iconSets:
|
|||
light: 細線
|
||||
showAttachedNotes: 顯示有此附件的貼文
|
||||
attachedToNotes: 帶有此附件的貼文
|
||||
useEmojiCdn: 使用CDN的Twemoji
|
||||
useEmojiCdnDescription: 使用JSDelivr CDN提供的Twemoji,而不使用儲存在伺服器上的檔案。
|
||||
moreUrls: 置頂的頁面
|
||||
moreUrlsDescription: "請以下列形式輸入欲釘選在左下角幫助選單的頁面,一行一個:\n\"顯示名稱\": https://example.com/"
|
||||
showPreviewByDefault: "自動開啟發文介面中的預覽顯示"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "firefish",
|
||||
"version": "20240222",
|
||||
"version": "20240225",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://firefish.dev/firefish/firefish.git"
|
||||
|
|
|
@ -53,7 +53,9 @@ const bullBoardPath = "/queue";
|
|||
|
||||
// Authenticate
|
||||
app.use(async (ctx, next) => {
|
||||
if (ctx.path === bullBoardPath || ctx.path.startsWith(`${bullBoardPath}/`)) {
|
||||
const url = decodeURI(ctx.path);
|
||||
|
||||
if (url === bullBoardPath || url.startsWith(`${bullBoardPath}/`)) {
|
||||
const token = ctx.cookies.get("token");
|
||||
if (token == null) {
|
||||
ctx.status = 401;
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
../../node_modules/prismjs/components
|
|
@ -7,8 +7,8 @@
|
|||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed } from "vue";
|
||||
import Prism from "prismjs";
|
||||
import { computed, ref } from "vue";
|
||||
import Prism, { loadLanguage } from "@/scripts/prism";
|
||||
import "prismjs/themes/prism-okaidia.css";
|
||||
|
||||
const props = defineProps<{
|
||||
|
@ -17,9 +17,24 @@ const props = defineProps<{
|
|||
inline?: boolean;
|
||||
}>();
|
||||
|
||||
const prismLang = computed(() =>
|
||||
Prism.languages[props.lang] ? props.lang : "plaintext",
|
||||
// fallback to "plaintext" if language not loaded
|
||||
const prismLang = ref(
|
||||
props.lang != null && props.lang in Prism.languages
|
||||
? props.lang
|
||||
: "plaintext",
|
||||
);
|
||||
|
||||
// try to load language asynchronously
|
||||
if (props.lang != null && !(props.lang in Prism.languages)) {
|
||||
const { lang } = props;
|
||||
loadLanguage(props.lang).then(
|
||||
// onLoaded
|
||||
() => (prismLang.value = lang),
|
||||
// onError
|
||||
() => {},
|
||||
);
|
||||
}
|
||||
|
||||
const html = computed(() =>
|
||||
Prism.highlight(
|
||||
props.code,
|
||||
|
|
|
@ -289,9 +289,9 @@
|
|||
i18n.ts.showBigPostButton
|
||||
}}</FormSwitch>
|
||||
<FormSwitch v-model="useEmojiCdn" class="_formBlock"
|
||||
>{{ i18n.ts.useEmojiCdn
|
||||
>{{ i18n.ts.useCdn
|
||||
}}<template #caption>{{
|
||||
i18n.ts.useEmojiCdnDescription
|
||||
i18n.ts.useCdnDescription
|
||||
}}</template></FormSwitch
|
||||
>
|
||||
<FormSwitch
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
import Prism from "prismjs";
|
||||
import "prismjs/plugins/autoloader/prism-autoloader.js";
|
||||
import { defaultStore } from "@/store";
|
||||
|
||||
Prism.plugins.autoloader.languages_path = defaultStore.state.useEmojiCdn
|
||||
? "https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/"
|
||||
: "/client-assets/prismjs/components/";
|
||||
|
||||
const nonExistingLanguagesCache = new Set<string>();
|
||||
export const loadLanguage = (lang: string) =>
|
||||
new Promise<void>((resolve, reject) => {
|
||||
// cached non-existing language
|
||||
if (nonExistingLanguagesCache.has(lang)) return reject();
|
||||
// load language with autoloader
|
||||
Prism.plugins.autoloader.loadLanguages(
|
||||
lang,
|
||||
// loaded
|
||||
() => resolve(),
|
||||
// failed
|
||||
() => {
|
||||
nonExistingLanguagesCache.add(lang);
|
||||
reject();
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
export default Prism;
|
Loading…
Reference in New Issue