diff --git a/.github/workflows/api-misskey-js.yml b/.github/workflows/api-misskey-js.yml index e21738c4f4..6f4219b54b 100644 --- a/.github/workflows/api-misskey-js.yml +++ b/.github/workflows/api-misskey-js.yml @@ -9,6 +9,10 @@ on: paths: - packages/misskey-js/** - .github/workflows/api-misskey-js.yml + +env: + COREPACK_DEFAULT_TO_LATEST: 0 + jobs: report: diff --git a/.github/workflows/get-api-diff.yml b/.github/workflows/get-api-diff.yml index 46c726b986..6805e8bc3c 100644 --- a/.github/workflows/get-api-diff.yml +++ b/.github/workflows/get-api-diff.yml @@ -9,6 +9,10 @@ on: paths: - packages/backend/** - .github/workflows/get-api-diff.yml + +env: + COREPACK_DEFAULT_TO_LATEST: 0 + jobs: get-from-misskey: runs-on: ubuntu-latest diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 9785bb5744..2f6938d2e4 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -28,6 +28,10 @@ on: - packages/misskey-reversi/** - packages/shared/eslint.config.js - .github/workflows/lint.yml + +env: + COREPACK_DEFAULT_TO_LATEST: 0 + jobs: pnpm_install: runs-on: ubuntu-latest diff --git a/.github/workflows/locale.yml b/.github/workflows/locale.yml index 2eb4ca3ad9..95d29bf828 100644 --- a/.github/workflows/locale.yml +++ b/.github/workflows/locale.yml @@ -9,6 +9,10 @@ on: paths: - locales/** - .github/workflows/locale.yml + +env: + COREPACK_DEFAULT_TO_LATEST: 0 + jobs: locale_verify: runs-on: ubuntu-latest diff --git a/.github/workflows/on-release-created.yml b/.github/workflows/on-release-created.yml index 8ca2ed9efb..fc224a6239 100644 --- a/.github/workflows/on-release-created.yml +++ b/.github/workflows/on-release-created.yml @@ -6,6 +6,9 @@ on: workflow_dispatch: +env: + COREPACK_DEFAULT_TO_LATEST: 0 + jobs: publish-misskey-js: name: Publish misskey-js diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml index dfba46a8c8..be294201f0 100644 --- a/.github/workflows/storybook.yml +++ b/.github/workflows/storybook.yml @@ -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. - master +env: + COREPACK_DEFAULT_TO_LATEST: 0 + jobs: build: # chromatic is not likely to be available for fork repositories, so we disable for fork repositories. diff --git a/.github/workflows/test-backend.yml b/.github/workflows/test-backend.yml index debfe24819..99a9f99b75 100644 --- a/.github/workflows/test-backend.yml +++ b/.github/workflows/test-backend.yml @@ -18,6 +18,10 @@ on: - packages/misskey-js/** - .github/workflows/test-backend.yml - .github/misskey/test.yml + +env: + COREPACK_DEFAULT_TO_LATEST: 0 + jobs: unit: name: Unit tests (backend) diff --git a/.github/workflows/test-federation.yml b/.github/workflows/test-federation.yml index c4546a0590..74cdff80f1 100644 --- a/.github/workflows/test-federation.yml +++ b/.github/workflows/test-federation.yml @@ -15,6 +15,9 @@ on: - packages/misskey-js/** - .github/workflows/test-federation.yml +env: + COREPACK_DEFAULT_TO_LATEST: 0 + jobs: test: name: Federation test diff --git a/.github/workflows/test-frontend.yml b/.github/workflows/test-frontend.yml index 51e0b0e8b8..6c09896d06 100644 --- a/.github/workflows/test-frontend.yml +++ b/.github/workflows/test-frontend.yml @@ -22,6 +22,10 @@ on: - packages/backend/** - .github/workflows/test-frontend.yml - .github/misskey/test.yml + +env: + COREPACK_DEFAULT_TO_LATEST: 0 + jobs: vitest: name: Unit tests (frontend) diff --git a/.github/workflows/test-misskey-js.yml b/.github/workflows/test-misskey-js.yml index c72a2470a4..d88dc18bd8 100644 --- a/.github/workflows/test-misskey-js.yml +++ b/.github/workflows/test-misskey-js.yml @@ -14,6 +14,10 @@ on: paths: - packages/misskey-js/** - .github/workflows/test-misskey-js.yml + +env: + COREPACK_DEFAULT_TO_LATEST: 0 + jobs: test: name: Unit tests (misskey.js) diff --git a/.github/workflows/test-production.yml b/.github/workflows/test-production.yml index 4a55f4803c..5269358e38 100644 --- a/.github/workflows/test-production.yml +++ b/.github/workflows/test-production.yml @@ -9,6 +9,7 @@ on: env: NODE_ENV: production + COREPACK_DEFAULT_TO_LATEST: 0 jobs: production: diff --git a/.github/workflows/validate-api-json.yml b/.github/workflows/validate-api-json.yml index 0d254898f8..65afcd4cd0 100644 --- a/.github/workflows/validate-api-json.yml +++ b/.github/workflows/validate-api-json.yml @@ -12,6 +12,10 @@ on: paths: - packages/backend/** - .github/workflows/validate-api-json.yml + +env: + COREPACK_DEFAULT_TO_LATEST: 0 + jobs: validate-api-json: runs-on: ubuntu-latest diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ca9e72b7e..7ca405f420 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,24 @@ +## 2025.2.0 + +### Note +- ページの「ソースを見る」機能は削除されました + +### General +- Fix: Docker のビルドに失敗する問題を修正 + (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/883) + +### Client +- Fix: パスキーでパスワードレスログインが出来ない問題を修正 +- Fix: 一部環境でセンシティブなファイルを含むノートの非表示が効かない問題 +- Fix: データセーバー有効時にもユーザーページの「ファイル」タブで画像が読み込まれてしまう問題を修正 +- Fix: MFMの `sparkle` エフェクトが正しく表示されない問題を修正 +- Fix: ページのURLにスラッシュが含まれている場合にページが正しく表示されない問題を修正 +- ローカライゼーションの更新 + +### Server +- Fix: 個別お知らせページのmetaタグ出力の条件が間違っていたのを修正 + + ## 2025.1.0 ### Note @@ -50,6 +71,7 @@ (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/656) - Fix: URLにはじめから`#pswp`が含まれている場合に画像ビューワーがブラウザの戻るボタンで閉じられない問題を修正 - Fix: ロール作成画面で設定できるアイコンデコレーションの最大取付個数を16に制限 +- Fix: Firefox Nightlyなどでアイコンが読み込めない問題を修正 ### Server - Enhance: pg_bigmが利用できるよう、ノートの検索をILIKE演算子でなくLIKE演算子でLOWER()をかけたテキストに対して行うように diff --git a/Dockerfile b/Dockerfile index 13f6909462..3bc2044396 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,6 +6,8 @@ ARG NODE_VERSION=22.11.0-bookworm 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 \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ 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 +ENV COREPACK_DEFAULT_TO_LATEST=0 + RUN apt-get update \ && apt-get install -yqq --no-install-recommends \ build-essential @@ -68,6 +72,7 @@ FROM --platform=$TARGETPLATFORM node:${NODE_VERSION}-slim AS runner ARG UID="991" ARG GID="991" +ENV COREPACK_DEFAULT_TO_LATEST=0 RUN apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/SECURITY.md b/SECURITY.md index 04567baf07..19f5f2eea2 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -7,6 +7,11 @@ bug report to the GitHub repository. Thanks for helping make Misskey safe for everyone. +> [!note] +> CNA [requires](https://www.cve.org/ResourcesSupport/AllResources/CNARules#section_5-2_Description) that CVEs include a description in English for inclusion in the CVE Catalog. +> +> When creating a security advisory, all content must be written in English (it is acceptable to include a non-English description along with the English one). + ## When create a patch If you can also create a patch to fix the vulnerability, please create a PR on the private fork. diff --git a/locales/de-DE.yml b/locales/de-DE.yml index fc62a1a92f..e99a32a364 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -5,6 +5,7 @@ introMisskey: "Willkommen! Misskey ist eine dezentralisierte Open-Source Microbl poweredByMisskeyDescription: "{name} ist einer der durch die Open-Source-Plattform Misskey betriebenen Dienste." monthAndDay: "{day}.{month}." search: "Suchen" +reset: "Zurücksetzen" notifications: "Benachrichtigungen" username: "Benutzername" password: "Passwort" @@ -48,6 +49,7 @@ pin: "An dein Profil anheften" unpin: "Von deinem Profil lösen" copyContent: "Inhalt kopieren" copyLink: "Link kopieren" +copyRemoteLink: "Renote-Link kopieren" copyLinkRenote: "Renote-Link kopieren" delete: "Löschen" deleteAndEdit: "Löschen und Bearbeiten" @@ -517,6 +519,7 @@ emojiStyle: "Emoji-Stil" native: "Nativ" menuStyle: "Menü Stil" style: "Stil" +drawer: "App-Übersicht" popup: "Pop-up" showNoteActionsOnlyHover: "Notizmenü nur bei Mouseover anzeigen" 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:" instanceMute: "Instanzstummschaltungen" userSaysSomething: "{name} hat etwas gesagt" +userSaysSomethingAbout: "{name} sagt etwas über '{word}'" makeActive: "Aktivieren" display: "Anzeigeart" copy: "Kopieren" @@ -859,6 +863,7 @@ administration: "Verwaltung" accounts: "Benutzerkonten" switch: "Wechseln" noMaintainerInformationWarning: "Betreiberinformationen sind nicht konfiguriert." +noInquiryUrlWarning: "Keine gültige URL." noBotProtectionWarning: "Schutz vor Bots ist nicht konfiguriert." configure: "Konfigurieren" 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." enableChartsForRemoteUser: "Diagramme für Nutzer fremder Instanzen erstellen" enableChartsForFederatedInstances: "Diagramme für fremde Instanzen erstellen" +enableStatsForFederatedInstances: "Abruf von Informationen über förderierte Server" showClipButtonInNoteFooter: "\"Clip\" zum Notizmenu hinzufügen" reactionsDisplaySize: "Reaktionsanzeigegröße" 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" specifyUser: "Spezifischer Benutzer" lookupConfirm: "Zustimmen?" +openTagPageConfirm: "Hashtag Seite wirklich öffnen?" +specifyHost: "Host" failedToPreviewUrl: "Vorschau nicht anzeigbar" update: "Aktualisieren" rolesThatCanBeUsedThisEmojiAsReaction: "Rollen, die dieses Emoji als Reaktion verwenden können" @@ -1197,6 +1205,7 @@ showRenotes: "Renotes anzeigen" edited: "Bearbeitet" notificationRecieveConfig: "Benachrichtigungseinstellungen" mutualFollow: "Gegenseitig gefolgt" +followingOrFollower: "Follow oder Follower" fileAttachedOnly: "Nur Notizen mit Dateien" showRepliesToOthersInTimeline: "Antworten in Chronik anzeigen" hideRepliesToOthersInTimeline: "Antworten nicht in Chronik anzeigen" diff --git a/locales/en-US.yml b/locales/en-US.yml index 2a5010390f..fb34dfc829 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -2745,6 +2745,7 @@ _customEmojisManager: deleteSelectionRanges: "Delete rows in the selection" searchSettings: "Search settings" searchSettingCaption: "Set detailed search criteria." + searchLimit: "" sortOrder: "Sort order" 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." @@ -2769,8 +2770,11 @@ _customEmojisManager: markAsDeleteTargetRanges: "Mark rows in the selection as a target to delete" alertUpdateEmojisNothingDescription: "There are no updated Emojis." alertDeleteEmojisNothingDescription: "There are no Emojis to be deleted." + confirmMovePage: "" + confirmChangeView: "" confirmUpdateEmojisDescription: "Update {count} Emoji(s). Are you sure to continue?" confirmDeleteEmojisDescription: "Delete checked {count} Emoji(s). Are you sure to continue?" + confirmResetDescription: "" dialogSelectRoleTitle: "Search by roll set in Emojis" _register: uploadSettingTitle: "Upload settings" diff --git a/locales/es-ES.yml b/locales/es-ES.yml index 58331e9664..28cfba1c20 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -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 Misskey" monthAndDay: "{day}/{month}" search: "Buscar" +reset: "Reiniciar" notifications: "Notificaciones" username: "Nombre de usuario" password: "Contraseña" @@ -518,6 +519,7 @@ emojiStyle: "Estilo de emoji" native: "Nativo" menuStyle: "Diseño del menú" style: "Diseño" +drawer: "Cajón de Aplicaciones" popup: "Ventana emergente" showNoteActionsOnlyHover: "Mostrar acciones de la nota sólo al pasar el cursor" 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" testEmail: "Prueba de envío" 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" +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" regexpErrorDescription: "Ocurrió un error en la expresión regular en la linea {line} de las palabras muteadas {tab}" instanceMute: "Instancias silenciadas" @@ -1134,6 +1139,7 @@ preventAiLearningDescription: "Pedirle a las arañas (crawlers) no usar los text options: "Opción" specifyUser: "Especificar usuario" lookupConfirm: "¿Quiere informarse?" +specifyHost: "Especificar Host" failedToPreviewUrl: "No se pudo generar la vista previa" update: "Actualizar" rolesThatCanBeUsedThisEmojiAsReaction: "Roles que pueden usar este emoji como reacción" diff --git a/locales/it-IT.yml b/locales/it-IT.yml index 3709676436..d2942c389c 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -107,7 +107,7 @@ makeFollowManuallyApprove: "Approva i follower manualmente" defaultNoteVisibility: "Privacy predefinita delle note" follow: "Segui" followRequest: "Richiesta di follow" -followRequests: "Richieste di follow" +followRequests: "Relazioni" unfollow: "Togli Following" followRequestPending: "Richiesta in approvazione" enterEmoji: "Inserisci emoji" @@ -537,7 +537,7 @@ regenerate: "Generare di nuovo" fontSize: "Dimensione carattere" mediaListWithOneImageAppearance: "Altezza dell'elenco media con una sola immagine " 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" dashboard: "Pannello di controllo" local: "Locale" @@ -1933,7 +1933,7 @@ _serverDisconnectedBehavior: quiet: "Visualizza avviso in modo discreto" _channel: create: "Nuovo canale" - edit: "Gerisci canale" + edit: "Modifica il canale" setBanner: "Scegli intestazione" removeBanner: "Rimuovi intestazione" featured: "Popolari nel canale" @@ -1961,7 +1961,7 @@ _instanceMute: _theme: explore: "Esplora temi" install: "Installa un tema" - manage: "Gestione temi" + manage: "Gestione dei temi" code: "Codice tema" description: "Descrizione" installed: "{name} è installato" @@ -2108,12 +2108,12 @@ _permissions: "read:messaging": "Visualizzare la chat" "write:messaging": "Gestire la chat" "read:mutes": "Vedi i profili silenziati" - "write:mutes": "Gestisci i profili silenziati" + "write:mutes": "Gestione dei profili silenziati" "write:notes": "Creare / Eliminare note" "read:notifications": "Visualizzare notifiche" - "write:notifications": "Gestire notifiche" + "write:notifications": "Gestione delle notifiche" "read:reactions": "Vedi reazioni" - "write:reactions": "Gerisci reazioni" + "write:reactions": "Gestione delle reazioni" "write:votes": "Votare" "read:pages": "Visualizzare pagine" "write:pages": "Gestire pagine" @@ -2122,7 +2122,7 @@ _permissions: "read:user-groups": "Vedere i gruppi di utenti" "write:user-groups": "Gestire i gruppi di utenti" "read:channels": "Visualizza canali" - "write:channels": "Gerisci canali" + "write:channels": "Gestione dei canali" "read:gallery": "Visualizza la galleria." "write:gallery": "Gestione della galleria" "read:gallery-likes": "Visualizza i contenuti della galleria." diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 93883f31cb..45d7f26075 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -1283,7 +1283,7 @@ confirmWhenRevealingSensitiveMedia: "민감한 미디어를 열 때 두 번 확 sensitiveMediaRevealConfirm: "민감한 미디어입니다. 표시할까요?" createdLists: "만든 리스트" createdAntennas: "만든 안테나" -fromX: "{x}부터" +fromX: "{x}에서" genEmbedCode: "임베디드 코드 만들기" noteOfThisUser: "이 유저의 노트 목록" clipNoteLimitExceeded: "더 이상 이 클립에 노트를 추가 할 수 없습니다." diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index cb691f3b87..1a14f0bf76 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -49,7 +49,7 @@ pin: "置顶" unpin: "取消置顶" copyContent: "复制内容" copyLink: "复制链接" -copyRemoteLink: "复制远程连接" +copyRemoteLink: "复制远程链接" copyLinkRenote: "复制转帖链接" delete: "删除" deleteAndEdit: "删除并编辑" diff --git a/package.json b/package.json index 3f258f4cb7..05adf49e21 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.1.0-beta.3", + "version": "2025.2.0-beta.0", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts index 2b181af675..d1fb3858db 100644 --- a/packages/backend/src/boot/master.ts +++ b/packages/backend/src/boot/master.ts @@ -92,7 +92,7 @@ export async function masterMain() { } bootLogger.info( - `mode: [disableClustering: ${envOption.disableClustering}, onlyServer: ${envOption.onlyServer}, onlyQueue: ${envOption.onlyQueue}]` + `mode: [disableClustering: ${envOption.disableClustering}, onlyServer: ${envOption.onlyServer}, onlyQueue: ${envOption.onlyQueue}]`, ); if (!envOption.disableClustering) { @@ -107,7 +107,6 @@ export async function masterMain() { await jobQueue(); } else { await server(); - await jobQueue(); } await spawnWorkers(config.clusterLimit); diff --git a/packages/backend/src/server/web/ClientServerService.ts b/packages/backend/src/server/web/ClientServerService.ts index 4c884dd314..f8b3843cac 100644 --- a/packages/backend/src/server/web/ClientServerService.ts +++ b/packages/backend/src/server/web/ClientServerService.ts @@ -817,6 +817,7 @@ export class ClientServerService { fastify.get<{ Params: { announcementId: string; } }>('/announcements/:announcementId', async (request, reply) => { const announcement = await this.announcementsRepository.findOneBy({ id: request.params.announcementId, + userId: IsNull(), }); if (announcement) { diff --git a/packages/backend/test-federation/compose.tpl.yml b/packages/backend/test-federation/compose.tpl.yml index 8c38f16919..8b270e58f7 100644 --- a/packages/backend/test-federation/compose.tpl.yml +++ b/packages/backend/test-federation/compose.tpl.yml @@ -17,6 +17,7 @@ services: - ./.config/docker.env environment: - NODE_ENV=production + - COREPACK_DEFAULT_TO_LATEST=0 volumes: - type: bind source: ../../../built diff --git a/packages/backend/test-federation/compose.yml b/packages/backend/test-federation/compose.yml index 62d7e977c0..a5a7223982 100644 --- a/packages/backend/test-federation/compose.yml +++ b/packages/backend/test-federation/compose.yml @@ -25,6 +25,7 @@ services: environment: - NODE_ENV=development - NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/rootCA.crt + - COREPACK_DEFAULT_TO_LATEST=0 volumes: - type: bind source: ../package.json @@ -85,6 +86,8 @@ services: depends_on: redis.test: condition: service_healthy + environment: + - COREPACK_DEFAULT_TO_LATEST=0 volumes: - type: bind source: ../package.json diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json index a0353b4c7f..ab5026ab0d 100644 --- a/packages/frontend-embed/package.json +++ b/packages/frontend-embed/package.json @@ -14,7 +14,7 @@ "@rollup/plugin-json": "6.1.0", "@rollup/plugin-replace": "5.0.7", "@rollup/pluginutils": "5.1.3", - "@tabler/icons-webfont": "3.3.0", + "@tabler/icons-webfont": "https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.29.0-mi.1913+5921534bc.tar.gz", "@twemoji/parser": "15.1.1", "@vitejs/plugin-vue": "5.2.0", "@vue/compiler-sfc": "3.5.12", diff --git a/packages/frontend-shared/build.js b/packages/frontend-shared/build.js index 17b6da8d30..9941114757 100644 --- a/packages/frontend-shared/build.js +++ b/packages/frontend-shared/build.js @@ -23,10 +23,14 @@ const options = { sourcemap: 'linked', }; -// js-built配下をすべて削除する -fs.rmSync('./js-built', { recursive: true, force: true }); +const args = process.argv.slice(2).map(arg => arg.toLowerCase()); -if (process.argv.map(arg => arg.toLowerCase()).includes('--watch')) { +// js-built配下をすべて削除する +if (!args.includes('--no-clean')) { + fs.rmSync('./js-built', { recursive: true, force: true }); +} + +if (args.includes('--watch')) { await watchSrc(); } else { await buildSrc(); diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 9ec8bb0a83..804160baad 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -24,7 +24,7 @@ "@rollup/plugin-replace": "5.0.7", "@rollup/pluginutils": "5.1.3", "@syuilo/aiscript": "0.19.0", - "@tabler/icons-webfont": "3.3.0", + "@tabler/icons-webfont": "https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.29.0-mi.1913+5921534bc.tar.gz", "@twemoji/parser": "15.1.1", "@vitejs/plugin-vue": "5.2.0", "@vue/compiler-sfc": "3.5.12", diff --git a/packages/frontend/src/account.ts b/packages/frontend/src/account.ts index 36186ecac1..9006150bc8 100644 --- a/packages/frontend/src/account.ts +++ b/packages/frontend/src/account.ts @@ -41,6 +41,12 @@ export async function signout() { if (!$i) return; waiting(); + document.cookie.split(';').forEach((cookie) => { + const cookieName = cookie.split('=')[0].trim(); + if (cookieName === 'token') { + document.cookie = `${cookieName}=; max-age=0; path=/`; + } + }); miLocalStorage.removeItem('account'); await removeAccount($i.id); const accounts = await getAccounts(); @@ -101,6 +107,9 @@ export async function removeAccount(idOrToken: Account['id']) { } function fetchAccount(token: string, id?: string, forceShowDialog?: boolean): Promise { + document.cookie = "token=; path=/; max-age=0"; + document.cookie = `token=${token}; path=/queue; max-age=86400; SameSite=Strict; Secure`; // bull dashboardの認証とかで使う + return new Promise((done, fail) => { window.fetch(`${apiUrl}/i`, { method: 'POST', @@ -213,7 +222,6 @@ export async function login(token: Account['token'], redirect?: string) { throw reason; }); miLocalStorage.setItem('account', JSON.stringify(me)); - document.cookie = `token=${token}; path=/; max-age=31536000`; // bull dashboardの認証とかで使う await addAccount(me.id, token); if (redirect) { diff --git a/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue b/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue index ecbee864dc..e6ab17417d 100644 --- a/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue +++ b/packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue @@ -57,7 +57,7 @@ SPDX-License-Identifier: AGPL-3.0-only