Commit graph

16 commits

Author SHA1 Message Date
531defe986 Editor/UI: expanded bottom bar, kanban rich editor, ConvertDialog ordlyd
- Editor compact mode: send/minimer-knapper flyttes til bunnrad når utvidet
- KanbanBlock: bruker Editor-komponent for beskrivelse i stedet for textarea
- ConvertDialog: «Opprett» i stedet for «Konverter» (meldingen beholdes)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 09:18:37 +01:00
58646b1543 Chat: metadata i meldingsqueries, AI-badge med modellnavn, reaksjons-upsert
- Messages API returnerer metadata-felt (ai_action, ai_label, ai_model)
- AI-badge i MessageBox viser label og faktisk modellnavn
- Reaksjoner: slett eksisterende før insert (én reaksjon per bruker per melding)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 09:18:32 +01:00
85f0cd9d30 AI-promptvelger i chat: velg mellom forhåndsdefinerte AI-handlinger
- -knappen åpner nå en meny med tilgjengelige prompts (vask, sammendrag, skriv om, oversett)
- Prompts er workspace-konfigurerte via ny tabell workspace_ai_prompts
- Nytt API GET /api/ai/prompts returnerer tilgjengelige prompts for workspace
- AI-badge viser prompt-label og ikon i stedet for rå action-navn
- ai_prompts utvidet med label, icon og sort_order kolonner

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 07:42:30 +01:00
aafb121bf2 Skill server-admin fra workspace-admin
Server-admin (/server-admin): systemvide innstillinger (AI, kanaler) — kun for owners.
Workspace-admin (/admin): workspace-spesifikke innstillinger (sider, entiteter) — for owner/admin i gjeldende workspace.

- Ny rute /server-admin med egen layout-gate (owner-rolle)
- Flytt AI og kanaler fra /admin til /server-admin
- Workspace-admin gate sjekker nå rolle i gjeldende workspace
- Sidebar: workspace-admin-lenker under separator, server-admin-nav i server-admin-modus
- WorkspaceSwitcher: "Admin (server)" kun for owners
- Kanaler: trekkspill gruppert etter workspace
- Config-API: owners kan endre kanaler på tvers av workspaces
- Migrasjon: ai_prompts-tabell

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 05:19:23 +01:00
52b71e6440 UI: bruk play-symboler (◀ ▶) for revisjonspiler
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 03:46:10 +01:00
bc0da66d2a Fix: revisions-API brukte created_at men kolonnen heter edited_at
Ga 500 Internal Error når frontend forsøkte å laste revisjoner.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 03:40:44 +01:00
aeda5e7527 Generell revisjonshistorikk + markdown-rendering i meldinger
- Markdown rendres automatisk for all ikke-HTML body (detekterer <p>, <div> osv.)
- «redigert»-indikator med bla-navigasjon (← →) for alle redigerte meldinger
- Henter revisjoner fra PG via /api/messages/:id/revisions ved behov
- SpacetimeDB onUpdate setter edited_at slik at frontend vet meldingen er redigert
- AI-badge ( action) vises fortsatt for AI-behandlede meldinger

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 03:33:04 +01:00
d5882c8c45 Markdown-rendering og revisjons-toggle for AI-behandlede meldinger
- AI-resultat (markdown) rendres med marked-biblioteket
- «Vis original» / «Vis AI-resultat» toggle under AI-behandlede meldinger
- Nytt API: GET /api/messages/:id/revisions for å hente originaltekst
- Markdown-stiler: overskrifter, lister, blockquotes, kodeblokker

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 03:28:13 +01:00
0d8521855f Admin: per-kanal warmup-konfigurasjon
- channels.config får warmup_mode (all/messages/days/none) og warmup_value
- Migrasjon setter default til "all" for eksisterende kanaler
- Admin-side /admin/channels med oversikt og inline-redigering
- API PATCH /api/channels/:id/config for å oppdatere konfig
- Worker respekterer per-kanal konfig ved warmup
- Sidebar-lenke til kanaler-admin

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 02:26:02 +01:00
63f928bbe6 Chat: svar-tråder, kanban-konvertering og kalender-konvertering
Legger til tre nye funksjoner fra chatmeldinger:
- Svar på meldinger med reply-kontekst (↩ forfatter: tekst)
- Konverter melding til kanban-kort via dialog
- Konverter melding til kalenderhendelse via dialog

Utvider messages API med reply_count, parent-info og
LEFT JOIN til kanban/kalender view-tabeller for badges.
Nye list-endepunkter for /api/kanban og /api/calendar.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-16 01:43:24 +01:00
5bc992272d MessageBox: API-utvidelser, reaksjoner og pin-toggle
- GET messages returnerer alle felter + aggregerte reaksjoner via LATERAL join
- Nytt PATCH/DELETE endepunkt for enkeltmeldinger (/api/messages/[id])
- Nye reaksjons-endepunkter (POST/DELETE /api/messages/[id]/reactions)
- refresh() eksponert på ChatConnection (PG + SpacetimeDB)
- MessageBox UI: reaksjonspills med toggle + hurtig-emojis ved hover
- Pin-toggle i header med hover-synlighet
- ChatBlock wirer onReaction og onTogglePin callbacks

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 22:42:41 +01:00
e3e3bbc24f MessageBox: universell meldingsboks-komponent for chat, kanban og kalender
Felles MessageData-type (matcher messages-tabellen) med 3 renderingsmodi:
- expanded (chat): forfatter, tid, HTML-body, mention-klikk, badges
- compact (kanban): tittel, trunkert preview, fargestripe
- calendar (pill): tidspunkt, tittel, bakgrunnsfarge

Alle blokker (ChatBlock, KanbanBlock, CalendarBlock) migrert til MessageBox.
PG-adaptere mapper API-respons til MessageData med view-spesifikke felter.
SpacetimeDB-adapter oppdatert for kompatibilitet.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 22:15:36 +01:00
592ebdf1d6 Tiptap-editor og mentions→graf-edges
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>
2026-03-15 21:45:34 +01:00
6edd1fa091 Frontend: entiteter, graf-visualisering og #-autocomplete
- 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>
2026-03-15 15:46:34 +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
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