Commit Graph

  • 6cc79836d5 feat(shopping): add RecipeReferencePanel.svelte component Marcel Raddatz 2026-04-04 18:55:31 +02:00
  • 5ac8f1768f feat(shopping): add AddCustomItem.svelte component Marcel Raddatz 2026-04-04 18:54:47 +02:00
  • 7bdadbe962 feat(shopping): add ChecklistItem.svelte component Marcel Raddatz 2026-04-04 18:54:12 +02:00
  • 2151dff4db feat(shopping): add ShoppingHeader.svelte component Marcel Raddatz 2026-04-04 18:53:36 +02:00
  • e831480860 feat(shopping): add +page.server.ts with load function and form actions Marcel Raddatz 2026-04-04 18:52:44 +02:00
  • 92922533ac feat(shopping): finalize GET /v1/shopping-list endpoint and regenerate OpenAPI types Marcel Raddatz 2026-04-04 18:49:08 +02:00
  • 16b70bd818 feat(shopping): add GET /v1/shopping-lists endpoint and planner-only guard Marcel Raddatz 2026-04-04 18:35:31 +02:00
  • 5325f4827e feat(shopping): refactor generateFromPlan to merge strategy Marcel Raddatz 2026-04-04 18:33:15 +02:00
  • c26c2e1973 feat(shopping): add getByWeekStart to ShoppingService Marcel Raddatz 2026-04-04 18:30:41 +02:00
  • 93e8bf9e41 feat(shopping): extend response with generatedAt, filteredStaplesCount, RecipeRef Marcel Raddatz 2026-04-04 18:29:07 +02:00
  • 7e254fc280 feat(shopping): add week-based shopping list repository query Marcel Raddatz 2026-04-04 18:23:43 +02:00
  • 3be9f502c6 feat(auth): add @RequiresHouseholdRole annotation with interceptor Marcel Raddatz 2026-04-04 18:22:47 +02:00
  • 2f690eb3cb feat(common): add ForbiddenException with 403 handler Marcel Raddatz 2026-04-04 18:18:27 +02:00
  • 2253c76287 feat(shopping): add generated_at column to shopping_list Marcel Raddatz 2026-04-04 18:17:12 +02:00
  • e12fb72fc2 refactor(specs): remove real-time sync from D1 shopping list spec Marcel Raddatz 2026-04-04 16:45:30 +02:00
  • 693ec2b997 feat(specs): Add-to-Plan flows — screens C4, C5, C6 Marcel Raddatz 2026-04-04 16:43:18 +02:00
  • e73a84af5f fix(recipes): correct effort map casing to match backend values Marcel Raddatz 2026-04-04 08:16:04 +02:00
  • 27e09a77d6 fix(recipes): cast JPQL null params to avoid lower(bytea) error on PostgreSQL Marcel Raddatz 2026-04-03 22:47:47 +02:00
  • 6d76da5542 Merge pull request 'feat: C3 — Variety review screen (Issue #28)' (#41) from feat/issue-28-variety-review into master marcel 2026-04-03 11:37:53 +02:00
  • 8e82213d1e fix(variety): remove unused total, add warning border, fix abbreviation, aria Marcel Raddatz 2026-04-03 11:37:26 +02:00
  • cb15143c30 refactor(variety): fix \$derived.by pattern, remove dead import, use pure functions Marcel Raddatz 2026-04-03 11:36:00 +02:00
  • 9adf786b8f test(variety): extract and test sub-score/warnings pure functions Marcel Raddatz 2026-04-03 11:32:20 +02:00
  • 1bf929280b test(variety): add all-zero edge case test for EffortBar Marcel Raddatz 2026-04-03 11:30:19 +02:00
  • 75c860a62b test(variety): add boundary tests for VarietyScoreHero (score=0,4,7,10) Marcel Raddatz 2026-04-03 11:29:26 +02:00
  • 8ad636f825 feat(variety): implement C3 variety review screen (Issue #28) Marcel Raddatz 2026-04-03 11:23:29 +02:00
  • 7c07bc443b feat(suggestions): C2 — Meal suggestions (variety-aware) (#40) Marcel Raddatz 2026-04-03 11:18:45 +02:00
  • 05e47c3dac feat(planner): C1 — Weekly planner home screen marcel 2026-04-03 11:07:56 +02:00
  • 5d2bb9e84e fix(planner): address all PR review blockers Marcel Raddatz 2026-04-03 11:07:47 +02:00
  • e3f8d8ad73 feat(planner): implement C1 weekly planner home screen (#26) Marcel Raddatz 2026-04-03 11:01:17 +02:00
  • 0511a735a5 Merge pull request 'feat(recipes): B3 — Add/edit recipe form with dynamic ingredients, steps, tag chips' (#38) from feat/issue-23-recipe-form into master marcel 2026-04-03 10:36:19 +02:00
  • 33f3b30cb4 feat(recipes): style RecipeForm with design system + split-panel layout Marcel Raddatz 2026-04-03 10:35:35 +02:00
  • e4d3008139 feat(recipes): display form error from \$page.form in RecipeForm Marcel Raddatz 2026-04-03 10:31:18 +02:00
  • 6505cb4251 test(recipes): add action tests and harden create/update form actions Marcel Raddatz 2026-04-03 10:27:54 +02:00
  • 3d49e6b7bf feat(recipes): add /recipes/[id]/edit route with update action Marcel Raddatz 2026-04-03 10:20:45 +02:00
  • 4e2b0b5727 feat(recipes): add /recipes/new route with create action Marcel Raddatz 2026-04-03 10:19:27 +02:00
  • 2cef8a1169 feat(recipes): add RecipeForm component — add/edit two-state form Marcel Raddatz 2026-04-03 10:17:17 +02:00
  • fcf0f297bb Merge pull request 'feat(recipes): B2 — Recipe detail view with hero, ingredients, steps' (#37) from feat/issue-24-recipe-detail into master marcel 2026-04-03 10:07:27 +02:00
  • 0256b4360b fix(recipes): address B2 review — tags, sort, edit link, types, a11y, tests Marcel Raddatz 2026-04-03 10:07:19 +02:00
  • 00c48a7c96 feat(recipes): implement B2 recipe detail page with mobile/desktop layout Marcel Raddatz 2026-04-03 10:02:20 +02:00
  • ce860d68e4 feat(recipes): add recipe detail load function with 404 handling Marcel Raddatz 2026-04-03 10:00:02 +02:00
  • b39d04acce feat(recipes): add StepList component with numbered circles Marcel Raddatz 2026-04-03 09:58:39 +02:00
  • c7e56a173d feat(recipes): add IngredientList component (read-only) Marcel Raddatz 2026-04-03 09:57:36 +02:00
  • 86a25eb038 feat(recipes): add RecipeHero component with image/no-image variants Marcel Raddatz 2026-04-03 09:56:35 +02:00
  • a34c6f30f2 Merge pull request 'feat(recipes): B1 — Recipe Library page with search and effort filtering' (#36) from feat/issue-22-recipe-library into master marcel 2026-04-03 09:53:38 +02:00
  • 9bb6293d9f fix(recipes): address review feedback — shared type, design system tokens, test coverage Marcel Raddatz 2026-04-03 09:53:32 +02:00
  • 47c748145d feat(recipes): implement recipe library page with search and effort filtering Marcel Raddatz 2026-04-03 09:49:39 +02:00
  • a25286e385 feat(recipes): load recipe list from API in page server Marcel Raddatz 2026-04-03 09:45:43 +02:00
  • a733e8dd66 feat(recipes): add RecipeGrid with 2/4-col responsive grid and empty state Marcel Raddatz 2026-04-03 09:44:05 +02:00
  • 35ed6ca878 feat(recipes): add FilterChipRow with effort filter chips Marcel Raddatz 2026-04-03 09:43:06 +02:00
  • dc99459a2e feat(recipes): add RecipeCard component with compact/full image variants Marcel Raddatz 2026-04-03 09:41:56 +02:00
  • 021d308a71 feat(staples): A3/D3 — Pantry staples toggle UI marcel 2026-04-03 09:35:03 +02:00
  • df95462094 refactor(staples): convert dynamic userEvent import to static in CategorySection test feat/issue-20-pantry-staples Marcel Raddatz 2026-04-03 09:30:19 +02:00
  • 2d6ddf0e48 fix(staples): apply design-system styles to nav links and settings heading Marcel Raddatz 2026-04-03 09:29:53 +02:00
  • 73b33ee956 fix(staples): apply design-system button spec to StapleChip (13px, tracking, font-sans) Marcel Raddatz 2026-04-03 09:28:50 +02:00
  • 8daaa0e21d fix(staples): pass ctx from URL through load function; fix script order in page Marcel Raddatz 2026-04-03 09:27:43 +02:00
  • 45b7e7b003 fix(staples): add role guard — only planer role can toggle staples Marcel Raddatz 2026-04-03 09:25:40 +02:00
  • 3581af2bf9 fix(staples): forward backend error status code instead of always 500 Marcel Raddatz 2026-04-03 09:25:06 +02:00
  • 21b873b85b fix(staples): validate isStaple is boolean before forwarding to backend Marcel Raddatz 2026-04-03 09:24:35 +02:00
  • 65f18cfb43 test(staples): cover API failure fallback in page load Marcel Raddatz 2026-04-03 09:24:07 +02:00
  • 7b497be1c1 test(staples): add empty categories edge case to StaplesManager Marcel Raddatz 2026-04-03 09:23:48 +02:00
  • 7979076f5e feat(invite): stub household invite page as onboarding Continue target Marcel Raddatz 2026-04-02 20:16:46 +02:00
  • d68a9d9312 refactor(setup): redirect to /household/staples?ctx=onboarding after household creation Marcel Raddatz 2026-04-02 20:16:33 +02:00
  • 97175e7d9d feat(staples): add staples page with onboarding and settings layouts Marcel Raddatz 2026-04-02 20:16:08 +02:00
  • 3550d681dc feat(staples): load categories and ingredients, group by category Marcel Raddatz 2026-04-02 20:14:25 +02:00
  • 54df70a442 feat(staples): add PATCH proxy server route for ingredient staple toggle Marcel Raddatz 2026-04-02 20:13:02 +02:00
  • d577e0231c feat(staples): add StaplesManager with optimistic toggle and debounced PATCH Marcel Raddatz 2026-04-02 20:11:51 +02:00
  • 376dc03646 feat(staples): add CategorySection component with eyebrow heading and chip row Marcel Raddatz 2026-04-02 20:07:51 +02:00
  • 7bdc049461 feat(staples): add StapleChip component with aria-pressed toggle and focus ring Marcel Raddatz 2026-04-02 20:06:32 +02:00
  • 7c66dcad3a refactor(onboarding): clarify test comment and remove unused response mock Marcel Raddatz 2026-04-02 19:32:44 +02:00
  • 01a321caa9 test(onboarding): add ProgressSidebar test for currentStep=3 (all prior steps completed) Marcel Raddatz 2026-04-02 19:31:56 +02:00
  • 2d1604492d feat(onboarding): add max-length validation for household name (100 chars) Marcel Raddatz 2026-04-02 19:31:13 +02:00
  • 3742364956 fix(onboarding): make HouseholdSetupForm subtitle responsive (12px mobile, 14px desktop) Marcel Raddatz 2026-04-02 19:30:23 +02:00
  • 36dfea34cc fix(onboarding): make HouseholdSetupForm heading responsive and use font-medium Marcel Raddatz 2026-04-02 19:29:52 +02:00
  • 66525484a6 fix(onboarding): correct Tailwind arbitrary font-family syntax in HouseholdSetupForm Marcel Raddatz 2026-04-02 19:29:21 +02:00
  • e5614ccf30 refactor(onboarding): remove aria-hidden workaround from progress sidebar Marcel Raddatz 2026-04-02 19:28:46 +02:00
  • 6de7f5a9b5 feat(onboarding): add A2 household setup page with responsive progress sidebar layout Marcel Raddatz 2026-04-02 19:20:02 +02:00
  • e85a7ca313 feat(onboarding): add household setup page server action and load guard Marcel Raddatz 2026-04-02 19:14:39 +02:00
  • 175bfbe7dd feat(onboarding): add HouseholdSetupForm component with disabled-until-valid continue button Marcel Raddatz 2026-04-02 19:13:41 +02:00
  • b9ef06fd73 feat(onboarding): add ProgressSidebar component with 3-step active/completed/future states Marcel Raddatz 2026-04-02 19:08:38 +02:00
  • 09333ccc0a test(auth): verify security context is stored in session after login and signup Marcel Raddatz 2026-04-02 18:55:25 +02:00
  • 93ce1eaeac refactor(auth): add comments, clearContext on logout, explain session auth Marcel Raddatz 2026-04-02 18:52:16 +02:00
  • 61249af086 feat(auth): add secure flag to JSESSIONID cookie and test JSESSIONID cookie setting Marcel Raddatz 2026-04-02 18:50:34 +02:00
  • 16f0feb8d5 fix(auth): fix mock responses in tests and block open redirect in login Marcel Raddatz 2026-04-02 18:48:48 +02:00
  • 0aa65214fc fix(auth): resolve broken signup/login flow end-to-end Marcel Raddatz 2026-04-02 17:31:29 +02:00
  • ab3363eeec refactor(auth): use shared BrandPanel on login page Marcel Raddatz 2026-04-02 16:45:22 +02:00
  • 999e54de86 feat(auth): build login page with LoginForm, brand panel, and title Marcel Raddatz 2026-04-02 16:21:31 +02:00
  • 73acc0c638 feat(auth): add login server action with validation and redirect Marcel Raddatz 2026-04-02 16:20:02 +02:00
  • c27c97ff7d feat(auth): add LoginForm component with validation and password toggle Marcel Raddatz 2026-04-02 16:18:49 +02:00
  • b3607ca47a test(auth): add password length boundary tests (7 fails, 8 passes) Marcel Raddatz 2026-04-02 15:07:42 +02:00
  • 7de18740f2 test(auth): add multi-error test for empty form submission Marcel Raddatz 2026-04-02 15:07:07 +02:00
  • 6d0f00c8fb feat(auth): add use:enhance and server error display to signup form Marcel Raddatz 2026-04-02 15:06:21 +02:00
  • bd9e1334e0 feat(auth): add server-side validation to signup form action Marcel Raddatz 2026-04-02 15:02:33 +02:00
  • 82840bb420 fix(auth): center signup form on wide desktop screens Marcel Raddatz 2026-04-02 15:01:03 +02:00
  • 845e669cde feat(auth): add page title to signup screen Marcel Raddatz 2026-04-02 15:00:02 +02:00
  • afcea6590d feat(auth): add autocomplete attributes to signup form inputs Marcel Raddatz 2026-04-02 14:58:59 +02:00
  • 75a13d9df1 fix(auth): style login link green/font-medium per spec Marcel Raddatz 2026-04-02 14:57:47 +02:00
  • b71c98662b fix(auth): use --green-dark on submit button for WCAG AA contrast Marcel Raddatz 2026-04-02 14:56:49 +02:00
  • bfa8f20fe3 test(auth): add no-nav-chrome regression test for signup page Marcel Raddatz 2026-04-02 14:48:23 +02:00
  • 596652d6e4 feat(auth): add signup page with form action Marcel Raddatz 2026-04-02 14:47:36 +02:00
  • d3a8518298 feat(auth): add SignupForm component with validation and password toggle Marcel Raddatz 2026-04-02 14:45:54 +02:00