feat: Phase 1 — extract the client (web SPA + desktop) to dtoro/oikos-web
Problem: the hexagonal refactor churns the backend tree for nine more phases; the UI delivery stack (web/ SPA, cmd/desktop Wails wrapper, compose/web image) must move to its own repo first so doc/layout rewrites land once on a backend-only tree. Change: - New repo git.hubris.network/dtoro/oikos-web (v0.33.0): web/, desktop/ (updateURL repointed to oikos-web releases), compose/, own CI (web + desktop jobs), own deploy script (CI-green gate, TOCTOU guard, version-tagged images, prune-to-3), own webhook receiver on :9798 + launchd unit, own compose project publishing the same 8091:80. - Cutover executed on mac-mini in order: oikos stack's web service stopped+removed, oikos-web project brought up on 8091; outer Caddy untouched (targets the published port) — serving + Authentik flow + /wails 404 quirk verified post-cutover. - Stripped from oikos: web/, cmd/desktop/, compose/web/, desktop CI workflow, ci.yml web job, Makefile ui/desktop/desktop-package/install targets, the compose web service, oikos-web from deploy.sh's fallback prune list; wails + go-keyring dropped from go.mod, vendor synced. - README / CONTRIBUTING / AGENTS.md / .agents dev+operations docs now point at the new repo; mbse + mascot design docs carry a path note. Risk: production SPA serving depends on the new pipeline now; rollback is versioned-image re-up of the old web service from a pre-split checkout (port 8091). Desktop builds installed before the split still check dtoro/oikos releases — one manual reinstall, noted in the oikos-web release notes. Verification: go vet, make test (race), make generate-check, golangci (no new findings; baseline down 400→365); post-cutover curls — localhost:8091 200, /wails/runtime.js 404, outer Caddy 302 Authentik.
BIN
web/dist/android-chrome-192.png
vendored
Normal file
BIN
web/dist/android-chrome-512.png
vendored
Normal file
BIN
web/dist/apple-touch-icon.png
vendored
Normal file
3
web/dist/assets/AppStore-4AihCKA5.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
import{a3 as h,U as _,a2 as g,p as de,s as l,c as s,R as f,a as p,b as ie,m as le,f as v,x as pe,cz as U,i as ce,a7 as ve,g as a,t as $,e as m,u as y,a8 as j,C as H,cA as ue,cB as me,z as xe,cC as fe}from"./index-B5w8gw75.js";var he=new Set(["$$slots","$$events","$$legacy"]);function _e(o,n){let d=g(n,he);const i=[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335"}],["path",{d:"m9 11 3 3L22 4"}]];h(o,_({name:"circle-check-big"},()=>d,{get iconNode(){return i}}))}var ge=new Set(["$$slots","$$events","$$legacy"]);function be(o,n){let d=g(n,ge);const i=[["path",{d:"M12 15V3"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}],["path",{d:"m7 10 5 5 5-5"}]];h(o,_({name:"download"},()=>d,{get iconNode(){return i}}))}var $e=new Set(["$$slots","$$events","$$legacy"]);function ye(o,n){let d=g(n,$e);const i=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}]];h(o,_({name:"shield"},()=>d,{get iconNode(){return i}}))}var ke=new Set(["$$slots","$$events","$$legacy"]);function we(o,n){let d=g(n,ke);const i=[["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}],["path",{d:"M3 6h18"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}]];h(o,_({name:"trash"},()=>d,{get iconNode(){return i}}))}var Ae=v('<p class="text-sm text-muted-foreground">No apps available yet.</p>'),ze=v('<span class="shrink-0 text-[10px] text-muted-foreground"> </span>'),Ne=v('<button type="button" class="flex items-center gap-1.5 rounded-md border px-2.5 py-1.5 text-xs text-muted-foreground hover:bg-destructive/10 hover:text-destructive hover:border-destructive/50"><!> Uninstall</button>'),Se=v('<button type="button" class="flex items-center gap-1.5 rounded-md bg-primary px-2.5 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90"><!> Install</button>'),Ie=v('<li class="flex items-start gap-3 rounded-lg border p-3"><div class="flex size-10 shrink-0 items-center justify-center rounded-md border bg-muted/40"><!></div> <div class="min-w-0 flex-1"><div class="flex items-center gap-2"><h2 class="truncate text-sm font-medium"> </h2> <span class="shrink-0 text-[10px] font-mono text-muted-foreground"> </span> <!></div> <p class="mt-0.5 line-clamp-2 text-xs text-muted-foreground"> </p> <div class="mt-1.5 flex items-center gap-1 text-[10px] text-muted-foreground"><!> <span><!></span></div></div> <div class="shrink-0"><!></div></li>'),Me=v('<ul class="flex flex-col gap-3"></ul>'),Ce=v(`<div class="flex h-full min-h-0 flex-col"><header class="shrink-0 border-b px-4 py-3"><h1 class="text-base font-semibold">App Store</h1> <p class="mt-0.5 text-xs text-muted-foreground">Installable apps. Local bundles for now — a remote catalog + sandboxing is Phase 4.</p></header> <div class="min-h-0 flex-1 overflow-auto p-4"><!> <div class="mt-6 rounded-md border border-dashed p-3 text-xs text-muted-foreground"><p class="flex items-center gap-1.5"><!> Installed apps appear on the desktop immediately. Uninstalling closes any open window for that
|
||||
app.</p></div></div></div>`);function Le(o,n){de(n,!0);const d=()=>xe(fe,"$installedAppIds",i),[i,O]=le(),T=y(()=>new Set(d()));var k=Ce(),q=l(s(k),2),w=s(q);{var B=u=>{var x=Ae();p(u,x)},D=u=>{var x=Me();ce(x,21,()=>U,b=>b.manifest.id,(b,A)=>{const r=y(()=>a(A).manifest),E=y(()=>a(T).has(a(r).id));var z=Ie(),N=s(z),F=s(N);ve(F,()=>a(A).icon,(e,t)=>{t(e,{class:"size-5"})});var S=l(N,2),I=s(S),M=s(I),J=s(M),C=l(M,2),K=s(C),Q=l(C,2);{var W=e=>{var t=ze(),c=s(t);$(()=>m(c,`by ${a(r).author??""}`)),p(e,t)};f(Q,e=>{a(r).author&&e(W)})}var V=l(I,2),X=s(V),Y=l(V,2),L=s(Y);ye(L,{class:"size-3"});var Z=l(L,2),ee=s(Z);{var te=e=>{var t=j();$(c=>m(t,c),[()=>a(r).permissions.join(", ")]),p(e,t)},se=e=>{var t=j(`no permissions
|
||||
requested`);p(e,t)};f(ee,e=>{a(r).permissions.length?e(te):e(se,-1)})}var ae=l(S,2),re=s(ae);{var oe=e=>{var t=Ne(),c=s(t);we(c,{class:"size-3.5"}),H("click",t,()=>ue(a(r).id)),p(e,t)},ne=e=>{var t=Se(),c=s(t);be(c,{class:"size-3.5"}),H("click",t,()=>me(a(r).id)),p(e,t)};f(re,e=>{a(E)?e(oe):e(ne,-1)})}$(()=>{m(J,a(r).title),m(K,`v${a(r).version??""}`),m(X,a(r).description)}),p(b,z)}),p(u,x)};f(w,u=>{U.length===0?u(B):u(D,-1)})}var G=l(w,2),P=s(G),R=s(P);_e(R,{class:"size-3.5"}),p(o,k),ie(),O()}pe(["click"]);export{Le as default};
|
||||
2
web/dist/assets/DataTable-B-TAV_HV.js
vendored
Normal file
6
web/dist/assets/Knowledge-D0UZIpsu.js
vendored
Normal file
4
web/dist/assets/KnowledgeBase-BNxdKIZ7.js
vendored
Normal file
1
web/dist/assets/KnowledgeBase-lo1lsvmk.css
vendored
Normal file
2
web/dist/assets/Learning-C0EP82zq.js
vendored
Normal file
1
web/dist/assets/MascotLayer-BBfoHdTX.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.bubble-marquee.svelte-zc9y12{animation:svelte-zc9y12-bubble-marquee var(--marquee-duration, 4s) ease-in-out infinite}@keyframes svelte-zc9y12-bubble-marquee{0%,12%{transform:translate(0)}50%,62%{transform:translate(var(--marquee-distance, 0px))}to{transform:translate(0)}}.bubble-pop.svelte-zc9y12{animation:svelte-zc9y12-bubble-pop .34s cubic-bezier(.34,1.56,.64,1) both;transform-origin:bottom center}@keyframes svelte-zc9y12-bubble-pop{0%{transform:scale(.3);opacity:0}55%{transform:scale(1.1);opacity:1}75%{transform:scale(.97)}to{transform:scale(1)}}.bubble-shake.svelte-zc9y12{animation:svelte-zc9y12-bubble-pop .34s cubic-bezier(.34,1.56,.64,1) both,svelte-zc9y12-bubble-shake .38s .36s ease-in-out}@keyframes svelte-zc9y12-bubble-shake{0%,to{transform:translate(0)}20%{transform:translate(-3px)}40%{transform:translate(3px)}60%{transform:translate(-2px)}80%{transform:translate(2px)}}.bubble-cursor.svelte-zc9y12{display:inline-block;width:2px;height:1em;margin-left:1px;vertical-align:text-bottom;background:currentColor;animation:svelte-zc9y12-bubble-caret .75s steps(1) infinite}@keyframes svelte-zc9y12-bubble-caret{50%{opacity:0}}
|
||||
1
web/dist/assets/MascotLayer-D4qaTX9J.js
vendored
Normal file
2
web/dist/assets/Notes-zxrrML9t.js
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
import{W as T,D as s,af as A,R as I,t as D,C as N,cy as j,g as o,a as f,b as z,p as L,y as m,s as r,f as R,c as a,x as W,e as q,a8 as x}from"./index-B5w8gw75.js";var B=R(`<div class="flex h-full min-h-0 flex-col gap-2 p-4"><div class="flex shrink-0 items-center justify-between"><h2 class="text-sm font-medium">Notes</h2> <span class="text-xs text-muted-foreground"><!></span></div> <textarea placeholder="Type here. Auto-saves 2s after you stop, or Cmd/Ctrl+S." class="min-h-0 flex-1 resize-none rounded-md border bg-background p-3 font-mono text-sm leading-relaxed focus-visible:outline-2 focus-visible:outline-ring"></textarea> <p class="shrink-0 text-xs text-muted-foreground">A demo installable app — uninstall it from the App Store to remove its icon and window. Its
|
||||
notes persist in localStorage under <code class="font-mono"> </code>.</p></div>`);function F(g,u){L(u,!0);let n=T(u,"storageKey",3,"oikos-app-notes"),t=m(""),l=m(!1);function y(){return typeof localStorage>"u"?"":localStorage.getItem(n())??""}function c(){typeof localStorage>"u"||(localStorage.setItem(n(),o(t)),s(l,!0),setTimeout(()=>s(l,!1),1500))}function h(e){(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="s"&&(e.preventDefault(),c())}s(t,y(),!0),A(()=>{if(!o(t))return;const e=setTimeout(()=>c(),2e3);return()=>clearTimeout(e)});var p=B(),v=a(p),b=r(a(v),2),_=a(b);{var k=e=>{var d=x("saved");f(e,d)},w=e=>{var d=x("unsaved");f(e,d)};I(_,e=>{o(l)?e(k):e(w,-1)})}var i=r(v,2),S=r(i,2),K=r(a(S)),C=a(K);D(()=>q(C,n())),N("keydown",i,h),j(i,()=>o(t),e=>s(t,e)),f(g,p),z()}W(["keydown"]);export{F as default};
|
||||
1
web/dist/assets/Ops-DAOK5ZEQ.js
vendored
Normal file
1
web/dist/assets/Overview-C_9Ji_NC.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
import{p as z,s as m,t as E,a as v,b as N,c as l,f as b,d as C,g as t,e as x,u as f,h as W,o as j,i as q,B as K,j as O,k as V,l as $,m as G,n as H,q as h,r as T,v as J,w as Q,T as U,F as S,x as X,y as Y,z as Z,A as ee,C as te,D as se,E as ae}from"./index-B5w8gw75.js";import{D as re}from"./DataTable-B-TAV_HV.js";import{P as oe}from"./plus-B9zN-7mU.js";import"./clone-bSRBQ4eT.js";import"./StatusBadgeRenderer-BEdJTFrn.js";import"./select-trigger-BFw7c3mx.js";import"./hidden-input-CbX2doyK.js";import"./on-mount-effect.svelte-Lpx0iWhb.js";var ne=b('<span class="flex items-center gap-1.5 text-xs font-medium text-muted-foreground"><span></span> </span>');function le(g,d){z(d,!0);const r=f(()=>W(d.row));var u=ne(),c=l(u),o=m(c);E(()=>{C(c,1,`size-2 rounded-full ${t(r).dot??""} ${t(r).pulse?"animate-pulse":""}`),x(o,` ${t(r).label??""}`)}),v(g,u),N()}var ie=b('<button type="button"> <span class="ml-1 opacity-60"> </span></button>'),de=b("<!> New task",1),ue=b('<div class="relative flex h-full flex-col gap-3 overflow-hidden p-2"><div class="relative z-10 flex flex-wrap items-center gap-1.5"><!> <div class="flex-1"></div> <!></div> <div class="relative z-10 min-h-0 flex-1 overflow-hidden rounded-xl border bg-card/70 backdrop-blur"><!></div></div>');function xe(g,d){z(d,!0);const r=()=>Z(ee,"$sessions",u),[u,c]=G();let o=Y("all");const D=f(()=>{const e={all:r().length,running:0,input:0,done:0,failed:0};for(const s of r())e[h(s)]++;return e}),I=f(()=>t(o)==="all"?r():r().filter(e=>h(e)===t(o)));function L(e){H(e.id,$(e))}j(()=>{T();const e=J();let s=0,a=null;const n=Q.subscribe(i=>{if(i.length===0)return;const p=i[0].id;if(p<=s)return;const F=i.some(w=>w.id>s&&U.has(w.type));s=p,F&&(a&&clearTimeout(a),a=setTimeout(()=>T(),400))});return()=>{n(),e()}});const M=[{key:"_status",header:"Status",render:le,sortable:!0,accessor:e=>h(e),width:"140px"},{key:"_heading",header:"Task",sortable:!0,accessor:$,truncate:!0},{key:"summary",header:"Summary",accessor:e=>e.summary||"—",truncate:!0,headerClass:"hidden md:table-cell",class:"hidden md:table-cell"},{key:"last_active_at",header:"Last active",render:"relative-time",sortable:!0,width:"112px",align:"right"}],P=f(()=>{var e;return t(o)==="all"?"No tasks yet. Start one and Nomos will plan it, execute it, and report the outcome.":`No ${(e=S.find(s=>s.id===t(o)))==null?void 0:e.label.toLowerCase()} tasks.`});var _=ue(),k=l(_),y=l(k);q(y,17,()=>S,ae,(e,s)=>{var a=ie(),n=l(a),i=m(n),p=l(i);E(()=>{C(a,1,`border px-2.5 py-1 text-xs transition-colors ${t(o)===t(s).id?"border-foreground bg-foreground text-background":"border-border text-muted-foreground hover:border-foreground hover:text-foreground"}`),x(n,`${t(s).label??""} `),x(p,t(D)[t(s).id]??0)}),te("click",a,()=>se(o,t(s).id,!0)),v(e,a)});var R=m(y,4);K(R,{size:"sm",class:"gap-1.5",get onclick(){return V},children:(e,s)=>{var a=de(),n=O(a);oe(n,{class:"size-4"}),v(e,a)},$$slots:{default:!0}});var A=m(k,2),B=l(A);re(B,{get columns(){return M},get data(){return t(I)},get emptyMessage(){return t(P)},bordered:!1,onRowClick:L}),v(g,_),N(),c()}X(["click"]);export{xe as default};
|
||||
1
web/dist/assets/Settings-DIFH4bBX.js
vendored
Normal file
1
web/dist/assets/Signals-C_6d4rqi.js
vendored
Normal file
1
web/dist/assets/StatusBadgeRenderer-BEdJTFrn.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
import{a3 as M,U as N,a2 as z,x as D,W as m,s as A,R as S,t as w,e as x,C as L,a as u,c as p,Q as B,j as H,f as k,aM as P,p as R,aI as Q,ac as j,d as C,b as E,g,u as h,aL as y,ab as T,a8 as U}from"./index-B5w8gw75.js";var V=new Set(["$$slots","$$events","$$legacy"]);function W(s,e){let r=z(e,V);const t=[["path",{d:"M12 5v14"}],["path",{d:"m19 12-7 7-7-7"}]];M(s,N({name:"arrow-down"},()=>r,{get iconNode(){return t}}))}var q=new Set(["$$slots","$$events","$$legacy"]);function F(s,e){let r=z(e,q);const t=[["path",{d:"m21 16-4 4-4-4"}],["path",{d:"M17 20V4"}],["path",{d:"m3 8 4-4 4 4"}],["path",{d:"M7 4v16"}]];M(s,N({name:"arrow-up-down"},()=>r,{get iconNode(){return t}}))}var G=k('<button type="button" class="flex items-center gap-1 hover:text-foreground"> <!></button>');function Y(s,e){let r=m(e,"sorted",3,!1),t=m(e,"direction",3,"asc");var n=G(),d=p(n),o=A(d);{var f=l=>{var a=B(),i=H(a);{var _=c=>{P(c,{class:"size-3"})},b=c=>{W(c,{class:"size-3"})};S(i,c=>{t()==="asc"?c(_):c(b,-1)})}u(l,a)},v=l=>{F(l,{class:"size-3 text-muted-foreground/50"})};S(o,l=>{r()?l(f):l(v,-1)})}w(()=>x(d,`${e.label??""} `)),L("click",n,function(...l){var a;(a=e.onclick)==null||a.apply(this,l)}),u(s,n)}D(["click"]);var J=k("<tr><td> </td></tr>");function Z(s,e){R(e,!0);let r=m(e,"message",3,"No items."),t=m(e,"colspan",3,999);var n=J(),d=p(n),o=p(d);w(f=>{j(d,"colspan",t()),C(d,1,f),x(o,r())},[()=>Q(["py-8 text-center text-muted-foreground",e.class].filter(Boolean).join(" "))]),u(s,n),E()}var K=k('<span class="flex items-center gap-1.5 text-xs"><span></span> <span class="text-muted-foreground"> </span></span>'),O=k('<span class="text-xs text-muted-foreground">—</span>');function $(s,e){R(e,!0);const r={healthy:"bg-success",degraded:"bg-warning",down:"bg-destructive",stale:"bg-warning/50",unknown:"bg-muted-foreground/40"},t=h(()=>e.row.health),n=h(()=>e.row.last_check_at),d=h(()=>e.row.health?e.row.health==="stale"?`stale — last checked ${y(e.row.last_check_at)}`:`${e.row.health} — checked ${y(e.row.last_check_at)}`:"not monitored");var o=B(),f=H(o);{var v=a=>{var i=K(),_=p(i),b=A(_,2),c=p(b);w(I=>{j(i,"title",g(d)),C(_,1,`size-2 shrink-0 rounded-full ${r[e.row.health??""]??""??""}`),x(c,I)},[()=>y(g(n))]),u(a,i)},l=a=>{var i=O();u(a,i)};S(f,a=>{g(t)?a(v):a(l,-1)})}u(s,o),E()}function ee(s,e){let r=m(e,"kind",3,"default");const t=h(()=>String(e.value??"")),n={risk:{destructive:"destructive",config_mutation:"secondary",default:"default"},severity:{critical:"destructive",warning:"secondary",info:"default",default:"default"},execution:{failed:"destructive",denied:"destructive",revoked:"destructive",cancelled:"destructive",completed:"default",running:"secondary",approved:"secondary",default:"outline"},state:{active:"default",healthy:"default",default:"outline"},type:{runbook:"secondary",investigation:"default",default:"outline"},default:{default:"default"}},d=h(()=>{const o=n[r()]??n.default;return o[g(t)]??o.default});T(s,{get variant(){return g(d)},children:(o,f)=>{var v=U();w(()=>x(v,g(t))),u(o,v)},$$slots:{default:!0}})}export{Z as E,$ as H,Y as S,ee as a};
|
||||
1
web/dist/assets/clone-bSRBQ4eT.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
import{cu as g,cv as m,cw as M}from"./index-B5w8gw75.js";const O=[];function J(t,r=!1,f=!1){return i(t,new Map,"",O,null,f)}function i(t,r,f,o,e=null,c=!1){if(typeof t=="object"&&t!==null){var w=r.get(t);if(w!==void 0)return w;if(t instanceof Map)return new Map(t);if(t instanceof Set)return new Set(t);if(g(t)){var n=Array(t.length);r.set(t,n),e!==null&&r.set(e,n);for(var s=0;s<t.length;s+=1){var b=t[s];s in t&&(n[s]=i(b,r,f,o,null,c))}return n}if(m(t)===M){n={},r.set(t,n),e!==null&&r.set(e,n);for(var S of Object.keys(t))n[S]=i(t[S],r,f,o,null,c);return n}if(t instanceof Date)return structuredClone(t);if(typeof t.toJSON=="function"&&!c)return i(t.toJSON(),r,f,o,t)}if(t instanceof EventTarget)return t;try{return structuredClone(t)}catch{return t}}export{J as s};
|
||||
1
web/dist/assets/hidden-input-CbX2doyK.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
import{cx as m,p as g,W as _,Q as b,j as x,R as y,g as r,a as o,b as w,u as S,a1 as P,$ as n,cy as k,a2 as H,f as W}from"./index-B5w8gw75.js";const v={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",transform:"translateX(-100%)"};m(v);var j=new Set(["$$slots","$$events","$$legacy","value"]),p=W("<input/>");function Q(l,a){g(a,!0);let i=_(a,"value",15),u=H(a,j);const s=S(()=>P(u,{"aria-hidden":"true",tabindex:-1,style:{...v,position:"absolute",top:"0",left:"0"}}));var d=b(),c=x(d);{var f=e=>{var t=p();n(t,()=>({...r(s),value:i()}),void 0,void 0,void 0,void 0,!0),o(e,t)},h=e=>{var t=p();n(t,()=>({...r(s)}),void 0,void 0,void 0,void 0,!0),k(t,i),o(e,t)};y(c,e=>{r(s).type==="checkbox"?e(f):e(h,-1)})}o(l,d),w()}export{Q as H};
|
||||
104
web/dist/assets/index-B5w8gw75.js
vendored
Normal file
1
web/dist/assets/index-BrgfNNHo.css
vendored
Normal file
1
web/dist/assets/on-mount-effect.svelte-Lpx0iWhb.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
import{af as t,ag as a}from"./index-B5w8gw75.js";function c(n){t(()=>a(()=>n()))}export{c as o};
|
||||
1
web/dist/assets/plus-B9zN-7mU.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
import{a3 as a,U as p,a2 as r}from"./index-B5w8gw75.js";var n=new Set(["$$slots","$$events","$$legacy"]);function d(e,s){let o=r(s,n);const t=[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]];a(e,p({name:"plus"},()=>o,{get iconNode(){return t}}))}export{d as P};
|
||||
1
web/dist/assets/select-trigger-BFw7c3mx.js
vendored
Normal file
1
web/dist/assets/select-trigger-CV-KWLNP.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
[data-select-viewport],[data-combobox-viewport]{scrollbar-width:none!important;-ms-overflow-style:none!important;-webkit-overflow-scrolling:touch!important}[data-combobox-viewport]::-webkit-scrollbar{display:none!important}[data-select-viewport]::-webkit-scrollbar{display:none!important}
|
||||
1
web/dist/assets/sparkles-DGJxKTzu.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
import{a3 as t,U as l,a2 as o}from"./index-B5w8gw75.js";var p=new Set(["$$slots","$$events","$$legacy"]);function n(a,e){let s=o(e,p);const r=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"}],["path",{d:"M20 2v4"}],["path",{d:"M22 4h-4"}],["circle",{cx:"4",cy:"20",r:"2"}]];t(a,l({name:"sparkles"},()=>s,{get iconNode(){return r}}))}export{n as S};
|
||||
1
web/dist/assets/tabs-trigger-iqr7CeDz.js
vendored
Normal file
BIN
web/dist/favicon.png
vendored
Normal file
4
web/dist/favicon.svg
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="91" height="100" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="#ffffff" d="m45.601 1q20.993 0 33.71 15.946 10.799 13.625 10.799 31.287 0 12.414-5.9548 25.131-5.9548 12.717-16.451 19.176-10.395 6.4592-23.213 6.4592-20.892 0-33.205-16.653-10.395-14.029-10.395-31.489 0-12.717 6.2577-25.232 6.3584-12.616 16.653-18.57 10.295-6.0556 21.801-6.0556zm-3.128 6.5605q-5.3492 0-10.799 3.2296-5.3492 3.1287-8.68 11.102-3.3305 7.9735-3.3305 20.488 0 20.185 7.973 34.82 8.0743 14.634 21.195 14.634 9.7896 0 16.149-8.0743 6.3584-8.0743 6.3584-27.755 0-24.627-10.597-38.756-7.1657-9.6888-18.268-9.6888z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 666 B |
BIN
web/dist/fonts/JetBrainsMono-Bold.woff2
vendored
Normal file
BIN
web/dist/fonts/JetBrainsMono-Regular.woff2
vendored
Normal file
BIN
web/dist/fonts/VT323-Regular.woff2
vendored
Normal file
32
web/dist/index.html
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Oikos</title>
|
||||
<link rel="icon" type="image/svg+xml" href="favicon.svg" />
|
||||
<link rel="apple-touch-icon" href="apple-touch-icon.png" />
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="android-chrome-192.png" />
|
||||
<link rel="icon" type="image/png" sizes="512x512" href="android-chrome-512.png" />
|
||||
<script type="module" crossorigin src="/assets/index-B5w8gw75.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-BrgfNNHo.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
<script>
|
||||
;(function () {
|
||||
try {
|
||||
var t = localStorage.getItem('oikos-theme')
|
||||
if (!t) {
|
||||
t = window.matchMedia('(prefers-color-scheme:light)').matches ? 'light' : 'dark'
|
||||
}
|
||||
if (t === 'dark') document.documentElement.classList.add('dark')
|
||||
} catch (e) {}
|
||||
})()
|
||||
</script>
|
||||
<script src="/wails/runtime.js"></script>
|
||||
<script>
|
||||
window.__OIKOS_CONFIG__ = {}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
20
web/dist/mascot/LICENSE-eggs.txt
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
Eggs
|
||||
By Onocentaur
|
||||
https://onocentaur.itch.io
|
||||
March 2021
|
||||
|
||||
Description
|
||||
350+ pixel art eggs for your next virtual pet/match 3/farming/holiday themed game.
|
||||
|
||||
This pack contains:
|
||||
⁃ Over 350 16x16px eggs.
|
||||
⁃ 32 egg designs, 11 color variants.
|
||||
⁃ 2 different cracking animations for each egg.
|
||||
⁃ Spritesheets for each color variant and cracking pattern.
|
||||
⁃ Transparent PNGs.
|
||||
⁃ Template files so you can color your own eggs.
|
||||
⁃ Bonus: Letter & Number eggs.
|
||||
⁃ Bonus: Incubator assets (nesting box and toggle-able lamp).
|
||||
⁃ Bonus: 12 Animal assets.
|
||||
|
||||
Free to use for personal & professional projects. Attribution appreciated. If you use these assets in your project, let me know! I look forward to seeing what you make.
|
||||
5
web/dist/mascot/LICENSE.txt
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
|
||||
|
||||
The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.
|
||||
You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission.
|
||||
BIN
web/dist/mascot/blink.png
vendored
Normal file
|
After Width: | Height: | Size: 343 B |
BIN
web/dist/mascot/egg-crack.png
vendored
Normal file
|
After Width: | Height: | Size: 167 B |
BIN
web/dist/mascot/egg-idle.png
vendored
Normal file
|
After Width: | Height: | Size: 132 B |
BIN
web/dist/mascot/egg-shell.png
vendored
Normal file
|
After Width: | Height: | Size: 112 B |
BIN
web/dist/mascot/hurt.png
vendored
Normal file
|
After Width: | Height: | Size: 416 B |
BIN
web/dist/mascot/idle.png
vendored
Normal file
|
After Width: | Height: | Size: 368 B |
BIN
web/dist/mascot/jump.png
vendored
Normal file
|
After Width: | Height: | Size: 335 B |
BIN
web/dist/mascot/peck.png
vendored
Normal file
|
After Width: | Height: | Size: 382 B |
BIN
web/dist/mascot/peep.png
vendored
Normal file
|
After Width: | Height: | Size: 295 B |
BIN
web/dist/mascot/react-displeased.png
vendored
Normal file
|
After Width: | Height: | Size: 330 B |
BIN
web/dist/mascot/react-joy.png
vendored
Normal file
|
After Width: | Height: | Size: 379 B |
BIN
web/dist/mascot/react-sigh.png
vendored
Normal file
|
After Width: | Height: | Size: 365 B |
BIN
web/dist/mascot/react-surprise.png
vendored
Normal file
|
After Width: | Height: | Size: 361 B |
BIN
web/dist/mascot/react-yell.png
vendored
Normal file
|
After Width: | Height: | Size: 346 B |
BIN
web/dist/mascot/sleep.png
vendored
Normal file
|
After Width: | Height: | Size: 331 B |
BIN
web/dist/mascot/walk.png
vendored
Normal file
|
After Width: | Height: | Size: 375 B |
BIN
web/dist/mascot/walk2.png
vendored
Normal file
|
After Width: | Height: | Size: 390 B |