Conversation
* fix(admin): use typed 0.0 sentinel instead of avgIf for delivery stats avgIf expands to if(cond, double1, NULL) and Analytics Engine 422s because IF() branches must share a type. max(if(..., 0.0)) keeps both branches Double and still prefers metadata duration over pairing. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> * fix(admin): skip SQL strings and comments in avgIf lint CodeRabbit: the no-conditional-agg-if rule used a raw regex and flagged avgIf/sumIf/countIf inside literals and comments. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> * test(admin): run live AE delivery queries concurrently Avoid a 90s serial wait against a 60s Vitest timeout when the Analytics Engine endpoint is slow. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> * fix(admin): treat backslash-escaped quotes as inside SQL strings ClickHouse/AE allows \'. skipSqlQuote now skips that escape so avgIf inside a literal is not flagged. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
* fix(frontend): show clear trial and plan status in the navbar Trial orgs are stored as Stripe canceled until they subscribe, so the navbar was labeling an active trial as "Plan inactive". Resolve billing state in one place and show free-trial days left, trial over, plan active, or using credits. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> * fix(frontend): coerce navbar billing flags for vue-tsc Pinia store booleans can type as boolean | undefined, which failed the frontend typecheck when passed into resolveOrgBillingStatus. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> * fix(frontend): keep a single navbar billing link When Upgrade or Manage is shown, the status chip is no longer a second link to the same page. Plan active still uses the chip as the link. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> * fix(frontend): address navbar billing review comments Keep role=status on the non-interactive chip only, alphabetize the new translation keys, and document why paid orgs with credits still show as plan active. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
* fix(frontend): explain skipped organizations on CLI login page Replace the bare "Skipped organizations" line with a card explaining what it means, why an organization is skipped, and how to fix it. Applies to both the AI prompt flow (?ai=1) and the terminal flow. Soften the AI prompt API key notice and show it as an info card instead of a warning. * fix(frontend): address CLI login skipped-orgs review comments Use empty-state copy when no key exists, key skipped orgs by id, mention pending invites, and drop the noisy live region. * fix(frontend): accept trailing-slash AI login URLs Treat ?ai=1/ as AI mode and let the skipped-orgs card reload the page after the user fixes access. * fix(frontend): align AI query mock and skipped-org i18n key order
…3271) * feat(notifications): allow hosted upload of iOS APNs and Android FCM secrets Add encrypted secret_ciphertext storage for notification provider configs so hosted customers can upload .p8 and service-account JSON in the console instead of relying on worker env vars. Self-host secret_ref path is unchanged. * fix(i18n): add translation context for notification secret upload keys --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
* fix(frontend): say CLI login keys can be rotated later * fix(frontend): keep trusted-terminal guidance on CLI login key * test(frontend): assert CLI login trusted-terminal copy
…g emails (#3253) * feat(cli): add --accept-incompatible for handled native mismatches Let uploads and channel sets mark a native-package mismatch as intentional so the crash-warning email is skipped when the app already guards missing plugins at runtime. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> * fix(cli): reject SDK acceptIncompatible with ignoreCompatibilityCheck Keep the upload contract consistent with CLI flags: accepting a handled native mismatch still requires running the compatibility check. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> * fix(cli): clarify channel set accept-incompatible help Channel set never sends the crash-warning email, so its flag text now describes the warning-and-continue behavior. Email skip outcomes are covered by a shared helper used by /private/events. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> * fix(cli): parse SDK upload and channel options at the boundary Reject non-boolean acceptIncompatible and conflicting ignoreCompatibilityCheck before mapping to internal options. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> * fix(cli): share channel-specific accept-incompatible help text Keep the crash-warning-email wording on bundle upload and a named channel variant for channel set. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> * fix(api): split bundle-incompatible email helpers to lower complexity Extract PostHog tracking and channel/version lookups from buildBundleIncompatibleBentoEvent so Sonar cognitive complexity stays under the 15 limit. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> * fix(api): stringify apikey id before bundle-incompatible email tracking trackBundleIncompatibleEmail expects a string apikeyId; apikeys.id is numeric, so coerce it with toIdString at the call site. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> * fix(api): record sent email after Bento lookup Skip PostHog sent/sent_expected when org/app lookup fails and the crash-warning email is not actually sent. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> * fix(api): note sent tracking waits on lookup Keep PostHog sent/sent_expected aligned with Bento emission. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Contributor
|
@coderabbitai review |
Drop shareInFlightApiKeyLoad after CLI key loading moved to Getting Started; add optional Playwright capture spec for PR screenshots. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com>
Contributor
|
@coderabbitai review |
… setup RPC Re-export checklist step helpers for typecheck, map legacy publish_app_question resume to details, and drop report_app_onboarding_setup after main removed it. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com>
Contributor
|
@coderabbitai review |
…moval Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com>
Contributor
|
@coderabbitai review |
Contributor
Visual diff failedVisual diff did not produce a report. Check the workflow logs and artifacts. Commit: Open |
- Add Tinbase edge stubs for local screenshot capture when Docker Supabase is unavailable - Fix onboarding flow steps (app id entry then icon skip) and webp export via ffmpeg - Add real console screenshot for 2nd+ app getting-started page Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com>
Contributor
|
@coderabbitai review |
…ght tests - AppOnboardingCliSteps uses getAppOnboardingStepIds(todo_list_version) so v3 compact checklist renders 7 steps instead of always using v2's 12 - Update onboarding-setup.spec.ts getting-started paths to expect getting-started-page/getting-started-cli-panel instead of fullscreen onboarding-setup-cli - Fixture: mount fullscreen checklist at /onboarding/app for exploration tests and grant dashboard exploration on explore click Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com>
Contributor
|
@coderabbitai review |
Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com>
Contributor
|
@coderabbitai review |
…OnboardingFlow Re-port publish intent option, development-environment question, resume behavior, and WebNative recommendation from main while preserving the getting-started CLI panel and second-app redirect carve-outs from #3390. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com>
Contributor
|
@coderabbitai review |
…sion Fixes ts/no-use-before-define lint failure blocking CI Playwright. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com>
Contributor
|
@coderabbitai review |
…update unit tests Match main v-if on onboarding-create-org for Playwright register spec. Refresh source-string unit asserts for trackedAnalyticsSteps and restored WebNative flow; stub invokeCapgoApi on mount tests. Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com>
Contributor
|
@coderabbitai review |
|
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary (AI generated)
AppOnboardingFlow.vue(publish intent option, development-environment question, resume behavior, WebNative recommendation card)getting-started-cli-panel, version-aware CLI steps, and noAPP_ONBOARDING_STEP_IDSre-exportMotivation (AI generated)
Playwright
register.spec.tstreatment test failed because Michael's restoredAppOnboardingFlow.vueused a staticintentOptionsarray without thepublishintent orpublish_app_questionstep. Treatment users could not see[data-test="onboarding-intent-publish"]after resume.Business Impact (AI generated)
Unblocks onboarding A/B test validation for WebNativeApp publish-intent and hosted-builder recommendation flows without regressing the second-app getting-started experience.
Test Plan (AI generated)
bun run lint:deadcode— greenbun run typecheck:frontend— greenregister.spec.tsWebNative treatment testonboarding-setup.spec.ts(no regression)Generated with AI
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.