LeiiEventplanlegger · designforslagIkke i produksjon
Sandkassen

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

Klar til hentingBygget og verifisert her. Leii har det ikke i sin kode ennå — dette kan hentes nå.Under arbeidBygges fortsatt her og endrer seg. Se gjerne på den, men vent med å ta den inn.LevertAllerede sendt over. Står her til vi ser det i deres kode.Må avklaresVi trenger en avklaring før dette kan gå videre.

Backend

leii

  • Klar til henting20 filerB-149 →

    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/**

  • Klar til henting9 filerB-211 →

    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.sql

  • Klar til henting2 filerB-150 →

    Chat 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/**

  • Klar til henting2 filerB-156 →

    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.kt

  • Klar til henting2 filerB-150 →

    Syncs 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.kt

  • Klar til henting1 filB-149 →

    Adds 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.kts

  • Klar til henting1 filB-149 →

    Makes 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/**

  • Klar til henting10 filerB-167 →

    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.css

  • Klar til henting2 filerB-167 →

    Two 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.tsx

  • Under arbeid1 filB-211 →

    A 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

  • Under arbeid1 filB-211 →

    The client for the planner's session and draft endpoints.

    src/api/eventDraft.ts

  • Klar til henting1 filB-167 →

    The 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».