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.
4 lines
4.3 KiB
JavaScript
4 lines
4.3 KiB
JavaScript
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};
|