Commit Graph

  • 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