Dropdown viser begge arbeidsflater med absolutte URLer
(ws.synops.no og adm.synops.no). Navigasjon mellom subdomener
fungerer uten å miste sesjon.
Erfaringsnotat: multi-subdomain med SvelteKit — ORIGIN-fellen,
cookie-domene, CSRF, OIDC redirect URIs, sjekkliste for nye
subdomener.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ORIGIN=https://ws.synops.no tvang SvelteKit til å sette url.hostname
til ws.synops.no for ALLE requests. Fjernet ORIGIN — AUTH_TRUST_HOST=true
lar SvelteKit lese hostname fra Host-headeren, som gir korrekt
adm.synops.no-deteksjon.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
event.locals.isAdminHost fra hooks ble ikke pålitelig overført.
Sjekker event.url.hostname direkte i stedet.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Header viser "Administrasjon" i stedet for "Hjem" på adm.synops.no
- Tom-tilstand foreslår admin-verktøy (Nodeutforsker, Forbruk, AI)
- homeLabel prop i ContextHeader for konfigurerbar tittel
- isAdminHost fra layout server → +page.svelte
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Session-cookie settes på .synops.no slik at login på ws.synops.no
også gjelder for adm.synops.no. Berettiget nå med to subdomener
som trenger samme sesjon. CSRF-token forblir host-bound (__Host-).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ORIGIN er hardkodet til ws.synops.no, men adm.synops.no trenger
også POST (auth callback). CSRF ivaretatt av OIDC PKCE+state.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Ny trait: NodeExplorerTrait — søk og utforsk noder med edges.
Split-visning: nodeliste til venstre, detaljer til høyre.
Filtrer på node_kind, søk i tittel/innhold/ID.
Klikk edges for å navigere i grafen.
adm.synops.no setter isAdminHost flag via hooks/layout.
Registrert i TRAIT_PANEL_INFO som 'node_explorer'.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Nytt subdomain for admin. Caddy ruter til SvelteKit.
Hooks redirecter adm.synops.no/ til /admin.
Authentik OIDC redirect URI lagt til.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Admin er ikke et separat system — det er en arbeidsflate med
admin-traits. Samme canvas, samme BlockShell, samme SvelteKit.
adm.synops.no som eget domene med admin-rolle-krav.
13 admin-traits: node explorer, oppgavetavle, jobbkø, API-nøkler,
brukeradmin, AI-ruting, serverhelse, forbruk, logger, systemkonfig,
webhooks, podcast-import, podcaststatistikk.
Noen traits delt mellom admin og brukere med ulik tilgang.
Eksisterende /admin/*-sider migreres til traits.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tre nye node-typer for oppgavestyring:
- proposal: status (draft/discussed/approved/rejected/parked)
- assignment: status (open/planning/active/paused/done/blocked) + priority
- task: status (open/active/done/failed/skipped) + priority
Validering i create_node og update_node. Ingen ny tabell —
bruker eksisterende nodes-tabell med metadata.
Ref: docs/infra/oppgaver.md
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Konfigurerbare brukerklasser (Basis, Proff(ish), Superduper ultra
premium, Admin) med token-budsjett per dag, modellnivå-tilgang og
feature-gates. Budsjettsjekk før hvert LLM-kall. Admin-forbruk
vises med kostnadsestimat. Automatiske triggere teller mot
brukerens budsjett. Klasser og brukere som noder i grafen.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Ny «Nivåer»-fane i /admin/ai med synops/low, medium, high, extreme
- Per-nivå: fallback-kjede, provider-administrasjon, kostnadsestimat
- Test-knapp sender prompt gjennom LiteLLM og viser respons, latens, tokens, kostnad
- Backend: POST /admin/ai/test_prompt + GET /admin/ai/tier_costs
- Migration 033: oppretter de fire synops/* aliasene med providers
Sjekker at det faktisk ble committet kodeendringer (utenom tasks/)
før oppgaven markeres som fullført. Oppgaver uten kodeendring
flyttes tilbake til køen. Forhindrer falske "Task fullført".
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Task-runneren markerte oppgaver som ferdige uten å implementere dem.
Claude Code-sesjonene avsluttet uten kode, men scriptet tolket det
som suksess. 18 oppgaver beholdt som ekte fullført (verifisert med
kodeendringer). 37 flyttes tilbake for reell implementering.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Ny FlowMeter-komponent som viser episodeprogresjon som en
fargekodet linje (rød→gul→grønn) med pulsering nær mål.
StoryboardTrait viser Flow Meter øverst og kort gruppert
etter status (Klar, Tatt opp, Droppet).
Ref: docs/proposals/flow_meter.md
Ny feature: highlight_extract-jobb som analyserer fullstendig
transkripsjon etter innspilling og finner 5-10 klippverdige øyeblikk
(humor, emosjon, sterke meninger, punchlines, narrative høydepunkter).
Komponenter:
- synops-highlight CLI: henter segmenter, kaller AI, oppretter klipp-noder
- maskinrommet/highlight.rs: jobbdispatcher med modellrouting
- Registrert i jobbkø-dispatcher som "highlight_extract"
Hvert klipp blir en content-node med metadata (tidsstempler, score,
foreslått teksting, thumbnail-sitat, hashtags) og derived_from-edge
til episoden. Bruker synops/high-modell via AI Gateway.
Ref: docs/proposals/auto_highlight_reel.md