diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index ca301c5d38..897fa75436 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -3583,6 +3583,7 @@ _miRoom: material_metallic: "光沢" material_roughness: "粗さ" light_brightness: "明るさ" + advancedCustomize: "高度なアレンジ" _objects: woodRingFloorLamp: "リングシェードフロアランプ" diff --git a/packages/frontend/src/pages/rooms/room.core.vue b/packages/frontend/src/pages/rooms/room.core.vue index 34ed774626..0b55081535 100644 --- a/packages/frontend/src/pages/rooms/room.core.vue +++ b/packages/frontend/src/pages/rooms/room.core.vue @@ -785,9 +785,8 @@ function showOtherMenu(ev: PointerEvent) { right: 16px; z-index: 1; padding: 16px; - box-sizing: border-box; width: 300px; - max-height: 100%; + max-height: calc(100% - 16px - 16px); box-sizing: border-box; overflow: auto; border-radius: 12px; diff --git a/packages/frontend/src/pages/rooms/room.object-customize-form.vue b/packages/frontend/src/pages/rooms/room.object-customize-form.vue index 7e5f6c93e1..5e81ae9ac8 100644 --- a/packages/frontend/src/pages/rooms/room.object-customize-form.vue +++ b/packages/frontend/src/pages/rooms/room.object-customize-form.vue @@ -22,12 +22,14 @@ SPDX-License-Identifier: AGPL-3.0-only - - - - - - +
@@ -68,6 +70,8 @@ SPDX-License-Identifier: AGPL-3.0-only
+ + {{ i18n.ts._miRoom.advancedCustomize }} @@ -76,7 +80,7 @@ SPDX-License-Identifier: AGPL-3.0-only import { } from 'vue'; import * as Misskey from 'misskey-js'; import { getHex, getRgb } from 'misskey-world/src/utility.js'; -import type { ObjectSchemaDef } from 'misskey-world/src/room/object.js'; +import type { ObjectSchemaDef, RawOptions } from 'misskey-world/src/room/object.js'; import { i18n } from '@/i18n.js'; import MkButton from '@/components/MkButton.vue'; import MkSelect from '@/components/MkSelect.vue'; @@ -88,6 +92,7 @@ import { chooseDriveFile } from '@/utility/drive.js'; import MkRadios from '@/components/MkRadios.vue'; import MkFolder from '@/components/MkFolder.vue'; import { OBJECT_UI_DEFS } from '@/world/room/object-ui-defs.js'; +import { prefer } from '@/preferences.js'; const props = defineProps<{ schema: ObjectSchemaDef; @@ -99,6 +104,8 @@ const emit = defineEmits<{ (ev: 'update', k: string, v: any): void; }>(); +const advancedCustomize = prefer.model('world.room.advancedCustomize'); + function changeImageType(k: string, type: string) { emit('update', k, { ...props.options[k], type, driveFileId: type === '_custom_' ? props.options[k].driveFileId : null }); } @@ -121,6 +128,13 @@ async function changeImage(k: string) { }); return; } + if (Math.max(file.properties.width ?? 0, file.properties.height ?? 0) > 2048) { + os.alert({ + type: 'error', + text: 'The image dimensions exceed the limit of 2048x2048 pixels.', + }); + return; + } props.addFileAttachment(file); emit('update', k, { ...props.options[k], diff --git a/packages/frontend/src/preferences/def.ts b/packages/frontend/src/preferences/def.ts index f75cf52577..daefded184 100644 --- a/packages/frontend/src/preferences/def.ts +++ b/packages/frontend/src/preferences/def.ts @@ -548,6 +548,9 @@ export const PREF_DEF = definePreferences({ 'world.separateRenderingThread': { default: true, }, + 'world.room.advancedCustomize': { + default: false, + }, 'experimental.stackingRouterView': { default: false, diff --git a/packages/i18n/src/autogen/locale.ts b/packages/i18n/src/autogen/locale.ts index ed495a0f2c..768de9673c 100644 --- a/packages/i18n/src/autogen/locale.ts +++ b/packages/i18n/src/autogen/locale.ts @@ -13370,6 +13370,10 @@ export interface Locale extends ILocale { * 明るさ */ "light_brightness": string; + /** + * 高度なアレンジ + */ + "advancedCustomize": string; "_objects": { /** * リングシェードフロアランプ