diff --git a/.astra/tests/stress/.astra/cache/259a37934ead3910a8722b82054d46d2ca2057b05c488be1dcf439166ac5a9a1.json b/.astra/tests/stress/.astra/cache/259a37934ead3910a8722b82054d46d2ca2057b05c488be1dcf439166ac5a9a1.json index ef4ea22..096dd9a 100644 --- a/.astra/tests/stress/.astra/cache/259a37934ead3910a8722b82054d46d2ca2057b05c488be1dcf439166ac5a9a1.json +++ b/.astra/tests/stress/.astra/cache/259a37934ead3910a8722b82054d46d2ca2057b05c488be1dcf439166ac5a9a1.json @@ -1,5 +1,5 @@ { "result": "Final report with inconsistencies. This should be long enough to pass validation.", - "createdAt": 1778765910142, + "createdAt": 1778767038020, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/stress/.astra/cache/65775be352df43297b63c7af59c9f4f39d2bc368f77456c37b5eef9a94a66b5c.json b/.astra/tests/stress/.astra/cache/65775be352df43297b63c7af59c9f4f39d2bc368f77456c37b5eef9a94a66b5c.json index 90da284..051ef8f 100644 --- a/.astra/tests/stress/.astra/cache/65775be352df43297b63c7af59c9f4f39d2bc368f77456c37b5eef9a94a66b5c.json +++ b/.astra/tests/stress/.astra/cache/65775be352df43297b63c7af59c9f4f39d2bc368f77456c37b5eef9a94a66b5c.json @@ -1,5 +1,5 @@ { "result": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.", - "createdAt": 1778765910134, + "createdAt": 1778767038017, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/stress/.astra/cache/6894d26c5b0a55d25d756a473225c7a44d7661af673b24e3f49551a7a2e50280.json b/.astra/tests/stress/.astra/cache/6894d26c5b0a55d25d756a473225c7a44d7661af673b24e3f49551a7a2e50280.json index 8fd6032..c7d8b47 100644 --- a/.astra/tests/stress/.astra/cache/6894d26c5b0a55d25d756a473225c7a44d7661af673b24e3f49551a7a2e50280.json +++ b/.astra/tests/stress/.astra/cache/6894d26c5b0a55d25d756a473225c7a44d7661af673b24e3f49551a7a2e50280.json @@ -1,5 +1,5 @@ { "result": "Detailed Execution Plan: 1. Research 2. Analyze 3. Write report with high quality.", - "createdAt": 1778765910130, + "createdAt": 1778767038016, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/stress/.astra/cache/88cb61499f88ed38165b64bd3e8adc543795e4b427b64540a49c9ab27c7fe213.json b/.astra/tests/stress/.astra/cache/88cb61499f88ed38165b64bd3e8adc543795e4b427b64540a49c9ab27c7fe213.json index 9139de2..38628f8 100644 --- a/.astra/tests/stress/.astra/cache/88cb61499f88ed38165b64bd3e8adc543795e4b427b64540a49c9ab27c7fe213.json +++ b/.astra/tests/stress/.astra/cache/88cb61499f88ed38165b64bd3e8adc543795e4b427b64540a49c9ab27c7fe213.json @@ -1,5 +1,5 @@ { - "result": "---\nid: stress_conflict_1778765910115\ndate: 2026-05-14T13:38:30.146Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\nFinal report with inconsistencies. This should be long enough to pass validation.\n\nFinal report with inconsistencies. This should be long enough to pass validation.\n\n---\n## 💡 Astra의 선제적 제안 (Proactive Next Actions)\nFinal report with inconsistencies. This should be long enough to pass validation.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `60/100` | ⚠️ Medium |\n| **Fallbacks Used** | `0` | ✅ None |\n| **Auto Retries** | `0` | ✅ Stable |\n| **Deduplication** | `0` | Standard |\n| **Processing Time** | `0.0s` | ✅ Fast |\n\n### 🔍 Decision Audit Trail\n- **[PLANNER]** 전략 수립 중... (11ms)\n- **[RESEARCHER]** 핵심 정보 수집 및 분석 중... (4ms)\n- **[WRITER]** 최종 리포트 작성 및 편집 중... (9ms)\n", - "createdAt": 1778765910146, + "result": "---\nid: stress_conflict_1778767038004\ndate: 2026-05-14T13:57:18.021Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\nFinal report with inconsistencies. This should be long enough to pass validation.\n\nFinal report with inconsistencies. This should be long enough to pass validation.\n\n---\n## 💡 Astra의 선제적 제안 (Proactive Next Actions)\nFinal report with inconsistencies. This should be long enough to pass validation.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `60/100` | ⚠️ Medium |\n| **Fallbacks Used** | `0` | ✅ None |\n| **Auto Retries** | `0` | ✅ Stable |\n| **Deduplication** | `0` | Standard |\n| **Processing Time** | `0.0s` | ✅ Fast |\n\n### 🔍 Decision Audit Trail\n- **[PLANNER]** 전략 수립 중... (11ms)\n- **[RESEARCHER]** 핵심 정보 수집 및 분석 중... (0ms)\n- **[WRITER]** 최종 리포트 작성 및 편집 중... (1ms)\n", + "createdAt": 1778767038021, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/stress/.astra/missions/stress_conflict_1778765910115.json b/.astra/tests/stress/.astra/missions/stress_conflict_1778767038004.json similarity index 81% rename from .astra/tests/stress/.astra/missions/stress_conflict_1778765910115.json rename to .astra/tests/stress/.astra/missions/stress_conflict_1778767038004.json index 9b605d1..98a4438 100644 --- a/.astra/tests/stress/.astra/missions/stress_conflict_1778765910115.json +++ b/.astra/tests/stress/.astra/missions/stress_conflict_1778767038004.json @@ -1,8 +1,8 @@ { - "missionId": "stress_conflict_1778765910115", + "missionId": "stress_conflict_1778767038004", "status": "completed", - "startTime": "2026-05-14T13:38:30.115Z", - "totalElapsedMs": 31, + "startTime": "2026-05-14T13:57:18.005Z", + "totalElapsedMs": 16, "results": { "planner": "Detailed Execution Plan: 1. Research 2. Analyze 3. Write report with high quality.", "researcher": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.", @@ -18,28 +18,28 @@ "to": "planner", "durationMs": 11, "message": "전략 수립 중...", - "ts": "2026-05-14T13:38:30.126Z" + "ts": "2026-05-14T13:57:18.016Z" }, { "from": "planner", "to": "researcher", - "durationMs": 4, + "durationMs": 0, "message": "핵심 정보 수집 및 분석 중...", - "ts": "2026-05-14T13:38:30.130Z" + "ts": "2026-05-14T13:57:18.016Z" }, { "from": "researcher", "to": "writer", - "durationMs": 9, + "durationMs": 1, "message": "최종 리포트 작성 및 편집 중...", - "ts": "2026-05-14T13:38:30.139Z" + "ts": "2026-05-14T13:57:18.017Z" }, { "from": "writer", "to": "completed", - "durationMs": 7, + "durationMs": 4, "message": "미션 완료", - "ts": "2026-05-14T13:38:30.146Z" + "ts": "2026-05-14T13:57:18.021Z" } ], "resilienceMetrics": { diff --git a/PATCHNOTES.md b/PATCHNOTES.md index 6b04df1..2aefe89 100644 --- a/PATCHNOTES.md +++ b/PATCHNOTES.md @@ -1,5 +1,16 @@ # Astra Patch Notes +## v2.2.0 (2026-05-14) +### 💎 Milestone: Human-Centric UI & Workflow Evolution +- **UI 용어 및 인터랙션 전면 한글화:** '에이전트', '파이프라인' 등 딱딱한 용어를 '팀원', '작업 흐름' 등 직관적인 한글로 순화하여 친숙도를 높였습니다. +- **신규 사용자 가이드 고도화:** 시작 체크리스트와 예시 질문 칩을 통해 첫 사용자가 Astra의 강력한 기능을 즉시 체험할 수 있도록 설계했습니다. +- **작업 흐름(Pipeline) 에디터 개선:** 복잡한 설정 없이도 템플릿을 통해 '대표에게 맡기거나', '사용자가 직접 정한 순서대로' 팀원이 이어서 작업하게 만듭니다. +- **팀원 관리 인터페이스 최적화:** 새로운 팀원을 추가할 때 내부 ID와 테마 색상, 응답 스타일 등을 더욱 세밀하게 설정할 수 있도록 UI를 정교화했습니다. +- **시각적 일관성 강화:** 사이드바 전반의 디자인 토큰을 재검토하여 더욱 프리미엄하고 일관된 룩앤필을 완성했습니다. + +--- + + ## v2.1.9 (2026-05-14) ### 🚀 Immersive Onboarding & UX Transformation - **신규 사용자 온보딩 프로세스 도입:** 사이드바에 3단계 체크리스트(두뇌 연결, 모델 선택, 첫 질문)를 추가하여 초기 설정 과정을 직관적으로 개선했습니다. diff --git a/astra-2.1.9.vsix b/astra-2.2.0.vsix similarity index 92% rename from astra-2.1.9.vsix rename to astra-2.2.0.vsix index b68745b..d8b35c7 100644 Binary files a/astra-2.1.9.vsix and b/astra-2.2.0.vsix differ diff --git a/docs/records/ConnectAI/chronicle.config.json b/docs/records/ConnectAI/chronicle.config.json index ad7f1c8..dc58e53 100644 --- a/docs/records/ConnectAI/chronicle.config.json +++ b/docs/records/ConnectAI/chronicle.config.json @@ -7,5 +7,5 @@ "corePurpose": "", "detailLevel": "standard", "createdAt": "2026-05-13T13:09:33.788Z", - "updatedAt": "2026-05-14T13:26:13.750Z" + "updatedAt": "2026-05-14T13:41:02.603Z" } diff --git a/media/sidebar.css b/media/sidebar.css index ac95795..32ce44a 100644 --- a/media/sidebar.css +++ b/media/sidebar.css @@ -332,7 +332,24 @@ .company-name-input:focus { border-color: var(--accent); outline: none; } /* Agent cards inside the manage overlay. */ - .company-agent-list { display: flex; flex-direction: column; gap: 6px; padding: 0; } + .company-agent-list { display: flex; flex-direction: column; gap: 8px; padding: 0; } + .company-agent-section-label { + list-style: none; + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 8px; + margin: 6px 2px -2px; + color: var(--text-bright); + font-size: 11px; + font-weight: 700; + } + .company-agent-section-label small { + color: var(--text-dim); + font-size: 9.5px; + font-weight: 500; + text-align: right; + } /* * Agent card layout, rebuilt 2026-05-14 to fix overflow: * - Card itself stacks its rows VERTICALLY (`flex-direction: column`). @@ -351,12 +368,14 @@ display: flex; flex-direction: column; gap: 6px; - padding: 8px 10px; + padding: 10px; background: var(--surface); border: 1px solid var(--border); border-radius: 8px; list-style: none; overflow: hidden; + position: relative; + transition: border-color 0.15s ease, background 0.15s ease, opacity 0.15s ease; } /* 비활성 카드는 더 흐릿하게 + 좌측 액센트 바를 떨궈서 한 눈에 그룹 구분되도록. */ .company-agent-card[data-active="false"] { @@ -365,7 +384,7 @@ border-style: dashed; } .company-agent-card[data-active="true"] { - border-left: 3px solid var(--accent); + border-left: 3px solid var(--agent-color, var(--accent)); } .company-agent-card[data-locked="true"] { border-left-color: #FACC15; /* CEO는 골드 액센트 */ @@ -423,6 +442,7 @@ display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 6px; background: var(--bg-secondary); + border: 1px solid var(--border); } .company-agent-body { flex: 1 1 180px; /* prefer ≥180px, shrink down to its content */ @@ -440,20 +460,47 @@ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 1px; } + .company-agent-meta { + display: flex; + gap: 5px; + flex-wrap: wrap; + margin-top: 5px; + } + .company-agent-chip { + display: inline-flex; + align-items: center; + height: 18px; + padding: 0 7px; + border-radius: 999px; + border: 1px solid var(--border); + color: var(--text-dim); + background: var(--bg-secondary); + font-size: 9.5px; + line-height: 1; + white-space: nowrap; + } + .company-agent-chip.tuned { + color: var(--accent); + border-color: var(--accent); + background: var(--accent-glow); + } .company-agent-controls { display: flex; align-items: center; gap: 6px; flex-shrink: 0; margin-left: auto; /* push to the right of the head row */ max-width: 100%; + flex-wrap: wrap; + justify-content: flex-end; } .company-agent-toggle { background: transparent; border: 1px solid var(--border); color: var(--text-dim); font-size: 10px; font-weight: 600; - padding: 3px 8px; border-radius: 999px; cursor: pointer; + padding: 4px 9px; border-radius: 999px; cursor: pointer; flex-shrink: 0; } .company-agent-card[data-active="true"] .company-agent-toggle { - border-color: var(--accent); color: var(--accent); + border-color: var(--agent-color, var(--accent)); color: var(--text-bright); + background: var(--accent-glow); } .company-agent-model { background: var(--input-bg); border: 1px solid var(--border); @@ -475,7 +522,7 @@ .company-agent-edit { background: transparent; border: 1px solid var(--border); color: var(--text-dim); font-size: 10px; - padding: 3px 6px; border-radius: 6px; cursor: pointer; + padding: 4px 8px; border-radius: 6px; cursor: pointer; flex-shrink: 0; } .company-agent-edit:hover { color: var(--accent); border-color: var(--accent); } @@ -484,6 +531,36 @@ background: var(--accent-glow); } + .company-agent-settings { + display: none; + margin-top: 2px; + padding: 8px; + border: 1px solid var(--border); + border-radius: 6px; + background: var(--bg-secondary); + } + .company-agent-card[data-settings-expanded="true"] .company-agent-settings { display: block; } + .company-agent-settings-grid { + display: grid; + grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); + gap: 8px; + margin-bottom: 8px; + } + .company-agent-settings-grid label { + display: flex; + flex-direction: column; + gap: 4px; + min-width: 0; + color: var(--text-dim); + font-size: 10px; + } + .company-agent-settings .company-agent-role-select, + .company-agent-settings .company-agent-model { + width: 100%; + max-width: 100%; + height: 28px; + } + /* Per-agent Knowledge Mix slider. Wraps so the slider always has breathing room — hint + checkbox flow to next line when needed. */ .company-agent-mix-row { @@ -597,13 +674,69 @@ background: var(--accent); border-color: var(--accent); color: #fff; } + .pipeline-empty-state { + list-style: none; + color: var(--text-dim); + padding: 12px 10px; + border: 1px dashed var(--border); + border-radius: 8px; + background: var(--bg-secondary); + font-size: 11px; + text-align: center; + } + .pipeline-summary-card { + list-style: none; + padding: 10px; + background: var(--surface); + border: 1px solid var(--border); + border-radius: 8px; + } + .pipeline-summary-head { + display: flex; + gap: 8px; + align-items: center; + justify-content: space-between; + } + .pipeline-summary-title { + min-width: 0; + display: flex; + flex-direction: column; + gap: 2px; + line-height: 1.25; + } + .pipeline-summary-title strong { + color: var(--text-bright); + font-size: 12px; + } + .pipeline-summary-title span { + color: var(--text-dim); + font-size: 10px; + } + .pipeline-summary-actions { + display: flex; + gap: 4px; + flex-shrink: 0; + } + .pipeline-summary-flow { + margin-top: 8px; + padding: 7px 8px; + border-radius: 6px; + background: var(--bg-secondary); + color: var(--text-primary); + font-size: 10.5px; + line-height: 1.4; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + /* ── Pipeline stage cards ───────────────────────────────────── */ .pipeline-stage-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; } .pipeline-stage-list:empty::before { - content: '아직 단계가 없습니다. "+ Stage 추가" 로 첫 단계를 만드세요.'; + content: '아직 단계가 없습니다. "+ 단계 추가" 로 첫 작업을 만드세요.'; font-size: 11px; color: var(--text-dim); font-style: italic; padding: 12px 4px; display: block; text-align: center; } diff --git a/media/sidebar.html b/media/sidebar.html index 9724f75..162a948 100644 --- a/media/sidebar.html +++ b/media/sidebar.html @@ -162,11 +162,11 @@