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
{ const c = getRgb(v); if (c != null) updateMaterialColor(k, c); }">
{{ i18n.ts.color }}
- updateMaterialMetallic(k, v)">
- {{ i18n.ts._miRoom.material_metallic }}
-
- updateMaterialRoughness(k, v)">
- {{ i18n.ts._miRoom.material_roughness }}
-
+
+ updateMaterialMetallic(k, v)">
+ {{ i18n.ts._miRoom.material_metallic }}
+
+ updateMaterialRoughness(k, v)">
+ {{ i18n.ts._miRoom.material_roughness }}
+
+
@@ -68,6 +70,8 @@ SPDX-License-Identifier: AGPL-3.0-only
emit('update', k, v)">
+
+ {{ 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": {
/**
* リングシェードフロアランプ