사이트 인터랙티브 워크스테이션 확장 + 감사 폴리시 재적용 + 원클릭 릴리스 도구 — 병행 세션 확장분(히어로 3탭 워크스테이션 시뮬레이터, 비교 섹션(기존 방식 vs MEDIABROWSER), 가이드 단축키 섹션(kbd), 스포트라이트 카드, build/release.ps1 원클릭 릴리스(-Publish/-DeploySite), build-remote.ps1 PowerShell 원격 빌드, upload-release-asset.ps1 로컬 실행 지원(.env 자동 로드·-Publish 승격·-Repo), fetch-releases.mjs 인증·폴백)을 수용하고, 덮여 사라진 감사 폴리시를 새 베이스에 재적용: 타이틀 em대시 제거+OG 메타(index/guide), 아이브로우 6→1(장식 점 제거), 히어로 2줄 헤드라인·20단어 서브·CTA 라벨 단일화·신뢰 스트립 제거, 파이프라인 3분리 카드→단일 머신드 레일 재구성, 과장 카피 완화(100%·1초·초고속·완벽), 시뮬레이터 예시 캡션, skip-link·focus-visible·hero__grid min-width:0(모바일 오버플로) 재적용 — 데스크톱/모바일 검증(scrollWidth 375==375, 아이브로우 1, 레일·캡션·탭 3종 확인), deploy-site.ps1 로 재배포 완료

This commit is contained in:
Yun Chan 2026-08-18 10:35:53 +09:00
parent 9c9d9cb024
commit f13914534a
11 changed files with 976 additions and 246 deletions

View file

@ -1,8 +1,9 @@
// MEDIABROWSER Official Site Script
// 1) IntersectionObserver Scroll Reveal
// 2) Mobile Navigation Menu Controller
// 3) Hero UI Simulator Micro-Interactions
// 4) Dynamic Releases Renderer (releases.json)
// 3) Interactive Hero Workstation Simulator (Multi-Tab Switcher & Live Telemetry)
// 4) Spotlight Card Cursor Light Tracker
// 5) Dynamic Releases Renderer (releases.json)
// ── 1. Scroll Reveal Controller ──────────────────────────────
(function initReveal() {
@ -47,8 +48,29 @@
});
})();
// ── 3. Hero UI Simulator Micro-Animation ─────────────────────
(function initHeroSimulator() {
// ── 3. Interactive Hero Workstation Simulator ────────────────
(function initHeroWorkstation() {
// Tab switcher
const tabBtns = document.querySelectorAll(".sim-tab-btn");
const tabPanels = document.querySelectorAll(".sim-tab-panel");
tabBtns.forEach((btn) => {
btn.addEventListener("click", () => {
const targetId = btn.getAttribute("data-tab");
tabBtns.forEach((b) => {
b.classList.remove("is-active");
b.setAttribute("aria-selected", "false");
});
tabPanels.forEach((p) => p.classList.remove("is-active"));
btn.classList.add("is-active");
btn.setAttribute("aria-selected", "true");
const targetPanel = document.getElementById(targetId);
if (targetPanel) targetPanel.classList.add("is-active");
});
});
// Live Progress & Telemetry simulation
const progressEl = document.getElementById("sim-progress");
const percentEl = document.getElementById("sim-percent");
const speedEl = document.getElementById("sim-speed");
@ -77,7 +99,24 @@
}, 1200);
})();
// ── 4. Releases Renderer ─────────────────────────────────────
// ── 4. Spotlight Card Cursor Light Tracker ───────────────────
(function initSpotlight() {
if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return;
const cards = document.querySelectorAll(".spotlight-card");
if (!cards.length) return;
cards.forEach((card) => {
card.addEventListener("mousemove", (e) => {
const rect = card.getBoundingClientRect();
const x = e.clientX - rect.left;
const y = e.clientY - rect.top;
card.style.setProperty("--mouse-x", `${x}px`);
card.style.setProperty("--mouse-y", `${y}px`);
});
});
})();
// ── 5. Releases Renderer ─────────────────────────────────────
const PLATFORMS = [
{ id: "windows", label: "Windows", icon: "windows-logo", sub: "x64 및 ARM64 네이티브 설치자 (exe)",
match: (n) => /setup.*\.exe$/i.test(n) || /win/i.test(n) },
@ -165,9 +204,9 @@ function releaseCard(r, featured) {
${groupsHtml(r.assets)}`;
if (featured) {
return `<article class="bezel-shell"><div class="bezel-inner rel-featured">${meta}</div></article>`;
return `<article class="bezel-shell spotlight-card"><div class="bezel-inner rel-featured">${meta}</div></article>`;
}
return `<div class="bezel-shell"><div class="bezel-inner"><details>
return `<div class="bezel-shell spotlight-card"><div class="bezel-inner"><details>
<summary>
<span class="rel-featured__tag" style="font-size:1.15rem">${esc(r.name || r.tag)}</span>
${pill}