Merge branch 'misskey-develop' into merge/2025-03-24

# Conflicts:
#	.github/workflows/storybook.yml
#	package.json
#	packages/frontend/src/utility/autogen/settings-search-index.ts
#	pnpm-lock.yaml
This commit is contained in:
Hazelnoot 2025-04-05 12:20:19 -04:00
commit 7e7350eab5
65 changed files with 486 additions and 1651 deletions

View file

@ -1888,6 +1888,8 @@ _role:
descriptionOfIsExplorable: "La línia de temps d'aquest rol i la llista d'usuaris seran públics si s'activa."
displayOrder: "Posició "
descriptionOfDisplayOrder: "Com més gran és el número, més dalt la seva posició a la interfície."
preserveAssignmentOnMoveAccount: "L'estat de l'assignació també es trasllada amb el compte migrat"
preserveAssignmentOnMoveAccount_description: "Si s'activa quan es migra un compte amb aquest rol, el compte migrat també heretarà aquest rol."
canEditMembersByModerator: "Permetre que els moderadors editin la llista d'usuaris en aquest rol"
descriptionOfCanEditMembersByModerator: "Quan s'activa, els moderadors, així com els administradors, podran afegir i treure usuaris d'aquest rol. Si es troba desactivat, només els administradors poden assignar usuaris."
priority: "Prioritat"

View file

@ -1888,6 +1888,8 @@ _role:
descriptionOfIsExplorable: "This role's timeline and the list of users with this will be made public if enabled."
displayOrder: "Position"
descriptionOfDisplayOrder: "The higher the number, the higher its UI position."
preserveAssignmentOnMoveAccount: "Preserve role assignment during migration"
preserveAssignmentOnMoveAccount_description: "When turned on, this role will be carried over to the destination account when an account with this role is migrated."
canEditMembersByModerator: "Allow moderators to edit the list of members for this role"
descriptionOfCanEditMembersByModerator: "When turned on, moderators as well as administrators will be able to assign and unassign users to this role. When turned off, only administrators will be able to assign users."
priority: "Priority"

View file

@ -1888,6 +1888,8 @@ _role:
descriptionOfIsExplorable: "Selezionandolo, la timeline del ruolo diventerà accessibile pubblicamente. Tranne se il ruolo non è pubblico."
displayOrder: "Ordine di visualizzazione"
descriptionOfDisplayOrder: "I valori più alti vengono visualizzati per primi"
preserveAssignmentOnMoveAccount: "Mantenere l'assegnazione alla migrazione del profilo"
preserveAssignmentOnMoveAccount_description: "Attivando, il ruolo verrà portato sul profilo destinatario, durante la migrazione."
canEditMembersByModerator: "Anche i Moderatori assegnano profili a questo ruolo"
descriptionOfCanEditMembersByModerator: "Se disattivo, potranno farlo solamente gli Amministratori."
priority: "Priorità"

View file

@ -1887,6 +1887,8 @@ _role:
descriptionOfIsExplorable: "打开后将公开角色时间线。如果角色不是公开的,就无法公开时间线。"
displayOrder: "显示顺序"
descriptionOfDisplayOrder: "数字越大,显示位置越靠前。"
preserveAssignmentOnMoveAccount: "将分配状态继承到目标账户"
preserveAssignmentOnMoveAccount_description: "启用后,当迁移具有该角色的账户时,目标账户也会继承该角色。"
canEditMembersByModerator: "允许监察员编辑成员"
descriptionOfCanEditMembersByModerator: "如果选中,监察员和管理员都能够为用户分配/取消分配角色。如果未选中,则只有管理员可以执行此操作。"
priority: "优先级"

View file

@ -1,6 +1,6 @@
{
"name": "sharkey",
"version": "2025.4.0-rc.0",
"version": "2025.4.0-rc.1",
"codename": "shonk",
"repository": {
"type": "git",
@ -24,7 +24,6 @@
"build": "pnpm build-pre && pnpm -r build && pnpm build-assets",
"build-storybook": "pnpm --filter frontend build-storybook",
"build-misskey-js-with-types": "pnpm build-pre && pnpm --filter backend... --filter=!misskey-js build && pnpm --filter backend generate-api-json --no-build && ncp packages/backend/built/api.json packages/misskey-js/generator/api.json && pnpm --filter misskey-js update-autogen-code && pnpm --filter misskey-js build && pnpm --filter misskey-js api",
"build-frontend-search-index": "pnpm --filter frontend build-search-index",
"start": "pnpm check:connect && cd packages/backend && MK_WARNED_ABOUT_CONFIG=true node ./built/boot/entry.js",
"start:test": "cd packages/backend && cross-env NODE_ENV=test node ./built/boot/entry.js",
"init": "pnpm migrate",

View file

@ -15,8 +15,6 @@
focus: ':alpha<0.3<@accent',
bg: '#000',
fg: '#dadada',
fgTransparentWeak: ':alpha<0.75<@fg',
fgTransparent: ':alpha<0.5<@fg',
fgHighlighted: ':lighten<3<@fg',
fgOnAccent: '#fff',
fgOnWhite: '#333',
@ -26,7 +24,6 @@
panelHighlight: ':lighten<3<@panel',
panelHeaderBg: ':lighten<3<@panel',
panelHeaderFg: '@fg',
panelHeaderDivider: 'rgba(0, 0, 0, 0)',
panelBorder: '" solid 1px var(--MI_THEME-divider)',
thread: ':lighten<12<@panel',
windowHeader: ':alpha<0.85<@panel',

View file

@ -15,8 +15,6 @@
focus: ':alpha<0.3<@accent',
bg: '#fff',
fg: '#5f5f5f',
fgTransparentWeak: ':alpha<0.75<@fg',
fgTransparent: ':alpha<0.5<@fg',
fgHighlighted: ':darken<3<@fg',
fgOnAccent: '#fff',
fgOnWhite: '#333',
@ -26,7 +24,6 @@
panelHighlight: ':darken<3<@panel',
panelHeaderBg: ':lighten<3<@panel',
panelHeaderFg: '@fg',
panelHeaderDivider: 'rgba(0, 0, 0, 0)',
panelBorder: '" solid 1px var(--MI_THEME-divider)',
thread: ':darken<12<@panel',
windowHeader: ':alpha<0.85<@panel',

View file

@ -46,7 +46,6 @@
fgOnWhite: '@accent',
panelHighlight: ':lighten<3<@panel',
scrollbarHandle: 'rgba(255, 255, 255, 0.2)',
panelHeaderDivider: 'rgba(0, 0, 0, 0)',
scrollbarHandleHover: 'rgba(255, 255, 255, 0.4)',
},
}

View file

@ -14,7 +14,6 @@
fgOnWhite: '@accent',
divider: 'rgba(255, 255, 255, 0.14)',
panel: 'rgb(47, 47, 44)',
panelHeaderDivider: 'rgba(0, 0, 0, 0)',
header: ':alpha<0.7<@panel',
navBg: '#363636',
renote: '@accent',

View file

@ -14,7 +14,6 @@
fgOnWhite: '@accent',
divider: 'rgba(255, 255, 255, 0.14)',
panel: '#2d2d2d',
panelHeaderDivider: 'rgba(0, 0, 0, 0)',
header: ':alpha<0.7<@panel',
navBg: '#363636',
renote: '@accent',

View file

@ -15,7 +15,6 @@
fgOnWhite: '@accent',
divider: 'rgba(255, 255, 255, 0.1)',
panel: '#18181c',
panelHeaderDivider: 'rgba(0, 0, 0, 0)',
renote: '@accent',
mention: '#f2c97d',
mentionMe: '@accent',

View file

@ -15,7 +15,6 @@
fgOnWhite: '@accent',
divider: '#e7fffb24',
panel: '#192320',
panelHeaderDivider: 'rgba(0, 0, 0, 0)',
popup: '#293330',
renote: '@accent',
mentionMe: '#ffaa00',

View file

@ -15,7 +15,6 @@
fgOnWhite: '@accent',
divider: '#e7fffb24',
panel: '#192320',
panelHeaderDivider: 'rgba(0, 0, 0, 0)',
popup: '#293330',
renote: '@accent',
mentionMe: '#b4e900',

View file

@ -49,7 +49,6 @@
navIndicator: '@indicator',
driveFolderBg: ':alpha<0.3<@accent',
fgHighlighted: ':lighten<3<@fg',
fgTransparent: ':alpha<0.5<@fg',
panelHeaderBg: ':lighten<3<@panel',
panelHeaderFg: '@fg',
buttonGradateA: '@accent',
@ -58,8 +57,6 @@
panelHighlight: ':lighten<3<@panel',
scrollbarHandle: 'rgba(255, 255, 255, 0.2)',
inputBorderHover: 'rgba(255, 255, 255, 0.2)',
fgTransparentWeak: ':alpha<0.75<@fg',
panelHeaderDivider: 'rgba(0, 0, 0, 0)',
scrollbarHandleHover: 'rgba(255, 255, 255, 0.4)',
deckBg: '#142022',
},

View file

@ -15,7 +15,6 @@
divider: '#cfcfcf',
panel: '#ebe7e5',
panelHeaderBg: '@panel',
panelHeaderDivider: '@divider',
header: ':alpha<0.7<@panel',
navBg: '#ebe7e5',
renote: '#229e92',

View file

@ -15,7 +15,6 @@
header: ':alpha<0.7<@panel',
navBg: '#fff',
panel: '#fff',
panelHeaderDivider: '@divider',
mentionMe: 'rgb(0, 179, 70)',
},
}

View file

@ -13,7 +13,6 @@
fgOnWhite: '@accent',
panel: '#fff',
divider: 'rgb(230 233 234)',
panelHeaderDivider: '@divider',
renote: '@accent',
link: '@accent',
mention: '@accent',

View file

@ -51,7 +51,6 @@
buttonHoverBg: '#0000001a',
driveFolderBg: ':alpha<0.3<@accent',
fgHighlighted: ':lighten<3<@fg',
fgTransparent: ':alpha<0.5<@fg',
panelHeaderBg: ':lighten<3<@panel',
panelHeaderFg: '@fg',
buttonGradateA: '@accent',
@ -60,8 +59,6 @@
panelHighlight: ':lighten<3<@panel',
scrollbarHandle: '#74747433',
inputBorderHover: 'rgba(255, 255, 255, 0.2)',
fgTransparentWeak: ':alpha<0.75<@fg',
panelHeaderDivider: 'rgba(0, 0, 0, 0)',
scrollbarHandleHover: 'rgba(255, 255, 255, 0.4)',
},
}

View file

@ -41,15 +41,12 @@
navIndicator: '@accent',
driveFolderBg: ':alpha<0.3<@accent',
fgHighlighted: ':darken<3<@fg',
fgTransparent: ':alpha<0.5<@fg',
fgOnWhite: '@accent',
panelHeaderBg: ':lighten<3<@panel',
panelHeaderFg: '@fg',
htmlThemeColor: '@bg',
panelHighlight: ':darken<3<@panel',
scrollbarHandle: 'rgba(0, 0, 0, 0.2)',
fgTransparentWeak: ':alpha<0.75<@fg',
panelHeaderDivider: '@divider',
scrollbarHandleHover: 'rgba(0, 0, 0, 0.4)',
},
}

File diff suppressed because it is too large Load diff

View file

@ -5,7 +5,6 @@
"scripts": {
"watch": "vite",
"build": "vite build",
"build-search-index": "vite-node --config \"./vite-node.config.ts\" \"./scripts/generate-search-index.ts\"",
"storybook-dev": "nodemon --verbose --watch src --ext \"mdx,ts,vue\" --ignore \"*.stories.ts\" --exec \"pnpm build-storybook-pre && pnpm exec storybook dev -p 6006 --ci\"",
"build-storybook-pre": "(tsc -p .storybook || echo done.) && node .storybook/generate.js && node .storybook/preload-locale.js && node .storybook/preload-theme.js",
"build-storybook": "pnpm build-storybook-pre && storybook build --webpack-stats-json storybook-static",
@ -120,6 +119,7 @@
"@typescript-eslint/eslint-plugin": "8.27.0",
"@typescript-eslint/parser": "8.27.0",
"@vitest/coverage-v8": "3.0.9",
"@vue/compiler-core": "3.5.13",
"@vue/runtime-core": "3.5.13",
"acorn": "8.14.1",
"cross-env": "7.0.3",
@ -129,6 +129,7 @@
"happy-dom": "17.4.4",
"intersection-observer": "0.12.2",
"micromatch": "4.0.8",
"minimatch": "10.0.1",
"msw": "2.7.3",
"msw-storybook-addon": "2.0.4",
"nodemon": "3.1.9",

View file

@ -1,15 +0,0 @@
/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
import { searchIndexes } from '../vite.config.js';
import { generateSearchIndex } from '../lib/vite-plugin-create-search-index.js';
async function main() {
for (const searchIndex of searchIndexes) {
await generateSearchIndex(searchIndex);
}
}
main();

View file

@ -140,7 +140,7 @@ watch(v, newValue => {
.caption {
font-size: 0.85em;
padding: 8px 0 0 0;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
&:empty {
display: none;

View file

@ -60,7 +60,7 @@ const onInput = () => {
.caption {
font-size: 0.85em;
padding: 8px 0 0 0;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
&:empty {
display: none;

View file

@ -181,12 +181,17 @@ onUnmounted(() => {
left: 0;
color: var(--MI_THEME-panelHeaderFg);
background: var(--MI_THEME-panelHeaderBg);
border-bottom: solid 0.5px var(--MI_THEME-panelHeaderDivider);
z-index: 2;
line-height: 1.4em;
background: color-mix(in srgb, var(--MI_THEME-panelHeaderBg) 35%, transparent);
}
@container style(--MI_THEME-panelHeaderBg: var(--MI_THEME-panel)) {
.header {
box-shadow: 0 0.5px 0 0 light-dark(#0002, #fff2);
}
}
.title {
margin: 0;
padding: 12px 16px;

View file

@ -175,7 +175,7 @@ onMounted(() => {
}
.headerLower {
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
font-size: .85em;
padding-left: 4px;
}
@ -209,13 +209,13 @@ onMounted(() => {
}
.headerTextSub {
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
font-size: .85em;
}
.headerRight {
margin-left: auto;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
white-space: nowrap;
}

View file

@ -201,7 +201,7 @@ defineExpose({
.caption {
font-size: 0.85em;
padding: 8px 0 0 0;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
&:empty {
display: none;

View file

@ -78,7 +78,7 @@ export default defineComponent({
> .caption {
font-size: 0.85em;
padding: 8px 0 0 0;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
&:empty {
display: none;

View file

@ -213,7 +213,7 @@ function onMousedown(ev: MouseEvent | TouchEvent) {
> .caption {
font-size: 0.85em;
padding: 8px 0 0 0;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
&:empty {
display: none;

View file

@ -268,7 +268,7 @@ function show() {
.caption {
font-size: 0.85em;
padding: 8px 0 0 0;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
&:empty {
display: none;

View file

@ -94,7 +94,7 @@ export type SuperMenuDef = {
<script lang="ts" setup>
import { useTemplateRef, ref, watch, nextTick } from 'vue';
import type { SearchIndexItem } from '@/utility/autogen/settings-search-index.js';
import type { SearchIndexItem } from '@/utility/settings-search-index.js';
import MkInput from '@/components/MkInput.vue';
import { i18n } from '@/i18n.js';
import { getScrollContainer } from '@@/js/scroll.js';

View file

@ -100,7 +100,7 @@ const toggle = () => {
.caption {
margin: 8px 0 0 0;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
font-size: 0.85em;
&:empty {

View file

@ -307,6 +307,6 @@ onMounted(async () => {
.description {
font-size: 0.85em;
padding: 8px 0 0 0;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
}
</style>

View file

@ -160,7 +160,7 @@ onUnmounted(() => {
.caption {
font-size: 0.85em;
padding: 8px 0 0 0;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
&:empty {
display: none;

View file

@ -298,7 +298,7 @@ onMounted(() => {
.statusItemLabel {
font-size: 0.7em;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
}
.menu {

View file

@ -193,7 +193,7 @@ function showMenu(ev: MouseEvent) {
}
.statsItemLabel {
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
font-size: 0.9em;
}

View file

@ -79,7 +79,7 @@ const props = defineProps<{
margin-right: 0.75em;
flex-shrink: 0;
text-align: center;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
&:empty {
display: none;

View file

@ -49,7 +49,7 @@ defineProps<{
.description {
font-size: 0.85em;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
margin: 0 0 8px 0;
}
</style>

View file

@ -35,7 +35,7 @@ function focus() {
.caption {
font-size: 0.85em;
padding: 8px 0 0 0;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
&:empty {
display: none;

View file

@ -81,7 +81,7 @@ const emit = defineEmits<{
const displayBackButton = props.displayBackButton && window.history.state.key !== 'index' && window.history.length > 1 && inject('shouldBackButton', true);
//const viewId = inject(DI.viewId);
const injectedPageMetadata = inject(DI.pageMetadata);
const injectedPageMetadata = inject(DI.pageMetadata, ref(null));
const pageMetadata = computed(() => props.overridePageMetadata ?? injectedPageMetadata.value);
const hideTitle = computed(() => inject('shouldOmitHeaderTitle', false) || props.hideTitle);

View file

@ -10,7 +10,7 @@ export const DI = {
routerCurrentDepth: Symbol() as InjectionKey<number>,
router: Symbol() as InjectionKey<Router>,
mock: Symbol() as InjectionKey<boolean>,
pageMetadata: Symbol() as InjectionKey<Ref<Record<string, any>>>,
pageMetadata: Symbol() as InjectionKey<Ref<Record<string, any> | null>>,
viewId: Symbol() as InjectionKey<string>,
currentStickyTop: Symbol() as InjectionKey<Ref<number>>,
currentStickyBottom: Symbol() as InjectionKey<Ref<number>>,

View file

@ -724,7 +724,7 @@ definePage(() => ({
.roleItemSub {
padding: 6px 12px;
font-size: 85%;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
}
.roleUnassign {

View file

@ -66,7 +66,7 @@ const emit = defineEmits<{
(ev: 'update:tab', key: string);
}>();
const pageMetadata = inject(DI.pageMetadata);
const pageMetadata = inject(DI.pageMetadata, ref(null));
const el = useTemplateRef('el');
const tabHighlightEl = useTemplateRef('tabHighlightEl');

View file

@ -184,7 +184,7 @@ definePage(() => ({
.userItemSub {
padding: 6px 12px;
font-size: 85%;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
}
.userItemMainBody {

View file

@ -459,6 +459,6 @@ definePage(() => ({
<style lang="scss" module>
.subCaption {
font-size: 0.85em;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
}
</style>

View file

@ -75,6 +75,6 @@ function onDeleteClick() {
margin-right: 0.75em;
flex-shrink: 0;
text-align: center;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
}
</style>

View file

@ -247,7 +247,7 @@ definePage(() => ({
}
.uiInspectorUnShown {
color: var(--MI_THEME-fgTransparent);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.5);
}
.uiInspectorType {

View file

@ -351,7 +351,7 @@ async function search() {
width: 100%;
height: 100%;
padding: 12px;
border: 2px dashed var(--MI_THEME-fgTransparent);
border: 2px dashed color(from var(--MI_THEME-fg) srgb r g b / 0.5);
}
.userSelectButtonInner {

View file

@ -161,6 +161,6 @@ function del(ev: MouseEvent) {
.editorCaption {
font-size: 0.85em;
padding: 8px 0 0 0;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
}
</style>

View file

@ -285,6 +285,6 @@ definePage(() => ({
.editorCaption {
font-size: 0.85em;
padding: 8px 0 0 0;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
}
</style>

View file

@ -42,7 +42,7 @@ import { instance } from '@/instance.js';
import { definePage, provideMetadataReceiver, provideReactiveMetadata } from '@/page.js';
import * as os from '@/os.js';
import { useRouter } from '@/router.js';
import { searchIndexes } from '@/utility/autogen/settings-search-index.js';
import { searchIndexes } from '@/utility/settings-search-index.js';
import { enableAutoBackup, getPreferencesProfileMenu } from '@/preferences/utility.js';
import { store } from '@/store.js';
import { signout } from '@/signout.js';

View file

@ -308,7 +308,7 @@ definePage(() => ({
.userItemSub {
padding: 6px 12px;
font-size: 85%;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
}
.userItemMainBody {

View file

@ -184,6 +184,6 @@ definePage(() => ({
.description {
font-size: 0.85em;
padding: 8px 0 0 0;
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
}
</style>

View file

@ -653,7 +653,7 @@ onUnmounted(() => {
> .heading {
text-align: left;
color: var(--MI_THEME-fgTransparent);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.5);
line-height: 1.5;
font-size: 85%;
}

View file

@ -67,7 +67,7 @@ export function migrateOldSettings() {
prefer.commit('collapseRenotes', store.s.collapseRenotes);
prefer.commit('rememberNoteVisibility', store.s.rememberNoteVisibility);
prefer.commit('uploadFolder', store.s.uploadFolder);
prefer.commit('menu', store.s.menu);
prefer.commit('menu', [...store.s.menu, 'chat']);
prefer.commit('statusbars', store.s.statusbars);
prefer.commit('pinnedUserLists', store.s.pinnedUserLists);
prefer.commit('serverDisconnectedBehavior', store.s.serverDisconnectedBehavior);

View file

@ -413,11 +413,16 @@ function onDrop(ev) {
font-size: 0.9em;
color: var(--MI_THEME-panelHeaderFg);
background: var(--MI_THEME-panelHeaderBg);
box-shadow: 0 0.5px 0 0 var(--MI_THEME-panelHeaderDivider);
cursor: pointer;
user-select: none;
}
@container style(--MI_THEME-panelHeaderBg: var(--MI_THEME-panel)) {
.header {
box-shadow: 0 0.5px 0 0 light-dark(#0002, #fff2);
}
}
.color {
position: absolute;
top: 12px;

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,43 @@
/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
import { searchIndexes as generated } from 'search-index:settings';
import type { GeneratedSearchIndexItem } from 'search-index:settings';
export type SearchIndexItem = {
id: string;
path?: string;
label: string;
keywords: string[];
icon?: string;
children?: SearchIndexItem[];
};
const rootMods = new Map(generated.map(item => [item.id, item]));
function walk(item: GeneratedSearchIndexItem) {
if (item.inlining) {
for (const id of item.inlining) {
const inline = rootMods.get(id);
if (inline) {
(item.children ??= []).push(inline);
rootMods.delete(id);
} else {
console.log('[Settings Search Index] Failed to inline', id);
}
}
}
for (const child of item.children ?? []) {
walk(child);
}
}
for (const item of generated) {
walk(item);
}
export const searchIndexes: SearchIndexItem[] = generated;

View file

@ -0,0 +1,18 @@
/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
declare module 'search-index:settings' {
export type GeneratedSearchIndexItem = {
id: string;
path?: string;
label: string;
keywords: string[];
icon?: string;
inlining?: string[];
children?: GeneratedSearchIndexItem[];
};
export const searchIndexes: GeneratedSearchIndexItem[];
}

View file

@ -73,6 +73,6 @@ defineExpose<WidgetComponentExpose>({
}
.text {
color: var(--MI_THEME-fgTransparentWeak);
color: color(from var(--MI_THEME-fg) srgb r g b / 0.75);
}
</style>

View file

@ -23,7 +23,8 @@ const extensions = ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.json', '.json5', '.s
*/
export const searchIndexes = [{
targetFilePaths: ['src/pages/settings/*.vue'],
exportFilePath: './src/utility/autogen/settings-search-index.ts',
mainVirtualModule: 'search-index:settings',
modulesToHmrOnUpdate: ['src/pages/settings/index.vue'],
verbose: process.env.FRONTEND_SEARCH_INDEX_VERBOSE === 'true',
}] satisfies SearchIndexOptions[];

View file

@ -1,7 +1,7 @@
{
"type": "module",
"name": "misskey-js",
"version": "2025.4.0-rc.0",
"version": "2025.4.0-rc.1",
"description": "Misskey SDK for JavaScript",
"license": "MIT",
"main": "./built/index.js",

166
pnpm-lock.yaml generated
View file

@ -1005,6 +1005,9 @@ importers:
'@vitest/coverage-v8':
specifier: 3.0.9
version: 3.0.9(vitest@3.0.9(@types/debug@4.1.12)(@types/node@22.13.11)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.11)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))
'@vue/compiler-core':
specifier: 3.5.13
version: 3.5.13
'@vue/runtime-core':
specifier: 3.5.13
version: 3.5.13
@ -1032,6 +1035,9 @@ importers:
micromatch:
specifier: 4.0.8
version: 4.0.8
minimatch:
specifier: 10.0.1
version: 10.0.1
msw:
specifier: 2.7.3
version: 2.7.3(@types/node@22.13.11)(typescript@5.8.2)
@ -1358,7 +1364,7 @@ importers:
version: 9.1.0(eslint@9.22.0)
jest:
specifier: ^29.7.0
version: 29.7.0(@types/node@22.13.10)
version: 29.7.0(@types/node@22.13.15)
jest-worker:
specifier: ^29.7.0
version: 29.7.0
@ -1370,7 +1376,7 @@ importers:
version: 3.3.3
ts-jest:
specifier: ^29.1.1
version: 29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(esbuild@0.25.0)(jest@29.7.0(@types/node@22.13.10))(typescript@5.1.6)
version: 29.1.2(@babel/core@7.23.5)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.5))(esbuild@0.25.0)(jest@29.7.0(@types/node@22.13.15))(typescript@5.1.6)
typedoc:
specifier: ^0.25.3
version: 0.25.13(typescript@5.1.6)
@ -8312,10 +8318,6 @@ packages:
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
minimatch@5.1.2:
resolution: {integrity: sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==}
engines: {node: '>=10'}
minimatch@5.1.6:
resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
engines: {node: '>=10'}
@ -8324,10 +8326,6 @@ packages:
resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==}
engines: {node: '>=16 || 14 >=14.17'}
minimatch@9.0.4:
resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
engines: {node: '>=16 || 14 >=14.17'}
minimatch@9.0.5:
resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
engines: {node: '>=16 || 14 >=14.17'}
@ -11927,56 +11925,26 @@ snapshots:
'@babel/core': 7.23.5
'@babel/helper-plugin-utils': 7.22.5
'@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
'@babel/helper-plugin-utils': 7.22.5
optional: true
'@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.5)':
dependencies:
'@babel/core': 7.23.5
'@babel/helper-plugin-utils': 7.22.5
'@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
'@babel/helper-plugin-utils': 7.22.5
optional: true
'@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.5)':
dependencies:
'@babel/core': 7.23.5
'@babel/helper-plugin-utils': 7.22.5
'@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
'@babel/helper-plugin-utils': 7.22.5
optional: true
'@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.5)':
dependencies:
'@babel/core': 7.23.5
'@babel/helper-plugin-utils': 7.22.5
'@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
'@babel/helper-plugin-utils': 7.22.5
optional: true
'@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.5)':
dependencies:
'@babel/core': 7.23.5
'@babel/helper-plugin-utils': 7.22.5
'@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
'@babel/helper-plugin-utils': 7.22.5
optional: true
'@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.5)':
dependencies:
'@babel/core': 7.23.5
@ -11987,78 +11955,36 @@ snapshots:
'@babel/core': 7.23.5
'@babel/helper-plugin-utils': 7.22.5
'@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
'@babel/helper-plugin-utils': 7.22.5
optional: true
'@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.5)':
dependencies:
'@babel/core': 7.23.5
'@babel/helper-plugin-utils': 7.22.5
'@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
'@babel/helper-plugin-utils': 7.22.5
optional: true
'@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.5)':
dependencies:
'@babel/core': 7.23.5
'@babel/helper-plugin-utils': 7.22.5
'@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
'@babel/helper-plugin-utils': 7.22.5
optional: true
'@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.5)':
dependencies:
'@babel/core': 7.23.5
'@babel/helper-plugin-utils': 7.22.5
'@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
'@babel/helper-plugin-utils': 7.22.5
optional: true
'@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.5)':
dependencies:
'@babel/core': 7.23.5
'@babel/helper-plugin-utils': 7.22.5
'@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
'@babel/helper-plugin-utils': 7.22.5
optional: true
'@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.5)':
dependencies:
'@babel/core': 7.23.5
'@babel/helper-plugin-utils': 7.22.5
'@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
'@babel/helper-plugin-utils': 7.22.5
optional: true
'@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.5)':
dependencies:
'@babel/core': 7.23.5
'@babel/helper-plugin-utils': 7.22.5
'@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7)':
dependencies:
'@babel/core': 7.24.7
'@babel/helper-plugin-utils': 7.22.5
optional: true
'@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.5)':
dependencies:
'@babel/core': 7.23.5
@ -14624,7 +14550,7 @@ snapshots:
'@storybook/manager-api': 8.6.7(storybook@8.6.7(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/preview-api': 8.6.7(storybook@8.6.7(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@storybook/theming': 8.6.7(storybook@8.6.7(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))
'@vue/compiler-core': 3.5.12
'@vue/compiler-core': 3.5.13
storybook: 8.6.7(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)
ts-dedent: 2.2.0
type-fest: 2.19.0
@ -14650,7 +14576,7 @@ snapshots:
'@xhmikosr/bin-wrapper': 13.0.5
commander: 8.3.0
fast-glob: 3.3.3
minimatch: 9.0.4
minimatch: 9.0.5
piscina: 4.4.0
semver: 7.6.3
slash: 3.0.0
@ -15670,7 +15596,7 @@ snapshots:
'@vue/compiler-dom': 3.5.12
'@vue/shared': 3.5.12
computeds: 0.0.1
minimatch: 9.0.4
minimatch: 9.0.5
path-browserify: 1.0.1
vue-template-compiler: 2.7.14
optionalDependencies:
@ -15683,7 +15609,7 @@ snapshots:
'@vue/compiler-vue2': 2.7.16
'@vue/shared': 3.5.12
alien-signals: 1.0.7
minimatch: 9.0.4
minimatch: 9.0.5
muggle-string: 0.4.1
path-browserify: 1.0.1
optionalDependencies:
@ -16134,20 +16060,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
babel-jest@29.7.0(@babel/core@7.24.7):
dependencies:
'@babel/core': 7.24.7
'@jest/transform': 29.7.0
'@types/babel__core': 7.20.0
babel-plugin-istanbul: 6.1.1
babel-preset-jest: 29.6.3(@babel/core@7.24.7)
chalk: 4.1.2
graceful-fs: 4.2.11
slash: 3.0.0
transitivePeerDependencies:
- supports-color
optional: true
babel-plugin-istanbul@6.1.1:
dependencies:
'@babel/helper-plugin-utils': 7.22.5
@ -16181,36 +16093,12 @@ snapshots:
'@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5)
'@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.5)
babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.7):
dependencies:
'@babel/core': 7.24.7
'@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7)
'@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.7)
'@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.7)
'@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7)
'@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7)
'@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7)
'@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7)
'@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7)
'@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7)
'@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7)
'@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7)
'@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7)
optional: true
babel-preset-jest@29.6.3(@babel/core@7.23.5):
dependencies:
'@babel/core': 7.23.5
babel-plugin-jest-hoist: 29.6.3
babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.5)
babel-preset-jest@29.6.3(@babel/core@7.24.7):
dependencies:
'@babel/core': 7.24.7
babel-plugin-jest-hoist: 29.6.3
babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7)
optional: true
babel-walk@3.0.0-canary-5:
dependencies:
'@babel/types': 7.24.7
@ -18333,7 +18221,7 @@ snapshots:
dependencies:
foreground-child: 3.1.1
jackspeak: 2.3.6
minimatch: 9.0.4
minimatch: 9.0.5
minipass: 7.1.2
path-scurry: 1.10.1
@ -18341,7 +18229,7 @@ snapshots:
dependencies:
foreground-child: 3.1.1
jackspeak: 3.4.3
minimatch: 9.0.4
minimatch: 9.0.5
minipass: 7.1.2
package-json-from-dist: 1.0.0
path-scurry: 1.11.1
@ -18651,7 +18539,7 @@ snapshots:
ignore-walk@7.0.0:
dependencies:
minimatch: 9.0.4
minimatch: 9.0.5
ignore@5.3.1: {}
@ -20162,10 +20050,6 @@ snapshots:
dependencies:
brace-expansion: 1.1.11
minimatch@5.1.2:
dependencies:
brace-expansion: 2.0.1
minimatch@5.1.6:
dependencies:
brace-expansion: 2.0.1
@ -20174,10 +20058,6 @@ snapshots:
dependencies:
brace-expansion: 2.0.1
minimatch@9.0.4:
dependencies:
brace-expansion: 2.0.1
minimatch@9.0.5:
dependencies:
brace-expansion: 2.0.1
@ -21408,7 +21288,7 @@ snapshots:
readdir-glob@1.1.2:
dependencies:
minimatch: 5.1.2
minimatch: 5.1.6
readdirp@4.1.2: {}
@ -22314,7 +22194,7 @@ snapshots:
dependencies:
'@istanbuljs/schema': 0.1.3
glob: 10.4.5
minimatch: 9.0.4
minimatch: 9.0.5
text-decoding@1.0.0: {}
@ -22428,11 +22308,11 @@ snapshots:
ts-dedent@2.2.0: {}
ts-jest@29.1.2(@babel/core@7.24.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.7))(esbuild@0.25.0)(jest@29.7.0(@types/node@22.13.10))(typescript@5.1.6):
ts-jest@29.1.2(@babel/core@7.23.5)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.5))(esbuild@0.25.0)(jest@29.7.0(@types/node@22.13.15))(typescript@5.1.6):
dependencies:
bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0
jest: 29.7.0(@types/node@22.13.10)
jest: 29.7.0(@types/node@22.13.15)
jest-util: 29.7.0
json5: 2.2.3
lodash.memoize: 4.1.2
@ -22441,9 +22321,9 @@ snapshots:
typescript: 5.1.6
yargs-parser: 21.1.1
optionalDependencies:
'@babel/core': 7.24.7
'@babel/core': 7.23.5
'@jest/types': 29.6.3
babel-jest: 29.7.0(@babel/core@7.24.7)
babel-jest: 29.7.0(@babel/core@7.23.5)
esbuild: 0.25.0
ts-map@1.0.3: {}
@ -22560,7 +22440,7 @@ snapshots:
dependencies:
lunr: 2.3.9
marked: 4.3.0
minimatch: 9.0.4
minimatch: 9.0.5
shiki: 0.14.7
typescript: 5.1.6
@ -22901,7 +22781,7 @@ snapshots:
vscode-languageclient@9.0.1:
dependencies:
minimatch: 5.1.2
minimatch: 5.1.6
semver: 7.6.3
vscode-languageserver-protocol: 3.17.5

View file

@ -28,3 +28,4 @@ onlyBuiltDependencies:
- utf-8-validate
- v-code-diff
- vue-demi
ignorePatchFailures: false

View file

@ -0,0 +1,31 @@
diff --git a/dist/node/chunks/dep-DrOo5SEf.js b/dist/node/chunks/dep-DrOo5SEf.js
index 329e68bd27e55a56d815fa6b4de2d615a8c2b343..9d9f58e90ae836f80063b698e307fec436e53e07 100644
--- a/dist/node/chunks/dep-DrOo5SEf.js
+++ b/dist/node/chunks/dep-DrOo5SEf.js
@@ -45971,7 +45971,7 @@ function importAnalysisPlugin(config) {
let isPartiallySelfAccepting = false;
const importedBindings = enablePartialAccept ? /* @__PURE__ */ new Map() : null;
const toAbsoluteUrl = (url) => path$d.posix.resolve(path$d.posix.dirname(importerModule.url), url);
- const normalizeUrl = async (url, pos, forceSkipImportAnalysis = false) => {
+ const normalizeUrl = async (url, pos, forceSkipImportAnalysis = false, stripBase2 = false) => {
url = stripBase(url, base);
let importerFile = importer;
if (depsOptimizer && moduleListContains(depsOptimizer.options.exclude, url)) {
@@ -46031,7 +46031,7 @@ function importAnalysisPlugin(config) {
e.pos = pos;
throw e;
}
- if (!ssr) url = joinUrlSegments(base, url);
+ if (!ssr && !stripBase2) url = joinUrlSegments(base, url);
return [url, resolved.id];
};
const orderedImportedUrls = new Array(imports.length);
@@ -46288,7 +46288,7 @@ See ${colors$1.blue(
const pluginImports = this._addedImports;
if (pluginImports) {
(await Promise.all(
- [...pluginImports].map((id) => normalizeUrl(id, 0, true))
+ [...pluginImports].map((id) => normalizeUrl(id, 0, true, true))
)).forEach(([url]) => importedUrls.add(url));
}
if (ssr && importerModule.isSelfAccepting) {