Skip to content

nightly: 3 production fixes (2026-05-29) - #192

Closed
njrini99-code wants to merge 3 commits into
mainfrom
nightly-health-check/2026-05-29
Closed

nightly: 3 production fixes (2026-05-29)#192
njrini99-code wants to merge 3 commits into
mainfrom
nightly-health-check/2026-05-29

Conversation

@njrini99-code

Copy link
Copy Markdown
Owner

Nightly Health-Check — 2026-05-29

Daily brief

24h totals (production)

Top patterns (Sentry, last 24h)

Rank Issue Events Severity Route / Action Diagnosis
1 JAVASCRIPT-NEXTJS-2M[Golf Auth Error]: Password is known to be weak and easy to guess… 12 error POST /golf/signup Supabase's leaked-password protection rejects breached passwords; signupAction was hitting the unknown-error branch and paging Sentry via logServerError instead of returning a form-level error.
2 JAVASCRIPT-NEXTJS-2NReferenceError: Can't find variable: Notification 5 error /golf/dashboard (iOS WKWebView) use-service-worker.ts:144 reads Notification.permission without checking the API exists — fails in iOS Safari WKWebView contexts where the Notification global is absent.
3 JAVASCRIPT-NEXTJS-2F\DialogContent` requires a `DialogTitle`…` 4 error /golf/dashboard (iOS WKWebView) PushPermissionSoftAsk auto-opens 2s after dashboard paint via a vaul <DrawerContent> (Radix Dialog underneath) but renders a plain <h2> instead of <DrawerTitle>, so Radix's a11y check pages console.error → Sentry.
4 JAVASCRIPT-NEXTJS-3 — Hydration Error 2 error /golf/dashboard/rounds Pre-deploy artifact (URL is a preview deployment helmv3-o01gtzgfn-…), not the production alias. Tracking only.
5 JAVASCRIPT-NEXTJS-2QAn unexpected response was received from the server. 1 error /golf/dashboard/my-qualifiers Single-occurrence transient — skipped per policy.
6 JAVASCRIPT-NEXTJS-2P — same shape as #5 1 error /golf/dashboard/my-qualifiers Single-occurrence transient — skipped per policy.

Performance (pg_stat_statements)

Not collected — the Supabase MCP authentication flow failed in this remote-execution sandbox (HTTP 403: Host not in allowlist). Recommend running /mcp interactively to re-authorize so future nightlies can pull admin_events, error_logs, and pg_stat_statements. No Vercel runtime errors point at slow queries, so DB health is not a blocker for tonight's fixes.

Deployment health

Time SHA Status Notes
03:28 UTC efbfe8d READY #191 — coachhelm chat team-context fix
02:29 UTC aa879ca READY #190 — coachhelm chat direct Anthropic provider
02:08 UTC 572f8e0 READY (promoted) #189 — WhatIfPanel onSimulate wire-up

No failed deploys.


Fixes applied

1. fix(sw): guard Notification reference for iOS WKWebView — [JAVASCRIPT-NEXTJS-2N]

  • File: src/hooks/golf/use-service-worker.ts:144
  • Pattern: ReferenceError: Can't find variable: Notification × 5 (iOS Safari WKWebView)
  • Diagnosis: Reading Notification.permission unconditionally. iOS Safari WKWebView (Capacitor) drops the Notification global. The sibling requestPushPermission callback below was already guarding via 'Notification' in window — apply the same guard at line 144 before reading .permission.

2. fix(auth): treat Supabase weak-password rejection as form error, not Sentry trace — [JAVASCRIPT-NEXTJS-2M]

  • File: src/app/golf/actions/auth.ts:241-267
  • Pattern: [Golf Auth Error]: Password is known to be weak… × 12 (POST /golf/signup)
  • Diagnosis: Supabase's HaveIBeenPwned-backed leaked-password protection rejects breached passwords. The local validatePassword doesn't know about HIBP, so these reach Supabase, get rejected, and fall through to the logServerError(...) unknown-error branch, paging Sentry. Add an explicit branch that matches weak_password / "Password is known to be weak" / "Password should…" and returns a form-friendly error inline without Sentry capture.

3. fix(a11y): give PushPermissionSoftAsk a DrawerTitle — [JAVASCRIPT-NEXTJS-2F]

  • File: src/components/golf/PushPermissionSoftAsk.tsx:98-100
  • Pattern: \DialogContent` requires a `DialogTitle`… × 4 (/golf/dashboard`, iOS WKWebView)
  • Diagnosis: PushPermissionSoftAsk mounts on the (dashboard) layout and opens its vaul <Drawer> 2s after first paint. Vaul wraps Radix Dialog, which emits a console.error (captured by Sentry) when no DialogTitle exists in the subtree. The component already had a visible <h2>Stay in the loop</h2> — promote it to <DrawerTitle> (zero visual change, fixes the a11y contract).

Verification

  • npx tsc --noEmit — passes (no new errors).
  • No related Vitest suites for the three touched files.
  • No DB migrations created (none required).

Open work the human should pick up

  • Supabase MCP auth — sandbox-allowlist block prevented pulling admin_events, error_logs, pg_stat_statements. Re-auth via /mcp to restore DB-side triage.
  • JAVASCRIPT-NEXTJS-3 Hydration Error on /golf/dashboard/rounds — only 2 events and the captured URL is a preview deployment (helmv3-o01gtzgfn-…), not a production alias. If it recurs against the production alias, root-cause it; for now it's tracked, not patched.
  • JAVASCRIPT-NEXTJS-2P / 2Q (my-qualifiers server response error) — single-occurrence transients today; if they cluster tomorrow, dig into the qualifier-entries server action.

https://claude.ai/code/session_01L5eAwNgYRoWeDj5WZ74zJt


Generated by Claude Code

claude added 3 commits May 29, 2026 04:16
Fixes JAVASCRIPT-NEXTJS-2N

Reading Notification.permission unconditionally threw
"ReferenceError: Can't find variable: Notification" inside iOS Safari
WKWebView (5 events / 24h on /golf/dashboard). The existing
requestPushPermission below already guards via 'Notification' in
window — apply the same check before reading .permission in register().

https://claude.ai/code/session_01L5eAwNgYRoWeDj5WZ74zJt
…Sentry trace

Fixes JAVASCRIPT-NEXTJS-2M

Supabase's leaked-password protection rejects passwords found in known
breaches with "Password is known to be weak and easy to guess". Our
signupAction was falling through the unknown-error branch and calling
logServerError, which paged Sentry (12 events / 24h on POST
/golf/signup). Detect weak_password / "Password should…" messages
specifically and surface them inline so the user sees the real reason
without the noise reaching Sentry.

https://claude.ai/code/session_01L5eAwNgYRoWeDj5WZ74zJt
Fixes JAVASCRIPT-NEXTJS-2F

PushPermissionSoftAsk auto-mounts on the /golf/dashboard layout and
opens its vaul Drawer 2s after paint. vaul's Content sits on top of
Radix Dialog primitives, which emit a console.error when no
DialogTitle/DrawerTitle is in the tree (4 events / 24h on
/golf/dashboard, all iOS WKWebView). The sheet already had a visible
"Stay in the loop" h2 — promote it to DrawerTitle so the screen-reader
contract is honored and the warning stops firing.

https://claude.ai/code/session_01L5eAwNgYRoWeDj5WZ74zJt

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

njrini99-code has reached the 50-review limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@coderabbitai

coderabbitai Bot commented May 29, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 7b0efacc-57d9-4e7a-b308-eb50a13a80db

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

.coderabbit.yaml has a parsing error

The CodeRabbit configuration file in this repository has a parsing error and default settings were used instead. Please fix the error(s) in the configuration file. You can initialize chat with CodeRabbit to get help with the configuration file.

💥 Parsing errors (1)
Validation error: Too big: expected string to have <=250 characters at "tone_instructions"
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch nightly-health-check/2026-05-29

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@njrini99-code
njrini99-code deleted the nightly-health-check/2026-05-29 branch June 2, 2026 10:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants