Skip to content

feat(observe): add global and plugin insights tabs - #2681

Merged
riderx merged 11 commits into
mainfrom
codex/observe-plugin-adoption
Jul 15, 2026
Merged

feat(observe): add global and plugin insights tabs#2681
riderx merged 11 commits into
mainfrom
codex/observe-plugin-adoption

Conversation

@riderx

@riderx riderx commented Jul 14, 2026

Copy link
Copy Markdown
Member

Summary

  • use the existing route-backed Observe tabs: Global and Plugins
  • keep Global focused on release health, and make Plugins show the current production-device version distribution
  • scope the private Observe stats request so each tab computes only the data it renders
  • add desktop and mobile tab-routing coverage and capture both Observe routes in visual diff

Validation

  • bun lint
  • bun typecheck
  • bun test:unit
  • bun run build
  • bunx playwright test --list playwright/e2e/observe-tabs.spec.ts
  • GitHub Actions: Run tests, Visual diff, CodeQL, DeepSec, CodSpeed

Visual proof

Observe Plugins

Authenticated CI visual-diff capture using the seeded local fixture.


Note

Medium Risk
Touches a private stats API and adds a DB index, but changes are scoped to Observe with RBAC unchanged and unit/e2e coverage.

Overview
Adds route-backed Observe sub-navigation (Global vs Plugins) using the same secondary-tab pattern as Logs, with Global unchanged for period-scoped native health and Plugins at /observe/plugins for updater plugin version adoption.

The Plugins screen loads view: 'plugins' on POST /private/native_observe_stats, which returns production device counts by plugin_version (not period-limited). Shared fetching moves into useNativeObserveStats; the global Observe page now passes days only.

Backend adds plugin aggregation SQL, normalizeNativeObserveView, a partial index on devices (app_id, plugin_version) for prod non-emulator rows, seed data for e2e, and Tabs aria-current / aria-label for tests. Visual-diff registers both Observe routes and fixes checkout so the head route list is used for before/after captures.

Reviewed by Cursor Bugbot for commit 8b2ecd9. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Native observe stats now expose plugin-version adoption metrics from production devices and render them in the observe UI. Localization, seed data, indexing, tests, and a screenshot asset support the feature. Visual-diff routing and configuration reuse are also updated.

Changes

Native observe plugin adoption

Layer / File(s) Summary
Plugin adoption stats pipeline
supabase/functions/_backend/private/native_observe_stats.ts, supabase/migrations/..., supabase/seed.sql, tests/native-observe-stats.unit.test.ts
The backend queries normalized plugin versions for production non-emulator devices, returns aggregate metrics, adds a supporting partial index and seed data, and tests the response shape.
Plugin adoption overview card
src/pages/app/[app].observe.vue, messages/en.json, docs/pr-screenshots/...
The observe page displays the top eight plugin versions with adoption rates and an empty state, with new localization messages and a screenshot asset.

Visual-diff pipeline updates

Layer / File(s) Summary
Visual-diff route and config reuse
playwright/visual-diff.config.ts, scripts/visual-diff.ts
The authenticated observe route is added, configuration is loaded once for capture and comparison operations, and redundant before captures are skipped when refs match.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant ObservePage
  participant NativeObserveStats
  participant Devices
  ObservePage->>NativeObserveStats: request observe statistics
  NativeObserveStats->>Devices: query production plugin versions
  Devices-->>NativeObserveStats: version and device aggregates
  NativeObserveStats-->>ObservePage: return pluginVersions
  ObservePage->>ObservePage: render adoption table or empty state
Loading

Possibly related PRs

  • Cap-go/capgo#2578: Both changes modify visual-diff capture, comparison, and pipeline orchestration.

Suggested reviewers: dalanir, wcaleniewolny

🚥 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
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.
Title check ✅ Passed The title matches the main change by describing the new Global and Plugins Observe tabs.
Description check ✅ Passed The description includes summary, validation, and visual proof, but it omits the checklist section from the template.
✨ Finishing Touches
📝 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 Jul 14, 2026

Copy link
Copy Markdown
Contributor

Merging this PR will not alter performance

✅ 43 untouched benchmarks
⏩ 2 skipped benchmarks1


Comparing codex/observe-plugin-adoption (8b2ecd9) with main (1145e26)

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.

@riderx
riderx marked this pull request as ready for review July 14, 2026 08:27
@cursor

cursor Bot commented Jul 14, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_b9ac2520-f520-4f1c-889b-49a625eeb702)

@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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Human review is needed for the backend stats query and observe UI changes.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@cursor
cursor Bot requested review from Dalanir and WcaleNieWolny July 14, 2026 08:28

@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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Human review is needed; Dalanir and WcaleNieWolny are already assigned as reviewers.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver

@riderx
riderx force-pushed the codex/observe-plugin-adoption branch from e7fb498 to 618cba0 Compare July 14, 2026 08:47
@cursor

cursor Bot commented Jul 14, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_10950d01-6363-45d4-9a28-aaec93a8ef79)

@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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Not approving; human review is needed for the observe UI and native stats backend changes. Dalanir and WcaleNieWolny are already assigned as reviewers.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver

@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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Human review is needed; Dalanir and WcaleNieWolny are already assigned as reviewers.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@cursor

cursor Bot commented Jul 14, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_6858f265-8c02-434e-b0ac-de461658479a)

@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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Not approving; human review is needed for the observe UI and native stats backend changes. Dalanir and WcaleNieWolny are already assigned as reviewers.

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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Not approving; Dalanir and WcaleNieWolny are already assigned as reviewers.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver

@github-actions

github-actions Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Visual diff passed

Visual changes

Generated at 2026-07-14T14:02:34.205Z. Threshold: 0.1% pixel difference.

Route Diff % Status
login 0.000 unchanged
dashboard 3.504 changed
apps 0.377 changed
app-overview 1.309 changed
channels 0.757 changed
devices 2.628 changed
observe 4.984 changed
observe-plugins 39.452 changed

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

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

@cursor

cursor Bot commented Jul 14, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_af645565-9a2f-4e52-ab8f-6ba7ae67c4b8)

@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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Not approving; human review is needed for the observe UI and native stats backend changes. Dalanir and WcaleNieWolny are already assigned as reviewers.

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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Not approving; human review is needed for the observe UI and native stats backend changes. Dalanir and WcaleNieWolny are already assigned as reviewers.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver

@cursor

cursor Bot commented Jul 14, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_15b9cb61-72fb-4940-b517-844e94df92d8)

@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: low. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Not approving; Dalanir and WcaleNieWolny are already assigned as reviewers.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@cursor

cursor Bot commented Jul 14, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_ab966591-b686-4d25-bac2-b759f60c29f5)

@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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Not approving; Dalanir and WcaleNieWolny are already assigned as reviewers.

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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Not approving; Dalanir and WcaleNieWolny are already assigned as reviewers.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver

@cursor

cursor Bot commented Jul 14, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_ffde334a-b613-47ac-ae3c-d8f53129ba7d)

@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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Not approving; Dalanir and WcaleNieWolny are already assigned as reviewers.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@cursor

cursor Bot commented Jul 14, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_5c899b5e-cbed-476f-ad3f-fbd1fbe6bdf9)

@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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Not approving; Dalanir and WcaleNieWolny are already assigned as reviewers.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver

@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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Not approving; Dalanir and WcaleNieWolny are already assigned as reviewers.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@cursor

cursor Bot commented Jul 14, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_24fe52c3-43c8-450d-881b-9637a6d370c8)

@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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Not approving; Dalanir and WcaleNieWolny are already assigned as reviewers.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver

@riderx riderx changed the title feat(observe): show updater plugin adoption feat(observe): add global and plugin insights tabs Jul 14, 2026

@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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Not approving; Dalanir and WcaleNieWolny are already assigned as reviewers.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver External

@cursor

cursor Bot commented Jul 14, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_94281869-902c-4905-9e5e-2f97eee4f8f9)

@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. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Not approving; Dalanir and WcaleNieWolny are already assigned as reviewers.

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.

Risk: medium. Cursor Bugbot did not complete (skipped due to usage limit), so automated review is unavailable. Not approving; Dalanir and WcaleNieWolny are already assigned as reviewers.

Open in Web View Automation 

Sent by Cursor Approval Agent: Pull Request Approver

@sonarqubecloud

Copy link
Copy Markdown

@riderx
riderx merged commit b563f88 into main Jul 15, 2026
64 of 86 checks passed
@riderx
riderx deleted the codex/observe-plugin-adoption branch July 15, 2026 10:29
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.

1 participant