diff --git a/public/css/components.css b/public/css/components.css
index f8b964d..d5fa4a1 100644
--- a/public/css/components.css
+++ b/public/css/components.css
@@ -14,8 +14,8 @@
font-size: 24px; background: var(--tile); border: 1px solid var(--tile-bd);
}
.tool-card.admin .tool-icon { background: var(--admin-bg); border-color: var(--admin-bd); }
-.tool-name { display: block; margin-top: 14px; font-size: 14.5px; font-weight: 700; color: var(--fg); }
-.tool-desc { display: block; margin-top: 3px; font-size: 12.5px; color: var(--fg2); line-height: 1.45; }
+.tool-name { display: block; margin-top: 14px; font-size: 16.5px; font-weight: 700; color: var(--fg); }
+.tool-desc { display: block; margin-top: 3px; font-size: 14.5px; color: var(--fg2); line-height: 1.45; }
.tool-admin-badge {
display: inline-flex; align-items: center; gap: 5px; margin-top: 11px; font-size: 11px; font-weight: 600;
color: var(--admin-fg); background: var(--admin-bg); border: 1px solid var(--admin-bd); border-radius: 999px; padding: 2px 8px; white-space: nowrap;
diff --git a/public/css/layout.css b/public/css/layout.css
index 5a44eb2..7f9a2a3 100644
--- a/public/css/layout.css
+++ b/public/css/layout.css
@@ -6,7 +6,7 @@
.brand { display: flex; align-items: center; gap: 10px; cursor: pointer; user-select: none; flex: 0 0 auto; }
.brand-mark { display: inline-flex; color: var(--hfg); transition: transform .2s ease, filter .2s ease; }
.brand-name { font-weight: 800; font-size: 15px; letter-spacing: .13em; color: var(--hfg); }
-.brand-sub { font-size: 11px; color: var(--hfg2); font-weight: 500; border-left: 1px solid var(--hbd); padding-left: 10px; margin-left: 2px; white-space: nowrap; }
+.brand-sub { font-size: 15px; color: var(--hfg2); font-weight: 500; border-left: 1px solid var(--hbd); padding-left: 10px; margin-left: 2px; white-space: nowrap; }
.hdr-search { flex: 1; max-width: 300px; position: relative; display: flex; align-items: center; }
.hdr-search-ico { position: absolute; left: 10px; display: inline-flex; color: var(--hfg2); pointer-events: none; }
@@ -25,6 +25,14 @@
transition: background .14s ease, color .14s ease;
}
.icon-btn:hover { background: rgba(255,255,255,.08); color: var(--hfg); }
+/* 헤더 텍스트 링크 버튼(매뉴얼 등) — 아이콘 + 글자 */
+.hdr-link {
+ display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 12px;
+ border-radius: 8px; border: 1px solid var(--hbd); background: transparent;
+ color: var(--hfg2); font-size: 13px; font-weight: 600; text-decoration: none; white-space: nowrap;
+ transition: background .14s ease, color .14s ease;
+}
+.hdr-link:hover { background: rgba(255,255,255,.08); color: var(--hfg); }
.theme-ico-sun { display: none; }
html[data-aidev-theme="dark"] .theme-ico-moon { display: none; }
html[data-aidev-theme="dark"] .theme-ico-sun { display: inline-flex; }
diff --git a/public/js/feed.js b/public/js/feed.js
index cc09236..a94fdbf 100644
--- a/public/js/feed.js
+++ b/public/js/feed.js
@@ -2,11 +2,13 @@
import { $, $$ } from "./util.js";
function applyFeed() {
- const grid = $("#feedGrid"); if (!grid) return;
+ // 검색 대상 = 현재 페이지의 검색 가능한 카드 전체(대시보드=공유 프로젝트, 프로필=그 사람 프로젝트).
+ const cards = $$(".fcard[data-search]");
+ if (!cards.length) return;
const q = (($("#feedSearch") && $("#feedSearch").value) || "").trim().toLowerCase();
const starOnly = $("#feedStarFilter") && $("#feedStarFilter").classList.contains("on");
let visible = 0;
- $$(".fcard", grid).forEach((c) => {
+ cards.forEach((c) => {
const hit = !q || (c.getAttribute("data-search") || "").indexOf(q) >= 0;
const st = !starOnly || c.getAttribute("data-starred") === "true";
const show = hit && st;
diff --git a/src/config.js b/src/config.js
index 91c24e1..d09440e 100644
--- a/src/config.js
+++ b/src/config.js
@@ -35,4 +35,7 @@ export const config = {
// 포털 표시 이름 (변경 가능)
brand: process.env.PORTAL_BRAND || "AI DEV",
+
+ // 포털 사용 매뉴얼 링크(헤더 '매뉴얼' 버튼). 도메인 변경 대비 환경변수로 덮어쓰기 가능.
+ manualUrl: process.env.MANUAL_URL || "https://gitea.bokdev.in/playground/MANUAL",
};
diff --git a/src/helpers.js b/src/helpers.js
index e1ac169..b1df278 100644
--- a/src/helpers.js
+++ b/src/helpers.js
@@ -27,6 +27,7 @@ const OCTICONS = {
check: '