@nine-lab/nine-mu 0.1.359 → 0.1.361

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/dist/nine-mu.js CHANGED
@@ -17538,7 +17538,7 @@ render_fn = function() {
17538
17538
  const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
17539
17539
  this.shadowRoot.innerHTML = `
17540
17540
  <style>
17541
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.358"}/dist/css/nine-mu.css";
17541
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.360"}/dist/css/nine-mu.css";
17542
17542
  ${customImport}
17543
17543
  </style>
17544
17544
  <div class="wrapper">
@@ -43788,7 +43788,7 @@ class NineDiff extends HTMLElement {
43788
43788
  const customImport = nine.cssPath ? `@import "${nine.cssPath}/nine-mu.css";` : "";
43789
43789
  this.shadowRoot.innerHTML = `
43790
43790
  <style>
43791
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.358"}/dist/css/nine-mu.css";
43791
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.360"}/dist/css/nine-mu.css";
43792
43792
  ${customImport}
43793
43793
  </style>
43794
43794
 
@@ -43928,7 +43928,7 @@ renderScaffolding_fn = function() {
43928
43928
  const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
43929
43929
  this.shadowRoot.innerHTML = `
43930
43930
  <style>
43931
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.358"}/dist/css/nine-mu.css";
43931
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.360"}/dist/css/nine-mu.css";
43932
43932
  ${customImport}
43933
43933
  </style>
43934
43934
 
@@ -44037,7 +44037,7 @@ render_fn2 = function() {
44037
44037
  const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
44038
44038
  this.shadowRoot.innerHTML = `
44039
44039
  <style>
44040
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.358"}/dist/css/nine-mu.css";
44040
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.360"}/dist/css/nine-mu.css";
44041
44041
  ${customImport}
44042
44042
  </style>
44043
44043
 
@@ -44367,7 +44367,7 @@ class ChatMessageBody extends HTMLElement {
44367
44367
  const customImport = nine.cssPath ? `@import "${nine.cssPath}/nine-mu.css";` : "";
44368
44368
  this.shadowRoot.innerHTML = `
44369
44369
  <style>
44370
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.358"}/dist/css/nine-mu.css";
44370
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.360"}/dist/css/nine-mu.css";
44371
44371
  ${customImport}
44372
44372
  </style>
44373
44373
 
@@ -44467,69 +44467,71 @@ if (!customElements.get("nine-chat-progress")) {
44467
44467
  }
44468
44468
  const NineExceptionStyles = {
44469
44469
  container: {
44470
- height: "100%",
44471
- padding: "20px 25px",
44472
- // 위아래 여백을 적절히 줄여 꽉 찬 느낌 유도
44470
+ minHeight: "100%",
44471
+ flexGrow: 1,
44472
+ padding: "25px",
44473
44473
  background: "#121314",
44474
44474
  // 터미널 다크 블랙 배경
44475
- // ⭐ 모든 요소가 완벽한 터미널 정렬을 갖추도록 고정폭 서체를 부모에 강제 주입
44475
+ // ⭐ 모든 요소의 폰트 크기, 패딩, 높이 기준을 부모 레벨에서 완벽히 통일
44476
44476
  fontFamily: 'Consolas, Monaco, "Courier New", monospace',
44477
+ fontSize: "14px",
44478
+ lineHeight: "1.6",
44479
+ // 줄간격을 터미널 배시 화면 비율(1.6)로 고정
44480
+ color: "#999",
44481
+ // 기본 텍스트 색상 #999 적용
44477
44482
  textAlign: "left",
44478
44483
  boxShadow: "0 4px 12px rgba(0,0,0,0.3)",
44479
- // 내부 라인들을 인라인 텍스트 흐름처럼 촘촘하게 쌓기 위해 flex 간격 조정
44480
- display: "flex",
44481
- flexDirection: "column",
44482
- gap: "10px",
44483
- // 줄간 간격을 10px로 타이트하게 조여 터미널 감성 극대화
44484
- lineHeight: "1.2"
44485
- // 모든 라인의 글자 높이 기준 통일
44484
+ boxSizing: "border-box"
44486
44485
  },
44486
+ // 1. 모든 라인의 display 형식을 'block'으로 맞추고 마진/패딩을 0으로 통일
44487
44487
  systemError: {
44488
44488
  color: "#999",
44489
- // 요청하신 대로 #999 색상 지정
44490
44489
  fontWeight: "bold",
44491
- fontSize: "14px",
44492
44490
  margin: "0",
44493
- // 수동 마진 제거 (부모 gap으로 일괄 제어)
44494
- letterSpacing: "0.5px",
44495
- padding: "0"
44491
+ padding: "0",
44492
+ display: "block"
44496
44493
  },
44494
+ // 2. 에러 본문 텍스트도 불필요한 속성을 다 버리고 일반 라인과 똑같이 흐르게 교정
44497
44495
  pre: {
44498
44496
  background: "transparent",
44499
44497
  color: "#666",
44498
+ // aa is not defined는 요청하신 #666 적용
44500
44499
  padding: "0",
44501
44500
  margin: "0",
44502
- // pre 태그 고유의 불규칙한 여백 완전 제거
44503
44501
  border: "none",
44504
44502
  overflowX: "auto",
44505
44503
  whiteSpace: "pre-wrap",
44506
- fontFamily: "Consolas, Monaco, monospace",
44507
- fontSize: "14px",
44504
+ fontFamily: "inherit",
44505
+ // 부모 폰트 그대로 상속
44506
+ fontSize: "inherit",
44507
+ // 부모 크기 그대로 상속
44508
+ display: "block"
44509
+ },
44510
+ // 3. 에러 위치 추적 라인
44511
+ locationRow: {
44512
+ color: "#666",
44513
+ margin: "0",
44514
+ padding: "0",
44508
44515
  display: "block"
44509
44516
  },
44517
+ // 4. 하단 영역의 flex와 gap을 완전히 제거하여 줄간격 왜곡 원천 차단
44510
44518
  footer: {
44511
- fontSize: "14px",
44512
- color: "#999",
44513
44519
  margin: "0",
44514
44520
  padding: "0",
44515
- display: "flex",
44516
- flexDirection: "column",
44517
- gap: "10px"
44518
- // 후속 로그가 찍힐 때도 동일한 간격 유지
44521
+ display: "block"
44519
44522
  },
44520
44523
  promptRow: {
44521
44524
  margin: "0",
44522
44525
  padding: "0",
44523
44526
  display: "block",
44524
44527
  color: "#999"
44525
- // 대화형 구문도 완벽하게 #999 색상 일치
44526
44528
  },
44527
44529
  cliLink: {
44528
44530
  color: "#38A169",
44529
- // 선택지 y 선명한 터미널 그린
44530
- padding: "0 2px",
44531
- fontFamily: "Consolas, Monaco, monospace",
44532
- fontSize: "14px",
44531
+ // y 링크 터미널 그린
44532
+ padding: "0",
44533
+ fontFamily: "inherit",
44534
+ fontSize: "inherit",
44533
44535
  fontWeight: "bold",
44534
44536
  cursor: "pointer",
44535
44537
  textDecoration: "underline",
@@ -44550,6 +44552,9 @@ class NineExceptionHook extends React.Component {
44550
44552
  }
44551
44553
  componentDidCatch(error, errorInfo) {
44552
44554
  console.error("🚨 [Nine-Library] 본문 렌더링 에러 포착:", error);
44555
+ this.setState({
44556
+ errorInfo: errorInfo || null
44557
+ });
44553
44558
  if (this.props.onCatch) {
44554
44559
  this.props.onCatch(error, errorInfo);
44555
44560
  }
@@ -44574,7 +44579,7 @@ class NineExceptionHook extends React.Component {
44574
44579
  }
44575
44580
  handleLocationChange() {
44576
44581
  setTimeout(() => {
44577
- if (this.state.hasError && this.state.reportStatus !== "idle") {
44582
+ if (this.state.hasError && this.lastPath !== window.location.pathname) {
44578
44583
  console.log("[Nine-Library] 페이지 주소 변경 감지 -> 에러 상태 초기화");
44579
44584
  this.lastPath = window.location.pathname;
44580
44585
  this.setState({ hasError: false, error: null, reportStatus: "idle" });
@@ -44596,27 +44601,44 @@ class NineExceptionHook extends React.Component {
44596
44601
  }, 600);
44597
44602
  }
44598
44603
  render() {
44599
- var _a2;
44604
+ var _a2, _b;
44600
44605
  if (this.state.hasError) {
44601
44606
  if (this.props.fallback) {
44602
44607
  return this.props.fallback(this.state.error);
44603
44608
  }
44604
44609
  const errorMessage = ((_a2 = this.state.error) == null ? void 0 : _a2.message) || String(this.state.error);
44605
44610
  const customStyles = this.props.styles || {};
44611
+ let errorLocation = "";
44612
+ if ((_b = this.state.errorInfo) == null ? void 0 : _b.componentStack) {
44613
+ const lines = this.state.errorInfo.componentStack.trim().split("\n");
44614
+ const targetLine = lines[0] || "";
44615
+ const match = targetLine.match(/at\s+(\w+)\s+\((.*)\)/) || targetLine.match(/at\s+(.*)/);
44616
+ if (match) {
44617
+ errorLocation = match[2] ? `${match[1]} (${match[2]})` : match[1];
44618
+ } else {
44619
+ errorLocation = targetLine.trim();
44620
+ }
44621
+ }
44606
44622
  return React.createElement(
44607
44623
  "div",
44608
44624
  {
44609
44625
  style: { ...NineExceptionStyles.container, ...customStyles.container, ...this.props.containerStyle }
44610
44626
  },
44611
- // 1. 에러 감지 로그
44627
+ // 1. [SYSTEM] 라인
44612
44628
  React.createElement(
44613
44629
  "div",
44614
44630
  { style: { ...NineExceptionStyles.systemError, ...customStyles.systemError } },
44615
44631
  "[SYSTEM] COMPONENT RENDER ERROR DETECTED"
44616
44632
  ),
44617
- // 2. 에러 내용
44633
+ // 2. aa is not defined 라인
44618
44634
  React.createElement("pre", { style: { ...NineExceptionStyles.pre, ...customStyles.pre } }, errorMessage),
44619
- // 3. CLI 프롬프트 영역
44635
+ // 3. at MemberUsers 라인
44636
+ errorLocation && React.createElement(
44637
+ "div",
44638
+ { style: { ...NineExceptionStyles.locationRow, ...customStyles.locationRow } },
44639
+ ` at ${errorLocation}`
44640
+ ),
44641
+ // 4. CLI 프롬프트 및 후속 결과 라인 영역
44620
44642
  React.createElement(
44621
44643
  "div",
44622
44644
  { style: { ...NineExceptionStyles.footer, ...customStyles.footer } },
@@ -44634,16 +44656,17 @@ class NineExceptionHook extends React.Component {
44634
44656
  ),
44635
44657
  React.createElement("span", null, "/n)?")
44636
44658
  ),
44659
+ // display: 'block'과 margin/padding 0을 주어 다른 라인들과 오차 없이 간격을 맞춤
44637
44660
  this.state.reportStatus === "sending" && React.createElement(
44638
44661
  "div",
44639
- { style: { color: "#ED8936", margin: "0", lineHeight: "1" } },
44662
+ { style: { color: "#ED8936", margin: "0", padding: "0", display: "block" } },
44640
44663
  ">> Connecting to Control Tower... Sending payload."
44641
44664
  ),
44642
44665
  this.state.reportStatus === "success" && React.createElement(
44643
44666
  "div",
44644
- { style: { display: "flex", flexDirection: "column", gap: "12px", margin: "0" } },
44645
- React.createElement("div", { style: { color: "#38A169", fontWeight: "bold", lineHeight: "1" } }, ">> Transmit complete. Core engine initialized."),
44646
- React.createElement("div", { style: { color: "#A0AEC0", fontStyle: "italic", fontSize: "13px", lineHeight: "1" } }, "AI가 소스 코드를 재수정하는 동안 잠시만 기다려주세요...")
44667
+ { style: { margin: "0", padding: "0", display: "block" } },
44668
+ React.createElement("div", { style: { color: "#38A169", fontWeight: "bold", display: "block", margin: "0" } }, ">> Transmit complete. Core engine initialized."),
44669
+ React.createElement("div", { style: { color: "#A0AEC0", fontStyle: "italic", fontSize: "13px", display: "block", margin: "4px 0 0 0" } }, "AI가 소스 코드를 재수정하는 동안 잠시만 기다려주세요...")
44647
44670
  )
44648
44671
  )
44649
44672
  );
@@ -44652,7 +44675,7 @@ class NineExceptionHook extends React.Component {
44652
44675
  }
44653
44676
  }
44654
44677
  const NineMu = {
44655
- version: "0.1.358",
44678
+ version: "0.1.360",
44656
44679
  init: (config2) => {
44657
44680
  trace$1.log("🛠️ Nine-Mu Engine initialized", config2);
44658
44681
  }