feat(settings): Settings 패널 4-탭 카테고리 정리 (v2.2.206)
9개 섹션을 모델·연결 / 지식·기억 / 연동 / 동작·고급 4탭으로 그룹핑. 표현 계층만 추가(탭 네비 + show/hide) — ID/data-save/리스너/renderState/ provider 무수정. 좁은 사이드뷰 줄바꿈, 활성 탭 setState 기억. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -482,5 +482,24 @@
|
||||
}
|
||||
}
|
||||
|
||||
// ---- Tabs (카테고리 네비) — 표현 계층만. 기존 refs/리스너/state 에 무영향 ----
|
||||
(function initTabs() {
|
||||
const tabButtons = Array.from(document.querySelectorAll('.tab'));
|
||||
const sections = Array.from(document.querySelectorAll('.section'));
|
||||
if (tabButtons.length === 0) return;
|
||||
const valid = new Set(tabButtons.map((b) => b.dataset.tab));
|
||||
function setActiveTab(tab) {
|
||||
tabButtons.forEach((b) => b.classList.toggle('active', b.dataset.tab === tab));
|
||||
// 숨김만(hidden) — DOM 제거 X. renderState 는 숨겨진 입력에도 값을 채운다.
|
||||
sections.forEach((s) => { s.hidden = s.dataset.tab !== tab; });
|
||||
try { const st = vscode.getState() || {}; vscode.setState({ ...st, activeTab: tab }); } catch (e) { /* noop */ }
|
||||
}
|
||||
tabButtons.forEach((b) => b.addEventListener('click', () => setActiveTab(b.dataset.tab)));
|
||||
let initial = 'model';
|
||||
try { const saved = (vscode.getState() || {}).activeTab; if (saved && valid.has(saved)) initial = saved; } catch (e) { /* noop */ }
|
||||
if (!valid.has(initial)) initial = tabButtons[0].dataset.tab;
|
||||
setActiveTab(initial);
|
||||
})();
|
||||
|
||||
vscode.postMessage({ type: 'ready' });
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user