From 1470806e06321bf18eda2f63932d4007d9d46ca7 Mon Sep 17 00:00:00 2001 From: Godopu Date: Fri, 21 Aug 2026 10:51:26 +0900 Subject: [PATCH] feat(header): add smart sticky scroll animation and styling refinements - Implement RAF-throttled smart sticky scroll interaction on app header - Add flow-root BFC isolation, vertical margin, and mobile menu scroll container - Update brand logo kicker hover color to primary accent (cobalt-dark) - Fix theme script hydration warning with suppressHydrationWarning - Add favicon.ico and icon.svg to resolve root /favicon.ico 404 - Add MAM orchestration guidelines, env generation script, and templates --- .gitignore | 13 ++- .mam.env.example | 133 +++++++++++++++++++++++ AGENTS.md | 6 +- TO-FIX.md | 84 ++++++++++++++ refer_landing_page/app/favicon.ico | Bin 0 -> 1322 bytes refer_landing_page/app/globals.css | 13 +++ refer_landing_page/app/icon.svg | 17 +++ refer_landing_page/app/layout.tsx | 2 +- refer_landing_page/components/Header.tsx | 97 ++++++++++++++++- scripts/generate-env.sh | 67 ++++++++++++ 10 files changed, 424 insertions(+), 8 deletions(-) create mode 100644 .mam.env.example create mode 100644 TO-FIX.md create mode 100644 refer_landing_page/app/favicon.ico create mode 100644 refer_landing_page/app/icon.svg create mode 100755 scripts/generate-env.sh diff --git a/.gitignore b/.gitignore index e38e731..34d875a 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,15 @@ .agents/ # Binary zip archives -*.zip \ No newline at end of file +*.zip +# >>> MAM managed block (managed by install.sh — do not edit) >>> +/.venv/ +/.mam/ +/.mam_deploy/ +/.mam.env +/.mam.env.* +!/.mam.env.example +/.cache/multi-agent-mux-monitor/ +/.mam-skill-backup.*/ +CURRENT_JOB.md +# <<< MAM managed block <<< diff --git a/.mam.env.example b/.mam.env.example new file mode 100644 index 0000000..543ccdb --- /dev/null +++ b/.mam.env.example @@ -0,0 +1,133 @@ +# --------------------------------------------------------------------------- +# .mam.env.example — committable template for the multi-agent-mux-* skills +# +# This file is tracked in git and contains NO secrets. To get a working local +# config, copy it to `.mam.env` (which is git-ignored) and edit as needed: +# +# scripts/generate-env.sh # creates .mam.env from this template if absent +# # or manually: cp .mam.env.example .mam.env +# +# Every variable below is OPTIONAL. The skills already resolve sane defaults +# (shown after each `#default:` line), so an unset/commented variable just keeps +# the built-in behaviour. Uncomment + edit only the ones you want to override. +# +# SECURITY: never put real secrets in this template. Secret-bearing vars use a +# `replace_me` placeholder — fill them in only in your local `.mam.env`. +# SECURITY NOTE: +# The default MQTT broker (broker.hivemq.com) is public and unencrypted. Job event +# payloads (including task details) sent to the default broker can be read by anyone. +# For production or private workloads, configure a private broker with TLS and Auth below. +# --------------------------------------------------------------------------- + +# =========================================================================== +# Workspace / runtime paths +# =========================================================================== + +# Single source of truth for the agent session registry YAML. +#default: /.mam/agent-sessions.yaml +# AGENT_SESSIONS_YAML=/path/to/workspace/.mam/agent-sessions.yaml + +# Root directory that holds Claude Code per-project conversation logs (*.jsonl). +#default: $HOME/.claude/projects +# CLAUDE_PROJECT_DIR=$HOME/.claude/projects + +# Directory scanned for per-session launcher wrappers (~/.local/bin/). +#default: $HOME/.local/bin +# LOCAL_BIN=$HOME/.local/bin + +# Isolated Herdr session socket name (`herdr --session `). +#default: mam- +# HERDR_SESSION_NAME=mam-multi-agent-mux + +# Legacy Herdr server identifier (DEPRECATED: use HERDR_SESSION_NAME instead). +# Written into .mam.env by install.sh as an active default. +#default: multi-agent-mux +# HERDR_SERVER_NAME=multi-agent-mux + +# Path to the Herdr Unix domain socket. +#default: $HOME/.config/herdr/herdr.sock +# HERDR_SOCKET_PATH=$HOME/.config/herdr/herdr.sock + +# =========================================================================== +# delegate-job / MQTT broker +# =========================================================================== + +# MQTT broker host the delegate-job publisher/subscriber connects to. +#default: broker.hivemq.com +# MQTT_BROKER=broker.hivemq.com + +# MQTT broker port. Written into .mam.env by install.sh as an active default. +#default: 1883 +# MQTT_PORT=1883 + +# MQTT reconnect retry interval (seconds). +#default: 2 +# MQTT_RETRY_INTERVAL=2 + +# MQTT maximum reconnect retries. +#default: 5 +# MQTT_MAX_RETRIES=5 + +# Broker auth username. Leave unset for anonymous brokers. +#default: (unset → anonymous) +# MQTT_USERNAME=replace_me + +# Broker auth password. SECRET — fill in only in your local .mam.env, never commit. +#default: (unset → anonymous) +# MQTT_PASSWORD=replace_me + +# Prefix for generated MQTT client ids (publisher/subscriber/monitor). +#default: hermes +# MQTT_CLIENT_ID_PREFIX=hermes + +# Log level for MAM runtime components (DEBUG, INFO, WARN, ERROR). +#default: INFO +# MAM_LOG_LEVEL=INFO + +# Retention period (days) for delegate-job event logs. +#default: 7 +# MAM_EVENT_RETENTION_DAYS=7 + +# Garbage collection threshold (minutes) for old message buffer logs. +#default: 60 +# MAM_BUFFER_GC_MINUTES=60 + +# Marker string used by loop delegation guard (O-3). +#default: (built-in guard marker) +# MAM_LOOP_GUARD_MARKER=mam_loop_active + +# Path to a CA bundle for TLS broker verification (set MQTT_TLS=1 to use TLS). +#default: (unset → no custom CA) +# MQTT_CA_CERTS=/path/to/ca.crt + +# Client certificate for mutual-TLS brokers. +#default: (unset → no client cert) +# MQTT_CERTFILE=/path/to/client.crt + +# Client private key for mutual-TLS brokers. SECRET — keep the key file private. +#default: (unset → no client key) +# MQTT_KEYFILE=/path/to/client.key + +# Directory for delegate-job audit logs (sits beside .mam/jobs/). +#default: /.mam/delegate_job_logs +# DELEGATE_JOB_LOGS_DIR=/path/to/workspace/.mam/delegate_job_logs + +# ============================================================================== +# deploy / distribution source (for forks/mirrors) +# ============================================================================== +# Note: These variables are read from the execution environment by deployment scripts. +# Since deploy/install.sh runs before .mam.env exists, you must pass them via export +# or prepended variables (e.g. MAM_REPO_URL=... bash deploy/install.sh). +# If you run a private mirror, we strongly recommend configuring all three variables. + +# Distribution repository URL (cloned during recovery steps). +#default: https://git.godopu.com/tmpl/multi-agent-mux.git +# MAM_REPO_URL=https://git.godopu.com/tmpl/multi-agent-mux.git + +# Distribution archive download URL (used for bootstrap extraction). +#default: https://git.godopu.com/tmpl/multi-agent-mux/archive/main.tar.gz +# MAM_ARCHIVE_URL=https://git.godopu.com/tmpl/multi-agent-mux/archive/main.tar.gz + +# Distribution update/installer script URL. +#default: https://git.godopu.com/tmpl/multi-agent-mux/raw/branch/main/deploy/install.sh +# MAM_INSTALLER_URL=https://git.godopu.com/tmpl/multi-agent-mux/raw/branch/main/deploy/install.sh diff --git a/AGENTS.md b/AGENTS.md index f33cd48..399ab64 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -67,4 +67,8 @@ Strong success criteria let you loop independently. Weak criteria ("make it work **These guidelines are working if:** fewer unnecessary changes in diffs, fewer rewrites due to overcomplication, and clarifying questions come before implementation rather than after mistakes. -Read [MULTI_AGENT_RULES.md](.agents/MULTI_AGENT_RULES.md) (or [Korean version](.agents/MULTI_AGENT_RULES.ko.md)) and [multi-agent-mux-loop/SKILL.md](.agents/skills/multi-agent-mux-loop/SKILL.md) first before working and follow the instructions for orchestration and collaboration. \ No newline at end of file +Read [MULTI_AGENT_RULES.md](.agents/MULTI_AGENT_RULES.md) (or [Korean version](.agents/MULTI_AGENT_RULES.ko.md)) and [multi-agent-mux-loop/SKILL.md](.agents/skills/multi-agent-mux-loop/SKILL.md) first before working and follow the instructions for orchestration and collaboration. + +# 🤖 Multi-Agent Orchestration Guidelines +Please refer to [.agents/MULTI_AGENT_RULES.md](file://./.agents/MULTI_AGENT_RULES.md) for detailed collaborative rules and state flow constraints. + diff --git a/TO-FIX.md b/TO-FIX.md new file mode 100644 index 0000000..4b678ab --- /dev/null +++ b/TO-FIX.md @@ -0,0 +1,84 @@ +- `

AI 에이전트 네트워크 연구실(ANL)은 멀티 AI 에이전트 오케스트레이션을 위해 서로 소통하고 협력하는 에이전트 네트워킹 기술과 표준 프레임워크 기술을 연구합니다.

` + + - 문구 영어로 변경 + +- `
4
Research Areas
220+
Publications
2026
Issue Static
` + + - 문구 수정 + - 4 RESEARCH AREAS -> {Number of International Journals & Conference} International Journals & Conference + - 220+ PUBLICATIONS -> {Number of Patent} Patent + - 2026 ISSUE STATIC -> {Number of Standardization} Standardization Contributions + +- `body > main > div > section.space-y-6 > div.flex.flex-col.sm\:flex-row.sm\:items-end.justify-between.gap-4.border-b.border-line.pb-4 > div > h2` + - 주요 연구 프로젝트 (Research Projects) -> Research Projects + +- `"project-iot-standards` + - IoT Standards -> AIoT & AI-RAN + - `#project-iot-standards > div.space-y-4 > div.flex.items-start.justify-between.gap-3.border-b.border-line\/60.pb-3 > span` : 2026 ~ Present + - AIoT 관련 특히 Agent based IoT 관련 내용으로 수정 + - `#project-iot-standards > div.space-y-3.pt-3.border-t.border-line\/60.text-xs.font-mono > div.flex.items-baseline.justify-between.gap-2 > span.text-cobalt-dark.font-bold` + - ISO/IEC JTC1/SC41 -> 한국연구재단 (NRF) 수정 + - `#project-iot-standards > div.space-y-3.pt-3.border-t.border-line\/60.text-xs.font-mono > div.space-y-1\.5.pt-1` 부분 삭제 + + +- `#project-ccis` + - CCIS -> MCM으로 수정 + - `#project-ccis > div.space-y-4 > div.flex.items-start.justify-between.gap-3.border-b.border-line\/60.pb-3 > span` : 2026 ~ Present + - `#project-ccis > div.space-y-4 > p` : MCM 내용으로 수정 + - `#project-ccis > div.space-y-4 > div.flex.flex-wrap.gap-1\.5.pt-1` : MCM 관련 키워드로 수정 + - `#project-ccis > div.space-y-3.pt-3.border-t.border-line\/60.text-xs.font-mono > div.flex.items-baseline.justify-between.gap-2 > span.text-cobalt-dark.font-bold` + - "IEC/TC 100/TA 17" -> "IEC/TC 100/WG 12 supported by KEIT" + - `#project-ccis > div.space-y-3.pt-3.border-t.border-line\/60.text-xs.font-mono > div.space-y-1\.5.pt-1` 삭제 + +- `#project-vlc-iot` + - VLC-IoT -> MVQM으로 수정 + - `#project-vlc-iot > div.space-y-4 > p` : MVQM 내용으로 수정 + - `#project-vlc-iot > div.space-y-4 > div.flex.flex-wrap.gap-1\.5.pt-1` : MVQM 관련 키워드로 수정 + - `#project-vlc-iot > div.space-y-3.pt-3.border-t.border-line\/60.text-xs.font-mono > div.flex.items-baseline.justify-between.gap-2 > span.text-cobalt-dark.font-bold` + - "ITU-T SG20" -> "IEC/TC 100/WG 12 supported by KEIT" + - `#project-vlc-iot > div.space-y-3.pt-3.border-t.border-line\/60.text-xs.font-mono > div.space-y-1\.5.pt-1` 삭제 + +- `body > main > div > section.space-y-8.pt-20.md\:pt-28.border-t.border-line > div.flex.justify-between.items-end > div:nth-child(1)` + - 영문화 작업을 위해 "RESEARCH AREAS" 로 수정 + - `body > main > div > section.space-y-8.pt-20.md\:pt-28.border-t.border-line > div.flex.justify-between.items-end > div:nth-child(1) > div` + - 삭제 + + - `body > main > div > section.space-y-8.pt-20.md\:pt-28.border-t.border-line > div.flex.justify-between.items-end > div.font-mono.text-xs.text-ink-mute` + - 삭제 + + - `body > main > div > section.space-y-8.pt-20.md\:pt-28.border-t.border-line > div.grid.grid-cols-1.md\:grid-cols-2.lg\:grid-cols-2.gap-6` + - 삭제 + + - 다음 키워드들을 각각 카드 형태로 표현 + - Quick UDP Internet Conenction (QUIC) + - QUIC-based Mobility and Multi-Streaming Support + - Services and Protocols for Internet-of-Things (IoT) + - Constrained Application Protocol (CoAP) + - In-Vehicle Infotainment (IVI) + - Optical Wireless or Visible Light Communications (OWC/VLC) + - Lighting Control Networks (PLASA E1.45) for LED-based VLC + - Mobility Management: Distributed Mobility Control + - Multicast Routing Protocols and Reliable Multicasting + - mobile SCTP (mSCTP): Soft Handover in Transport Layer + - Stream Control Transmission Protocol (SCTP) + - Telecommunication Optimization: Network Planning and Management + - TAC/TAL Configuration for Paging and Location Management + - Tabu Search and Genetic Algorithm + +- 새로운 섹션 추가: + 위치 : `body > main > div > section.space-y-8.pt-20.md\:pt-28.border-t.border-line > div.flex.justify-between.items-end > div:nth-child(1)` 아래 + 섹션명: International Standardizations + 내용: + + ``` + Along with the research activities, we are also in pursuit of the International Standardization, + from the market deployment perspective, in the following SDOs (Standard-Defining Organizations): + + - IEC TC100: Multimedia Systems and Equipment + - ISO/IEC JTC1/SC41: Internet-of-Things (IoT) Applications + - ITU-T SG20: IoT Services + - ITU-T SG13: Mobility Management + - ISO/IEC JTC1/SC6: Reliable Multicasting + + Please refer to [here](link-to-standardization-page) for details of our works on International Standardization so far. + ``` \ No newline at end of file diff --git a/refer_landing_page/app/favicon.ico b/refer_landing_page/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..654110632b64904f8276fd764635cc130e26239b GIT binary patch literal 1322 zcmZQzU<5)11qKkwAi~PPAjZJJ&>7(8&dVjm1!VGidbk7uX`l)Q1r9bKSzJ~11xPU# z2e~^jtUD+363D4YjqptK^<~fkvN;%77^N71CIO9PV6bD9hO^xmH5iz|;!F$-?U@WL zP&Ix)8pPBA5pbG$0V7m3P;3DcT(!aiW&|6g@8>JE_dtrXz$3Dlfk96hgc&QA+Ltjf zu$X$fIEF-Uz737`kqMRf_rEwTEnmSYQsXvzYuJiwQalm)HaXl|4SV^IIn3`d6x#Y# z$aB_@1bMTK7em&128&);Wmw@EDL++8u|YG_<5rX&>q_0}T}?4tQX|XK%b(A=zxl|d zr4MrM->sba|IhaK_V<52<8gR)(qKa3ga79kmMJ%=$(J4UkvaIBdB!ZShSe;J+--*dOP+)wT+WIu9P z;m*A66aGfF6`tRBSlGYuc+`YI6Al532YVQpg#?Yy7gl|X`+o1ye22agxxl~uw-OC@ zE8Mv$>wb=Z62o?%0BQEDWT!g8{`9NyJGL#2OJ6i!;8Dw>c`92NHYl-J-LT&N)$u~X z_ET>+yscmDC{>v7J*!wY+}QYk->lf)+SwLa=@YUKt1Mc-ZGXl8r_u^# z`PIBDPAOmak`VHF9rG@vsLou5b84%yWvau484QmbSu!tsHk|wWwBFkt}uHUC#et-uI^{M|L>2q<0lj^#qhdp zJuT(A)_3b=K7lpPjt)L^OEXI^A7vH@C=<{46cpO*Id4+F`s&iF6M|;z-M;f8v{Y_~ z&^FOsxdxou(jQ+aW8A{pp?1}*KlJJUU!OQX*RGka>#FYd{VQ*4m$@d>iCrOIO|F;R z<>}T_H)1cWV%D{2FQ41BR#NY1qIHA38joX%Ppq4jkzDxwd(|?DK@GRQyovc8{}JW72h`>P1`iD>eMDh``hfhjJsx6*Zp2UZ{R~tW~`eSox!uz(>q~?U!JGYjkb&? zvAlGh)#eACCcW01l(=w*@f6l^1ElbkMb0+?|XP9CtodHwLC&380_ QB?$wAr>mdKI;Vst0LqsshX4Qo literal 0 HcmV?d00001 diff --git a/refer_landing_page/app/globals.css b/refer_landing_page/app/globals.css index 2f04b02..8f37181 100644 --- a/refer_landing_page/app/globals.css +++ b/refer_landing_page/app/globals.css @@ -172,6 +172,14 @@ body { .draw-underline:hover { background-size: 100% 2px; } + + /* Mobile menu scroll container for low-height / landscape viewports (F4) */ + .mobile-menu-panel { + max-height: calc(100vh - 6rem); /* Fallback: browsers without dvh support */ + max-height: calc(100dvh - 6rem); /* Modern: dynamic viewport height */ + overflow-y: auto; + overscroll-behavior: contain; /* Prevent chaining scroll to main page */ + } } /* ================================================================== @@ -217,6 +225,11 @@ body { [class*="animate-"] { animation: none !important; } + /* 스마트 스티키: 모션 줄임 사용자에게는 항상 펼친 상태 유지 */ + header[data-smart-sticky] { + transform: none !important; + transition: none !important; + } html { scroll-behavior: auto; } diff --git a/refer_landing_page/app/icon.svg b/refer_landing_page/app/icon.svg new file mode 100644 index 0000000..8825bab --- /dev/null +++ b/refer_landing_page/app/icon.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/refer_landing_page/app/layout.tsx b/refer_landing_page/app/layout.tsx index 3c51e11..36eb285 100644 --- a/refer_landing_page/app/layout.tsx +++ b/refer_landing_page/app/layout.tsx @@ -34,7 +34,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( - +