Skip to content

feat(dashboard): bundle install success rate and timing percentiles - #2989

Merged
riderx merged 7 commits into
mainfrom
cursor/bundle-install-stats-aebd
Aug 12, 2026
Merged

feat(dashboard): bundle install success rate and timing percentiles#2989
riderx merged 7 commits into
mainfrom
cursor/bundle-install-stats-aebd

Conversation

@riderx

@riderx riderx commented Aug 11, 2026

Copy link
Copy Markdown
Member

Summary (AI generated)

  • Added POST /private/bundle_install_stats API returning per-bundle install success rate and install duration percentiles (P50, P70, P90, P95)
  • Added BundleInstallStatsPanel dashboard component with period selector and bundle table
  • Surfaced the panel on app dashboard, channel statistics page, and individual bundle page
  • Fixed CI: import sort, unit expectations, translation contexts, restored failed-to-fetch-statistics

Motivation (AI generated)

Dashboard users frequently ask for install success rate broken down by bundle, and for install timing percentiles (e.g. how long until 50% or 70% of devices finish installing). The existing update stats chart shows aggregate install/fail volumes but not per-bundle success rate or end-to-end install duration.

Business Impact (AI generated)

Teams can diagnose problematic bundles and slow installs without leaving the Capgo console. Faster release validation and fewer support back-and-forths when a rollout underperforms on a specific bundle.

Visual changes (AI generated)

New "Bundle install performance" section on app, channel statistics, and bundle pages.

App dashboard — Bundle installs panel

Bundle install stats panel on the app dashboard

Test Plan (AI generated)

  • Unit tests for bundle install stats helpers
  • Translation context keys synced
  • Lint import order fixed
  • Open an app dashboard → verify "Bundle install performance" table
  • Open a channel statistics page → verify channel-scoped table
  • Open a bundle page → verify single-bundle stats
  • Change period (1/3/7/30 days) and confirm data refreshes

Generated with AI

Open in Web Open in Cursor 

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Review in cubic

Summary by CodeRabbit

  • New Features

    • Added bundle installation statistics to app, channel, and bundle views.
    • Added selectable reporting periods, success rates, install-time percentiles, version breakdowns, and totals.
    • Added channel and version filtering where applicable.
    • Added loading, empty, error, retry, and demo-data states.
    • Added localized labels and messages for statistics and fetch errors.
  • Bug Fixes

    • Improved handling of unavailable statistics and data-fetch errors.
  • Tests

    • Added coverage for statistics calculations, timing data, percentiles, and response aggregation.

- Add POST /private/bundle_install_stats endpoint with per-bundle success
  rate (install / install+fail) and install time P50/P70/P90/P95
- Add BundleInstallStatsPanel on app, channel statistics, and bundle pages
- Pair download start to set action for end-to-end install duration

Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com>
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 33 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 973a6258-9a83-4f1e-9070-6fa9b84e35aa

📥 Commits

Reviewing files that changed from the base of the PR and between cc57e67 and d7f9cc3.

📒 Files selected for processing (1)
  • supabase/functions/_backend/private/bundle_install_stats.ts
📝 Walkthrough

Walkthrough

Adds a private bundle-install statistics API with Cloudflare and Postgres aggregation, a reusable dashboard panel, page integrations, localization, generated declarations, unit tests, and a Playwright capture script.

Changes

Bundle install statistics

Layer / File(s) Summary
Statistics endpoint and aggregation
supabase/functions/_backend/private/bundle_install_stats.ts, supabase/functions/_backend/utils/cloudflare.ts, supabase/functions/private/index.ts, cloudflare_workers/api/index.ts
Adds authenticated statistics collection with Cloudflare event processing, Postgres fallback, version filtering, caching, percentile calculations, and private route registration.
Statistics data and dashboard panel
src/composables/useBundleInstallStats.ts, src/components/dashboard/BundleInstallStatsPanel.vue, src/components.d.ts
Adds typed data fetching, demo data, period handling, loading and error states, summary metrics, timing tables, and bundle navigation.
Dashboard integration and localization
src/pages/app/[app].vue, src/pages/app/[app].bundle.[bundle].vue, src/pages/app/[app].channel.[channel].statistics.vue, messages/en.json, messages/en.context.json, src/auto-imports.d.ts, src/route-map.d.ts
Renders the panel on app, bundle, and channel pages. Adds translations, localization metadata, generated declarations, and route metadata.
Statistics validation and capture tooling
tests/bundle-install-stats.unit.test.ts, scripts/capture-bundle-install-stats.ts
Tests period normalization, timing aggregation, percentiles, filtering, and response totals. Adds authenticated screenshot capture and failure handling.

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

Sequence Diagram(s)

sequenceDiagram
  participant DashboardPage
  participant BundleInstallStatsPanel
  participant useBundleInstallStats
  participant bundle_install_stats
  participant CloudflareEvents
  participant Postgres
  DashboardPage->>BundleInstallStatsPanel: render panel with app and period
  BundleInstallStatsPanel->>useBundleInstallStats: fetch statistics
  useBundleInstallStats->>bundle_install_stats: authenticated POST request
  bundle_install_stats->>CloudflareEvents: retrieve timing events
  bundle_install_stats->>Postgres: query success and timing data
  bundle_install_stats-->>useBundleInstallStats: return aggregated response
  useBundleInstallStats-->>BundleInstallStatsPanel: update statistics state
  BundleInstallStatsPanel-->>DashboardPage: render metrics and bundle table
Loading

Possibly related PRs

  • Cap-go/capgo.app#2772: Both changes update Cloudflare Analytics Engine timing queries and version-filtered statistics aggregation.
  • Cap-go/capgo.app#2983: Both changes modify translation catalogs and their localization context metadata.
  • Cap-go/capgo.app#2988: Both changes use install and failure data for success-rate calculations in shared Cloudflare statistics infrastructure.

Suggested labels: codex

Suggested reviewers: wcaleniewolny, dalanir

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the dashboard feature for bundle install success rates and timing percentiles.
Description check ✅ Passed The description explains the API, UI changes, motivation, and testing, although manual verification steps remain unchecked.
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 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch

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

@codspeed-hq

codspeed-hq Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Merging this PR will not alter performance

✅ 43 untouched benchmarks
⏩ 2 skipped benchmarks1


Comparing cursor/bundle-install-stats-aebd (d7f9cc3) with main (ebb7cbc)

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.

Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com>
@github-actions

github-actions Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Visual diff passed

Visual changes

Generated at 2026-08-12T08:25:21.877Z. Threshold: 0.1% pixel difference.

Route Diff % Status
login 0.000 unchanged
dashboard 29.420 changed
apps 0.359 changed
app-overview 35.336 changed
app-settings 0.000 unchanged
app-settings-access 2.444 changed
channels 0.800 changed
devices 0.036 unchanged
observe 0.000 unchanged
observe-logs 0.000 unchanged
observe-native 0.000 unchanged
observe-compatibility 0.000 unchanged
observe-plugins 0.000 unchanged
api-keys-app-preview 0.000 unchanged

Commit: d7f9cc3bd8d995794598e33369c4e21698ed853a
Download the HTML report from workflow artifacts (artifact: visual-diff-report-d7f9cc3bd8d995794598e33369c4e21698ed853a).

Open index.html from the artifact for side-by-side before/after/diff screenshots.

@riderx
riderx marked this pull request as ready for review August 11, 2026 13:40
@cursor
cursor Bot requested a review from WcaleNieWolny August 11, 2026 13:41

@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; Cursor Bugbot was not present on this PR, and the new private stats API plus dashboard UI sit above the low-risk auto-approval threshold. Assigned a human reviewer.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@cursor
cursor Bot requested a review from Dalanir August 11, 2026 13:42

@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. Non-blocking comment only — this exceeds the low approval threshold (new private bundle-install stats API plus dashboard UI). Human review needed; reviewers 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

Comment thread supabase/functions/_backend/private/bundle_install_stats.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

Comment thread supabase/functions/_backend/private/bundle_install_stats.ts

@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

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread tests/bundle-install-stats.unit.test.ts Outdated
Comment thread tests/bundle-install-stats.unit.test.ts Outdated
Comment thread messages/en.json
Comment thread supabase/functions/_backend/private/bundle_install_stats.ts Outdated
Comment thread supabase/functions/_backend/private/bundle_install_stats.ts
Comment thread src/components/dashboard/BundleInstallStatsPanel.vue Outdated
Comment thread supabase/functions/_backend/private/bundle_install_stats.ts Outdated
Comment thread supabase/functions/_backend/private/bundle_install_stats.ts Outdated
Comment thread src/composables/useBundleInstallStats.ts
Comment thread supabase/functions/_backend/private/bundle_install_stats.ts Outdated
- Fix import sort order on channel statistics page
- Correct percentile and success-rate unit expectations
- Restore failed-to-fetch-statistics and sync en.context.json
- Remove base-incompatible visual-diff route for new panel

Co-authored-by: Martin DONADIEU <martindonadieu@gmail.com>

@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. Non-blocking comment only — this exceeds the low approval threshold (new private bundle-install stats API plus dashboard UI). Human review needed; reviewers already assigned.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@coderabbitai coderabbitai Bot added the codex label Aug 11, 2026

@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: 8

🤖 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 `@scripts/capture-bundle-install-stats.ts`:
- Around line 8-11: Remove the duplicate declarations and stray top-level block
so the file parses: in scripts/capture-bundle-install-stats.ts lines 8-11,
retain only one declaration each for chromium, mkdirSync, and join; in lines
43-54, delete the duplicate declarations of chromium, mkdirSync, join, baseUrl,
and outDir plus the unmatched brace. Keep the single valid declarations used by
ensureLocalAuth and the rest of the script.

In `@src/components/dashboard/BundleInstallStatsPanel.vue`:
- Around line 186-195: Remove the P50 timing card and its associated rendering
from the dashboard template near the bundle-install timing section; do not use
the first sampled bundle’s timing.p50_ms as an overall metric. Only retain an
aggregate P50 display if a dedicated API-provided aggregate field is added and
consumed instead.

In `@src/composables/useBundleInstallStats.ts`:
- Around line 113-160: Rename the native-Date helper dayjsUtcEnd to a name that
reflects its implementation, updating its call in buildDemoBundleInstallStats.
Normalize the calculated start date to UTC midnight before assigning
period.start, while preserving the existing end-of-day period.end and day-count
behavior.

In `@src/pages/app/`[app].channel.[channel].statistics.vue:
- Around line 787-793: Update the BundleInstallStatsPanel usage in the channel
statistics page to pass the page’s reactive days value through :days="days" and
set hide-period-selector, ensuring install statistics follow the channel period
selector without rendering an independent period control.

In `@supabase/functions/_backend/private/bundle_install_stats.ts`:
- Around line 674-680: Update the catch block around readBundleInstallStats to
re-throw existing simpleError instances unchanged, preserving their original
code and status; only convert unknown errors into fetch_error while retaining
the current logging and message details.
- Around line 18-19: Update the SQL query construction in the bundle install
stats flow to interpolate the shared maxInstallMs and pairingLookbackMs
constants instead of hard-coding 7200000 and INTERVAL '2 hours'. Apply this
consistently to the SQL locations around the pairing lookback conditions and
install-duration bound, preserving the existing duration semantics while keeping
Cloudflare and Postgres paths synchronized.
- Around line 264-268: Replace the per-item input.successRows.find lookup in the
bundles construction with a Map<string, BundleSuccessRow> created once before
names.map; populate it by version_name and retrieve each success row from the
map while preserving the existing optional and counting behavior.
- Around line 325-338: The install timing query and its caller use inconsistent
parameter numbering: update buildInstallTimingQuery to renumber placeholders $4,
$5, and $6 as $3, $4, and $5, then update readBundleInstallStatsSB to remove
startDate from the bound parameter array so exactly five values match the query.
🪄 Autofix

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: 48ccf4ef-14d6-491a-ad57-052cf3aa3b3b

📥 Commits

Reviewing files that changed from the base of the PR and between 896347d and e6acda9.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (15)
  • cloudflare_workers/api/index.ts
  • messages/en.context.json
  • messages/en.json
  • scripts/capture-bundle-install-stats.ts
  • src/auto-imports.d.ts
  • src/components.d.ts
  • src/components/dashboard/BundleInstallStatsPanel.vue
  • src/composables/useBundleInstallStats.ts
  • src/pages/app/[app].bundle.[bundle].vue
  • src/pages/app/[app].channel.[channel].statistics.vue
  • src/pages/app/[app].vue
  • src/route-map.d.ts
  • supabase/functions/_backend/private/bundle_install_stats.ts
  • supabase/functions/private/index.ts
  • tests/bundle-install-stats.unit.test.ts
🔗 Linked repositories identified

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

  • Cap-go/capacitor-updater (manual)

Comment thread scripts/capture-bundle-install-stats.ts
Comment thread src/components/dashboard/BundleInstallStatsPanel.vue Outdated
Comment thread src/composables/useBundleInstallStats.ts
Comment thread src/pages/app/[app].channel.[channel].statistics.vue
Comment thread supabase/functions/_backend/private/bundle_install_stats.ts
Comment thread supabase/functions/_backend/private/bundle_install_stats.ts
Comment thread supabase/functions/_backend/private/bundle_install_stats.ts Outdated
Comment thread supabase/functions/_backend/private/bundle_install_stats.ts

@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 9 files (changes from recent commits).

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread messages/en.context.json Outdated
@cursor

cursor Bot commented Aug 11, 2026

Copy link
Copy Markdown

done

Sanitize client errors, stop version_name cache busting, fix SQL
placeholders, paginate capped AE windows, and align the panel period
and summary metrics with review feedback.

Co-authored-by: Cursor <cursoragent@cursor.com>

@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. Non-blocking comment only — this exceeds the low approval threshold (new private bundle-install stats API plus dashboard UI). Human review needed; reviewers 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: 2

🤖 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 `@supabase/functions/_backend/private/bundle_install_stats.ts`:
- Around line 464-503: Bound readInstallTimingEventsCFWindow recursion by adding
MAX_TIMING_SPLIT_DEPTH = 4 near MIN_TIMING_WINDOW_MS, tracking split depth in
the function parameters, and returning the current chunk when that depth is
reached. Increment the depth for both recursive branches while preserving the
existing minimum-window guard and query behavior below the limit.

In `@tests/bundle-install-stats.unit.test.ts`:
- Around line 96-102: Extend the test around
bundleInstallStatsTestUtils.filterResponseByVersionName to snapshot the original
response before filtering, then assert the response remains unchanged afterward
while preserving the existing filtered assertions.
🪄 Autofix

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: e8dba842-37ff-4a96-bd83-3776a4ffb198

📥 Commits

Reviewing files that changed from the base of the PR and between e6acda9 and 5e019af.

📒 Files selected for processing (8)
  • messages/en.context.json
  • scripts/capture-bundle-install-stats.ts
  • src/components/dashboard/BundleInstallStatsPanel.vue
  • src/composables/useBundleInstallStats.ts
  • src/pages/app/[app].channel.[channel].statistics.vue
  • supabase/functions/_backend/private/bundle_install_stats.ts
  • supabase/functions/_backend/utils/cloudflare.ts
  • tests/bundle-install-stats.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 (1)
  • scripts/capture-bundle-install-stats.ts

Comment thread supabase/functions/_backend/private/bundle_install_stats.ts Outdated
Comment thread tests/bundle-install-stats.unit.test.ts

@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 8 files (changes from recent commits).

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

Re-trigger cubic

Comment thread supabase/functions/_backend/private/bundle_install_stats.ts
Comment thread supabase/functions/_backend/private/bundle_install_stats.ts Outdated
Comment thread supabase/functions/_backend/private/bundle_install_stats.ts Outdated
Comment thread tests/bundle-install-stats.unit.test.ts
Replace unbounded parallel window recursion with sequential hour/5-minute
slices, fail closed when still capped, guard null bodies, and assert
version filters do not mutate cached responses.

Co-authored-by: Cursor <cursoragent@cursor.com>

@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. Non-blocking comment only — this exceeds the low approval threshold (new private bundle-install stats API plus dashboard UI). Human review needed; reviewers 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

🤖 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 `@supabase/functions/_backend/private/bundle_install_stats.ts`:
- Around line 483-529: Update readInstallTimingEventsCFWindow to carry a shared
request-wide slice/query budget through every recursive call, decrementing it
before each Cloudflare slice is queried. When the budget is exhausted, throw
fetch_error so the existing fallback path runs, while preserving sequential
slicing and normal event aggregation within the allowed budget.
🪄 Autofix

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: d4666dd4-091b-482d-8fc4-d758df52af31

📥 Commits

Reviewing files that changed from the base of the PR and between 5e019af and cc57e67.

📒 Files selected for processing (2)
  • supabase/functions/_backend/private/bundle_install_stats.ts
  • tests/bundle-install-stats.unit.test.ts
🔗 Linked repositories identified

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

  • Cap-go/capacitor-updater (manual)

Comment thread supabase/functions/_backend/private/bundle_install_stats.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 2 files (changes from recent commits).

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

Re-trigger cubic

Comment thread supabase/functions/_backend/private/bundle_install_stats.ts Outdated
Keep one Analytics Engine query per day and error instead of deep
sub-slicing when a busy day hits the 50k row cap.

Co-authored-by: Cursor <cursoragent@cursor.com>
@sonarqubecloud

Copy link
Copy Markdown

@riderx
riderx merged commit da08bad into main Aug 12, 2026
79 of 101 checks passed
@riderx
riderx deleted the cursor/bundle-install-stats-aebd branch August 12, 2026 08:04
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.

2 participants