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
Sven (AAMOS AI)
4d9c69d0ce
feat(mobile): veckoplan – markera lagad/hoppa över (smart omplanering) + aktivera plan
CI / Typecheck, test & build (push) Successful in 1m48s
2026-08-14 02:48:18 +07:00
Sven (AAMOS AI)
c5f8d63964
feat(mobile): veckoplan – hämta plan, rendera dagens måltider + generera-knapp med polling
CI / Typecheck, test & build (push) Successful in 1m34s
2026-08-14 02:38:59 +07:00
Sven (AAMOS AI)
ebc3b75cea
i18n(mobile): plan.portions i 12 locales
CI / Typecheck, test & build (push) Successful in 1m34s
2026-08-14 02:01:04 +07:00
Sven (AAMOS AI)
e6c5d3bb08
feat(mobile): veckoplan-skärm scaffold (månadsheader + veckostrip + dagsvy) + flik
CI / Typecheck, test & build (push) Successful in 1m34s
2026-08-14 01:47:33 +07:00
Sven (AAMOS AI)
435af14bc4
i18n(mobile): nycklar för veckoplaneraren (tabs.plan, plan.today, plan.emptyDay) i 12 locales
CI / Typecheck, test & build (push) Successful in 1m35s
2026-08-14 01:30:26 +07:00
Sven (AAMOS AI)
78ddf237f3
ci: ta bort icke-fungerande pnpm-cache (ETIMEDOUT) – ~9 min snabbare körning
CI / Typecheck, test & build (push) Successful in 1m34s
2026-08-14 01:00:23 +07:00
Sven (AAMOS AI)
0d1cc727ae
fix(gdpr): radera user_terms_consents vid kontoradering + klassa i residual-testet
CI / Typecheck, test & build (push) Successful in 11m6s
2026-08-14 00:45:42 +07:00
Sven (AAMOS AI)
e96213e907
ci(turbo): släpp fram REDIS_URL till test-tasken så worker-testet når Redis
CI / Typecheck, test & build (push) Failing after 6m12s
2026-08-14 00:16:48 +07:00
Sven (AAMOS AI)
0145c50916
test(ai-contracts): budgetspärr blockerar inte längre – uppdatera gemini-testet (MIKRO 12)
CI / Typecheck, test & build (push) Failing after 6m10s
2026-08-14 00:00:55 +07:00
Sven (AAMOS AI)
27291936ba
ci: testdatabas app_test så seed-spärren släpper igenom
CI / Typecheck, test & build (push) Failing after 5m51s
2026-08-13 23:39:50 +07:00
Sven (AAMOS AI)
4ad4aca0aa
ci: sätt TEST_DATABASE_URL så db:test-setup kan köra
CI / Typecheck, test & build (push) Failing after 5m46s
2026-08-13 22:56:35 +07:00
Sven (AAMOS AI)
d65a420fe8
ci: återställ orörd pnpm-lock.yaml + .prettierignore (skydda genererade filer)
CI / Typecheck, test & build (push) Failing after 5m44s
2026-08-13 21:17:46 +07:00
Sven (AAMOS AI)
a38cc49c99
ci: låt pnpm-version styras av package.json (fixar action-setup-konflikt)
CI / Typecheck, test & build (push) Failing after 5m51s
2026-08-13 19:19:43 +07:00
Sven (AAMOS AI)
73d76ad384
ci: service-containrar via namn, ta bort host-port-krock
CI / Typecheck, test & build (push) Failing after 13s
2026-08-13 18:48:29 +07:00
Sven (AAMOS AI)
c32a7e33c7
ci: trigga på master + formatfix inför Gitea Actions
CI / Typecheck, test & build (push) Failing after 2s
2026-08-13 17:25:14 +07:00
Sven (AAMOS AI)
61d60931ad
feat(mobile): tallriksfoto → meal-review + i18n (otestad, väntar Expo-test)
2026-08-13 07:04:10 +07:00
Sven (AAMOS AI)
f7227c40cf
Sluta spåra secrets/ i git (materialiseras från SSM vid deploy)
2026-08-13 05:16:00 +07:00
Sven (AAMOS AI)
f917d0c866
Gemini global budget: larm istället för block (blockera aldrig användarskanning)
2026-08-13 04:32:46 +07:00
Sven (AAMOS AI)
ceaa52a097
feat(mobile): consent-texter pa 11 sprak
2026-08-13 02:31:25 +07:00
Sven (AAMOS AI)
dd715c3f61
feat(mobile): consent-gate i auth-flödet
2026-08-13 02:17:52 +07:00
Sven (AAMOS AI)
e88bbb50a6
feat(mobile): ConsentScreen + consent api
2026-08-13 02:14:03 +07:00
Sven (AAMOS AI)
61c3193f17
feat(consent): user_terms_consents + /v1/me/consent
2026-08-13 02:06:44 +07:00
Sven (AAMOS AI)
1df3ca1709
fix(deploy): exkludera prod .env/secrets/certs från rsync
2026-08-12 23:17:41 +07:00
Sven (AAMOS AI)
10ba64e4ba
fix(ops): gemini-block i summary-byggaren, inte routen
2026-08-12 22:41:11 +07:00
Sven (AAMOS AI)
7dc7cd1403
docs(handoff): SSH-prod config noterad
2026-08-12 21:27:37 +07:00
Sven (AAMOS AI)
1a596d2674
feat(ops): fyll gemini-blocket från gemini_usage
2026-08-12 21:13:39 +07:00
Sven (AAMOS AI)
602405d56d
feat(ops): logga gemini_usage per scan (best-effort)
2026-08-12 21:08:03 +07:00
Sven (AAMOS AI)
f11cbce114
feat(ai): surfacea Gemini token-usage
2026-08-12 20:59:49 +07:00
Sven (AAMOS AI)
14a5243bb2
feat(db): gemini_usage-tabell för token-telemetri
2026-08-12 20:51:50 +07:00
Sven (AAMOS AI)
3fb4374a99
feat(ops): gemini-block i summary
2026-08-12 20:48:06 +07:00
Sven (AAMOS AI)
bf04a12b89
fix(gemini): read binary response body as Buffer instead of UTF-8 string
...
customNodeFetch previously used res.setEncoding('utf8') and concatenated
chunks into a string. This corrupted JPEG/PNG binary data with UTF-8
replacement characters, causing Gemini to return:
400 Unable to process input image.
Now chunks are collected as Buffers and concatenated, preserving binary
integrity when images are fetched from presigned S3 URLs before being
sent to Gemini.
2026-08-12 20:30:24 +07:00
Sven (AAMOS AI)
716e768cd0
feat(deploy): aktivera dedikerad Cibello-Gemini-nyckel + SMTP, ersätt /openclaw-referens
2026-08-12 20:07:32 +07:00
Sven (AAMOS AI)
dee687c031
fix(deploy): lägg till OPS_TOKEN i SSM-sync
2026-08-12 17:37:06 +07:00
Sven (AAMOS AI)
6e2d794130
feat(storage,deploy): delad S3/mock-lagring, SSM .env-sync, Gemini readyz
...
- @app/storage med MockStorage + AwsStorage delas mellan API och worker
- Workerns readUrl() ger presignerad S3-URL i aws-läge (fixar mock-s3 404)
- sync-env-from-ssm.py hämtar /cibello/prod/* och skriver .env; first-deploy.sh kör det i prod
- /readyz returnerar 503 om app.aamos.healthCheck() misslyckas
- docs/SECRETS.md med rotations- och SSM-regler
2026-08-12 17:28:58 +07:00
Sven (AAMOS AI)
535e3e36e8
docs(handoff): uppdatera med kostnadsspärr och verifiering
2026-08-12 16:55:46 +07:00
Sven (AAMOS AI)
7dda0fad00
fix(gemini): budget-check före bildhämtning så spärr triggars tidigt
2026-08-12 16:30:49 +07:00
Sven (AAMOS AI)
6c581bec1a
feat(cost-guard): global Gemini daily budget + EOC alarm; trial requires verified email
2026-08-12 06:43:32 +07:00
Sven (AAMOS AI)
2cd00f0106
docs(handoff): hemlighetsrotation Grupp A klar, Grupp B väntar på Johan
2026-08-12 06:21:49 +07:00
Sven (AAMOS AI)
81927b6cdc
fix(db): RDS-CA i poolen (app+migrator delar TLS)
2026-08-12 06:07:07 +07:00
Sven (AAMOS AI)
983f3fb2aa
fix(database): explicit RDS SSL via NODE_EXTRA_CA_CERTS
2026-08-12 04:48:42 +07:00
Sven (AAMOS AI)
c5a8530fbf
fix(deploy): brand-guard compat + db_reachable med RDS SSL + first-deploy SSL
2026-08-12 04:22:24 +07:00
Sven (AAMOS AI)
659d0f9290
feat(deploy): Gemini som committat prod-läge + hermetiska eval-fixtures
...
- config.ts: tillåt AAMOS_MODE=http|gemini i prod; mock förbjudet
- first-deploy.sh: Grind 1 accepterar gemini (kräv GEMINI_API_KEY);
Grind 5 kör eval:scan mot gemini; Grind 8 behandlar gemini som riktig AI
- gemini.ts: stöd för data-URLer (inline base64-bilder) i fetchOneImage
- eval-fixtures: 4 lokala bilder (fridge-1, fridge-2, label-1, receipt-1)
- scan-eval.ts: läser lokala fixtures, inga externa hämtningar
- capture-eval.ts: använder lokal fixture som data-URL
2026-08-12 04:10:10 +07:00
Sven (AAMOS AI)
3259f09f7d
docs: HANDOFF/deploy-state för sessionskontinuitet
2026-08-12 03:50:28 +07:00
Sven (AAMOS AI)
9a9f8a6a3c
feat(worker/ai): Gemini-lärar-tier för scan/detect/allergen + shadow-capture
...
- Utöka GeminiAamosClient med ANALYZE_MEAL_IMAGE, READ_NUTRITION_LABEL,
READ_EXPIRY_DATE och READ_RECEIPT (vision-prompts mot kontraktsscheman).
- Lägg till apps/worker/src/lib/shadow-capture.ts: S3/local fallback,
imageTraining-gating, ingen PII, aldrig faila användarvägen.
- Integrera capture i scan-processorn efter lyckad runTask med consentFlags.
- Lägg till @aws-sdk/client-s3 i worker samt eval:capture-skript.
- Uppdatera eval:scan till Wikimedia Special:FilePath + redirect-following.
- Exkludera .terraform i brand-guard för att undvika false positives.
- Uppdatera gemini-test för DEDUPLICATE_INVENTORY som unsupported.
2026-08-12 02:51:05 +07:00
Sven (AAMOS AI)
515dd12cc7
infra(vpc): CIDR 10.20.0.0/16 – undvik krock med aplatform-platform-vpc
...
Publikt subnät 10.20.1.0/24, privata 10.20.11.0/24 + 10.20.12.0/24
2026-08-11 23:55:27 +07:00
Sven (AAMOS AI)
5b35df24a7
cibello(terraform): add lifecycle ignore_changes for placeholder SSM secrets
...
Prevent Terraform from overwriting externally-managed secret values
2026-08-11 23:31:43 +07:00
Sven (AAMOS AI)
99c73cada0
cibello(terraform): replace SES with Mailu DNS records
...
- Remove aws_ses_configuration_set, aws_ses_domain_identity, aws_ses_domain_dkim
- Remove SES verification and DKIM Route53 records
- Remove SES outputs
- Add MX, SPF, DKIM, DMARC records for cibello.app -> mail.aamos.systems
- DKIM key split into two 255-char strings per Route53 limit
No apply; plan saved as cibello.plan
2026-08-11 22:51:20 +07:00
Sven (AAMOS AI)
8168f64437
docs: add FAS 1 infrastructure plan report
2026-08-11 21:39:00 +07:00