Files
verdande/web
Kristian WindandClaude Opus 5 2bd8e48aba
Release / Build and publish image (push) Failing after 9m54s
fix(notes): en note med tre prikker i titlen blev smidt væk ved importen
`skipFile` afviste ethvert navn, der indeholdt "..", for at stoppe en zip i at
skrive uden for sin egen mappe. Det er den rigtige idé rettet mod det forkerte:
det beskriver ikke en sti, der klatrer ud af arkivet, men ethvert filnavn med to
prikker ved siden af hinanden. En ellipse i en overskrift er almindelig, og noten
"Så blev det endelig jul! Stay tuned... ☕️" blev derfor aldrig oprettet.

Lydløst, oven i købet: filen blev sprunget over, før den blev talt, så svaret
sagde det samme, som hvis den var kommet med. Én note ud af tolv hundrede, og den
blev kun fundet ved at tælle efter, hvor mange der kom ud i den anden ende — 1140
hvor der skulle stå 1141.

Nu læses ".." som et stiled, ikke som to tegn, og en Markdown-fil, filteret
afviser, tælles som sprunget over. En import, der taber noget, skal sige det.

Og move-ikonet i sidebjælken er væk. ⠿ sad i den to pixels brede rende til
venstre for teksten og lå oven i rækkens egen kant — idéen var rigtig, pladsen
var det ikke. Elementet bliver: det er dét, der ejer trækket, og gjorde man i
stedet hele rækken draggable, ville alt indeni også blive det, og en opgave
trukket hen på I dag holdt op med at lande. Nu er håndtaget usynligt og lidt
bredere, og hånden ved hover er hele forklaringen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 00:04:08 +02:00
..

web

The SvelteKit PWA. Not written yet — this directory holds its place so the Docker build has something to copy, and so the frontend stage can tell "not built yet" apart from "the build failed".

The Dockerfile builds this directory when it finds a package.json here, and otherwise emits a placeholder page. So adding the real app is exactly: put a SvelteKit project in this directory whose npm run build produces build/.

What it needs to be

  • SvelteKit, adapter-static, output in build/. The Go binary embeds that directory at compile time and serves it, falling back to index.html so client-side routes survive a reload.
  • A PWA: installable, offline reading of already-cached lists, swipe gestures for complete and schedule.
  • Nordic minimalism. Dark by default, light available. One accent colour, everything else neutral. Runic mark for Verdande.
  • Optimistic on every local action. No spinner ever appears for something the browser could already know the answer to.

Talking to the backend

Same origin — the Go binary serves both. /api/v1 for REST, /api/v1/ws for the live sync. Session cookie is httpOnly, so the frontend never handles the token itself.

During development, run the backend on 8080 and point the Vite dev server's proxy at it:

VERDANDE_DATA_DIR=./data VERDANDE_DEV=true go run ./cmd/verdande