Files
homeclaw/web-ui/html/milling-app.html
T
kimandClaude Sonnet 5 d65e8d958d feat: K2/밀링 앱을 NPM 서브도메인(HTTPS)으로 전환, 홈 드롭다운 재추가
print.applecherry.net(K2 콤보 Fluidd) · mill.applecherry.net(CNC 밀링
OctoPrint)로 NPM 프록시+Let's Encrypt 설정 완료. 앱들이 이제 HTTPS라
mixed content 경고 없이 홈 드롭다운에 다시 노출.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PppKcQmeTJDQCpfcgKietu
2026-09-19 16:39:30 +09:00

55 lines
2.8 KiB
HTML

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>⚙️ CNC 밀링</title>
<link rel="icon" type="image/png" sizes="64x64" href="/homeclaw_logo.png">
<link rel="stylesheet" href="../css/styles.css">
<script>try{var _t=localStorage.getItem('homeclaw_theme')||'dark';document.documentElement.setAttribute('data-theme',_t);}catch(e){}</script>
<style>
:root{--brand:#a855f7;}
html,body{height:100%;margin:0;padding:0;}
body{background:var(--bg);color:var(--text);font-family:system-ui,sans-serif;display:flex;flex-direction:column;overflow:hidden;height:100dvh;}
.hdr{display:flex;align-items:center;gap:8px;padding:6px 12px;background:var(--panel);border-bottom:1px solid var(--line);flex-shrink:0;}
.hdr h1{font-size:13px;font-weight:700;margin:0;}
.hdr-sp{flex:1;}
.hdr-btn{background:none;border:1.5px solid var(--line);border-radius:6px;padding:3px 9px;font-size:11px;color:var(--muted);cursor:pointer;font-family:inherit;transition:.15s;text-decoration:none;display:inline-flex;align-items:center;}
.hdr-btn:hover{border-color:var(--brand);color:var(--brand);}
.frame-wrap{flex:1;min-height:0;position:relative;}
.frame-wrap iframe{width:100%;height:100%;border:none;display:block;}
.err{display:none;position:absolute;inset:0;align-items:center;justify-content:center;flex-direction:column;gap:10px;background:var(--bg);color:var(--muted);font-size:13px;text-align:center;padding:20px;}
.err.show{display:flex;}
.err a{color:var(--brand);}
</style>
</head>
<body>
<header class="hdr">
<a href="/" style="text-decoration:none;font-size:13px;color:var(--muted)">← 홈</a>
<h1>⚙️ CNC 밀링</h1>
<span class="hdr-sp"></span>
<button class="hdr-btn" onclick="reloadFrame()">↺ 새로고침</button>
<a class="hdr-btn" href="https://mill.applecherry.net/" target="_blank">↗ 새 탭</a>
<button class="hdr-btn" onclick="toggleTheme()">🌙</button>
</header>
<div class="frame-wrap">
<iframe id="mill-frame" src="https://mill.applecherry.net/" title="OctoPrint (Mill)"></iframe>
<div class="err" id="mill-err">
<div>OctoPrint(밀링)를 불러오지 못했습니다 (mill.applecherry.net).</div>
<div><a href="https://mill.applecherry.net/" target="_blank">새 탭에서 직접 열기 ↗</a></div>
</div>
</div>
<script>
function toggleTheme(){const d=document.documentElement;const n=d.getAttribute('data-theme')==='dark'?'light':'dark';d.setAttribute('data-theme',n);try{localStorage.setItem('homeclaw_theme',n);}catch{}}
function reloadFrame(){const f=document.getElementById('mill-frame');f.src=f.src;}
let loaded=false;
document.getElementById('mill-frame').addEventListener('load',()=>{loaded=true;});
setTimeout(()=>{ if(!loaded) document.getElementById('mill-err').classList.add('show'); },8000);
</script>
</body>
</html>