Files
oikos/web/dist/assets/Overview-C_9Ji_NC.js
dtoro d4d99a7473
Some checks failed
ci / build-test (push) Has been cancelled
ci / docker-build (push) Has been cancelled
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.
2026-08-15 22:27:52 +02:00

2 lines
3.0 KiB
JavaScript

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};