feat(ui): Add lazy loading for remote dataset catalogs#233
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
914ec21 to
97c3dcd
Compare
97c3dcd to
46d1c68
Compare
|
Warning Review limit reached
Next review available in: 7 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the 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 configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (18)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
|
@hfl0506 let's fix the conflicts. |
46d1c68 to
00b3f90
Compare
@fahimfaisaal resolved conflict, please have a look when you have a chance. Thanks |
|
@hfl0506 Thanks, i've run the ui/src/lib/dashboardState.ts + .test.ts: yagni one-expression helper + 48-line suite, one call site. Inline in Dashboard.vue computed.
ui/src/lib/remoteData.ts:L149-173 (LazyDatasetSelection): yagni class + generation + Result union. selectDataSet already drops stale work via activeDataSetId !== id. Keep fetchDatasetDetail; drop the class.
useDataPoint.ts:L51-52 + L96 + L195 (catalogEntries): delete second copy of {id,name}. Shells already land in dataSets with those fields — use dataSets.value[id].id.
remoteData.ts detailCache + useDataPoint.ts loadedDetails: shrink two success maps. One map of prepared datasets + in-flight promises is enough (raw cache only serves re-prepare).
pickerLimit.ts:L11-14 (limit <= 0): delete dead branch. Only caller passes 100.
pickerLimit.ts:L24-28 (filterPickerOptions): shrink reimplements Selector’s filterFunction. Keep limitPickerOptions; filter once in the component.
Selector.vue:L68-71 + L90-91: shrink dual filter paths (resultLimit → pre-filter + identity combobox filter; else combobox filters). One path: always compute matchingOptions, always identity filter-function when limited (or always pre-filter).
remoteData.ts:L20-21 (hasOwn): stdlib Object.hasOwn(entry, 'data') (or 'data' in entry on plain JSON). Drop the wrapper.
───
Keep (not bloat): classifyRemotePayload / detail validation (trust boundary), URL builder, in-flight dedupe, :resultLimit="100" + truncated footer, Retry wiring, remoteData.test.ts for the classifier.
net: ~−120 lines possible (mostly dashboardState* + LazyDatasetSelection + dual catalog/cache). |
@fahimfaisaal update changes accordingly, quick question: can you share your set up with me personally ? Thanks |
|
@hfl0506 using Zed ACP for running multiple agents and sometimes use Orca
|
Related Issue
Closes #223
Changes
Automatic catalog/full-payload classification with useful validation
errors.
Encoded detail URLs preserving queries and removing fragments.
Module-scoped success and in-flight caches.
Race-safe selection, retryable failures, and deep-link-aware
initialization.
Continuous network/worker skeleton transitions with inline Retry.
Dataset picker capped at 100 results while searching the full catalog.
Updated CLI, GitHub Action, and endpoint contract documentation.
Added comprehensive tests for detection, caching, races, retries, URLs,
deep links, skeletons, and large catalogs.
Test Steps
Screenshots
Large catalog picker
Screen.Recording.2026-07-16.at.11.10.06.PM.mov
Three-second loading skeleton
Screen.Recording.2026-07-16.at.11.12.09.PM.mov
Inline error, then successful Retry
Screen.Recording.2026-07-16.at.11.12.42.PM.mov
Encoded slash ID