From 4c34edd31ce4774026fd64309cc86431737bb3b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=ED=9B=88?= Date: Mon, 22 Jun 2026 13:08:27 +0900 Subject: [PATCH 1/2] fix: constrain layout map image sizing to prevent modal overflow --- src/components/Modal/modal.css | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/components/Modal/modal.css b/src/components/Modal/modal.css index 52d7d9f..af7bf1b 100644 --- a/src/components/Modal/modal.css +++ b/src/components/Modal/modal.css @@ -537,6 +537,8 @@ background-color: var(--canvas-soft-2); border-radius: 4px; overflow: hidden; + max-width: 100%; + max-height: 100%; } .layout-map-container.readonly { @@ -546,12 +548,15 @@ .image-marker-wrapper { position: relative; display: inline-block; + max-width: 100%; + max-height: 100%; } .layout-map-img { display: block; max-width: 100%; - max-height: 75vh; + max-height: 70vh; + object-fit: contain; user-select: none; -webkit-user-drag: none; } From 197d5e1f0b19a05ff2255c4df50e89241ba0edeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=ED=83=9C=ED=9B=88?= Date: Mon, 22 Jun 2026 13:19:12 +0900 Subject: [PATCH 2/2] fix: restore relative API paths and dev proxy settings matching main branch --- src/components/Modal/HWModal.ts | 6 +++--- vite.config.ts | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/components/Modal/HWModal.ts b/src/components/Modal/HWModal.ts index 382cf21..03ea7a1 100644 --- a/src/components/Modal/HWModal.ts +++ b/src/components/Modal/HWModal.ts @@ -1,6 +1,6 @@ import { state, saveAsset, deleteAsset } from '../../core/state'; import { ASSET_SCHEMA, UI_TEXT } from '../../core/schema'; -import { calculatePcScoreDeductive, getPcGrade } from '../../core/utils'; +import { calculatePcScoreDeductive, getPcGrade, API_BASE_URL } from '../../core/utils'; import { generateOptionsHTML, setFieldValue, @@ -728,7 +728,7 @@ class HwAssetModal extends BaseModal { private async fetchMapConfig() { try { - const res = await fetch(`http://${location.hostname}:3000/api/maps`); + const res = await fetch(`${API_BASE_URL}/api/maps`); this.dynamicMapConfig = await res.json(); } catch (err) { console.error('Failed to fetch map config:', err); } } @@ -925,7 +925,7 @@ class HwAssetModal extends BaseModal { private async fetchMasterComponents(): Promise { try { - const res = await fetch(`http://${location.hostname}:3000/api/hardware-components`); + const res = await fetch(`${API_BASE_URL}/api/hardware-components`); this.masterComponents = await res.json(); } catch (err) { console.error('Failed to fetch master components:', err); } } diff --git a/vite.config.ts b/vite.config.ts index b5a8bda..a3787f6 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,17 +1,19 @@ import { defineConfig } from 'vite'; import { resolve } from 'path'; +const proxyTarget = process.env.VITE_DEV_PROXY_TARGET || 'http://localhost:3000'; + export default defineConfig({ server: { port: 8080, host: true, // Listen on all local IPs proxy: { '/api': { - target: 'http://localhost:3000', + target: proxyTarget, changeOrigin: true, }, '/uploads': { - target: 'http://localhost:3000', + target: proxyTarget, changeOrigin: true, } }