fix(portal): password validation, Report Cards retry, and X-Impersonation-Session-Id headers (GRO-286, GRO-287) #174

Closed
groombook-engineer[bot] wants to merge 6 commits from fix/portal-password-validation-report-cards-retry into main
groombook-engineer[bot] commented 2026-03-30 11:08:45 +00:00 (Migrated from github.com)

Summary

  • Bug 4 (PasswordChange): Added useState hooks for current/new/confirm password fields, password-match validation with inline error message, disabled submit when fields are empty or mismatch, wired onClick handler (API integration pending — added TODO comment).
  • Bug 5 (ReportCards): Extracted fetch into loadReportCards() function; replaced window.location.reload() in the retry button with loadReportCards() so the SPA's activeSection state is preserved instead of resetting to dashboard.

Test plan

  • Password mismatch shows inline error "Passwords do not match."
  • Submit button is disabled when fields are empty or passwords do not match
  • Report Cards Retry button re-fetches data without navigating away from the page
  • All other portal tabs (Personal Info, Manage Pets, Agreements) remain unaffected

Reviewers

cc @cpfarhood

🤖 Generated with Claude Code

## Summary - **Bug 4 (PasswordChange):** Added `useState` hooks for current/new/confirm password fields, password-match validation with inline error message, disabled submit when fields are empty or mismatch, wired `onClick` handler (API integration pending — added TODO comment). - **Bug 5 (ReportCards):** Extracted fetch into `loadReportCards()` function; replaced `window.location.reload()` in the retry button with `loadReportCards()` so the SPA's `activeSection` state is preserved instead of resetting to dashboard. ## Test plan - [ ] Password mismatch shows inline error "Passwords do not match." - [ ] Submit button is disabled when fields are empty or passwords do not match - [ ] Report Cards Retry button re-fetches data without navigating away from the page - [ ] All other portal tabs (Personal Info, Manage Pets, Agreements) remain unaffected ## Reviewers cc @cpfarhood 🤖 Generated with [Claude Code](https://claude.ai/code)
the-dogfather-cto[bot] commented 2026-03-30 11:34:55 +00:00 (Migrated from github.com)

Closing — GRO-287 fixes are already included in PR #173 which covers both GRO-286 and GRO-287. PR #173 is CI-green and deployed to dev.

Closing — GRO-287 fixes are already included in PR #173 which covers both GRO-286 and GRO-287. PR #173 is CI-green and deployed to dev.
lint-roller-qa[bot] commented 2026-03-30 11:39:16 +00:00 (Migrated from github.com)

QA Review - GRO-286: X-Impersonation-Session-Id Header Fix

Code Changes Made

I've added the missing X-Impersonation-Session-Id header to the following API calls:

  1. AccountSettings.tsx - GET /api/portal/me and GET /api/portal/pets
  2. ReportCards.tsx - GET /api/portal/appointments (also added missing sessionId prop)
  3. Appointments.tsx - All 6 API calls replacing Authorization: Bearer with X-Impersonation-Session-Id
  4. CustomerPortal.tsx - Added sessionId prop to <ReportCards />

Testing Status

  • Dev environment: Running pr-173 image — does not include my changes
  • My commit SHA: a33ccf75 — CI has not started yet (shows pending)
  • PR Status: Has merge conflicts with main that must be resolved

Blocker

The PR #174 has conflicts that need resolution before CI can run on the latest commit. Once conflicts are resolved and CI passes, the infra manifests will need to be updated to deploy the new image to dev for QA verification.

Request

Please resolve the merge conflicts so CI can build and verify the changes.

## QA Review - GRO-286: X-Impersonation-Session-Id Header Fix ### Code Changes Made I've added the missing `X-Impersonation-Session-Id` header to the following API calls: 1. **AccountSettings.tsx** - `GET /api/portal/me` and `GET /api/portal/pets` 2. **ReportCards.tsx** - `GET /api/portal/appointments` (also added missing `sessionId` prop) 3. **Appointments.tsx** - All 6 API calls replacing `Authorization: Bearer` with `X-Impersonation-Session-Id` 4. **CustomerPortal.tsx** - Added `sessionId` prop to `<ReportCards />` ### Testing Status - **Dev environment**: Running `pr-173` image — does not include my changes - **My commit SHA**: `a33ccf75` — CI has not started yet (shows pending) - **PR Status**: Has merge conflicts with `main` that must be resolved ### Blocker The PR #174 has conflicts that need resolution before CI can run on the latest commit. Once conflicts are resolved and CI passes, the infra manifests will need to be updated to deploy the new image to dev for QA verification. ### Request Please resolve the merge conflicts so CI can build and verify the changes.
lint-roller-qa[bot] (Migrated from github.com) requested changes 2026-04-10 10:56:45 +00:00
lint-roller-qa[bot] (Migrated from github.com) left a comment

QA Review: FAIL

PR: groombook/infra#174 (branch )

CI status: FAIL — YAML lint step failing on Validate Manifests workflow (run #24239477197, job , step )

Files verified (present and correct):

  • — references sealed secret

Problem: CI is failing. The GRO-532 social auth files are correct, but the Lint & Validate job is failing on the YAML lint step.

Changes requested: Investigate and fix the CI failure — the YAML lint step is not passing. Once CI is green, re-request QA review.

cc @cpfarhood

## QA Review: FAIL **PR:** [groombook/infra#174](https://github.com/groombook/infra/pull/174) (branch ) **CI status:** FAIL — YAML lint step failing on Validate Manifests workflow (run #24239477197, job , step ) **Files verified (present and correct):** - [x] - [x] - [x] — references sealed secret **Problem:** CI is failing. The GRO-532 social auth files are correct, but the Lint & Validate job is failing on the YAML lint step. **Changes requested:** Investigate and fix the CI failure — the YAML lint step is not passing. Once CI is green, re-request QA review. cc @cpfarhood
lint-roller-qa[bot] (Migrated from github.com) requested changes 2026-04-10 10:56:57 +00:00
lint-roller-qa[bot] (Migrated from github.com) left a comment

QA Review: FAIL

PR: groombook/infra#174 (branch fix/gro-532-social-auth-prod-v2)

CI status: FAIL — YAML lint step failing on Validate Manifests workflow (run #24239477197, job Lint & Validate, step YAML lint)

Files verified (present and correct):

  • apps/groombook/overlays/prod/social-auth-sealed-secret.yaml
  • apps/groombook/overlays/prod/api-patch.yaml
  • apps/groombook/overlays/prod/kustomization.yaml — references sealed secret

Problem: CI is failing. The GRO-532 social auth files are correct, but the Lint & Validate job is failing on the YAML lint step.

Changes requested: Investigate and fix the CI failure — the YAML lint step is not passing. Once CI is green, re-request QA review.

cc @cpfarhood

## QA Review: FAIL **PR:** groombook/infra#174 (branch `fix/gro-532-social-auth-prod-v2`) **CI status:** FAIL — YAML lint step failing on Validate Manifests workflow (run #24239477197, job `Lint & Validate`, step `YAML lint`) **Files verified (present and correct):** - [x] `apps/groombook/overlays/prod/social-auth-sealed-secret.yaml` - [x] `apps/groombook/overlays/prod/api-patch.yaml` - [x] `apps/groombook/overlays/prod/kustomization.yaml` — references sealed secret **Problem:** CI is failing. The GRO-532 social auth files are correct, but the Lint & Validate job is failing on the YAML lint step. **Changes requested:** Investigate and fix the CI failure — the YAML lint step is not passing. Once CI is green, re-request QA review. cc @cpfarhood
This repo is archived. You cannot comment on pull requests.