Hva er annerledes enn Live
Sandkassen er vår egen versjon av Leii. Denne siden er regnskapet over hva den har som Leii sin kode ikke har — de faktiske tilleggene, ikke en ønskeliste.
Listen skrives ikke for hånd. Vi skriver ned hva som er ment å være annerledes, en maskin leser hva som faktisk er annerledes rett fra koden, og de to sammenlignes. Derfor kan den ikke stille og rolig bli utdatert: dukker det opp en forskjell ingen har skrevet ned, stopper sammenligningen — og tallet står øverst her.
11 klare til henting · 51 filer · 3 under arbeid (492 filer) · hentet 2026-09-28
Backend
leii
An LlmTextClient seam over your existing ChatGpt client, so the provider and model become configuration rather than code. OpenAI primary with Gemini as fallback.
backend/src/main/kotlin/no/leii/backend/ai/**backend/src/test/kotlin/no/leii/backend/ai/**Somewhere for a planner session and a saved draft to live: one table, six endpoints and a daily retention sweep, keyed on the signed-in customer. `POST /api/event` is untouched.
backend/src/main/kotlin/no/leii/backend/eventdraft/**backend/src/test/kotlin/no/leii/backend/eventdraft/**backend/src/main/resources/db/migration/V211__event_draft.sqlChat moderation picks its model the same way, and gains an admin endpoint that can sweep existing messages rather than only new ones.
backend/src/main/kotlin/no/leii/backend/moderation/**A bug in your code, worth taking on its own. An expired OTP kept its slot forever, so a user who started a login and walked away blocked that code until the backend restarted. We hit it on the mirror: one abandoned switch answered 409 to every later attempt for five minutes. Fixed, with two tests that fail on the unfixed code.
backend/src/main/kotlin/no/leii/backend/security/otp/OtpRepo.ktbackend/src/test/kotlin/no/leii/backend/security/otp/OtpRepoTest.ktSyncs the chat-moderation prompt. It arrives already numbered for your tree — we renumber it on the way out, because ours is numbered for a database that has already applied it, so there is nothing for you to change. Ships with the test that asserts the migration's prompt and the code constant have not drifted apart.
backend/src/main/resources/db/migration/V171__*.sqlbackend/src/test/kotlin/no/leii/backend/moderation/ChatModerationPromptMigrationTest.ktAdds ktor-client-mock in test scope only, so the request body sent to the model can be asserted in a test without a billed call.
backend/build.gradle.ktsMakes the AI provider, model and reasoning effort configuration instead of literals buried in the code. Every default is your current value — gpt-4.1-mini, gpt-5.4-nano, effort low — so applying this changes no behaviour until you set one of the environment variables.
backend/src/main/resources/application*.properties
Markedsplassen (leii.no)
leii-web-app
- Under arbeid490 filer
The event planner — the surface the mirror shows in place of the current /foresporsel form. Still being built here; look at it, but it is not ready to take yet.
src/components/event-planner/**src/pages/sandbox/**src/store/** Swaps Nexa for Poppins. Nexa is commercial and you may not hold the webfont licence (Magnus's point); Poppins is SIL OFL. Eight woff2 faces, 418 KB against roughly 1030 KB. The font-nexa-* class names are unchanged, so this is a mapping rather than a rename across 1669 sites.
src/assets/fonts/Poppins/**src/styles/globals.cssTwo of your files carried hardcoded small text sizes that the new text-2xs tier replaces. Nothing else in them changed.
src/pages/index.tsxsrc/components/category/CategoryHero.tsxA one-line «sign-in changed» event the planner listens for, so its draft notice updates at once.
src/api/authChanged.ts- Klar til henting1 fil
Two things. A bug in your code: the timeout option reached formApi but not the JSON branch, so every JSON request that declared one ran unbounded. And the API base is split between server and browser, which does nothing unless NEXT_PUBLIC_API_BROWSER_URL is set.
src/api/common.ts The client for the planner's session and draft endpoints.
src/api/eventDraft.tsThe token half of the Poppins swap, and it must be applied before the font files — without it every font-nexa-* class still resolves to Nexa Bold. It maps the families to Poppins faces with real fallback stacks and moves text-2xs from 9.6px to 11px. Nothing in this file needs removing: the few additions that are ours are unreferenced by your code and cost you nothing.
tailwind.config.js
20 forskjeller er bevisst holdt utenfor listen. Det er ting som bare gir mening i sandkassen — innlogging for testbrukere, selve speil-oppsettet, våre egne notater — og som Leii verken kan eller bør ta i bruk. De telles her slik at listen over ikke leses som «alt».