@nine-lab/nine-mu 0.1.342 β†’ 0.1.343

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nine-lab/nine-mu",
3
- "version": "0.1.342",
3
+ "version": "0.1.343",
4
4
  "description": "AI-Driven Full-Stack Code Fabrication Engine",
5
5
  "type": "module",
6
6
  "main": "./dist/nine-mu.umd.js",
@@ -68,13 +68,32 @@ export class ExceptionHook extends HTMLElement {
68
68
  #renderer = () => {
69
69
  const customImport = nine.cssPath ? `@import "${nine.cssPath}/nine-mu.css";` : "";
70
70
 
71
+ // 🎯 [μˆ˜μ • 1] κΈ€λ‘œλ²Œ λ‘œλ”© μ˜€λ²„λ ˆμ΄λ₯Ό ν™”λ©΄ μ „μ²΄μ—μ„œ μ°μ–΄λˆ„λ₯΄κΈ° μœ„ν•œ 호슀트 및 λ ˆμ΄μ–΄ μŠ€νƒ€μΌ λ‚΄μž₯
71
72
  this.shadowRoot.innerHTML = `
72
73
  <style>
73
74
  @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${__APP_VERSION__}/dist/css/nine-mu.css";
74
75
  ${customImport}
76
+
77
+ :host {
78
+ display: block;
79
+ width: 100%;
80
+ height: 100%;
81
+ }
82
+ /* μ–΄λ–€ λ‘œλ”© λ ˆμ΄μ–΄κ°€ 돌고 μžˆμ–΄λ„ 뷰포트 κΈ°μ€€ 무쑰건 맨 μ•ž(μ΅œμƒλ‹¨)으둜 λΉΌλ²„λ¦¬λŠ” μ ˆλŒ€ λ°©μ–΄ 클래슀 */
83
+ .nine-hook-full-overlay {
84
+ position: fixed !important;
85
+ top: 0 !important;
86
+ left: 0 !important;
87
+ width: 100vw !important;
88
+ height: 100vh !important;
89
+ box-sizing: border-box !important;
90
+ background-color: #FFF5F5 !important;
91
+ z-index: 99999999 !important;
92
+ overflow: auto !important;
93
+ }
75
94
  </style>
76
95
 
77
- <div class="nine-hook-core">
96
+ <div class="nine-hook-core" style="width: 100%; height: 100%;">
78
97
  <slot></slot>
79
98
  </div>
80
99
  <div class="nine-exception-board"></div>
@@ -141,7 +160,7 @@ export class ExceptionHook extends HTMLElement {
141
160
  const coreContainer = this.shadowRoot.querySelector('.nine-hook-core');
142
161
  if (coreContainer) coreContainer.style.display = '';
143
162
  }
144
- }, 10);
163
+ }, 50); // λΌμš°νŒ… μ™„λ£Œ λŒ€κΈ° μ‹œκ°„μ„ μœ„ν•΄ λ―Έμ„Έ 상ν–₯ (50ms)
145
164
  }
146
165
 
147
166
  #sendToAiAction = async (errorMessage, errorStack) => {
@@ -180,8 +199,6 @@ export class ExceptionHook extends HTMLElement {
180
199
  if (this.#hasError) return;
181
200
  this.#hasError = true;
182
201
 
183
- // 🎯 [핡심] λ¦¬μ•‘νŠΈκ°€ μ—λŸ¬ λ°œμƒ ν›„ ν•˜μœ„ DOM을 Unmount/μ‘°μž‘ν•˜λŠ” 동기적인 타이밍을
184
- // μ™„μ „νžˆ ν˜λ €λ³΄λ‚Έ λ’€(setTimeout 0)에 μ•ˆμ „ν•˜κ²Œ Web Component UIλ₯Ό 꽂아 λ„£μŠ΅λ‹ˆλ‹€.
185
202
  setTimeout(() => {
186
203
  trace.log("🎨 [nine-exception-hook] λ¦¬μ•‘νŠΈ 사이클 μ’…λ£Œ ν›„ μ—λŸ¬ UI μ΅œμ’… λ Œλ”λ§");
187
204
 
@@ -197,16 +214,19 @@ export class ExceptionHook extends HTMLElement {
197
214
  return;
198
215
  }
199
216
 
217
+ // 🎯 [μˆ˜μ • 2] μ—λŸ¬ HTML μ»¨ν…Œμ΄λ„ˆ ꡬ쑰λ₯Ό ν™”λ©΄ 전체 뷰포트λ₯Ό μž₯μ•…ν•˜λŠ” κ³ μ • λ ˆμ΄μ•„μ›ƒ ꡬ쑰둜 λž©ν•‘
200
218
  const errorHTML = `
201
- <div class="nine-error-container">
202
- <h3 class="nine-error-title">⚠️ μ‹œμŠ€ν…œ μ˜ˆμ™Έ 감지 (${this.tagName.toLowerCase()})</h3>
203
- <p class="nine-error-label">[μ—λŸ¬ 원인 둜그]:</p>
204
- <pre class="nine-error-log">${errorMessage}</pre>
205
-
206
- <div class="nine-action-area" style="margin-top: 20px; display: flex; align-items: center; gap: 15px;">
207
- <button class="nine-ai-btn">πŸ€– AIμ—κ²Œ μ†ŒμŠ€μ½”λ“œ μˆ˜μ • μš”μ²­</button>
208
- <div class="nine-error-footer">
209
- λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ AIκ°€ 둜그 및 μ»΄ν¬λ„ŒνŠΈ 맡을 μ—­μΆ”μ ν•˜μ—¬ μˆ˜μ •μ„ μ‹œμž‘ν•©λ‹ˆλ‹€.
219
+ <div class="nine-hook-full-overlay">
220
+ <div class="nine-error-container" style="padding: 40px; max-width: 1200px; margin: 40px auto; font-family: sans-serif; background: white; border-radius: 8px; box-shadow: 0 10px 25px rgba(0,0,0,0.08); text-align: left;">
221
+ <h3 class="nine-error-title" style="color: #C53030; margin-top: 0; font-size: 22px; font-weight: 700; border-bottom: 2px solid #FED2D2; padding-bottom: 12px;">⚠️ μ‹œμŠ€ν…œ μ˜ˆμ™Έ 감지 (${this.tagName.toLowerCase()})</h3>
222
+ <p class="nine-error-label" style="font-weight: bold; margin: 20px 0 8px 0; color: #4A5568; font-size: 15px;">[μ—λŸ¬ 원인 둜그]:</p>
223
+ <pre class="nine-error-log" style="background: #1A202C; color: #EDF2F7; padding: 20px; border-radius: 6px; overflow-x: auto; white-space: pre-wrap; font-family: monospace; font-size: 14px; line-height: 1.6; margin-bottom: 25px;">${errorMessage}\n\n[Stack Trace]\n${errorStack}</pre>
224
+
225
+ <div class="nine-action-area" style="display: flex; align-items: center; gap: 20px; border-top: 1px solid #E2E8F0; padding-top: 20px;">
226
+ <button class="nine-ai-btn" style="background: #3182CE; color: white; border: none; padding: 14px 28px; border-radius: 6px; font-weight: bold; cursor: pointer; font-size: 16px; transition: background 0.2s;">πŸ€– AIμ—κ²Œ μ†ŒμŠ€μ½”λ“œ μˆ˜μ • μš”μ²­</button>
227
+ <div class="nine-error-footer" style="font-size: 14px; color: #718096; line-height: 1.4;">
228
+ λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ AIκ°€ 둜그 및 μ»΄ν¬λ„ŒνŠΈ 맡을 μ—­μΆ”μ ν•˜μ—¬ μˆ˜μ •μ„ μ‹œμž‘ν•©λ‹ˆλ‹€.
229
+ </div>
210
230
  </div>
211
231
  </div>
212
232
  </div>