Skip to content

feat(frontend): promote priority support for Capgo plugins - #2828

Open
WcaleNieWolny wants to merge 8 commits into
mainfrom
wolny/priority-support-plugins
Open

feat(frontend): promote priority support for Capgo plugins#2828
WcaleNieWolny wants to merge 8 commits into
mainfrom
wolny/priority-support-plugins

Conversation

@WcaleNieWolny

@WcaleNieWolny WcaleNieWolny commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a deterministic daily dashboard rotation between the Builder and priority-support promotions, with eligibility-aware fallback
  • add a three-slide, accessible priority-support presentation with a realistic one-shot GitHub-to-Capgo resolution story
  • connect the final CTA to the existing verified GitHub profile flow in account settings
  • lazy-load the presentation, localize its visible narrative, enrich analytics, and add focused regression coverage

Motivation

Paid and trial users already receive priority support for Capgo plugins, but the benefit is easy to miss. This experience makes the support path concrete, encourages users to report bugs and request features, and explains how linking GitHub lets Capgo recognize their issues automatically.

Business Impact

Showing the complete support loop builds confidence before users need help and increases the chance they experience fast maintainer support directly. That should strengthen trust in Capgo and improve awareness of a benefit already included in paid plans and trials.

Test Plan

  • bun lint
  • bun run lint:deadcode
  • bun typecheck
  • TZ=UTC bun test:unit — 175 files, 1,207 tests passed
  • CHOKIDAR_USEPOLLING=true bun run build
  • JSON and staged-diff validation
  • independent hostile reviews of logic, maintainability, visual behavior, accessibility, reduced motion, and animation lifecycle — approved

Review in cubic

Summary by CodeRabbit

  • New Features

    • Added rotating dashboard promotions for Builder and Priority Support.
    • Added plan-specific Priority Support banners, an interactive presentation, and an animated GitHub support workflow.
    • Added GitHub connection handling through Account Settings.
    • Added responsive, accessible, dark-mode, and reduced-motion support.
  • Bug Fixes

    • Improved promotion eligibility handling and prevented outdated results from appearing.
    • Refined promotional banner animations with reusable reduced-motion support.
  • Tests

    • Added coverage for promotion rotation, eligibility, error handling, and GitHub connection flows.

@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Changes

The PR adds deterministic priority-support promotion selection, organization eligibility checks, dashboard banners, a localized presentation modal, and an animated support story. It also adds GitHub connection handling, shared fade-in styling, component declarations, and tests.

Priority Support Promotion

Layer / File(s) Summary
Promotion rules and eligibility
src/services/prioritySupportPromo.ts, messages/en.json, tests/priority-support-promo.unit.test.ts
Adds UTC-day variant selection, eligibility checks, readiness arbitration, GitHub query consumption, localization, and unit coverage.
Dashboard promotion wiring
src/pages/app/[app].vue, src/components/dashboard/BuilderPromoBanner.vue, src/components/dashboard/PrioritySupportPromoBanner.vue, src/components/dashboard/DeploymentBanner.vue, src/styles/style.css, src/components.d.ts
Adds daily refresh handling and coordinates support and builder banner eligibility, readiness, rendering, analytics, modal opening, component declarations, and shared fade-in behavior.
Presentation modal and support story
src/components/dashboard/PrioritySupportPresentationModal.vue, src/components/dashboard/PrioritySupportStory.vue, tests/priority-support-promo.unit.test.ts
Adds localized promotional slides and an animated issue-resolution story with keyboard controls, focus handling, responsive layouts, and reduced-motion support.
GitHub account handoff
src/pages/settings/account/index.vue, playwright/e2e/priority-support.spec.ts
Consumes GitHub connection query parameters, removes them from the route, opens the GitHub profile dialog, and tests the handoff flow.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant AppPage
  participant PrioritySupportPromo
  participant PrioritySupportPromoBanner
  participant PresentationModal
  participant AccountSettings
  AppPage->>PrioritySupportPromo: determine daily active variant
  AppPage->>PrioritySupportPromoBanner: render eligible support promotion
  PrioritySupportPromoBanner->>PresentationModal: open presentation
  PresentationModal->>AccountSettings: navigate with GitHub connection query
  AccountSettings->>PrioritySupportPromo: consume connection query
  AccountSettings->>AccountSettings: open GitHub profile dialog
Loading

Possibly related PRs

Suggested labels: codex

Suggested reviewers: riderx

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the primary change: promoting priority support for Capgo plugins in the frontend.
Description check ✅ Passed The description explains the changes and test plan clearly, but it omits the template's Screenshots and Checklist sections.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

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

@cursor
cursor Bot requested a review from riderx August 2, 2026 13:12

@cursor cursor 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.

Stale comment

Risk: medium. Left a non-blocking comment (not approved): Cursor Bugbot was not present, and this PR is above the low-risk approval threshold due to substantial new dashboard promo UI and account-settings behavior. Assigned a human reviewer for the user-facing changes.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@coderabbitai coderabbitai Bot added the codex label Aug 2, 2026
@codspeed-hq

codspeed-hq Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Merging this PR will not alter performance

✅ 43 untouched benchmarks
⏩ 2 skipped benchmarks1


Comparing wolny/priority-support-plugins (6a63627) with main (62fdcfc)

Open in CodSpeed

Footnotes

  1. 2 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 7

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/components/dashboard/PrioritySupportPresentationModal.vue`:
- Line 293: Remove one ownership path for slide accessibility state: retain the
declarative :inert and :aria-hidden bindings on the slide articles, and delete
the corresponding imperative slide.inert and slide.setAttribute('aria-hidden',
...) writes from initDeck and go. Apply the same change to all three affected
slide elements while preserving the cur-based bindings.
- Line 389: Add the missing priority-support-story-github-handle translation key
to messages/en.json with the appropriate English GitHub handle text, matching
the key used by PrioritySupportPresentationModal.vue.

In `@src/components/dashboard/PrioritySupportPromoBanner.vue`:
- Around line 192-211: Move the fade-in keyframes, .animate-fade-in animation
rule, and prefers-reduced-motion override from PrioritySupportPromoBanner.vue
and the other three components into the shared src/styles/style.css stylesheet.
Remove all duplicated local definitions while preserving the existing class name
and animation behavior.

In `@src/components/dashboard/PrioritySupportStory.vue`:
- Around line 2202-2291: Consolidate the duplicated CSS blocks for
.pss-merge-box, .pss-confirm-merge, .pss-merged-state, and .pss-reply-stack into
single readable definitions, preserving the intended effective values including
.pss-merged-state’s flex layout, left alignment, and required positioning.
Remove the unused .pss-resolution-timeline and .pss-priority-label rules because
neither selector appears in the template.
- Around line 157-158: Update the selector guard in startStory to log a warning
identifying the unresolved story selector before returning, while preserving the
existing early-return behavior and type narrowing. Include enough
selector/context information in the warning to diagnose which required element
is missing.

In `@tests/priority-support-promo.unit.test.ts`:
- Around line 74-85: Validate that the `<template>` and `<style scoped>` markers
are found in the loaded SFC source before slicing in the imperative story
selector test. Assert both index values are non-negative, then use those
validated indices to derive script and template so marker changes fail
explicitly rather than producing misleading assertions.
- Around line 13-86: Update all five test cases in the “priority support
promotion” describe block to use it.concurrent() instead of it(), preserving
their existing assertions and bodies.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 47431750-2c5a-4b4b-b9ac-9ff16079df08

📥 Commits

Reviewing files that changed from the base of the PR and between 62fdcfc and 3ee2531.

📒 Files selected for processing (10)
  • messages/en.json
  • src/components.d.ts
  • src/components/dashboard/BuilderPromoBanner.vue
  • src/components/dashboard/PrioritySupportPresentationModal.vue
  • src/components/dashboard/PrioritySupportPromoBanner.vue
  • src/components/dashboard/PrioritySupportStory.vue
  • src/pages/app/[app].vue
  • src/pages/settings/account/index.vue
  • src/services/prioritySupportPromo.ts
  • tests/priority-support-promo.unit.test.ts
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • Cap-go/capacitor-updater (manual)

Comment thread src/components/dashboard/PrioritySupportPresentationModal.vue
Comment thread src/components/dashboard/PrioritySupportPresentationModal.vue
Comment thread src/components/dashboard/PrioritySupportPromoBanner.vue Outdated
Comment thread src/components/dashboard/PrioritySupportStory.vue Outdated
Comment thread src/components/dashboard/PrioritySupportStory.vue Outdated
Comment thread tests/priority-support-promo.unit.test.ts
Comment thread tests/priority-support-promo.unit.test.ts Outdated

@cubic-dev-ai cubic-dev-ai 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.

All reported issues were addressed across 10 files

Tip: cubic can generate docs of your entire codebase and keep them up to date. Try it here.

Re-trigger cubic

Comment thread src/components/dashboard/PrioritySupportPresentationModal.vue
Comment thread src/components/dashboard/PrioritySupportStory.vue Outdated
Comment thread src/services/prioritySupportPromo.ts
Comment thread tests/priority-support-promo.unit.test.ts Outdated

@cursor cursor 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.

Stale comment

Risk: medium. Left a non-blocking comment (not approved): Cursor Bugbot was not present, and this PR is above the low-risk approval threshold due to substantial new dashboard promo UI and account-settings behavior. Human review remains needed; reviewer already assigned.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/components/dashboard/PrioritySupportPresentationModal.vue (2)

9-9: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Use the frontend import alias.

Replace the relative import with ~/components/dashboard/PrioritySupportStory.vue.

As per coding guidelines: "Import using ~/ alias for src/ directory in frontend code instead of relative paths."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/dashboard/PrioritySupportPresentationModal.vue` at line 9,
Update the PrioritySupportStory import in PrioritySupportPresentationModal.vue
to use the frontend ~/ alias targeting
components/dashboard/PrioritySupportStory.vue instead of the relative path.

Source: Coding guidelines


231-241: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Cancel stale lifecycle continuations after nextTick().

A later prop change can invalidate either watcher while it awaits nextTick(). The old continuation can then initialize a closed modal or restart an inactive story.

  • src/components/dashboard/PrioritySupportPresentationModal.vue#L231-L241: register watcher cleanup or use an activation token. Skip initDeck() and focus when the open operation is stale.
  • src/components/dashboard/PrioritySupportStory.vue#L488-L495: register watcher cleanup or use an activation token. Skip startStory() when the active operation is stale.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/dashboard/PrioritySupportPresentationModal.vue` around lines
231 - 241, Cancel stale watcher continuations after nextTick in both
src/components/dashboard/PrioritySupportPresentationModal.vue lines 231-241 and
src/components/dashboard/PrioritySupportStory.vue lines 488-495. In the open
watcher, use cleanup or an activation token so stale operations skip initDeck()
and modalEl focus; in the story watcher, apply the same guard so stale
operations skip startStory().
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/components/dashboard/DeploymentBanner.vue`:
- Around line 467-470: Move the DeploymentBanner animation offset from the
inline style into an approved shared animation class in src/styles/style.css and
apply that class to the banner. In
src/components/dashboard/PrioritySupportStory.vue, replace the scoped .pss-*
styles with equivalent Tailwind and DaisyUI utilities; if the animated mock
cannot be represented with utilities, document and approve the narrowly scoped
component-CSS exception.

---

Outside diff comments:
In `@src/components/dashboard/PrioritySupportPresentationModal.vue`:
- Line 9: Update the PrioritySupportStory import in
PrioritySupportPresentationModal.vue to use the frontend ~/ alias targeting
components/dashboard/PrioritySupportStory.vue instead of the relative path.
- Around line 231-241: Cancel stale watcher continuations after nextTick in both
src/components/dashboard/PrioritySupportPresentationModal.vue lines 231-241 and
src/components/dashboard/PrioritySupportStory.vue lines 488-495. In the open
watcher, use cleanup or an activation token so stale operations skip initDeck()
and modalEl focus; in the story watcher, apply the same guard so stale
operations skip startStory().
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 054b3350-c02e-46f4-afaa-7c3f0ae2adc5

📥 Commits

Reviewing files that changed from the base of the PR and between 3ee2531 and 3a0ad4e.

📒 Files selected for processing (9)
  • messages/en.json
  • src/components/dashboard/BuilderPromoBanner.vue
  • src/components/dashboard/DeploymentBanner.vue
  • src/components/dashboard/PrioritySupportPresentationModal.vue
  • src/components/dashboard/PrioritySupportPromoBanner.vue
  • src/components/dashboard/PrioritySupportStory.vue
  • src/components/dashboard/TrialBanner.vue
  • src/styles/style.css
  • tests/priority-support-promo.unit.test.ts
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • Cap-go/capacitor-updater (manual)
💤 Files with no reviewable changes (3)
  • src/components/dashboard/TrialBanner.vue
  • src/components/dashboard/PrioritySupportPromoBanner.vue
  • src/components/dashboard/BuilderPromoBanner.vue

Comment thread src/components/dashboard/DeploymentBanner.vue Outdated

@cursor cursor 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.

Stale comment

Risk: medium. Left a non-blocking comment (not approved): Cursor Bugbot was not present, and this PR is above the low-risk approval threshold due to substantial new dashboard promo UI and account-settings behavior. Human review remains needed; reviewer already assigned.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/components/dashboard/PrioritySupportStory.vue (1)

489-496: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Cancel stale story startup.

When active becomes false while this watcher waits for nextTick(), the newer watcher stops the story. The earlier watcher then resumes and calls startStory() for an inactive component. This can run the GSAP timeline and matrix animation while the story is hidden.

Use onCleanup or a request token. Check it after await nextTick() before calling startStory().

Proposed fix
-watch([() => props.active, reduce], async ([active]) => {
+watch([() => props.active, reduce], async ([active], _, onCleanup) => {
+  let cancelled = false
+  onCleanup(() => {
+    cancelled = true
+  })
+
   if (!active) {
     stopStory()
     return
   }
   await nextTick()
+  if (cancelled || !props.active)
+    return
   startStory()
 }, { immediate: true })
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/dashboard/PrioritySupportStory.vue` around lines 489 - 496,
Update the watcher around active and reduce to cancel stale startup attempts:
register cleanup or use a request token before await nextTick(), then verify the
watcher is still current and active before calling startStory(). Preserve
stopStory() and the immediate watcher behavior for inactive states.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/components/dashboard/PrioritySupportPresentationModal.vue`:
- Around line 251-264: Update the reduce watcher in
PrioritySupportPresentationModal so that when isReduced becomes true it kills
the active GSAP slide and entrance timelines, in addition to stopping
issuePulse, then settles the current slide state before returning. Store
references to the timelines created by go() and enter() so the watcher can
terminate them while preserving normal animation behavior when reduced motion is
disabled.

---

Outside diff comments:
In `@src/components/dashboard/PrioritySupportStory.vue`:
- Around line 489-496: Update the watcher around active and reduce to cancel
stale startup attempts: register cleanup or use a request token before await
nextTick(), then verify the watcher is still current and active before calling
startStory(). Preserve stopStory() and the immediate watcher behavior for
inactive states.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 90927188-2070-400d-a5ca-8b00f06d0ce3

📥 Commits

Reviewing files that changed from the base of the PR and between 3a0ad4e and 67d33cc.

📒 Files selected for processing (4)
  • src/components/dashboard/PrioritySupportPresentationModal.vue
  • src/components/dashboard/PrioritySupportStory.vue
  • src/services/prioritySupportPromo.ts
  • tests/priority-support-promo.unit.test.ts
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • Cap-go/capacitor-updater (manual)

Comment thread src/components/dashboard/PrioritySupportPresentationModal.vue

@cursor cursor 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.

Stale comment

Risk: medium. Left a non-blocking comment (not approved): Cursor Bugbot was not present, and this PR is above the low-risk approval threshold due to substantial new dashboard promo UI and account-settings behavior. Human review remains needed; reviewer already assigned.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@cursor cursor 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.

Stale comment

Risk: medium. Left a non-blocking comment (not approved): Cursor Bugbot was not present, and this PR is above the low-risk approval threshold due to substantial new dashboard promo UI and account-settings behavior. Human review remains needed; reviewer already assigned.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
tests/priority-support-promo.unit.test.ts (1)

87-103: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Count unique selectors in the consistency guard.

selectors.length counts duplicate occurrences, but the loop validates new Set(selectors). Repeated matches can satisfy the > 40 threshold while the test checks only a small set of selectors.

Proposed fix
-    expect(selectors.length).toBeGreaterThan(40)
-    for (const selector of new Set(selectors))
+    const uniqueSelectors = new Set(selectors)
+    expect(uniqueSelectors.size).toBeGreaterThan(40)
+    for (const selector of uniqueSelectors)
       expect(template, `${selector} must exist in the story template`).toContain(selector.slice(1))
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/priority-support-promo.unit.test.ts` around lines 87 - 103, Update the
selector-count assertion in the “keeps every imperative story selector connected
to template markup” test to count unique selectors, matching the subsequent new
Set(selectors) validation loop. Preserve the existing threshold and
template-membership checks.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@tests/priority-support-promo.unit.test.ts`:
- Around line 87-103: Update the selector-count assertion in the “keeps every
imperative story selector connected to template markup” test to count unique
selectors, matching the subsequent new Set(selectors) validation loop. Preserve
the existing threshold and template-membership checks.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 5e742e8f-60f8-452e-a968-e8fe031dd753

📥 Commits

Reviewing files that changed from the base of the PR and between a48415a and 498d8b8.

📒 Files selected for processing (3)
  • playwright/e2e/priority-support.spec.ts
  • src/components/dashboard/PrioritySupportPresentationModal.vue
  • tests/priority-support-promo.unit.test.ts
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • Cap-go/capacitor-updater (manual)

@cubic-dev-ai cubic-dev-ai 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.

All reported issues were addressed across 3 files (changes from recent commits).

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread tests/priority-support-promo.unit.test.ts Outdated
Comment thread playwright/e2e/priority-support.spec.ts Outdated

@cursor cursor 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.

Stale comment

Risk: medium. Left a non-blocking comment (not approved): Cursor Bugbot was not present, and this PR is above the low-risk approval threshold due to substantial new dashboard promo UI and account-settings behavior. Human review remains needed; reviewer already assigned.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@WcaleNieWolny

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@cursor cursor 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.

Stale comment

Risk: medium. Left a non-blocking comment (not approved): Cursor Bugbot was not present, and this PR is above the low-risk approval threshold due to substantial new dashboard promo UI and account-settings behavior. Human review remains needed; reviewer already assigned.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@cubic-dev-ai cubic-dev-ai 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.

1 issue found across 5 files (changes from recent commits).

Confidence score: 4/5

  • In tests/priority-support-promo.unit.test.ts, removing regression tests that still align with current fixtures weakens protection around openGeneration/stopDeckMotion and transition cancellation behavior, which could let motion/accessibility regressions slip through unnoticed. Reintroduce the dropped tests (or replace them with equivalent coverage tied to updated behavior) and document why fixture parity changed.
Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="tests/priority-support-promo.unit.test.ts">

<violation number="1" location="tests/priority-support-promo.unit.test.ts:22">
P2: This delta drops two regression tests that still match live implementation fixtures: the priority-support modal motion/accessibility cancellation test (symbols `openGeneration`, `stopDeckMotion`, `slideTransition`, `entranceTweens` remain in `PrioritySupportPresentationModal.vue`) and the GitHub-profile-dialog mounting test (`githubProfileDialogReady` handoff still exists in `account/index.vue`). Since the underlying behavior is unchanged, these removals silently reduce coverage for two previously fixed bug areas (accessibility state changes and dialog-before-teleport timing). If the intent was to de-brittle the white-box string matching, consider replacing them with behavior-level assertions (e.g., simulating reduced-motion/runtime misuse or verifying profile form mounts before the Teleport renders) rather than dropping coverage outright.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

Re-trigger cubic

Comment thread playwright/e2e/priority-support.spec.ts Outdated
Comment thread tests/priority-support-promo.unit.test.ts
Comment thread src/components/dashboard/PrioritySupportPromoBanner.vue Outdated

@cursor cursor 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.

Risk: medium. Left a non-blocking comment (not approved): Cursor Bugbot was not present, and this PR is above the low-risk approval threshold due to substantial new dashboard promo UI and account-settings behavior. Human review remains needed; reviewer already assigned.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@sonarqubecloud

sonarqubecloud Bot commented Aug 2, 2026

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant