matrix-by-lmx 1.1.8 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of matrix-by-lmx might be problematic. Click here for more details.

Files changed (2) hide show
  1. package/index.svg +7 -7
  2. package/package.json +1 -1
package/index.svg CHANGED
@@ -6,14 +6,14 @@
6
6
  <section id="games" class="view"><div class="head"><b class="tag">MATRIX / CLOUD ARCADE</b><h1>Pick a game.</h1><p>Live community catalog loaded directly from its public CDN.</p></div><div class="tools"><input id="game-search" placeholder="Search games"/><span id="count" class="count">Loading…</span></div><div id="game-grid" class="grid"></div></section>
7
7
  <section id="apps" class="view"><div class="head"><b class="tag">MATRIX / APPS</b><h1>Web apps.</h1></div><div id="apps-grid" class="grid apps"></div></section>
8
8
  <section id="tools" class="view"><div class="head"><b class="tag">MATRIX / UTILITIES</b><h1>Useful tools.</h1></div><div class="grid"><div class="panel"><h3>Clock</h3><p id="clock">--:--:--</p></div><div class="panel"><h3>Editable workspace</h3><button id="edit">Enable editing</button></div><div class="panel"><h3>Reset</h3><button id="reset">Return home</button></div></div></section>
9
- <section id="settings" class="view"><div class="head"><b class="tag">MATRIX / SETTINGS</b><h1>Preferences.</h1></div><div class="panel"><h3>Your Matrix proxy</h3><p>Enter the HTTPS address where you deployed this repository's proxy server.</p><input id="proxy-url" placeholder="https://your-matrix-proxy.example"/><button id="save-proxy">Save proxy</button><p id="proxy-status" class="msg"></p><a id="proxy-share" href="#">Copyable link for another computer</a></div><div class="panel"><h3>No Vercel</h3><p>The SVG has no Vercel fallback. Apps, URLs, and searches use only the proxy you configure here.</p></div></section></main></div>
10
- <div id="player" class="player"><div class="bar"><strong id="pt">Matrix Player</strong><button id="reload">Reload</button><button id="close">Exit</button></div><iframe id="frame" title="Matrix player" allow="fullscreen;autoplay;gamepad"></iframe></div>
9
+ <section id="settings" class="view"><div class="head"><b class="tag">MATRIX / SETTINGS</b><h1>Preferences.</h1></div><div class="panel"><h3>SVG-only mode</h3><p>Search, apps, utilities, and the interface run inside this SVG. No Vercel or external proxy is used.</p></div><div class="panel"><h3>Privacy</h3><p>General searches request public Wikipedia summaries directly. Games load from their public game CDN.</p></div></section></main></div>
10
+ <div id="player" class="player"><div class="bar"><b class="tab-dot">M</b><strong id="pt">Matrix Player</strong><span id="player-state">Ready</span><button id="back">Back</button><button id="reload">Reload</button><button id="close">Exit</button></div><iframe id="frame" title="Matrix player" allow="fullscreen;autoplay;gamepad"></iframe></div>
11
11
  <script><![CDATA[
12
12
  (function(){var names={home:"New Tab",games:"Games",apps:"Apps",tools:"Utilities",settings:"Settings"},all=[],blobUrl="",player=document.getElementById("player"),frame=document.getElementById("frame"),proxy="";function show(v){document.querySelectorAll(".view").forEach(function(x){x.classList.toggle("on",x.id===v)});document.querySelectorAll(".nav").forEach(function(x){x.classList.toggle("on",x.dataset.v===v)});document.getElementById("title").textContent=names[v]}document.querySelectorAll("[data-v]").forEach(function(x){x.onclick=function(){show(x.dataset.v)}});document.querySelectorAll("[data-go]").forEach(function(x){x.onclick=function(){show(x.dataset.go)}});function open(t,u){document.getElementById("pt").textContent=t;frame.src=u;player.classList.add("on")}async function openGame(g){document.getElementById("pt").textContent=g.name+" · Loading";player.classList.add("on");try{var url=g.url.replace("{HTML_URL}","https://cdn.jsdelivr.net/gh/bubbls/ugs-singlefile/UGS-Files"),r=await fetch(url),html=await r.text(),base=new URL(".",url).href;html=/<head[\s>]/i.test(html)?html.replace(/<head([^>]*)>/i,"<head$1><base href=\""+base+"\">"):"<base href=\""+base+"\">"+html;if(blobUrl)URL.revokeObjectURL(blobUrl);blobUrl=URL.createObjectURL(new Blob([html],{type:"text/html"}));frame.src=blobUrl;document.getElementById("pt").textContent=g.name}catch(e){document.getElementById("pt").textContent="Could not load "+g.name;frame.src="about:blank"}}document.getElementById("close").onclick=function(){player.classList.remove("on");frame.src="about:blank";if(blobUrl){URL.revokeObjectURL(blobUrl);blobUrl=""}};document.getElementById("reload").onclick=function(){var u=frame.src;frame.src="about:blank";setTimeout(function(){frame.src=u},20)};
13
- var apps=[["YouTube","yt"],["Twitch","tw"],["ChatGPT","ai"],["Discord","dc"],["Instagram","ig"],["TikTok","tk"],["GitHub","gh"]],ag=document.getElementById("apps-grid");apps.forEach(function(a){var b=document.createElement("button");b.className="card";b.innerHTML="<small>PROXIED WEB APP</small><strong>"+a[0]+"</strong><span>Open through Matrix proxy ↗</span>";b.onclick=function(){open(a[0],proxy+"/browse?a="+a[1])};ag.appendChild(b)});
13
+ var ag=document.getElementById("apps-grid");
14
14
  function render(){var q=document.getElementById("game-search").value.toLowerCase(),list=all.filter(function(g){return g.name.toLowerCase().includes(q)}).slice(0,160),grid=document.getElementById("game-grid");grid.innerHTML="";list.forEach(function(g){var b=document.createElement("button");b.className="card";b.innerHTML="<small>COMMUNITY / HTML5</small><strong></strong><span>Launch inside Matrix ↗</span>";b.querySelector("strong").textContent=g.name;b.onclick=function(){openGame(g)};grid.appendChild(b)});document.getElementById("count").textContent=list.length+" shown / "+all.length}fetch("https://cdn.jsdelivr.net/gh/TongSherbet/storage/ugs.json").then(function(r){return r.json()}).then(function(d){all=d.filter(function(g){return g.name&&g.url});render()}).catch(function(){document.getElementById("count").textContent="Catalog unavailable"});document.getElementById("game-search").oninput=render;setInterval(function(){document.getElementById("clock").textContent=new Date().toLocaleTimeString()},1000);document.getElementById("edit").onclick=function(){var b=document.querySelector("foreignObject body");b.contentEditable=b.contentEditable==="true"?"false":"true"};document.getElementById("reset").onclick=function(){show("home")};
15
- document.getElementById("search").onsubmit=function(e){e.preventDefault();var q=document.getElementById("q").value.trim();if(!q)return;var isUrl=/^(https?:\/\/|localhost(?::\d+)?(?:\/|$)|(?:[a-z0-9-]+\.)+[a-z]{2,}(?:[\/:?#]|$))/i.test(q),target;if(isUrl){target=/^https?:\/\//i.test(q)?q:"https://"+q;document.getElementById("msg").textContent="Opening URL inside Matrix…"}else{target="https://www.bing.com/search?q="+encodeURIComponent(q);document.getElementById("msg").textContent="Searching inside Matrix…"}open(isUrl?q:"Search: "+q,proxy+"/browse?url="+encodeURIComponent(target))};
16
- var proxyQuery=new URLSearchParams(location.search).get("proxy")||"",savedProxy="";try{savedProxy=localStorage.getItem("matrixProxy")||""}catch(e){}proxy=(proxyQuery||savedProxy).replace(/\/+$/g,"");function validProxy(u){try{return new URL(u).protocol==="https:"}catch(e){return false}}function needProxy(){if(validProxy(proxy))return true;document.getElementById("msg").textContent="Set your Matrix proxy in Settings first.";show("settings");return false}var proxyInput=document.getElementById("proxy-url"),proxyStatus=document.getElementById("proxy-status"),proxyShare=document.getElementById("proxy-share");proxyInput.value=proxy;function updateProxyUi(){proxyStatus.textContent=validProxy(proxy)?"Connected to your configured proxy.":"No proxy configured. Apps and web search are disabled.";proxyShare.href=validProxy(proxy)?location.href.split("?")[0]+"?proxy="+encodeURIComponent(proxy):"#";proxyShare.style.display=validProxy(proxy)?"inline":"none"}document.getElementById("save-proxy").onclick=function(){var value=proxyInput.value.trim().replace(/\/+$/g,"");if(!validProxy(value)){proxyStatus.textContent="Enter a valid HTTPS proxy address.";return}proxy=value;try{localStorage.setItem("matrixProxy",proxy)}catch(e){}updateProxyUi()};Array.prototype.forEach.call(ag.children,function(b,i){b.onclick=function(){if(needProxy())open(apps[i][0],proxy+"/browse?a="+apps[i][1])}});updateProxyUi();
17
- document.getElementById("search").onsubmit=function(e){e.preventDefault();var q=document.getElementById("q").value.trim();if(!q||!needProxy())return;var isUrl=/^(https?:\/\/|localhost(?::\d+)?(?:\/|$)|(?:[a-z0-9-]+\.)+[a-z]{2,}(?:[\/:?#]|$))/i.test(q),target;if(isUrl){target=/^https?:\/\//i.test(q)?q:"https://"+q;document.getElementById("msg").textContent="Opening URL through your proxy…"}else{target="https://www.bing.com/search?q="+encodeURIComponent(q);document.getElementById("msg").textContent="Searching through your proxy…"}open(isUrl?q:"Search: "+q,proxy+"/browse?url="+encodeURIComponent(target))};
18
- var fx=document.createElement("style");fx.textContent=".shell,.main{min-height:0}.main{overflow:hidden}.view{min-height:0;overscroll-behavior:contain;scrollbar-color:#53a9ff #0a1320;scrollbar-width:thin;padding-bottom:90px;background:linear-gradient(120deg,#06101ed9,#071222a8),url('background.gif') center/cover fixed}.view::-webkit-scrollbar{width:10px}.view::-webkit-scrollbar-track{background:#0a1320}.view::-webkit-scrollbar-thumb{border:2px solid #0a1320;border-radius:10px;background:linear-gradient(#63bcff,#765cff)}.view.on{animation:viewIn .42s cubic-bezier(.2,.8,.2,1)}body:before,body:after{content:'';position:fixed;pointer-events:none;z-index:0;border-radius:50%;filter:blur(80px);opacity:.18;animation:drift 9s ease-in-out infinite alternate}body:before{width:420px;height:420px;left:12%;top:-180px;background:#168cff}body:after{width:360px;height:360px;right:-100px;bottom:-140px;background:#874cff;animation-delay:-4s}.side{background:#081221e8;backdrop-filter:blur(18px)}.side,.main{position:relative;z-index:1}.brand b{box-shadow:0 0 25px #4a9dff66;animation:logoPulse 2.6s ease-in-out infinite}.top{background:#07111ddd;backdrop-filter:blur(16px);box-shadow:0 8px 35px #0005}.nav{transition:transform .2s,color .2s,background .2s,box-shadow .2s}.nav:hover{transform:translateX(5px);box-shadow:inset 3px 0 #65b8ff}.hero h1,.head h1{background:linear-gradient(110deg,#fff 15%,#78bdff 48%,#b08cff 70%,#fff 88%);background-size:220% auto;color:transparent;background-clip:text;-webkit-background-clip:text;animation:shine 5s linear infinite}.hero em{color:transparent}.search{background:#07111dcc;backdrop-filter:blur(12px);box-shadow:0 18px 70px #168cff20,0 0 0 1px #6abaff18;transition:transform .25s,box-shadow .25s}.search:focus-within{transform:translateY(-3px);box-shadow:0 22px 80px #168cff3d,0 0 0 1px #72c3ff}.search button,.quick button,.bar button{transition:transform .18s,filter .18s,box-shadow .18s}.search button:hover,.quick button:hover,.bar button:hover{transform:translateY(-2px);filter:brightness(1.18);box-shadow:0 8px 28px #4aa7ff42}.card{position:relative;overflow:hidden;transform:translateY(0);transition:transform .22s,border-color .22s,box-shadow .22s,background .22s;background:linear-gradient(145deg,#101d30e8,#0b1421dc);backdrop-filter:blur(12px)}.card:before{content:'';position:absolute;inset:-100% 45%;transform:rotate(25deg);background:linear-gradient(90deg,transparent,#ffffff16,transparent);transition:transform .55s}.card:hover{transform:translateY(-6px) scale(1.015);border-color:#70bdff;box-shadow:0 18px 45px #0008,0 0 30px #318fff24;background:linear-gradient(145deg,#152944ed,#101a2ce8)}.card:hover:before{transform:translateX(320%) rotate(25deg)}.card strong{font-size:16px}.tag{animation:tagPulse 2s ease-in-out infinite}.panel input{width:min(540px,100%);margin:8px 8px 8px 0;padding:12px;border:1px solid #35547d;border-radius:6px;color:#fff;background:#07111dcc}.panel button{padding:12px 18px;border:1px solid #4c8dd0;border-radius:6px;color:#fff;background:#173a61;cursor:pointer}.panel a{color:#78bdff}.player{animation:viewIn .3s ease}.spinner{filter:drop-shadow(0 0 8px #69baff)}@keyframes viewIn{from{opacity:0;transform:translateY(14px) scale(.992)}to{opacity:1;transform:none}}@keyframes shine{to{background-position:220% center}}@keyframes logoPulse{50%{transform:scale(1.06);box-shadow:0 0 38px #4a9dffaa}}@keyframes tagPulse{50%{opacity:.58;text-shadow:0 0 16px #7abbff}}@keyframes drift{to{transform:translate(90px,80px) scale(1.18)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}";document.head.appendChild(fx);
15
+ proxy="";
16
+ open=function(t,u){document.getElementById("pt").textContent=t;document.getElementById("player-state").textContent="Loading…";player.classList.add("on");player.style.display="grid";player.style.zIndex="9999";player.style.visibility="visible";frame.src=u};document.getElementById("close").onclick=function(){player.classList.remove("on");player.style.display="none";frame.src="about:blank";if(blobUrl){URL.revokeObjectURL(blobUrl);blobUrl=""}};document.getElementById("back").onclick=function(){try{frame.contentWindow.history.back()}catch(e){}};frame.addEventListener("load",function(){document.getElementById("player-state").textContent=frame.src==="about:blank"?"Ready":"Inside Matrix"});
17
+ function safeText(v){return String(v==null?"":v).replace(/[&<>"']/g,function(c){return{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"}[c]})}function pageHtml(title,body){return "<!doctype html><html><head><meta charset='utf-8'><meta name='viewport' content='width=device-width'><style>*{box-sizing:border-box}body{margin:0;padding:32px;color:#edf6ff;background:linear-gradient(135deg,#07111f,#0a1930);font-family:Arial,sans-serif}h1{margin:0 0 8px;font-size:36px}p{color:#9fb3cb;line-height:1.55}.results{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin-top:24px}.result{padding:20px;border:1px solid #294c76;border-radius:12px;background:#0d1d31;box-shadow:0 15px 35px #0005}.result h2{margin:0 0 10px;font-size:18px;color:#8dcbff}.badge{color:#6baee8;font:11px Consolas;letter-spacing:1px}textarea{width:100%;height:65vh;padding:18px;border:1px solid #315781;border-radius:12px;color:#fff;background:#091524;font:16px/1.6 Consolas;resize:none}</style></head><body><span class='badge'>MATRIX / SVG</span><h1>"+safeText(title)+"</h1>"+body+"</body></html>"}function openSvgPage(title,body){open(title,"about:blank");frame.removeAttribute("src");frame.srcdoc=pageHtml(title,body)}async function svgSearch(q){openSvgPage("Search: "+q,"<p>Searching Wikipedia inside Matrix…</p>");try{var api="https://en.wikipedia.org/w/api.php?action=query&generator=search&gsrsearch="+encodeURIComponent(q)+"&gsrlimit=15&prop=extracts&exintro=1&explaintext=1&exsentences=3&format=json&origin=*",r=await fetch(api);if(!r.ok)throw new Error("Search service returned "+r.status);var data=await r.json(),items=Object.values(data.query&&data.query.pages||{}).sort(function(a,b){return(a.index||0)-(b.index||0)}),cards=items.length?items.map(function(x){return"<article class='result'><h2>"+safeText(x.title)+"</h2><p>"+safeText(x.extract||"No summary available.")+"</p></article>"}).join(""):"<p>No results found.</p>";openSvgPage("Search: "+q,"<p>Results stay inside this SVG.</p><div class='results'>"+cards+"</div>")}catch(e){openSvgPage("Search unavailable","<p>"+safeText(e.message)+"</p><p>Check your connection and try again.</p>")}}document.getElementById("search").onsubmit=function(e){e.preventDefault();var q=document.getElementById("q").value.trim();if(q)svgSearch(q)};var svgApps=[["Wikipedia Search","Search public summaries inside Matrix",function(){show("home");document.getElementById("q").focus()}],["Game Finder","Browse the Matrix game catalog",function(){show("games")}],["Notes","Write in a private temporary workspace",function(){openSvgPage("Notes","<p>Notes stay in this tab until it is closed.</p><textarea autofocus placeholder='Start typing…'></textarea>")}],["Clock","Open a distraction-free live clock",function(){openSvgPage("Clock","<p style='font-size:clamp(60px,14vw,170px);color:#8dcbff'>"+new Date().toLocaleTimeString()+"</p>")}],["Utilities","Open Matrix utilities",function(){show("tools")}],["About Matrix","View SVG-only mode details",function(){show("settings")}],["Random Game","Pick something from the catalog",function(){if(all.length)openGame(all[Math.floor(Math.random()*all.length)]);else show("games")}]];ag.innerHTML="";svgApps.forEach(function(a){var b=document.createElement("button");b.className="card";b.innerHTML="<small>SVG APP</small><strong></strong><span></span>";b.querySelector("strong").textContent=a[0];b.querySelector("span").textContent=a[1];b.onclick=a[2];ag.appendChild(b)});
18
+ var fx=document.createElement("style");fx.textContent=".shell,.main{min-height:0}.main{overflow:hidden}.view{min-height:0;overscroll-behavior:contain;scrollbar-color:#53a9ff #0a1320;scrollbar-width:thin;padding-bottom:90px;background:linear-gradient(120deg,#06101ed9,#071222a8),url('background.gif') center/cover fixed}.view::-webkit-scrollbar{width:10px}.view::-webkit-scrollbar-track{background:#0a1320}.view::-webkit-scrollbar-thumb{border:2px solid #0a1320;border-radius:10px;background:linear-gradient(#63bcff,#765cff)}.view.on{animation:viewIn .42s cubic-bezier(.2,.8,.2,1)}body:before,body:after{content:'';position:fixed;pointer-events:none;z-index:0;border-radius:50%;filter:blur(80px);opacity:.18;animation:drift 9s ease-in-out infinite alternate}body:before{width:420px;height:420px;left:12%;top:-180px;background:#168cff}body:after{width:360px;height:360px;right:-100px;bottom:-140px;background:#874cff;animation-delay:-4s}.side{background:#081221e8;backdrop-filter:blur(18px)}.side,.main{position:relative;z-index:1}.brand b{box-shadow:0 0 25px #4a9dff66;animation:logoPulse 2.6s ease-in-out infinite}.top{background:#07111ddd;backdrop-filter:blur(16px);box-shadow:0 8px 35px #0005}.nav{transition:transform .2s,color .2s,background .2s,box-shadow .2s}.nav:hover{transform:translateX(5px);box-shadow:inset 3px 0 #65b8ff}.hero h1,.head h1{background:linear-gradient(110deg,#fff 15%,#78bdff 48%,#b08cff 70%,#fff 88%);background-size:220% auto;color:transparent;background-clip:text;-webkit-background-clip:text;animation:shine 5s linear infinite}.hero em{color:transparent}.search{background:#07111dcc;backdrop-filter:blur(12px);box-shadow:0 18px 70px #168cff20,0 0 0 1px #6abaff18;transition:transform .25s,box-shadow .25s}.search:focus-within{transform:translateY(-3px);box-shadow:0 22px 80px #168cff3d,0 0 0 1px #72c3ff}.search button,.quick button,.bar button{transition:transform .18s,filter .18s,box-shadow .18s}.search button:hover,.quick button:hover,.bar button:hover{transform:translateY(-2px);filter:brightness(1.18);box-shadow:0 8px 28px #4aa7ff42}.card{position:relative;overflow:hidden;transform:translateY(0);transition:transform .22s,border-color .22s,box-shadow .22s,background .22s;background:linear-gradient(145deg,#101d30e8,#0b1421dc);backdrop-filter:blur(12px)}.card:before{content:'';position:absolute;inset:-100% 45%;transform:rotate(25deg);background:linear-gradient(90deg,transparent,#ffffff16,transparent);transition:transform .55s}.card:hover{transform:translateY(-6px) scale(1.015);border-color:#70bdff;box-shadow:0 18px 45px #0008,0 0 30px #318fff24;background:linear-gradient(145deg,#152944ed,#101a2ce8)}.card:hover:before{transform:translateX(320%) rotate(25deg)}.card strong{font-size:16px}.tag{animation:tagPulse 2s ease-in-out infinite}.panel input{width:min(540px,100%);margin:8px 8px 8px 0;padding:12px;border:1px solid #35547d;border-radius:6px;color:#fff;background:#07111dcc}.panel button{padding:12px 18px;border:1px solid #4c8dd0;border-radius:6px;color:#fff;background:#173a61;cursor:pointer}.panel a{color:#78bdff}.player{position:fixed!important;inset:0!important;width:100%!important;height:100%!important;background:#080d15!important;visibility:hidden}.player.on{display:grid!important;visibility:visible!important;grid-template-rows:58px minmax(0,1fr)!important}.player .bar{background:#07111d;border-bottom:1px solid #203354;box-shadow:0 8px 30px #0008}.tab-dot{display:grid;place-items:center;width:30px;height:30px;border:1px solid #65b8ff;border-radius:8px;color:#9ed4ff;box-shadow:0 0 18px #4a9dff55}.player-state{margin-right:8px;color:#6f91b5;font:10px Consolas;text-transform:uppercase;letter-spacing:1px}.player iframe{display:block!important;min-height:0!important;background:#fff}.spinner{filter:drop-shadow(0 0 8px #69baff)}@keyframes viewIn{from{opacity:0;transform:translateY(14px) scale(.992)}to{opacity:1;transform:none}}@keyframes shine{to{background-position:220% center}}@keyframes logoPulse{50%{transform:scale(1.06);box-shadow:0 0 38px #4a9dffaa}}@keyframes tagPulse{50%{opacity:.58;text-shadow:0 0 16px #7abbff}}@keyframes drift{to{transform:translate(90px,80px) scale(1.18)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}";document.head.appendChild(fx);
19
19
  })();]]></script></body></html></foreignObject></svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "matrix-by-lmx",
3
- "version": "1.1.8",
3
+ "version": "1.2.0",
4
4
  "description": "Self-contained Matrix web workspace packaged as an XHTML-in-SVG app",
5
5
  "license": "ISC",
6
6
  "main": "index.svg",