Commit graph

23 commits

Author SHA1 Message Date
1d47119b1e Kunnskapsgraf CRUD API: entities, edges, søk og traversering
Syv nye API-endepunkter for kunnskapsgrafen:

Entities:
- GET/POST /api/entities — list, søk (name+aliases), filtrer på type
- GET/PATCH/DELETE /api/entities/:id — hent (m/edge_count), oppdater, slett
- GET /api/entities/:id/edges — relasjoner med retningsfilter

Graf:
- POST /api/graph/edges — opprett relasjon (upsert)
- DELETE /api/graph/edges/:id — slett relasjon
- GET /api/graph/search — fulltekstsøk (entiteter + transkripsjoner FTS)
- GET /api/graph/traverse/:nodeId — recursive CTE, D3.js/Vis.js-format

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 15:37:00 +01:00
1faef972dd Meldingsboks-migrasjon: universell diskusjonsprimitiv + entities
Migrering 0005 samler kanban-kort, kalenderhendelser, faktoider og
notater til én felles messages-tabell med view-config-tabeller.
Actors og topics erstattes av unified entities-tabell.

- 0005_meldingsboks.sql: messages utvides med title/pinned/visibility,
  kanban_card_view + calendar_event_view + message_reactions opprettes,
  entities erstatter actors+topics, gamle tabeller droppes
- seed_dev.sql: oppdatert til meldingsboks-modell + 5 test-entiteter
  med graf-relasjoner
- API-ruter: kanban/kalender/notater bruker messages + view-config
- Dokumentasjon: meldingsboks feature-spec, oppdatert arkitektur,
  kunnskapsgraf, jobbkø, konseptdokumenter og proposals

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 15:32:15 +01:00
024a91e1b3 Dokumentasjon: arkitekturvurdering — sikkerhet, backup, kostnad, nye forslag
Oppdaterer dokumentasjon basert på tre eksterne arkitekturvurderinger:

- RLS Leak Hunter med CI-test og audit-trigger (migration_safety.md)
- pgvector-migrasjon flyttet til Lag 2, WAL-arkivering med pgBackRest (ARCHITECTURE.md, produksjon.md)
- Off-site backup med rclone, Docker cgroups for workers (ARCHITECTURE.md, produksjon.md)
- Kostnadskontroll i AI Gateway: workspace-budsjett, auto-fallback (ai_gateway.md)
- Gjeste-token sikkerhetsdybde: ClamAV, rate limiting, auto-revoke (den_asynkrone_gjesten.md)
- SpacetimeDB fase 1-vurdering: PG LISTEN/NOTIFY som mellomsteg (synkronisering.md)
- Kritiske events (Aha-markører) flushes umiddelbart (synkronisering.md)
- Ekstern helsesjekk, observability-utvidelser (ARCHITECTURE.md)
- Tre nye forslag: Contradiction Detector, Auto-Highlight Reel, Audience Voice Memo

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 03:56:21 +01:00
fef4e537fd Oppdater dokumentasjon: notater feature-doc, kalender/notater i arkitektur
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 03:29:50 +01:00
7e83292abe Notater: auto-save scratchpad med debounce
- Migrering 0004: notes-tabell (nodes i kunnskapsgrafen)
- REST API: GET/PATCH notat
- PG-adapter med 500ms debounce og 10s polling
- NotesBlock: tittel + fritekst med auto-lagring og status
- Seed: notater for begge workspaces, kalenderside med 2-1 layout

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 03:03:41 +01:00
7397c8ad93 Oppdater dokumentasjon: kalender implementert, Lag 2 status
- ARCHITECTURE.md: Kalender markert [~] i Lag 2
- docs/features/kalender.md: Oppdatert med implementert status, API-docs, tidssone-håndtering

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 02:59:09 +01:00
d924645dd3 Kalender: PG-adapter, API-ruter, månedsvisning med fargekoder
- Migrering 0003: calendars + calendar_events (nodes i kunnskapsgrafen)
- REST API: GET kalender med tidsvindu, POST/PATCH/DELETE hendelser
- PG polling-adapter med adapter-factory
- CalendarBlock: månedsrutenett, heldags vs. tidshendelser, fargevelger
- Seed: kalender for begge workspaces, kalenderside i sidekonfig

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 02:56:16 +01:00
87eb2d4919 Oppdater dokumentasjon: kanban status, erfaringslogg, multi-workspace
- ARCHITECTURE.md: Kanban markert [~] i Lag 2, authentik_oidc lagt til erfaringslogg
- docs/features/kanban.md: Full rewrite med implementert status, API-docs, datamodell

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 02:38:11 +01:00
7c5b809802 Redirect / til første workspace-side automatisk
Både workspace-switch og direkte navigering til rot-URL
lander nå på første konfigurerte side i stedet for tom oversikt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 02:36:32 +01:00
a93ffc6de5 Kanban-brett: PG-adapter, API-ruter, drag & drop UI + multi-workspace seed
- Migrering 0002: kanban_boards, kanban_columns, kanban_cards (REAL-posisjon)
- REST API: CRUD for kolonner, kort, flytt-kort
- PG polling-adapter med optimistisk UI-oppdatering
- KanbanBlock: drag & drop, redigeringsmodal, enkelt kort-input
- WorkspaceSwitcher: data-sveltekit-reload for korrekt workspace-bytte
- Seed: Foreningen Liberalistene som andre test-workspace

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 02:29:46 +01:00
3e163b8d1c Oppdater verifiseringsliste: Authentik og chat bekreftet i prod
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 02:01:13 +01:00
9867bda949 Fiks Authentik OIDC: bruk sub-claim som bruker-ID, fjern debug-logging
Authentik sin OIDC sub-claim er en SHA256-hash, ikke PostgreSQL UUID.
@auth/sveltekit sin interne user.id er en annen UUID som ikke matcher.
Løsning: lagre profile.sub som authentik_sub i JWT-tokenet og bruk
den som session.user.id.

Ny erfaringsfil: docs/erfaringer/authentik_oidc.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 02:00:11 +01:00
3d3c99cb0d Debug: log JWT token IDs og bruk authentik_sub som user.id 2026-03-15 01:58:13 +01:00
7eb7c2f1db Midlertidig debug-logging for Authentik user ID 2026-03-15 01:56:43 +01:00
ccb29e843a Oppdater fremdrift: SvelteKit deployet til produksjon
- ARCHITECTURE.md: SvelteKit+Authentik merket ferdig i Lag 1, prod docker-compose dokumentert
- CLAUDE.md: Oppdatert prod-status
- produksjon.md: Lag B-C verifiseringsliste oppdatert med deploy-dato

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 01:52:32 +01:00
3af31f03a4 Dockerfile for SvelteKit produksjons-build
Multi-stage Node 20 Alpine build med adapter-node output.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 01:49:59 +01:00
ca27a8077b SvelteKit-app, SpacetimeDB-modul og chat med sanntid
SvelteKit (web/):
- Komplett app-skjelett med Authentik SSO (dev-bypass lokalt)
- Workspace-modell med cookie-basert switching og RLS-kontekst
- Komponerbare sider (PageGrid + BlockShell + block registry)
- Chat med adapter-mønster: PG-polling og SpacetimeDB hybrid-adapter
- Brukeridentitet fra Authentik/dev-login flyter til chat-meldinger
- API-ruter for channels, messages og health

SpacetimeDB (spacetimedb/):
- Rust WASM-modul med ChatMessage og SyncOutbox-tabeller
- send_message reducer med sync outbox for fremtidig PG-persistering
- Genererte TypeScript-bindings for klient-integrasjon

Infra:
- SpacetimeDB lagt til i docker-compose.dev.yml

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 01:40:55 +01:00
a5985ef3f8 Dokumentasjon, erfaringslogg, migrasjoner og infra-oppdateringer
- Omorganiser docs/: konsepter, features, infra og proposals i egne mapper
- Ny docs/erfaringer/ med lærdommer fra chat-implementering (Svelte 5, SpacetimeDB, adapter-mønster)
- Oppdater ARCHITECTURE.md: Lag 1 status, ny §10 Erfaringslogg, SpacetimeDB i lokal dev
- Oppdater synkronisering.md med implementeringsstatus og designvalg
- Oppdater lokal.md med SpacetimeDB og AI Gateway
- Utvid PG-skjema med channels, messages, media_files, message_revisions
- Legg til seed_dev.sql, migration_safety.md, .env.example
- Nye feature-specs: chat, kanban, whiteboard, live_ai, lydmeldinger m.fl.
- Nye konsept-specs: studioet, møterommet, redaksjonen, den asynkrone gjesten m.fl.
- SpacetimeDB og AI Gateway i docker-compose.dev.yml
- collect-docs.sh inkluderer erfaringer/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 01:40:14 +01:00
747244d078 AI Gateway (LiteLLM) lokalt oppsett + collect-docs script
- LiteLLM container i docker-compose.dev.yml med healthcheck
- Config med sidelinja/rutine (Gemini 2.5 Flash Lite) og
  sidelinja/resonering (Gemini 2.5 Flash) — flere leverandører
  legges til når API-nøkler er klare
- collect-docs.sh samler all dokumentasjon til én fil for deling
- Gitignore: server_context.md (generert output)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 16:16:59 +01:00
2100184f4e PostgreSQL-skjema: kunnskapsgraf, meldinger, jobbkø og mediefiler
Første migrasjon (0001) med komplett databasearkitektur:
- nodes/graph_edges grafmodell med relasjonstyper
- Faktoider og meldinger med stemme-system (opp/ned)
- Chat med redigeringshistorikk, tråding og research-clips
- Content-addressable mediefiler (SHA-256 deduplisering)
- PostgreSQL-basert jobbkø med SKIP LOCKED
- Brukertabell som tynn cache fra Authentik

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 15:37:15 +01:00
4b56560bf9 Lokalt utviklingsmiljø, Whisper-benchmark, AI Gateway og repostruktur
- Sett opp docker-compose.dev.yml med PostgreSQL, Redis, Caddy og Whisper
- Benchmarket faster-whisper (small/medium/large-v3) med norsk tale
- Besluttet medium + initial_prompt som standard, SRT som master-format
- Ny feature-spec: AI Gateway (LiteLLM) med BYOK og Promptfoo-testing
- Definert dataklassifisering (kritisk/gjenskapbar/avledet/flyktig)
- Konkretisert backup-strategi med pg_dump, rsync og restore-prosedyre
- Splittet repos: sidelinja/server (kode) + sidelinja/sidelinja (innhold)
- Oppdatert lokal.md: utviklingsmiljø for kode, ikke prod-replika
- Dokumentert transkripsjonspipeline: Whisper SRT → Git → PG (avledet)
- Live AI-assistent: small-modell, flyktig logg med 30d TTL

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:51:15 +01:00
53f0ccf49e Oppdater CLAUDE.md med serverinfo og produksjonsstatus
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 04:53:38 +01:00
290a1e398d Initial commit: arkitekturdokumentasjon og feature-specs 2026-03-13 04:51:26 +01:00