Ampel / ampel (push) Failing after 21s
- Der SPA-Rueckfall lieferte fuer unbekannte /api-Pfade die Startseite (HTML, 200). Im
ersten Probelauf stuerzte der Start daran ab (/api/radar gab es noch nicht). Jetzt 404;
api() behandelt Nicht-JSON als Fehler, der Router zeigt eine deutsche Fehleranzeige.
- Waechter: Skriptmeldungen ("! ...", fehlgeschlagen) gehen vor systemd-Rahmenzeilen wie
"Failed to start ..." - die sagen nur, dass es scheiterte, nicht warum.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 lines
14 KiB
JavaScript
2 lines
14 KiB
JavaScript
import{a as e,c as t,f as n,i as r,s as i,t as a,u as o}from"./button-Dd8hfusv.js";import{a as s,i as c,n as l,o as u,r as d,s as f,t as p}from"./dist-CgRgLCFz.js";import{C as m,S as h,T as g,a as _,b as v,d as y,f as b,i as x,o as S,r as C,t as w,w as T,x as E}from"./index-BPkKGp97.js";var D=i(),O=n(o(),1),k=t();function A(e){let t=(0,D.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,k.jsx)(p,{"data-slot":`dialog`,...n}),t[2]=n,t[3]=r),r}function j(e){let t=(0,D.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,k.jsx)(u,{"data-slot":`dialog-portal`,...n}),t[2]=n,t[3]=r),r}function M(e){let t=(0,D.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,n),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,k.jsx)(s,{"data-slot":`dialog-overlay`,className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}function N(t){let n=(0,D.c)(15),i,o,s,c;n[0]===t?(i=n[1],o=n[2],s=n[3],c=n[4]):({className:o,children:i,showCloseButton:c,...s}=t,n[0]=t,n[1]=i,n[2]=o,n[3]=s,n[4]=c);let u=c===void 0||c,f;n[5]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,k.jsx)(M,{}),n[5]=f):f=n[5];let p;n[6]===o?p=n[7]:(p=r(`fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,o),n[6]=o,n[7]=p);let m;n[8]===u?m=n[9]:(m=u&&(0,k.jsx)(l,{"data-slot":`dialog-close`,asChild:!0,children:(0,k.jsxs)(a,{variant:`ghost`,className:`absolute top-2 right-2`,size:`icon-sm`,children:[(0,k.jsx)(e,{}),(0,k.jsx)(`span`,{className:`sr-only`,children:`Schließen`})]})}),n[8]=u,n[9]=m);let h;return n[10]!==i||n[11]!==s||n[12]!==p||n[13]!==m?(h=(0,k.jsxs)(j,{children:[f,(0,k.jsxs)(d,{"data-slot":`dialog-content`,className:p,...s,children:[i,m]})]}),n[10]=i,n[11]=s,n[12]=p,n[13]=m,n[14]=h):h=n[14],h}function P(e){let t=(0,D.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`flex flex-col gap-2`,n),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,k.jsx)(`div`,{"data-slot":`dialog-header`,className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}function F(e){let t=(0,D.c)(14),n,i,o,s;t[0]===e?(n=t[1],i=t[2],o=t[3],s=t[4]):({className:i,showCloseButton:s,children:n,...o}=e,t[0]=e,t[1]=n,t[2]=i,t[3]=o,t[4]=s);let c=s!==void 0&&s,u;t[5]===i?u=t[6]:(u=r(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end`,i),t[5]=i,t[6]=u);let d;t[7]===c?d=t[8]:(d=c&&(0,k.jsx)(l,{asChild:!0,children:(0,k.jsx)(a,{variant:`outline`,children:`Schließen`})}),t[7]=c,t[8]=d);let f;return t[9]!==n||t[10]!==o||t[11]!==u||t[12]!==d?(f=(0,k.jsxs)(`div`,{"data-slot":`dialog-footer`,className:u,...o,children:[n,d]}),t[9]=n,t[10]=o,t[11]=u,t[12]=d,t[13]=f):f=t[13],f}function I(e){let t=(0,D.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`font-heading text-base leading-none font-medium`,n),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,k.jsx)(f,{"data-slot":`dialog-title`,className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}function L(e){let t=(0,D.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,n),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,k.jsx)(c,{"data-slot":`dialog-description`,className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}function R(e){let t=(0,D.c)(26),{offen:n,titel:r,text:i,knopf:o,gefahr:s,onJa:c,onNein:l,children:u}=e,d;t[0]===l?d=t[1]:(d=e=>!e&&l(),t[0]=l,t[1]=d);let f;t[2]===r?f=t[3]:(f=(0,k.jsx)(I,{className:`schild text-xl`,children:r}),t[2]=r,t[3]=f);let p;t[4]===i?p=t[5]:(p=(0,k.jsx)(L,{className:`text-[15px] leading-relaxed text-text-2`,children:i}),t[4]=i,t[5]=p);let m;t[6]!==f||t[7]!==p?(m=(0,k.jsxs)(P,{children:[f,p]}),t[6]=f,t[7]=p,t[8]=m):m=t[8];let h;t[9]===l?h=t[10]:(h=(0,k.jsx)(a,{variant:`outline`,onClick:l,children:`Abbrechen`}),t[9]=l,t[10]=h);let g=s?`gefahr`:`default`,_;t[11]!==o||t[12]!==c||t[13]!==g?(_=(0,k.jsx)(a,{variant:g,onClick:c,children:o}),t[11]=o,t[12]=c,t[13]=g,t[14]=_):_=t[14];let v;t[15]!==h||t[16]!==_?(v=(0,k.jsxs)(F,{className:`gap-2 sm:gap-2`,children:[h,_]}),t[15]=h,t[16]=_,t[17]=v):v=t[17];let y;t[18]!==u||t[19]!==m||t[20]!==v?(y=(0,k.jsxs)(N,{className:`border-linie bg-panel sm:max-w-lg`,children:[m,u,v]}),t[18]=u,t[19]=m,t[20]=v,t[21]=y):y=t[21];let b;return t[22]!==n||t[23]!==d||t[24]!==y?(b=(0,k.jsx)(A,{open:n,onOpenChange:d,children:y}),t[22]=n,t[23]=d,t[24]=y,t[25]=b):b=t[25],b}var z=[{id:`os`,name:`Betriebssystem`},{id:`engine`,name:`Motor (llama.cpp)`},{id:`swap`,name:`llama-swap`},{id:`hermes`,name:`Hermes`}];function B(e){let t=(0,D.c)(29),{id:n,name:r,hatUpdate:i,onStart:o,laeuftGerade:s}=e,{data:c,isPending:l}=h(n),u;t[0]!==c||t[1]!==n?(u=C(n,c),t[0]=c,t[1]=n,t[2]=u):u=t[2];let d=u,f=i?d.neu??`neu`:null,p;t[3]!==c?.count||t[4]!==c?.summary||t[5]!==i||t[6]!==n||t[7]!==l?(p=i?c?.summary?.trim()||(n===`os`&&c?.count?`Paketliste unten in den Details.`:l?`Wird gelesen …`:``):`Aktuell.`,t[3]=c?.count,t[4]=c?.summary,t[5]=i,t[6]=n,t[7]=l,t[8]=p):p=t[8];let m=p,g;t[9]===r?g=t[10]:(g=(0,k.jsx)(`th`,{scope:`row`,className:`py-3.5 pr-4 text-left font-sans text-[15px] font-semibold`,children:r}),t[9]=r,t[10]=g);let _;t[11]===d.laeuft?_=t[12]:(_=(0,k.jsx)(`td`,{className:`ziffern py-3.5 pr-4 text-sm text-text-2`,children:d.laeuft}),t[11]=d.laeuft,t[12]=_);let v;t[13]===f?v=t[14]:(v=(0,k.jsx)(`td`,{className:`ziffern py-3.5 pr-4 text-sm`,children:f?(0,k.jsx)(`span`,{className:`text-cyan`,children:f}):(0,k.jsx)(`span`,{className:`text-text-3`,children:`–`})}),t[13]=f,t[14]=v);let y;t[15]===m?y=t[16]:(y=(0,k.jsx)(`td`,{className:`py-3.5 pr-4 text-sm leading-relaxed text-text-2`,children:(0,k.jsx)(`span`,{className:`line-clamp-3 whitespace-pre-line`,children:m})}),t[15]=m,t[16]=y);let b;t[17]!==i||t[18]!==s||t[19]!==o?(b=i&&(0,k.jsx)(a,{variant:`outline`,size:`sm`,onClick:o,disabled:s,children:`Aktualisieren`}),t[17]=i,t[18]=s,t[19]=o,t[20]=b):b=t[20];let x;t[21]===b?x=t[22]:(x=(0,k.jsx)(`td`,{className:`py-2.5 text-right`,children:b}),t[21]=b,t[22]=x);let S;return t[23]!==g||t[24]!==_||t[25]!==v||t[26]!==y||t[27]!==x?(S=(0,k.jsxs)(`tr`,{className:`border-t border-linie align-top`,children:[g,_,v,y,x]}),t[23]=g,t[24]=_,t[25]=v,t[26]=y,t[27]=x,t[28]=S):S=t[28],S}function V(e){let t=(0,D.c)(13),{job:n}=e,r=n.state===`done`?`gruen`:n.state===`failed`?`rot`:`cyan`,i=n.state===`done`?`Fertig`:n.state===`failed`?`Fehler`:n.state===`queued`?`Wartet`:`Läuft`,a;t[0]===n.label?a=t[1]:(a=(0,k.jsx)(`span`,{className:`text-[15px] font-semibold`,children:n.label}),t[0]=n.label,t[1]=a);let o;t[2]!==r||t[3]!==i?(o=(0,k.jsx)(x,{art:r,children:i}),t[2]=r,t[3]=i,t[4]=o):o=t[4];let s;t[5]!==a||t[6]!==o?(s=(0,k.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[a,o]}),t[5]=a,t[6]=o,t[7]=s):s=t[7];let c;t[8]===n.log?c=t[9]:(c=n.log&&n.log.length>0&&(0,k.jsx)(`pre`,{className:`ziffern max-h-40 overflow-auto rounded-md bg-[#0b0d0f] p-2 text-xs whitespace-pre-wrap text-text-2`,children:n.log.slice(-8).join(`
|
||
`)}),t[8]=n.log,t[9]=c);let l;return t[10]!==s||t[11]!==c?(l=(0,k.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-xl border border-linie bg-erhaben/50 p-3`,children:[s,c]}),t[10]=s,t[11]=c,t[12]=l):l=t[12],l}function H(e){return e.mtime?S(new Date(e.mtime*1e3).toISOString()):e.snapshot}function U(){let e=(0,D.c)(55),t=E(),n=b(),r=T(),i=v(),o=m(),s=y(),c=g(),[l,u]=(0,O.useState)(null),d;e[0]===t.data?.updates.bausteine?d=e[1]:(d=new Set(t.data?.updates.bausteine.map(J)??[]),e[0]=t.data?.updates.bausteine,e[1]=d);let f=d,p;if(e[2]!==n.data?.jobs||e[3]!==f||e[4]!==t.isPending||e[5]!==o){let r=(n.data?.jobs??[]).filter(q),i=r.some(K),s;e[7]===o?s=e[8]:(s=()=>o.mutate(`pruefen`),e[7]=o,e[8]=s);let c;e[9]!==s||e[10]!==o.isPending?(c=(0,k.jsx)(a,{variant:`outline`,onClick:s,disabled:o.isPending,children:`Nach Neuem suchen`}),e[9]=s,e[10]=o.isPending,e[11]=c):c=e[11];let l;e[12]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>u({art:`alle`}),e[12]=l):l=e[12];let d;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,k.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Jeden Sonntag um 04:30 automatisch. Vorher wird gesichert, danach geprüft.`}),e[13]=d):d=e[13],p=(0,k.jsxs)(w,{titel:`Updates`,rechts:(0,k.jsxs)(`div`,{className:`flex flex-wrap gap-2.5`,children:[c,(0,k.jsx)(a,{onClick:l,disabled:i||f.size===0,children:`Alles jetzt aktualisieren`})]}),children:[d,t.isPending?(0,k.jsx)(_,{text:`Updates werden gelesen …`}):(0,k.jsx)(`div`,{className:`overflow-x-auto`,children:(0,k.jsxs)(`table`,{className:`w-full min-w-[680px] border-collapse`,children:[(0,k.jsx)(`thead`,{children:(0,k.jsxs)(`tr`,{className:`schild text-left text-xs text-text-3`,children:[(0,k.jsx)(`th`,{scope:`col`,className:`pb-2 font-semibold`,children:`Baustein`}),(0,k.jsx)(`th`,{scope:`col`,className:`pb-2 font-semibold`,children:`Läuft`}),(0,k.jsx)(`th`,{scope:`col`,className:`pb-2 font-semibold`,children:`Neu`}),(0,k.jsx)(`th`,{scope:`col`,className:`pb-2 font-semibold`,children:`Was sich ändert`}),(0,k.jsx)(`th`,{scope:`col`,className:`pb-2 text-right font-semibold`,children:(0,k.jsx)(`span`,{className:`sr-only`,children:`Aktion`})})]})}),(0,k.jsx)(`tbody`,{children:z.map(e=>(0,k.jsx)(B,{id:e.id,name:e.name,hatUpdate:f.has(e.id),laeuftGerade:i,onStart:()=>o.mutate(e.id)},e.id))})]})}),r.length>0&&(0,k.jsxs)(`div`,{className:`flex flex-col gap-2.5`,children:[(0,k.jsx)(`h3`,{className:`schild text-sm text-text-3`,children:`Laufende und letzte Aufträge`}),r.slice(-3).reverse().map(G)]})]}),e[2]=n.data?.jobs,e[3]=f,e[4]=t.isPending,e[5]=o,e[6]=p}else p=e[6];let h;e[14]!==r.data||e[15]!==r.isPending?(h=(0,k.jsx)(w,{titel:`Verlauf`,children:r.data?.laeufe.length?(0,k.jsx)(`ol`,{className:`m-0 flex list-none flex-col p-0`,children:r.data.laeufe.map(W)}):(0,k.jsx)(`p`,{className:`text-[15px] text-text-2`,children:r.isPending?`Wird gelesen …`:`Noch keine Update-Läufe aufgezeichnet.`})}),e[14]=r.data,e[15]=r.isPending,e[16]=h):h=e[16];let x;e[17]===s?x=e[18]:(x=()=>s.mutate(void 0),e[17]=s,e[18]=x);let S;e[19]!==s.isPending||e[20]!==x?(S=(0,k.jsx)(a,{variant:`outline`,size:`sm`,onClick:x,disabled:s.isPending,children:`Jetzt sichern`}),e[19]=s.isPending,e[20]=x,e[21]=S):S=e[21];let C;e[22]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,k.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Täglich um 03:35, mit Kopie auf einem zweiten Gerät.`}),e[22]=C):C=e[22];let A;if(e[23]!==i.data?.available||e[24]!==i.data?.backups){let t;e[26]===i.data?.available?t=e[27]:(t=e=>(0,k.jsxs)(`li`,{className:`flex items-center justify-between gap-3 border-t border-linie py-2.5`,children:[(0,k.jsx)(`span`,{className:`ziffern text-sm`,children:H(e)}),(0,k.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,k.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[e.size_mb.toLocaleString(`de-DE`),` MB`]}),(0,k.jsx)(a,{variant:`ghost`,size:`sm`,disabled:!i.data?.available,onClick:()=>u({art:`zurueck`,datei:e.file,zeit:H(e)}),children:`Zurückspielen`})]})]},e.file),e[26]=i.data?.available,e[27]=t),A=(i.data?.backups??[]).slice(0,5).map(t),e[23]=i.data?.available,e[24]=i.data?.backups,e[25]=A}else A=e[25];let j;e[28]===A?j=e[29]:(j=(0,k.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:A}),e[28]=A,e[29]=j);let M;e[30]!==S||e[31]!==j?(M=(0,k.jsxs)(w,{titel:`Sicherungen`,rechts:S,children:[C,j]}),e[30]=S,e[31]=j,e[32]=M):M=e[32];let N;e[33]!==h||e[34]!==M?(N=(0,k.jsxs)(`div`,{className:`grid gap-5 md:gap-6 lg:grid-cols-[minmax(0,1.4fr)_minmax(0,1fr)]`,children:[h,M]}),e[33]=h,e[34]=M,e[35]=N):N=e[35];let P=l?.art===`alle`,F;e[36]===Symbol.for(`react.memo_cache_sentinel`)?(F=()=>u(null),e[36]=F):F=e[36];let I;e[37]===o?I=e[38]:(I=()=>{o.mutate(`alle`),u(null)},e[37]=o,e[38]=I);let L;e[39]!==P||e[40]!==I?(L=(0,k.jsx)(R,{offen:P,titel:`Alles jetzt aktualisieren?`,text:`Betriebssystem, Motor, llama-swap und Hermes werden nacheinander aktualisiert. Vorher wird gesichert, danach geprüft. Lucy ist dabei ein paar Minuten nicht erreichbar.`,knopf:`Aktualisieren`,onNein:F,onJa:I}),e[39]=P,e[40]=I,e[41]=L):L=e[41];let V=l?.art===`zurueck`,U=`Die Einstellungen von Hermes und llama-swap werden auf den Stand von ${l?.art===`zurueck`?l.zeit:``} gesetzt. Vorher wird der jetzige Stand gesichert. Die Dienste starten danach neu.`,Y;e[42]===Symbol.for(`react.memo_cache_sentinel`)?(Y=()=>u(null),e[42]=Y):Y=e[42];let X;e[43]!==l||e[44]!==c?(X=()=>{l?.art===`zurueck`&&c.mutate(l.datei),u(null)},e[43]=l,e[44]=c,e[45]=X):X=e[45];let Z;e[46]!==V||e[47]!==U||e[48]!==X?(Z=(0,k.jsx)(R,{offen:V,gefahr:!0,titel:`Sicherung zurückspielen?`,text:U,knopf:`Zurückspielen`,onNein:Y,onJa:X}),e[46]=V,e[47]=U,e[48]=X,e[49]=Z):Z=e[49];let Q;return e[50]!==p||e[51]!==L||e[52]!==Z||e[53]!==N?(Q=(0,k.jsxs)(k.Fragment,{children:[p,N,L,Z]}),e[50]=p,e[51]=L,e[52]=Z,e[53]=N,e[54]=Q):Q=e[54],Q}function W(e){let t=e.status===`completed`,n=t?`gruen`:e.status===`failed`?`rot`:`cyan`;return(0,k.jsxs)(`li`,{className:`grid grid-cols-[112px_minmax(0,1fr)_auto] items-start gap-3 border-t border-linie py-3`,children:[(0,k.jsx)(`span`,{className:`ziffern text-sm text-text-3`,children:e.start?S(e.start):`–`}),(0,k.jsxs)(`span`,{className:`min-w-0 text-[15px]`,children:[e.job,e.fehler&&(0,k.jsx)(`span`,{className:`block text-sm text-rot-text`,children:e.fehler})]}),(0,k.jsx)(x,{art:n,children:t?`Durchgelaufen`:e.status===`failed`?`Fehlgeschlagen`:`Läuft`})]},`${e.start}-${e.job}`)}function G(e){return(0,k.jsx)(V,{job:e},e.id)}function K(e){return e.state===`running`||e.state===`queued`}function q(e){return e.group===`maintenance`}function J(e){return e.id}export{U as UpdatesSeite}; |