boxwart: Start wartet nie auf die Update-Suche im Netz, Verlauf am Handy kompakter
Ampel / ampel (push) Failing after 20s

Nach einem MC2-Neustart hing /api/start, bis GitHub, apt und Hugging Face
geantwortet hatten. Jetzt kommt der letzte Stand sofort, frisch geholt wird im
Hintergrund; bis dahin steht "wird geprueft" da.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-09-23 22:04:50 +02:00
co-authored by Claude Opus 5.5
parent ed6948429a
commit 4b226d5d22
14 changed files with 53 additions and 27 deletions
+8 -4
View File
@@ -19,9 +19,10 @@ const BAUSTEINE = [
{ id: "hermes", name: "Hermes" },
] as const
function BausteinZeile({ id, name, hatUpdate, fest, onStart, onFreigeben, laeuftGerade }: {
function BausteinZeile({ id, name, gelesen, hatUpdate, fest, onStart, onFreigeben, laeuftGerade }: {
id: string
name: string
gelesen: boolean
hatUpdate: boolean
fest: Festgehalten | undefined
onStart: () => void
@@ -31,7 +32,9 @@ function BausteinZeile({ id, name, hatUpdate, fest, onStart, onFreigeben, laeuft
const { data, isPending } = useUpdateDetails(id)
const v = versionen(id, data)
const neu = hatUpdate ? v.neu ?? "neu" : null
const was = !hatUpdate
const was = !gelesen
? "Wird gerade geprüft …"
: !hatUpdate
? "Aktuell."
: data?.summary?.trim() || (id === "os" && data?.count ? "Paketliste unten in den Details." : isPending ? "Wird gelesen …" : "")
const neuText = neu ? <span className="text-cyan">{neu}</span> : <span className="text-text-3">–</span>
@@ -86,13 +89,13 @@ const PUNKT: Record<UpdateLauf["stufe"], string> = {
function LaufEintrag({ lauf }: { lauf: UpdateLauf }) {
return (
<li className="flex flex-col gap-2 border-t border-linie py-3">
<div className="grid grid-cols-[112px_minmax(0,1fr)_auto] items-center gap-3">
<div className="grid grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-3 md:grid-cols-[112px_minmax(0,1fr)_auto]">
<span className="ziffern text-sm text-text-3">{flugplanZeit(lauf.start)}</span>
<span className="min-w-0 text-[15px]">{lauf.anlass}</span>
<Chip art={LAUF_ART[lauf.stufe]}>{lauf.titel}</Chip>
</div>
{lauf.stufe !== "grau" && lauf.zeilen.length > 0 && (
<ul className="m-0 flex list-none flex-col gap-1 p-0 sm:pl-[124px]">
<ul className="m-0 flex list-none flex-col gap-1 p-0 md:pl-[124px]">
{lauf.zeilen.map((z) => (
<li key={`${z.baustein}-${z.text}`} className="flex items-baseline gap-2 text-sm leading-snug text-text-2">
<span aria-hidden className={cn("size-1.5 shrink-0 -translate-y-px rounded-full", PUNKT[z.stufe])} />
@@ -182,6 +185,7 @@ export function UpdatesSeite() {
key={b.id}
id={b.id}
name={b.name}
gelesen={start.data?.updates.gelesen ?? false}
hatUpdate={mitUpdate.has(b.id)}
fest={festgehalten.get(b.id)}
laeuftGerade={laeuft}