Commit graph

561 commits

Author SHA1 Message Date
2d663f8f67 Arkiver superseded/implementerte proposals
Flyttet til docs/proposals/arkiv/:
- komponerbare_sider.md (erstattet av arbeidsflaten)
- personlig_workspace.md (erstattet av noder-er-sentrum)
- tekst_primitiv.md (realisert i node-arkitekturen)
- artikkel_publisering.md (implementert i fase 14)
- web_clipper.md (implementert i fase 25)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 16:57:13 +00:00
44ec243be8 Proposals: varslingssystem + universell input
Varsling: notification-noder i grafen, trigger ved edge-opprettelse/
nevnelse/oppgave. WebSocket toast + ulest-badge + valgfri epost.

Universell input: én TipTap-komponent med kontekst-drevne moduser
(chat/forum/editor/code). Markup-bytte (WYSIWYG/markdown/LaTeX).
Draft-caching i localStorage + valgfri graf-synk for kryssenhets.
Integrert medieinput og inline-handlinger (@mentions, [[lenker]]).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 16:52:57 +00:00
1a63ad4e7e Proposal: Chat/forum-dualitet + lest/ulest
Samme kommunikasjonsnode vises som chat (kronologisk) eller forum
(trådet). Bytt fritt mellom visninger. Lest/ulest er én last_seen
timestamp per bruker per samtale — transitiv mellom alle visninger.
Forum-egenskaper (tråd, kategori, pinning) er metadata på noder.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 16:45:38 +00:00
b3a55af660 Tre nye proposals: rollebasert arv, Mine ting, chat-merging
- Rollebasert arv: edge-roller styrer trait-synlighet per bruker
  (deltaker ser mikser, lytter ser bare chat)
- Mine ting: oversiktspanel i Hjem, dra node inn i verktøy for
  å koble dem (erstatter mottak som panel)
- Chat-merging: dra chat oppå chat → live flettet visning eller
  snapshot med AI-beriking og brukerprompt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 16:39:49 +00:00
58d77756df Zoom-toolbar: − til venstre, + til høyre
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 08:18:30 +00:00
c9bee967c7 Skjermen: dedikert sceneskifte-knapp med 0.2s fade + auto-pause
Én knapp, to trykk: fade ut (0.2s) → pause → bygg om → trykk igjen
→ fade inn (0.2s). Kort default for praktisk bruk, konfigurerbar.
Master opacity slider er separat for kreativ/manuell kontroll.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 08:15:11 +00:00
9781bd5d0e Skjermen: ytelsesanalyse for nåværende server
8-kjerners EPYC, 16 GB RAM, 270 Mbit/s. Klientside compositing
takler 3+ samtidige team. Server-side begrenset til 1 sesjon.
Strategi: klientside default, server-side som valgfri premium.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 08:11:20 +00:00
38dbf98e63 Skjermen: frameless er default men valgfritt per element
Vert kan slå på ramme, navneskilt eller andre visuelle effekter
per element inne i skjermen. Fleksibelt, ikke påtvunget.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 08:05:50 +00:00
bebf08644d Skjermen: frameless modus for noder inne i skjermen
Noder som dras inn i skjermen rendres uten grensesnittelementer —
ingen BlockShell-header, border, resize-handles. Bare rent innhold.
Skjermen er output, ikke utviklerverktøy. Vert redigerer layout
via skjermens egen editor-modus.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 08:05:33 +00:00
af17ee3fa4 Proposal: Skjermen — live-produksjon i arbeidsflaten
Skjerm-panel som live kompositor: dra inn videostrømmer, bilder,
tekst og noder. Multi-skjerm med program/preview og live switching.
Sceneskifte med fade-to-black + auto-pause for jukseredigering.
Videoramme per deltaker, delt arbeidsflate som møterom/studio.
Bygger på eksisterende primitiver (BlockShell, Canvas, LiveKit,
drag-and-drop, CAS, PG NOTIFY).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 08:04:56 +00:00
2605f6de25 synops-agent: motivasjon (erstatter claude -p) + lib/CLI/API-arkitektur
Dokumentert hvorfor Claude Code ikke egner seg som tjeneste (treg
oppstart, høyt minne, ingen API, låst til Anthropic). synops-agent
som tre bruksmåter: lib (embed i maskinrommet), CLI (erstatter
Claude Code), API (HTTP-endepunkt for appen). Konkret brukstabell
for chat, orkestrering, bakgrunnsjobber og bruker-chat.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 07:41:26 +00:00
311a73b940 synops-agent: erstatning, ikke hjelper — selvstendig orkestrator
Tydeliggjort ambisjon: synops-agent er et fullverdig alternativ til
Claude Code, ikke en delegerings-mekanisme. Egen orkestrator med
multi-modell sub-agenter, eskalering og verifikasjon. Claude Code
brukes til å utvikle og teste den, ikke til å styre den.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 07:40:10 +00:00
988d60a939 synops-agent: sanntids token-regnskap per modell
Harnessen akkumulerer input/output tokens per modell gjennom hele
kjøringen. Brukes til budsjettovervåking, eskalering, effektivitets-
måling og orkestrator-input. HashMap<String, TokenUsage> i minne,
persisteres til ai_usage_log ved checkpoint/slutt.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 07:38:36 +00:00
87e7dd70b5 synops-agent: orkestreringsmodell med tre intelligensnivåer
- Kjørbar fra Claude Code via Bash (delegering til billige modeller)
- Tre nivåer: orkestrator (smart), implementering (middels), grunt (billig)
- «Utfør billig, verifiser smart»-strategi: ~90% på billigste modell
- Automatisk modellvalg basert på oppgavetype og eskalering ved feil
- Eksperimentering: logger modell/kostnad/resultat for optimalisering
- Claude Code som super-orkestrator over multi-modell agent-pool

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 07:37:42 +00:00
2bdbff5ee8 synops-agent proposal: research og supersett-ambisjon
Oppdatert med research fra mars 2026:
- Rig.rs som provider-abstraksjon (24% CPU, <1.1GB vs Python >4.7GB)
- OpenCode Extended ReAct Loop (tenke + selvkritikk + handling)
- Adaptive Context Compaction (ACC) for kontekstvindu
- Harness-mønsteret (kontrollplan mellom LLM og verktøy)
- Worktree-isolasjon for sub-agenter
- MCP-støtte som industristandard
Supersett av Claude Code: daemon-modus, innebygd oppgavestyring,
selvovervåking, sub-agenter med valgfri modell per agent.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 07:32:41 +00:00
c2fb8555cc Proposal: synops-agent — modell-agnostisk agent-harness i Rust
Idé for fremtidig implementering: Claude Code-lignende agent-loop
som kan bruke Grok, Gemini, OpenRouter eller lokale modeller.
Rust CLI med Read/Edit/Bash/Grep/Glob-verktøy og LiteLLM-integrasjon.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 07:27:50 +00:00
24fbc7cc19 Paneler husker brukerens foretrukne størrelse per verktøy-type
Når et panel resizes lagres width/height per trait-type i
workspace-metadata. Neste gang verktøyet instansieres brukes
den lagrede størrelsen i stedet for default. Persisteres mellom
besøk.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 07:24:25 +00:00
e520b8037c Canvas: sist berørt boks forblir øverst (persistent z-order)
Hver gang en boks klikkes/dras økes en global z-teller og boksen
får høyeste verdi. Rekkefølgen bevares etter at boksen deselekteres.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 07:21:51 +00:00
cf992b6f58 Canvas: valgt/aktiv boks alltid på topp (z-index 10)
Når en boks velges eller dras, får den z-index: 10 slik at den
alltid vises over andre bokser. Uvalgte bokser har z-index: 1.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 07:19:06 +00:00
88dd490d07 Zoom +/- knapper: 1% inkrement for finjustering
Musehjul er fortsatt rask zoom (20% per steg).
Toolbar-knappene gir nå presis kontroll: ±1% per klikk.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 07:17:04 +00:00
3cfa9a8b12 Håndlagde tema-presets med mer variasjon og harmoni
Hvert preset har nå individuelt justerte farger per overflate i stedet
for auto-genererte. Canvas, header, panel og border har subtilt ulike
nyanser for dybde. Omdøpt: Standard→Midnatt, Hav→Dyphav, Rosa→Kirsebær,
Lys→Dagslys, Monokrom→Kull. Alle mørke temaer har varm/kald karakter.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 07:14:13 +00:00
a2fc8609d4 Egendefinerte tema-slots: lagre opptil 6 temaer for gjenbruk
Rad 1: 8 forhåndsdefinerte presets (faste)
Rad 2: opptil 6 bruker-slots — klikk + for å lagre gjeldende tema,
klikk for å bruke, høyreklikk for å slette.
Lagres i workspace-metadata.savedThemes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 07:11:09 +00:00
ebcacf4847 Globale farger via CSS vars: toolbar, traits og Tailwind-overrides
Alle Tailwind-overrides i app.css bruker nå var(--color-*) i stedet for
hardkodede hex. Dette betyr at temaendringer påvirker alt innhold —
inkludert trait-komponenter, inputs, scrollbar, toolbar og statusfarger.
Canvas-toolbar bruker også CSS vars nå.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 07:04:23 +00:00
798a11f93f Fargevelger: velg grensesnittelement fra dropdown, full HSL-kontroll
Ny modell: dropdown velger hva du farger (Canvas, Menylinje, Bokser,
Rammer, Knapper/aksent, Tekst). Tre slidere per element (farge,
metning, lyshet) gir full kontroll over hele spekteret.
Presets setter alle elementer på én gang. Fargeprøve viser valgt farge.
BlockShell bruker ny --color-panel variabel.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 06:56:19 +00:00
bf744639c1 Forenklet fargevelger: én aksentfarge + lys/mørk
Erstattet 9 slidere (3 per farge × 3 farger) med 3 intuitive kontroller:
- Farge: hue-stripe for aksentfarge
- Intensitet: saturation
- Lys/mørk: brightness slider (0=svart, 100=hvit)

Systemet utleder bg, surface, border, text automatisk fra disse.
Canvas-bakgrunn styres nå av --color-bg (var ikke det før).
Presets med emoji-ikoner. Rosa og lys preset lagt til.
Bakoverkompatibel med alle tidligere tema-formater.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 06:50:16 +00:00
28f3b17261 Fargevelger: full HSL-kontroll (hue + lightness + saturation)
ThemeColor har nå lightness-felt. Alle tre slidere (hue, lightness,
saturation) dekker hele spekteret 0-100/360. Brukeren kan gå fra
hvit til svart og alt imellom. Tekst auto-tilpasses lys/mørk bakgrunn.
Nytt preset «Lys» for de som foretrekker lys skjerm.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 06:41:09 +00:00
149046572f Header-fiks: slett fungerer, Egenskaper til venstre, Hjem
- Slett-knapp: stopPropagation hindrer handleClickOutside fra å
  lukke dropdown før confirmDelete kjører
- Egenskaper-knapp (tidl. Traits) flyttet til venstre i header-right
  slik at Verktøy/status/innstillinger ikke forskyves mellom flater
- «Min arbeidsflate» → «Hjem» for konsistens
- «Traits» → «Egenskaper» for norsk menyspråk

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 06:35:47 +00:00
f565cfc670 Unifisert ContextHeader: innstillinger, fargevelger, slett, tema-modul
- ContextHeader brukes nå på både personlig flate og samlinger
- Ny theme.ts: ThemeConfig med hue+saturation per farge, presets
  (Standard, Hav, Skog, Solnedgang, Lavendel, Monokrom)
- Fargevelger med hue-stripe (regnbue) + saturation-slider + swatch
  per farge (bakgrunn, overflate, aksent)
- Slett arbeidsflate med bekreftelsesdialog og innholdstelling
- Kontekst-velger: grupper, rename, ny, slett — fungerer overalt
- +page.svelte forenklet: ~500 linjer CSS fjernet, bruker ContextHeader

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 06:27:42 +00:00
fa85d29c35 Canvas: gruppe-drag, grid-persistering, ZOOM_MIN 5%
- Lasso-seleksjon → dra flytter alle valgte paneler sammen
- Grid on/off lagres i workspace-metadata (huskes mellom besøk)
- Zoom lagres allerede via kameraposisjon (x, y, zoom)
- ZOOM_MIN senket til 5% for spredte layouts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 06:18:28 +00:00
79371c20ac Canvas: venstreklikk-dra for pan + kameraposisjon lagres
- Klikk-hold-dra på tom bakgrunn = pan (erstatter midtre museknapp)
- Shift+dra = lasso-seleksjon (som før)
- Kameraposisjon (x, y, zoom) lagres i workspace-metadata og
  gjenopprettes ved neste besøk
- Senket ZOOM_MIN til 5% for å tillate zoom ut på store canvas

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 06:13:02 +00:00
6101bf00b1 Canvas: toolbar fungerer, dobbeltklikk = tilpass visning, diskret seleksjon
- Toolbar-knapper (zoom, tilpass, grid, fullskjerm) blokkert av Canvas
  sin pointerdown-handler. Fikset med closest('.canvas-toolbar')-sjekk.
- Dobbeltklikk på tom flate kjører zoomToFit() for rask navigasjon.
- Seleksjon-ramme dempet: 1px rgba(accent, 0.4) i stedet for 2px solid.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 06:01:10 +00:00
b37746207a Resize n/w: inkrementell delta i stedet for kumulativ
Forrige versjon sendte total offset fra startposisjon på hvert
pointermove-event, som ble addert gjentatte ganger og akselererte
panelet ut av bildet. Nå beregnes delta fra forrige frame.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 05:53:54 +00:00
b8be448908 Resize fra nord/vest: juster posisjon slik at motstående kant forblir fast
Når man drar toppen eller venstre kant av et panel, ble bare størrelsen
endret mens posisjon sto fast — som ga inntrykk av at feil kant beveget
seg. Nå beregner BlockShell posisjons-delta (dx, dy) og parent justerer
x/y tilsvarende, slik at den kanten du drar i følger musepekeren.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 05:52:00 +00:00
da88bfcb1f BlockShell: vis resize-handles uavhengig av panelbredde
Resize-handles ble aldri vist fordi isMobile var true for alle paneler
(MOBILE_BREAKPOINT=768 > typisk panelbredde 400-600px). Fjernet
isMobile-sjekken for resize — handles vises nå alltid unntatt i
fullskjerm og minimert modus.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 05:47:49 +00:00
1c9cf66960 Canvas: overflow visible på canvas-object for resize-handles
Resize-handlene i BlockShell bruker negative offsets (-3px) som stikker
utenfor canvas-object divens bounds. Uten overflow: visible fanges ikke
pointer events på kantene.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 05:45:55 +00:00
b863611daa BlockShell: fiks resize-handles + visuell affordance
overflow: hidden på .blockshell klippet resize-handles (negative offsets).
Endret til overflow: visible, border-radius på header/content i stedet.
Lagt til subtile visulle indikatorer ved hover: L-merker på hjørner,
tynne linjer på kanter. Hardkodede farger → CSS custom properties.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 05:42:34 +00:00
b8bb8703ca Tema-slidere påvirker hele workspace + ny arbeidsflate med default traits
- Erstattet hardkodede hex-farger med var(--color-*) i alle style-blokker
  slik at tema-sliderne faktisk endrer bakgrunn, overflater, border og aksent
- Ny arbeidsflate opprettes med chat/editor/kanban/kalender som default
  traits i stedet for tom samling uten traits

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 05:19:46 +00:00
d82fab25df Workspace UI: AI/ressurs-paneler, innstillinger, kontekst-velger
- AI-verktøy og Ressursforbruk registrert som BlockShell-paneler
  i verktøymenyen (🤖 og 📊)
- Innstillingsmeny (⚙️) lengst til høyre i header: tre hue-slidere
  (bakgrunn, overflate, aksent) + logg ut. Lagres i workspace-metadata.
- Kontekst-velger: to grupper (Mine flater / Delte flater),
  inline rename (✏️), "+ Ny arbeidsflate"-knapp
- Mørke overrides for manglende Tailwind bg-farger i app.css

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 05:11:09 +00:00
a1a1b8c460 Dokumentasjon: oppdater etter domene/ruting-refaktor
- CLAUDE.md: defensiv skriving-praksis, fikseliste i doc-treet
- docs/fikseliste.md: oppdatert med ferdig domene/ruting/auth + mottak fjernet
- Fjernet utdaterte mottak-referanser fra kalender, dagbok, kanban, arbeidsflaten

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 04:52:26 +00:00
f092afd2ba Fjern mottak-konseptet: alle referanser peker til arbeidsflaten
- «Mottak» → «Arbeidsflaten» i alle tilbake-lenker
- goto('/workspace') → goto('/') i ContextHeader
- Slettet NodeEditor.svelte og NewChatDialog.svelte (kun brukt av mottak)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 04:47:10 +00:00
c46c9e364e / viser arbeidsflaten direkte, ikke mottak
Flyttet workspace-innholdet til rotpagen. Mottak er utdatert —
alt bor i arbeidsflaten som paneler. Fjernet /workspace-rute
og tilbake-pilen i headeren.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 04:44:18 +00:00
70b33d5387 ws.synops.no: ren domene/ruting/auth-opprydding
Hvert subdomain har én jobb. Offentlig og internt er separate domener.
- synops.no = statisk landingsside + /pub/* + /media/*
- ws.synops.no = appen (SvelteKit + /api/* → maskinrommet)
- workspace.synops.no → redirect til ws.synops.no (legacy)
- Fjernet hostname-sjekker fra hooks.server.ts
- Fjernet LandingPage.svelte (landingsside er statisk HTML)
- Alle API-URLer peker til 127.0.0.1:3100 (ikke sidelinja.org)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 04:31:39 +00:00
7c4d51a267 workspace.synops.no / viser arbeidsflaten direkte, ikke redirect til /workspace
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 03:51:23 +00:00
be6aa2b1bc workspace.synops.no: redirect til login/workspace, aldri vis landingsside
Host-basert logikk i hooks: workspace.* sender uautentiserte til
login og autentiserte til /workspace. synops.no viser landingsside.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 03:47:02 +00:00
32c3dfc1b0 synops.no = offentlig, workspace.synops.no = app
Klar separasjon:
- synops.no: statisk landingsside + publisert innhold (/pub/*)
- workspace.synops.no: SvelteKit-app (arbeidsflate, chat, alt)
- Alle login-lenker peker til workspace.synops.no
- Cookie-domene tilbake til default (ikke .synops.no)
- Caddy: to separate site-blokker

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 03:40:21 +00:00
ed632f686d Cookie-domene .synops.no for subdomain-deling + workspace.synops.no
Auth-cookies settes på .synops.no slik at de deles mellom
synops.no, workspace.synops.no, og fremtidige subdomener.
Caddy proxyer workspace.synops.no til SvelteKit.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 03:35:10 +00:00
6411347aec Redirect innloggede fra / til /workspace
Uautentiserte ser landingssiden, innloggede sendes rett til
arbeidsflaten. Mottak er tilgjengelig som eget panel.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 03:33:29 +00:00
8d914ed38f Landingsside som Svelte-komponent, fjern iframe (X-Frame-Options blokkerte)
LandingPage.svelte med all CSS og HTML innbakt. Ingen iframe,
ingen ekstern fil-avhengighet. Fungerer i alle nettlesere.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 03:27:45 +00:00
daf9660353 Landingsside via iframe til /landing for uautentiserte
Unngår å duplisere landingssiden i SvelteKit — iframe loader
den statiske filen fra Caddy /landing-ruten.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 03:20:19 +00:00
7233488c71 Fiks signin-loop: / tillatt for uautentiserte, viser inline landingsside
hooks.server.ts: / unntatt fra auth-redirect
+page.svelte: viser landingsside for uautentiserte, mottak for innloggede
Ingen separat statisk fil — alt i SvelteKit

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 03:17:08 +00:00