{"id":292,"date":"2026-10-18T12:28:02","date_gmt":"2026-10-18T03:28:02","guid":{"rendered":"https:\/\/haibara.us\/?page_id=292"},"modified":"2026-10-18T12:39:55","modified_gmt":"2026-10-18T03:39:55","slug":"status","status":"publish","type":"page","link":"https:\/\/haibara.us\/?page_id=292","title":{"rendered":"Status"},"content":{"rendered":"\n<!-- Paste this entire file into ONE WordPress Custom HTML block. -->\n<section class=\"hb-cloud\" aria-label=\"Live server dashboard\">\n<style>\n.hb-cloud{--ink:#403858;--muted:#827994;--pink:#ed92b4;--purple:#a795e4;--mint:#78bfae;color:var(--ink);font:15px\/1.5 ui-rounded,'Trebuchet MS',system-ui,sans-serif;max-width:850px;margin:28px auto;padding:30px;background:radial-gradient(ellipse at 95% 0%,#f4e4ff 0,transparent 50%),radial-gradient(ellipse at 0% 100%,#e6f5ee 0,transparent 45%),#fff9f5;border:1px solid #eee2ec;border-radius:28px;box-shadow:0 14px 45px #6050740d;box-sizing:border-box;text-align:left;isolation:isolate}\n.hb-cloud *{box-sizing:border-box}.hb-cloud .hb-top{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.hb-cloud .hb-mascot{position:relative;display:grid;place-items:center;width:66px;height:56px;border-radius:23px;background:#fff;border:2px solid #e9def3;box-shadow:0 5px 0 #eadff4;color:#75638e;font-size:22px;animation:hb-float 4s ease-in-out infinite}.hb-cloud .hb-mascot:after{content:'\u2726';position:absolute;right:-10px;top:-12px;color:#d6af63;font-size:25px}.hb-cloud .hb-kicker{font-size:10px;font-weight:800;letter-spacing:2.5px;color:#9a86ac;margin:0 0 4px}.hb-cloud .hb-title{font-size:clamp(23px,4vw,32px);line-height:1.2;font-weight:800;letter-spacing:-1px;margin:0;color:var(--ink)}.hb-cloud .hb-pill{margin-left:auto;display:flex;align-items:center;gap:7px;border:1px solid #e9e2ed;border-radius:100px;padding:7px 12px;background:#ffffffb3;font-size:11px;font-weight:700;white-space:nowrap}.hb-cloud .hb-dot{width:7px;height:7px;background:#b1a9b9;border-radius:100%}.hb-cloud[data-state=\"live\"] .hb-dot{background:#65b69b;box-shadow:0 0 0 4px #65b69b1a;animation:hb-pulse 2s infinite}.hb-cloud[data-state=\"stale\"] .hb-dot{background:#d9a354}.hb-cloud[data-state=\"error\"] .hb-dot{background:#dc8b9f}.hb-cloud .hb-intro{margin:22px 0 20px;color:var(--muted);font-size:13px}.hb-cloud .hb-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.hb-cloud .hb-card{--accent:var(--purple);background:#ffffffcc;border:1px solid #ffffff;border-radius:21px;padding:21px;box-shadow:0 3px 16px #6a577008;min-width:0}.hb-cloud .hb-card:nth-child(2){--accent:var(--pink)}.hb-cloud .hb-card:nth-child(3){--accent:var(--mint)}.hb-cloud .hb-card:nth-child(4){--accent:#d9ae64}.hb-cloud .hb-label{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);font-weight:700}.hb-cloud .hb-icon{display:grid;place-items:center;width:29px;height:29px;background:color-mix(in srgb,var(--accent) 15%,white);color:var(--accent);border-radius:10px;font-size:17px}.hb-cloud .hb-value{display:block;font-size:34px;font-weight:800;letter-spacing:-1.5px;line-height:1.25;margin:15px 0 7px;font-variant-numeric:tabular-nums;color:var(--ink)}.hb-cloud .hb-detail{font-size:11px;color:var(--muted);min-height:18px;margin:0}.hb-cloud .hb-track{height:9px;background:#f1edf5;border-radius:20px;overflow:hidden;margin-top:22px}.hb-cloud .hb-fill{height:100%;width:0;background:var(--accent);border-radius:20px;transition:width 1.2s cubic-bezier(.2,.7,.2,1)}.hb-cloud .hb-chart{display:block;width:100%;height:54px;margin-top:12px;overflow:visible}.hb-cloud .hb-chart line{stroke:#eee9f3;stroke-width:1}.hb-cloud .hb-chart polyline{stroke:var(--accent);stroke-width:2.5;fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.hb-cloud .hb-chart circle{fill:var(--accent)}.hb-cloud .hb-caption{font-size:9px;letter-spacing:.7px;color:#a59aaf;margin-top:4px}.hb-cloud .hb-footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-top:21px;font-size:10px;color:var(--muted)}.hb-cloud[data-state=\"error\"] .hb-grid{opacity:.55}.hb-cloud .hb-notice{margin:12px 0 0;font-size:12px;color:#a56b66}.hb-cloud .hb-notice:empty{display:none}@keyframes hb-float{50%{transform:translateY(-4px)}}@keyframes hb-pulse{50%{box-shadow:0 0 0 6px #65b69b08}}@media(max-width:520px){.hb-cloud{padding:20px 15px;border-radius:23px}.hb-cloud .hb-grid{gap:10px}.hb-cloud .hb-card{padding:15px 12px}.hb-cloud .hb-value{font-size:27px}.hb-cloud .hb-pill{margin-left:0}.hb-cloud .hb-mascot{width:52px;height:48px}.hb-cloud .hb-detail{font-size:10px}}@media(max-width:340px){.hb-cloud .hb-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.hb-cloud *{animation:none!important;transition:none!important}}\n<\/style>\n<div class=\"hb-top\"><div class=\"hb-mascot\" aria-hidden=\"true\">\u2022\u1d17\u2022<\/div><div><p class=\"hb-kicker\">HAIBARA.US<\/p><h2 class=\"hb-title\">Server status<\/h2><\/div><div class=\"hb-pill\"><i class=\"hb-dot\"><\/i><span data-hb=\"status\" role=\"status\">Connecting<\/span><\/div><\/div>\n<p class=\"hb-intro\"><span aria-hidden=\"true\">\u2661\u2661\u2661\u2661\u2661\u2661\u2661<\/span><\/p>\n<div class=\"hb-grid\">\n  <div class=\"hb-card\"><div class=\"hb-label\"><span class=\"hb-icon\" aria-hidden=\"true\">\u2727<\/span>CPU activity<\/div><span class=\"hb-value\" data-hb=\"cpu\">\u2014<\/span><p class=\"hb-detail\">Average across all CPU cores<\/p><svg class=\"hb-chart\" viewBox=\"0 0 280 54\" preserveAspectRatio=\"none\" role=\"img\" aria-label=\"CPU usage history, zero to one hundred percent\"><line x1=\"0\" y1=\"48\" x2=\"280\" y2=\"48\"><\/line><polyline data-hb=\"cpu-line\"><\/polyline><circle data-hb=\"cpu-dot\" r=\"3\" visibility=\"hidden\"><\/circle><\/svg><div class=\"hb-caption\">RECENT SAMPLES \u00b7 0\u2013100%<\/div><\/div>\n  <div class=\"hb-card\"><div class=\"hb-label\"><span class=\"hb-icon\" aria-hidden=\"true\">\u2661<\/span>Memory<\/div><span class=\"hb-value\" data-hb=\"memory\">\u2014<\/span><p class=\"hb-detail\" data-hb=\"memory-detail\">Waiting for a little update\u2026<\/p><div class=\"hb-track\" role=\"progressbar\" aria-label=\"Memory used\" aria-valuemin=\"0\" aria-valuemax=\"100\" data-hb=\"memory-bar\"><div class=\"hb-fill\"><\/div><\/div><div class=\"hb-caption\">MEMORY IN USE<\/div><\/div>\n  <div class=\"hb-card\"><div class=\"hb-label\"><span class=\"hb-icon\" aria-hidden=\"true\">\u2301<\/span>Connections<\/div><span class=\"hb-value\" data-hb=\"connections\">\u2014<\/span><p class=\"hb-detail\">Established TCP connections<\/p><svg class=\"hb-chart\" viewBox=\"0 0 280 54\" preserveAspectRatio=\"none\" role=\"img\" aria-label=\"Recent TCP connection count, automatically scaled\"><line x1=\"0\" y1=\"48\" x2=\"280\" y2=\"48\"><\/line><polyline data-hb=\"connections-line\"><\/polyline><circle data-hb=\"connections-dot\" r=\"3\" visibility=\"hidden\"><\/circle><\/svg><div class=\"hb-caption\">RECENT SAMPLES \u00b7 AUTO SCALE<\/div><\/div>\n  <div class=\"hb-card\"><div class=\"hb-label\"><span class=\"hb-icon\" aria-hidden=\"true\">\u25c8<\/span>Storage available<\/div><span class=\"hb-value\" data-hb=\"disk\">\u2014<\/span><p class=\"hb-detail\" data-hb=\"disk-detail\">Making room for good things.<\/p><div class=\"hb-track\" role=\"progressbar\" aria-label=\"Storage available\" aria-valuemin=\"0\" aria-valuemax=\"100\" data-hb=\"disk-bar\"><div class=\"hb-fill\"><\/div><\/div><div class=\"hb-caption\">FREE SPACE<\/div><\/div>\n<\/div>\n<p class=\"hb-notice\" data-hb=\"notice\" role=\"status\"><\/p>\n<div class=\"hb-footer\"><span>Made by Hickssek\u2726<\/span><span data-hb=\"updated\">Updates every 10 seconds<\/span><\/div>\n<script>\n(() => {\n  const root = document.currentScript.closest('.hb-cloud');\n  const el = key => root.querySelector('[data-hb=\"'+key+'\"]');\n  const text = (key,value) => { el(key).textContent = value; };\n  const gib = n => (n \/ 1073741824).toFixed(2)+' GiB';\n  const histories = {cpu:[],connections:[]};\n  let lastTimestamp = null;\n  const finite = n => Number.isFinite(n) && n >= 0;\n  function bar(key,value) {\n    const v = Math.max(0,Math.min(100,value));\n    el(key).setAttribute('aria-valuenow',v.toFixed(1));\n    el(key).querySelector('.hb-fill').style.width = v+'%';\n  }\n  function chart(key,value,max) {\n    const values = histories[key];\n    values.push(value); if(values.length > 30) values.shift();\n    const ceiling = max || Math.max(1,...values);\n    const points = values.map((v,i) => [4+i*272\/29,48-Math.min(v\/ceiling,1)*42]);\n    el(key+'-line').setAttribute('points',points.map(p=>p.join(',')).join(' '));\n    const end = points[points.length-1];\n    const dot = el(key+'-dot');\n    dot.setAttribute('cx',end[0]);dot.setAttribute('cy',end[1]);dot.setAttribute('visibility','visible');\n  }\n  async function refresh() {\n    if (!root.isConnected) return;\n    if (!document.hidden) {\n      const controller = new AbortController();\n      const timeout = setTimeout(()=>controller.abort(),8000);\n      try {\n        const response = await fetch('\/vps-status.json?t='+Date.now(),{cache:'no-store',signal:controller.signal});\n        if(!response.ok) throw new Error('Unavailable');\n        const d = await response.json();\n        if(d.schema_version!==1 || !finite(d.updated_at) ||\n          !(d.cpu_percent===null || (finite(d.cpu_percent)&&d.cpu_percent<=100)) ||\n          !finite(d.tcp_established) || !d.memory || !d.disk ||\n          !finite(d.memory.used_bytes) || !finite(d.memory.total_bytes) || d.memory.total_bytes===0 ||\n          !finite(d.memory.percent) || d.memory.percent>100 ||\n          !finite(d.disk.available_bytes) || !finite(d.disk.total_bytes) || d.disk.total_bytes===0) throw new Error('Invalid data');\n        const stale = Date.now()\/1000-d.updated_at > 30;\n        root.dataset.state = stale ? 'stale':'live';\n        text('status',stale ? 'Last known data':'Live & cozy');\n        text('notice',stale ? 'This little cloud has not checked in recently. Showing its last update.':'');\n        text('cpu',d.cpu_percent===null?'\u2014':d.cpu_percent.toFixed(1)+'%');\n        text('memory',d.memory.percent.toFixed(1)+'%');\n        text('memory-detail',gib(d.memory.used_bytes)+' of '+gib(d.memory.total_bytes));\n        text('connections',d.tcp_established.toLocaleString('en-US'));\n        text('disk',gib(d.disk.available_bytes));\n        text('disk-detail','Available out of '+gib(d.disk.total_bytes));\n        bar('memory-bar',d.memory.percent);\n        bar('disk-bar',100*d.disk.available_bytes\/d.disk.total_bytes);\n        if(!stale && d.updated_at!==lastTimestamp) {\n          if(lastTimestamp!==null && (d.updated_at-lastTimestamp>30 || d.updated_at<lastTimestamp)) {\n            histories.cpu.length=0; histories.connections.length=0;\n          }\n          if(d.cpu_percent!==null) chart('cpu',d.cpu_percent,100);\n          chart('connections',d.tcp_established);\n          lastTimestamp=d.updated_at;\n        }\n        text('updated','Updated '+new Date(d.updated_at*1000).toLocaleTimeString('en-US',{hour:'2-digit',minute:'2-digit',second:'2-digit'}));\n      } catch(error) {\n        root.dataset.state='error';\n        text('status','Taking a little nap');\n        text('notice','Unable to refresh. Any values shown are from the last successful update. Retrying soon.');\n      } finally { clearTimeout(timeout); }\n    }\n    setTimeout(refresh,10000);\n  }\n  refresh();\n})();\n<\/script>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>\u2022\u1d17\u2022 HAIBARA.US Server status Connecting \u2661\u2661\u2661\u2661\u2661\u2661\u2661 \u2727CPU activity \u2014 Average across all CPU cores RECENT SAMPLES \u00b7 0\u2013100% \u2661Memory \u2014 Waiting for a little update\u2026 MEMORY IN USE \u2301Connections \u2014 Established TCP connections RECENT SAMPLES \u00b7 AUTO SCALE \u25c8Storage available \u2014 Making room for good things. FREE SPACE Made by Hickssek\u2726Updates every 10 seconds<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-292","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/haibara.us\/index.php?rest_route=\/wp\/v2\/pages\/292","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/haibara.us\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/haibara.us\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/haibara.us\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/haibara.us\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=292"}],"version-history":[{"count":3,"href":"https:\/\/haibara.us\/index.php?rest_route=\/wp\/v2\/pages\/292\/revisions"}],"predecessor-version":[{"id":296,"href":"https:\/\/haibara.us\/index.php?rest_route=\/wp\/v2\/pages\/292\/revisions\/296"}],"wp:attachment":[{"href":"https:\/\/haibara.us\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}