-
32bfcd5c16
chore: merge master into feat/issue-21-join-household
master
Marcel Raddatz
2026-04-11 00:00:11 +02:00
-
-
9a644b5640
fix(test): update AuthControllerTest to verify authenticateInSession delegation
Marcel Raddatz
2026-04-10 22:29:50 +02:00
-
df0d453b69
fix(join): replace rounded-2xl with --radius-xl design token
Marcel Raddatz
2026-04-10 22:26:58 +02:00
-
26256ef492
fix(join): add accessible name to permissions list in HouseholdIdentityPanel
Marcel Raddatz
2026-04-10 22:26:43 +02:00
-
ccfc72ab38
fix(join): update password toggle aria-label with state
Marcel Raddatz
2026-04-10 22:26:16 +02:00
-
230ee5a067
fix(join): use secure: !dev for JSESSIONID cookie to work in local dev
Marcel Raddatz
2026-04-10 22:25:48 +02:00
-
0b182a33fd
refactor(auth): extract authenticateInSession to AuthService
Marcel Raddatz
2026-04-10 22:24:58 +02:00
-
73af11e84b
fix(invite): reject invalidated invites in acceptInvite
Marcel Raddatz
2026-04-10 22:22:54 +02:00
-
0ab1ba0b1b
fix(invite): reject invalidated invites in getInviteInfo
Marcel Raddatz
2026-04-10 22:22:07 +02:00
-
44fd398701
fix(invite): saveAndFlush invalidation before INSERT + set invalidated_at on accept
Marcel Raddatz
2026-04-10 22:04:24 +02:00
-
6aed303627
fix(join): permit /v1/invites/** (not just /*) + match panel color to login
Marcel Raddatz
2026-04-10 22:00:47 +02:00
-
c5ec3396b2
fix(migration): deduplicate active invites before creating unique index in V026
Marcel Raddatz
2026-04-10 21:51:19 +02:00
-
6950b3d8db
feat(join): implement A4 join household page (/join/[token])
Marcel Raddatz
2026-04-10 21:31:03 +02:00
-
92f25e56fc
feat(invite): add GET /v1/invites/{code} + rework POST accept as signup+join
Marcel Raddatz
2026-04-10 21:24:26 +02:00
-
b577b7a0f8
fix(members): add error toasts for invite failures + Content-Type header
Marcel Raddatz
2026-04-10 20:31:19 +02:00
-
69d695b2c4
fix(members): guard against removing the last planner from household
Marcel Raddatz
2026-04-10 20:30:55 +02:00
-
43227b2265
feat(backend): make invite share URL base configurable via app.base-url
Marcel Raddatz
2026-04-10 20:07:53 +02:00
-
a6683d06bb
fix(members/invites): unwrap ApiResponse before returning to client
Marcel Raddatz
2026-04-10 19:57:13 +02:00
-
ed0f3c21fe
fix(members): create invite on first click when no active invite exists
Marcel Raddatz
2026-04-10 19:55:00 +02:00
-
dbf2951f09
feat(members): align grid UI to spec — avatar colors, badges, join date, invite panel
Marcel Raddatz
2026-04-10 19:54:26 +02:00
-
d6bfd2cb46
fix(members): match settings page padding and h1 typography
Marcel Raddatz
2026-04-10 19:45:32 +02:00
-
9ccd367d74
feat(members): implement /members page — Kachel-Ansicht (E2, issue #48)
Marcel Raddatz
2026-04-10 19:01:08 +02:00
-
6aef12fa3c
feat(members): update schema.d.ts with GET invites, DELETE/PATCH member types
Marcel Raddatz
2026-04-10 18:42:52 +02:00
-
27b7058d31
feat(members): implement DELETE/PATCH member + GET invites backend endpoints
Marcel Raddatz
2026-04-10 18:41:38 +02:00
-
60d84c0c94
fix(members): add error toasts for invite failures + Content-Type header
Marcel Raddatz
2026-04-10 20:31:19 +02:00
-
9d3be84a0c
fix(members): guard against removing the last planner from household
Marcel Raddatz
2026-04-10 20:30:55 +02:00
-
2ad75cc1b7
spec(staples): tile redesign, seed catalog & add-ingredient flow
Marcel Raddatz
2026-04-10 20:28:51 +02:00
-
eb5699577b
feat(backend): make invite share URL base configurable via app.base-url
Marcel Raddatz
2026-04-10 20:07:53 +02:00
-
05476ecaab
fix(members/invites): unwrap ApiResponse before returning to client
Marcel Raddatz
2026-04-10 19:57:13 +02:00
-
c40b0fe095
fix(members): create invite on first click when no active invite exists
Marcel Raddatz
2026-04-10 19:55:00 +02:00
-
4e67ff4258
feat(members): align grid UI to spec — avatar colors, badges, join date, invite panel
Marcel Raddatz
2026-04-10 19:54:26 +02:00
-
df3b774f0c
fix(members): match settings page padding and h1 typography
Marcel Raddatz
2026-04-10 19:45:32 +02:00
-
1b5704c8b5
feat(members): implement /members page — Kachel-Ansicht (E2, issue #48)
Marcel Raddatz
2026-04-10 19:01:08 +02:00
-
b04f2c51d2
feat(members): update schema.d.ts with GET invites, DELETE/PATCH member types
Marcel Raddatz
2026-04-10 18:42:52 +02:00
-
d1e4b6c49e
feat(members): implement DELETE/PATCH member + GET invites backend endpoints
Marcel Raddatz
2026-04-10 18:41:38 +02:00
-
-
27163e3d72
feat(nav): remove Mitglieder link from desktop sidebar
Marcel Raddatz
2026-04-10 17:32:37 +02:00
-
5904102b1a
refactor(settings): document benutzer non-null assertion in page.server.ts
Marcel Raddatz
2026-04-10 17:23:31 +02:00
-
d66120b191
refactor(settings): replace hardcoded #C0BFB8 with --color-border-hover token
Marcel Raddatz
2026-04-10 17:23:22 +02:00
-
98c8aa9610
refactor(settings): remove dead accent prop from SettingsCard
Marcel Raddatz
2026-04-10 17:22:54 +02:00
-
af275642b0
refactor(staples): remove redundant {#if !isOnboarding} guards in else block
Marcel Raddatz
2026-04-10 17:22:20 +02:00
-
dde78baa84
fix(settings): remove green left border from Vorräte card — no active state on hub page
Marcel Raddatz
2026-04-10 17:07:30 +02:00
-
6e559d9f9d
refactor(staples): remove ctx=settings — default view is settings, only ctx=onboarding differs
Marcel Raddatz
2026-04-10 16:57:48 +02:00
-
ef39a97f57
fix(settings): align hub page with V2 spec — padding, H1, card radius/padding/sizes
Marcel Raddatz
2026-04-10 16:49:56 +02:00
-
824bb9445f
refactor(staples): move household/staples route into (app) group — adds sidebar nav
Marcel Raddatz
2026-04-10 16:47:25 +02:00
-
b0fc9f55c1
feat(nav): pass extraPaths to isActiveRoute in DesktopSidebar and MobileTabBar
Marcel Raddatz
2026-04-10 16:45:32 +02:00
-
2ed5186ac8
feat(nav): add extraPaths to NavItem — Einstellungen active on /household/staples
Marcel Raddatz
2026-04-10 16:44:11 +02:00
-
48802a04f7
feat(settings): add autosave hint text below StaplesManager on D3 when ctx=settings
Marcel Raddatz
2026-04-10 16:30:19 +02:00
-
0b3d062ed1
feat(settings): add ← Einstellungen back-link on D3 staples page when ctx=settings
Marcel Raddatz
2026-04-10 16:28:39 +02:00
-
109b41b434
feat(settings): implement settings hub page with three cards (Vorräte, Haushalt, Profil)
Marcel Raddatz
2026-04-10 16:27:18 +02:00
-
3f9fb900c4
feat(settings): add SettingsCard component with title, href, cta, meta, accent props
Marcel Raddatz
2026-04-10 16:24:38 +02:00
-
33cccd3d63
feat(settings): add +page.server.ts loading stapleCount, memberCount, userName
Marcel Raddatz
2026-04-10 16:23:15 +02:00
-
cfbde18435
test(planner): clear shared mocks before each RecipePickerDrawer test
Marcel Raddatz
2026-04-10 14:18:50 +02:00
-
4835231f6d
test(planner): cover Entfernen hidden when slot.id is null
Marcel Raddatz
2026-04-10 14:18:16 +02:00
-
3f9bd2b226
refactor(planner): replace hardcoded values with design tokens
Marcel Raddatz
2026-04-10 14:17:50 +02:00
-
9423cd673c
refactor(planner): type tag mapping callback as TagItem in server load
Marcel Raddatz
2026-04-10 14:16:50 +02:00
-
4c87d9c134
feat(planner): sanitize heroImageUrl before embedding in CSS url()
Marcel Raddatz
2026-04-10 14:16:10 +02:00
-
e5c361fe42
refactor(planner): import shared types in reasoningTags instead of re-declaring
Marcel Raddatz
2026-04-10 14:13:55 +02:00
-
a8a781f1e9
refactor(planner): import shared types in EmptyDayTile instead of re-declaring
Marcel Raddatz
2026-04-10 14:13:25 +02:00
-
b0800ca4f3
refactor(planner): import shared types in DesktopDayTile instead of re-declaring
Marcel Raddatz
2026-04-10 14:12:51 +02:00
-
66447a7ea0
refactor(planner): export Slot and SlotMap from types.ts
Marcel Raddatz
2026-04-10 14:12:03 +02:00
-
7f4413852d
fix(planner): bump front face font sizes again
Marcel Raddatz
2026-04-10 12:53:29 +02:00
-
eb3f6fad25
fix(planner): bump front face font sizes
Marcel Raddatz
2026-04-10 12:52:05 +02:00
-
fc682bfc54
fix(planner): increase tile front face recipe name to 15px
Marcel Raddatz
2026-04-10 12:50:28 +02:00
-
38528a50e5
fix(planner): eliminate front-face bleed by removing preserve-3d
Marcel Raddatz
2026-04-10 12:49:28 +02:00
-
a43a8ec33f
fix(planner): prevent front face bleeding through flipped card
Marcel Raddatz
2026-04-10 12:47:10 +02:00
-
8679ebc6e3
fix(planner): fix flip tile pointer events and selected ring hover
Marcel Raddatz
2026-04-10 12:42:06 +02:00
-
0ae1767649
feat(planner): align tile design with spec
Marcel Raddatz
2026-04-10 12:29:58 +02:00
-
d54ac6a37a
feat(planner): use cuisine gradient as fallback when no protein tag
Marcel Raddatz
2026-04-10 12:12:03 +02:00
-
d901310897
feat(backend): add heroImageUrl and tags to RecipeSummaryResponse
Marcel Raddatz
2026-04-10 12:03:03 +02:00
-
ed4cdbf230
fix(planner): merge recipe tags into slotMap from data.recipes
Marcel Raddatz
2026-04-10 11:55:55 +02:00
-
75228058a6
fix(planner): align protein gradient CSS vars with actual seed tag names
Marcel Raddatz
2026-04-10 11:37:54 +02:00
-
b919a716f5
fix(planner): rename gradient-protein-veg → gradient-protein-vegetarisch
Marcel Raddatz
2026-04-10 11:32:05 +02:00
-
389500c1dd
fix(planner): transliterate German umlauts in protein gradient CSS key
Marcel Raddatz
2026-04-10 11:31:06 +02:00
-
8709e85d80
fix(planner): increase card front recipe name font size to 15px
Marcel Raddatz
2026-04-10 11:24:20 +02:00
-
358edb9a12
fix(planner): improve DesktopDayTile visual polish
Marcel Raddatz
2026-04-10 11:23:05 +02:00
-
f97cf49bd0
feat(planner): overhaul desktop layout — flip tiles, no right panel
Marcel Raddatz
2026-04-10 11:04:26 +02:00
-
2cebf504f2
feat(planner): add RecipePickerDrawer slide-in drawer
Marcel Raddatz
2026-04-10 10:52:56 +02:00
-
d20cd53be2
feat(planner): add DesktopDayTile flip-tile component
Marcel Raddatz
2026-04-10 10:51:21 +02:00
-
2b7a7cceec
feat(planner): add EmptyDayTile component
Marcel Raddatz
2026-04-10 10:47:19 +02:00
-
f37f20d34e
feat(planner): add computeReasoningTags pure helper
Marcel Raddatz
2026-04-10 10:45:42 +02:00
-
f2071ca5d8
feat(planner): add flip-tile design tokens to app.css
Marcel Raddatz
2026-04-10 10:44:46 +02:00
-
16e1539ac0
chore: merge master — adopt SlotResponse.SlotRecipe in SuggestionItem
Marcel Raddatz
2026-04-10 10:08:38 +02:00
-
-
e5cdce164a
feat(recipes): give 'Bild entfernen' button persistent muted-red color
Marcel Raddatz
2026-04-10 09:40:51 +02:00
-
73b4fb84e7
feat(recipes): add (min) unit hint to Kochzeit label
Marcel Raddatz
2026-04-10 09:40:04 +02:00
-
932155c559
chore(backend): ignore application-dev.yml to prevent leaking local secrets
Marcel Raddatz
2026-04-10 09:39:01 +02:00
-
a5bb5d45a3
docs(config): annotate multipart limits explaining JSON body is not covered
Marcel Raddatz
2026-04-10 09:38:48 +02:00
-
b2a798d90e
docs(tests): clarify why fake base64 is acceptable in allowed-image-type test
Marcel Raddatz
2026-04-10 09:38:29 +02:00
-
23c821937f
test(recipes): add JPEG input test for ImageCompressor
Marcel Raddatz
2026-04-10 09:38:01 +02:00
-
9df6d6f0c6
test(recipes): verify null preview is stored when compressor returns null
Marcel Raddatz
2026-04-10 09:37:24 +02:00
-
ebaf42d83d
feat(recipes): return fail(422) when all ingredients filter to empty
Marcel Raddatz
2026-04-10 09:36:41 +02:00
-
56e6143fd2
feat(recipes): validate image MIME type on file select
Marcel Raddatz
2026-04-10 09:33:39 +02:00
-
ed769b18a4
fix(recipe): add server-side image size limit and use .matches() for type check
Marcel Raddatz
2026-04-10 09:27:35 +02:00
-
f11cca534f
feat(recipe): compress hero image to 400px preview on save
Marcel Raddatz
2026-04-10 09:14:35 +02:00
-
822b34cd14
feat(recipe-form): reject files > 5 MB and show Max. 5 MB hint
Marcel Raddatz
2026-04-10 09:11:57 +02:00
-
46f2ec45a3
feat(backend): limit multipart upload to 5 MB file / 6 MB request
Marcel Raddatz
2026-04-10 09:09:14 +02:00
-
90cff0c4d2
feat(recipe): validate heroImageUrl content type before persisting
Marcel Raddatz
2026-04-10 09:08:45 +02:00
-
b1eb9ed964
feat(recipes): send null instead of undefined for blank serves/cookTimeMin
Marcel Raddatz
2026-04-10 09:06:39 +02:00
-
44b3f06474
feat(recipes): filter ingredients with quantity <= 0 before API submission
Marcel Raddatz
2026-04-10 09:05:19 +02:00
-
dbc78a1883
test(recipe): cover null serves/cookTimeMin and capitalised effort rejection
Marcel Raddatz
2026-04-10 09:00:16 +02:00
-
30ba53099c
refactor(recipes): drop is_child_friendly column and remove from all layers
Marcel Raddatz
2026-04-10 08:56:57 +02:00