The interface for phase 1: sign-in and first-run setup, Today, Upcoming, project views, sharing, Cmd+K search and the keyboard shortcuts. Quick add highlights what the parser understood underneath the text as you type — a mirrored layer behind a transparent input, sliced by byte offset because the server counts bytes and JavaScript counts UTF-16 units, which disagree on exactly the Danish letters this app is full of. Every local action is optimistic and reconciled afterwards: ticking a task off strikes it through and animates it out before the request leaves, and rolls back with a message if the server disagrees. The Content-Security-Policy is computed at startup by hashing the inline scripts in the built index.html. Both of them change on every frontend build, so a hard-coded hash would go stale silently and show up only as a blank page in production. The alternative, 'unsafe-inline', would drop the one protection that makes an injected script in a task title inert. Today is derived from the store by date rather than from the ids that came back with the first request — filtering against a captured list meant a task added through quick add never appeared until a reload. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
33 lines
424 B
Plaintext
33 lines
424 B
Plaintext
# Build output
|
|
/verdande
|
|
/dist/
|
|
*.exe
|
|
|
|
# The data volume: database, uploaded files, backups. Never in git.
|
|
/data/
|
|
*.db
|
|
*.db-wal
|
|
*.db-shm
|
|
|
|
# Frontend
|
|
node_modules/
|
|
/web/.svelte-kit/
|
|
/web/build/
|
|
|
|
# Local environment
|
|
.env
|
|
.env.local
|
|
|
|
# Editor / OS
|
|
.DS_Store
|
|
*.swp
|
|
.idea/
|
|
.vscode/
|
|
|
|
# Copied in by the Docker build; never committed.
|
|
/cmd/verdande/webbuild/
|
|
|
|
# Frontend build output and dependencies
|
|
/web/build/
|
|
/web/.svelte-kit/
|