Admin-side for merge av duplikate entiteter med edge-migrering.
Entitetsside med inline redigering, slett, relasjoner og mentions.
AI text process worker-handler (fix_text, extract_facts, rewrite,
translate) med API-endepunkt som oppretter jobbkø-oppgaver.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ny Editor-komponent med Tiptap (bold, italic, code, mentions).
Chat og notater oppretter nå MENTIONS-edges i kunnskapsgrafen
automatisk ved lagring. SpacetimeDB-adapter skriver alltid via
PG API først for edge-atomisitet. RLS SET LOCAL fix i db.ts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- EntitiesBlock: liste med søk/filter, opprett, rediger, slett,
relasjonsvisning med navigering mellom entiteter
- GraphBlock: SVG force-directed layout via traverse API,
pan/zoom, drag noder, dobbeltklikk for å utforske
- EntityAutocomplete: #-mention med debounced søk, tastaturnavigering,
dropdown med typefarger og aliaser
- Registrert entities block-type + kunnskapsgraf-side i seed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
- 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>
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>
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>
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>