refactor(ui): rename Widget Lab → Widget Library (#914) - #958
Conversation
"Lab" implied a prototyping playground; the actual feature is a curated collection of reusable widget templates. "Library" is the conventional name in the design-tool space (Figma component library, Storybook) and matches user expectation. Renames in this PR: - Route /widget-lab → /widget-library (directory git-mv preserves history) - Sidebar label, page heading, FlaskConical → Library icon - WidgetLabPage() → WidgetLibraryPage() - Production UI text: "Save to Widget Lab" → "Save to Widget Library" - Comments / docstrings across dashboard-container, widget-editor-modal, schema.ts, capture-preview.test.ts - E2E spec: widget-lab.spec.ts → widget-library.spec.ts (~50 refs) - Component test: testid auto-updates (synthesized from label) - Sidebar test: "sidebar-item-Widget Lab" → "...Library" - Docs: APP_IMPLEMENTATION_GUIDE.md, widgets.mdx (5 refs + screenshot), migration-from-neodash.mdx - Screenshot file: widget-lab.png → widget-library.png Adds a permanent (308) redirect /widget-lab → /widget-library in next.config.ts so bookmarked URLs survive and SEO carries. E2E covers both the new path and the legacy redirect. Untouched (already correctly named): - DB column / table (widget_template) - API routes (/api/widget-templates) - Storage keys Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
PR changed again? Review this PR in Change Stack to compare snapshots and stay oriented. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
WalkthroughRenames "Widget Lab" to "Widget Library" across routes, UI labels, sidebar navigation, save dialogs, E2E tests, internal comments, and docs; adds a permanent redirect from ChangesWidget Lab → Widget Library Rename
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 3 | ❌ 3❌ Failed checks (2 warnings, 1 inconclusive)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ 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 |
The SPEC object is declared `as const`, which makes its nested `parameters` arrays readonly tuples. After #945 merged the new tuple literal at /api/connections etc, the test's `OAParam[]` (mutable) cast no longer overlaps with the readonly source — tsc rejected it. Accept `readonly OAParam[]` and cast via `unknown` so the runtime behaviour is unchanged and the test stays a pure structural assertion. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|



Closes #914.
Summary
"Lab" implied a prototyping playground; the actual feature is a curated collection of reusable widget templates. "Library" is the conventional name in the design-tool space (Figma component library, Storybook) and matches user expectation.
What changes
Backwards-compatibility
Adds a permanent (308) redirect in `next.config.ts` from `/widget-lab` → `/widget-library` so bookmarked URLs survive and SEO carries. E2E covers both the new path and the legacy redirect (new test `legacy /widget-lab URL redirects to /widget-library`).
Intentionally untouched
These were already correctly named:
Test plan
🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Refactor
Tests
Documentation