Commit Graph

79 Commits

Author SHA1 Message Date
Claude 55b03b5039 feat(kvot): debitera AI-skanning PER BILD + fixa dubbeldebitering
Johans beslut: en skanning debiteras per bild (6 foton = 6 skanningar), streckkod
gratis. consumeAiScan tar nu units=imageCount och kollar att hela ryms.
Refunden ger tillbaka lika manga (antal bilder) vid misslyckat jobb. Appen kapar
antalet foton till kvarvarande kvot och gar till paywall om 0 (servern ar dock
den slutgiltiga grinden).

Hittade + fixade en PRE-EXISTING bugg pa vagen: kvoten drogs bade vid skapande
(consumeAiScan) OCH vid slutford analys (recordAiUsage aiScans:1) -> varje LYCKAD
skanning kostade 2 enheter, dolt av att appen bara uppdaterade raknaren vid start.
Nu dras kvoten exakt en gang, vid skapandet. Enbildsanvandare far alltsa nu sina
fulla 5 gratis-skanningar (var tidigare ~2,5).
2026-08-18 21:13:58 +00:00
Claude 3bb1d309bc feat(skann): flera bilder i EN skanning for kyl/frys/skafferi/ingredienser
Mobilen hardkodade imageCount:1. Nu kan man ta flera vinklar av samma plats i
en och samma skanning (kamera: ta en till mellan varje; galleri: flerval, tak 6
= schemats max). Worker skickade redan alla bilder till modellen tillsammans och
prompten sager "lista varje vara en gang", sa modellen dedupar over bilderna;
scan-review-markeringen fangar residual. En skanning = en kvotenhet oavsett
antal bilder. Enkel-typer (tallrik/kvitto/datum) tar fortf. en bild.
2026-08-18 20:25:49 +00:00
Claude 7c06516e1e fix(skann): finetune dubblett – ta aldrig bort automatiskt, jamfor ej inom samma foto
Johans test visade tva falska positiva: 3:e smetana pa annan hylla forsvann,
och 2 olika gradde i EN bild -> bara en rakna, andra bortrensad. Orsak: (1)
auto-avmarkering tog bort riktiga varor, (2) varor jamfordes mot varandra inom
samma foto. Fix: markera men ta ALDRIG bort automatiskt (rejected=false, du
valjer); jamfor bara inom samma skanning nar det finns FLERA foton (overlapp),
aldrig tva behallare i ett och samma foto. Verifierat mot alla tre fallen.
2026-08-18 19:19:04 +00:00
Claude 2aaa7f9b3f feat(skann): markera troliga dubbletter i granskningen innan bekraftelse
Enligt Johans onskan: appen forstar sjalv nar en vara troligen redan finns
(samma katalog-id ELLER liknande namn, aven om AI:n laser den olika fran en
annan vinkel) och markerar den i skann-granskningen. Hog sakerhet (>=0.7) =
avmarkerad som standard men syns tydligt och gar att angra; lagre = markerad
men kvar sa du valjer. Jamfor bade mot aktivt lager och tidigare varor i samma
skanning. Ingen auto-hopslagning utan bekraftelse (spec 9). GET /v1/scans/:id
annoterar varje forslag med possibleDuplicate {name, reason, score}.
2026-08-18 18:57:18 +00:00
Claude 1df3943d29 fix(recept): uppdatera "Vad ska vi ata?" automatiskt nar lagret andras
Nar man raderade varor i Matlager uppdaterades inte receptforslagen (coverage
stod kvar pa t.ex. 50% tills man tvang-reloadade appen). Orsak: radering
invaliderade inte ["what-to-eat"]-cachen. Cooking + scan-review gjorde redan
detta; nu foljer kitchen (radering), barcode, meal-boxes och shopping samma
monster sa forslagen alltid speglar aktuellt lager.
2026-08-18 16:28:31 +00:00
Claude 3942890d6f fix(matlager): stada upp – flytta lager till egen vy, gruppera per plats, fixa limit-bugg
- BUGG: kitchen hamtade ?limit=500 men schemat tillat max 200 -> 400-fel nar man
  gick in i matlager / tryckte "+N till". Hojer inventoryQuerySchema.limit till 500.
- Hem: tar bort den roriga inline-listan (matlager lag kvar under Hemma). Ersatts
  med ett "Matlager"-kort med genvagsknappar per plats (Kyl/Frys/Skafferi) + "Allt".
- Matlager-skarmen: grupperad per plats med rubrik + antal, sorterad pa namn,
  plats-filter via chips ELLER djuplank (?loc=), sok, markera flera, massradering.
- Byter skarmtitel "Ditt kok" -> "Matlager".
- Fixar aven en latent hooks-ordningsbugg i home (useFocusEffect efter early return).
2026-08-18 16:02:57 +00:00
Claude 610910ccf0 feat(inventory): matlager-hantering – sök, plats-filter, markera flera, massradering
- API: POST /v1/inventory/bulk-delete (mjuk radering, ägar-kontroll, correction-tx)
- Mobil: "Ditt kök" görs om till hanteringsvy – sök, filter Kyl/Frys/Skafferi,
  sortering på plats+namn, markera flera (som mejlklient), Ta bort valda / Töm listan
- Hem: "+N till" blir klickbar och tar dig till Ditt kök
2026-08-18 15:22:59 +00:00
Claude 684743ae95 fix(inventory): robustare dedup vid skann + borttag pa startsidan
Dedup vid /v1/scans/:id/confirm matchade bara pa exakt (skiftlageskansligt)
namn eller identiskt katalog-id, sa omfotografering av samma hylla skapade
dubbletter. Ny normalizeItemName (gemener, accenter, storlek bort; behaller
fetthalt-siffror) + matchning pa katalog-id ELLER normaliserat namn mot
aktivt hushallslager.

Mobil: 'Ta bort' fanns bara i Ditt kok. Lade borttag pa startsidans
lager-rader (befintlig DELETE /v1/inventory/items/:id).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WZdew6cWn1MeHqoYWFfxzo
2026-08-18 14:44:03 +00:00
Claude 75591bb294 fix(subscriptions): free-niva 5 AI-skanningar (beslut Johan)
Free 10->5 i kod, test, paywall-copy (12 sprak) och docs. Full trappa: free 5 / trial 14d 25 skann / premium 100/200/400.
2026-08-17 17:34:55 +00:00
Claude 88876a24b7 fix(subscriptions): trial 14 dagar konsekvent i UI/docs/legal/butik
TRIAL_DAYS var redan 14 i koden men auth.trialNote (12 sprak), butiksmetadata, juridik-utkast, API-ref, exec-summary och UX-doc sa 7. Nu 14 overallt. Rorde EJ icke-trial 7-dagar (inbjudningslank, backup, S3-lifecycle, grace, retention). Beslut: Johan (battre onboarding).
2026-08-17 17:04:00 +00:00
Sven (AAMOS AI) 856b620891 fix(i18n): platta swap till punktnycklar + fyll paritetslucka (24 sv-nycklar) i 11 sprak, sv-fallback 2026-08-17 22:47:04 +07:00
Sven (AAMOS AI) 0478f7c930 feat(mobile): MIKRO WEEK-4b lägg swap-nycklar i 12 språkfiler 2026-08-17 21:57:40 +07:00
Sven (AAMOS AI) 375a951be1 feat(mobile): MIKRO WEEK-4 byt ut måltid i veckoplanen (swap-vy) 2026-08-17 21:50:18 +07:00
Sven (AAMOS AI) 6dcc404dc1 feat(mobile): MIKRO MEAL-2 tidsstyrd måltid i Vad ska vi äta 2026-08-17 21:41:59 +07:00
Sven (AAMOS AI) 6fe1955c9f feat(mobile): MIKRO POLISH-3 optimistisk favoritmarkering med rollback 2026-08-17 21:38:48 +07:00
Sven (AAMOS AI) 653f94de86 feat(mobile): MIKRO POLISH-2 cyklande laddningsmeddelanden på scan-väntan 2026-08-17 21:17:24 +07:00
Sven (AAMOS AI) b1a93be974 feat(mobile): MIKRO POLISH-1 haptik + tryck-skala i Button/Card 2026-08-17 21:01:09 +07:00
Sven (AAMOS AI) 9473329708 feat(mobile): MIKRO STARS-3 byt mot Toppval-tagg på första förslaget 2026-08-17 20:13:54 +07:00
Sven (AAMOS AI) 343a18393a feat(mobile): MIKRO WEEK-3 interaktiv planera veckan-ruta (dagar x måltider) 2026-08-17 20:07:23 +07:00
Sven (AAMOS AI) 5a47140b76 feat(mobile): MIKRO STARS-2 visa snittbetyg på Vad ska vi äta-korten 2026-08-17 19:54:38 +07:00
Sven (AAMOS AI) 97b5baa367 feat(weekplan): MIKRO WEEK-2 dagliga måltidsslots (vardag middag, helg lunch+middag) 2026-08-17 19:17:27 +07:00
Sven (AAMOS AI) 8fe8900722 feat(mobile): week plan always starts today and moves forward 2026-08-16 22:36:22 +07:00
Sven (AAMOS AI) 05c6cf9e04 feat(mobile): refresh entitlements after scan + route QUOTA_EXCEEDED to paywall 2026-08-16 22:17:15 +07:00
Sven (AAMOS AI) c0a15bb1b5 feat: kitchen screen, scan dedup, gemini-3.5-flash-lite, seed grapes/beetroot/pea shoots 2026-08-16 20:13:49 +07:00
Sven (AAMOS AI) d098bf705e feat(mobile): Sparade recept-sida (sökbar favoritlista) + länk på hemma (SAVED-1) 2026-08-16 00:55:32 +07:00
Sven (AAMOS AI) c2a8aa8fa1 feat(mobile): hemma-knapparnas skärmar som modaler (UX-3) 2026-08-16 00:38:55 +07:00
Sven (AAMOS AI) c115c3cb4b fix(mobile): enradiga snabblänks-etiketter + svep-tillbaka på hela sidan (UX-2) 2026-08-16 00:27:53 +07:00
Sven (AAMOS AI) 8035093ae5 feat(mobile): levande knappar – press-scale på Card + haptik på snabblänkar (UX-1) 2026-08-16 00:20:59 +07:00
Sven (AAMOS AI) bcd5f6d0db fix(mobile): montera inte om trädet när språket är oförändrat – bevarar nav-stacken (NAV-1) 2026-08-16 00:03:56 +07:00
Sven (AAMOS AI) 84a1606dd0 feat(mobile): glömt-lösenord via Firebase + upprepa-lösenord-fält (POLISH-2) 2026-08-15 23:20:32 +07:00
Sven (AAMOS AI) 448a523d64 fix(mobile): logga ut ur Firebase vid utloggning (POLISH-1) 2026-08-15 23:02:30 +07:00
Sven (AAMOS AI) 5f547708ae feat(auth): koppla login/register till Firebase → /v1/auth/session (AUTH-5) 2026-08-15 20:47:11 +07:00
Sven (AAMOS AI) 8352c3a0ce feat(mobile): FirebaseAuthProvider (e-post/lösen) bakom AuthProvider-gränssnittet (AUTH-4) 2026-08-15 20:39:29 +07:00
Sven (AAMOS AI) ed2e14f98e feat(auth): portable auth provider interface types (AUTH-0) 2026-08-15 19:13:18 +07:00
Sven (AAMOS AI) 53c9d9d01d feat(mobile): klickbara högtids-chips som söker högtidsmaten (MIKRO E2)
CI / Typecheck, test & build (push) Failing after 47s
2026-08-14 22:51:52 +07:00
Sven (AAMOS AI) cd6a9eb556 feat(mobile): redigera kost/allergier/religion i profilen när som helst (MIKRO 63)
CI / Typecheck, test & build (push) Failing after 43s
2026-08-14 21:17:55 +07:00
Sven (AAMOS AI) f102288676 feat(mobile): välj religiös kosthållning (halal m.fl.) i onboarding – filtrerar fläsk (MIKRO 62)
CI / Typecheck, test & build (push) Failing after 42s
2026-08-14 20:53:35 +07:00
Sven (AAMOS AI) 1e6407d9e6 feat(mobile): slutför-profil-prompt samlar kost & allergier progressivt (MIKRO 57)
CI / Typecheck, test & build (push) Failing after 42s
2026-08-14 18:59:39 +07:00
Sven (AAMOS AI) 9390cc0e66 fix(mobile): receptdetalj på användarens språk (MIKRO 56)
CI / Typecheck, test & build (push) Failing after 43s
2026-08-14 18:56:42 +07:00
Sven (AAMOS AI) 1f67e1532f polish(mobile): cooking-avbryt, scan-review useEffect, stack-titlar, död kod (MIKRO 55)
CI / Typecheck, test & build (push) Failing after 42s
2026-08-14 18:45:36 +07:00
Sven (AAMOS AI) d95c67d979 fix(mobile): plan/hushåll/profil felhantering + streckkod pausar kamera (MIKRO 54)
CI / Typecheck, test & build (push) Failing after 42s
2026-08-14 18:38:15 +07:00
Sven (AAMOS AI) 13689d5f8e fix(mobile): Nya förslag bläddrar bland recept + laddindikator (MIKRO 53)
CI / Typecheck, test & build (push) Failing after 44s
2026-08-14 18:31:41 +07:00
Sven (AAMOS AI) 491daace86 fix(mobile): onError på 15 mutationer – inga tysta miss (MIKRO 52)
CI / Typecheck, test & build (push) Successful in 1m37s
2026-08-14 18:03:36 +07:00
Sven (AAMOS AI) ea1f9a113a fix(scan): timeout i uploadImage + rätt API_BASE_URL så mock-upload når telefonen (MIKRO 51)
CI / Typecheck, test & build (push) Successful in 1m36s
2026-08-14 17:49:40 +07:00
Sven (AAMOS AI) bea9f54ed5 fix(mobile): visa fel när samtyckestoggeln fallerar (tyst miss förut)
CI / Typecheck, test & build (push) Successful in 1m36s
2026-08-14 05:46:28 +07:00
Sven (AAMOS AI) f5aeb28a24 fix(mobile): tydlig bakåt-etikett (Tillbaka) istället för (tabs) i navigationen
CI / Typecheck, test & build (push) Successful in 1m34s
2026-08-14 05:38:29 +07:00
Sven (AAMOS AI) 72b1d9d5a3 fix(mobile): samtyckesgrinden hämtar om status efter accept (fastnade annars)
CI / Typecheck, test & build (push) Successful in 1m35s
2026-08-14 05:29:01 +07:00
Sven (AAMOS AI) 815b400eea feat(mobile): ny slogan på inloggningen – Mindre svinn, mindre stress, mer kvar i plånboken
CI / Typecheck, test & build (push) Successful in 1m39s
2026-08-14 04:11:29 +07:00
Sven (AAMOS AI) 5f9526cb07 fix(mobile): keyboard-avoidance i Screen så formulär inte göms bakom tangentbordet (FAS 35)
CI / Typecheck, test & build (push) Successful in 1m40s
2026-08-14 04:01:44 +07:00
Sven (AAMOS AI) e3d50707e8 feat(mobile): veckoplan – skapa inköpslista från planen (stänger plan→laga→handla-loopen)
CI / Typecheck, test & build (push) Successful in 1m34s
2026-08-14 03:12:49 +07:00