Skip to content

feat(lanes | component): re design viewing changes#10378

Draft
luvkapur wants to merge 55 commits into
masterfrom
changes-redesign
Draft

feat(lanes | component): re design viewing changes#10378
luvkapur wants to merge 55 commits into
masterfrom
changes-redesign

Conversation

@luvkapur
Copy link
Copy Markdown
Member

No description provided.

luvkapur and others added 30 commits May 13, 2026 15:56
Defines scope, architecture, hook bindings, and acceptance criteria
(no-drawer, no-monaco, tab rewiring, manual smoke) for porting the
new lane-compare design into ____bit while keeping workspace data
sources.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
16-task plan with explicit scope/name/rootDir per new bit component
so resulting npm package ids match imports from the new design.
Phases A-F cover primitives, non-monaco diff foundation, inline tab
components, compare shell, lane-compare port (drawer stripped), and
final tab-list wiring + acceptance gates.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ports CompareToolbar from new-changes workspace; adds @teambit/design.inputs.selectors.multi-select@2.0.17 to workspace policy (was missing).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ports CompareSidebar (with SidebarGroup and SidebarComponentItem sub-components)
from the new-changes workspace into the component-compare component and exports
all public types from the index.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add teambit.dependencies/ui/deps-diff-table — a pure table component for rendering dependency diffs between two component versions, with status indicators and compare URL links.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds teambit.code/ui/inline-code-compare, which renders per-file inline diffs
using DiffFileRenderer from inline-diff-viewer and wires into ComponentCompare context.
Fixed import path (component.ui.component-compare.component-compare) and removed unused variable.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Ports teambit.review/ui/inline-tests-compare from lane-compare branch; remaps bare component-compare import to component-compare.component-compare package id.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds teambit.review/ui/inline-config-compare — renders aspect config/data
diffs between two component versions using DiffFileRenderer.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…eHeader

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Required by InlineComponentCompare (Task 12). bit install side-effects.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds teambit.semantics/ui/api-diff-view — a full-pane React component that queries and renders API surface changes between two component versions using GQL.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e data

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…hapes

- Drop `isMerged` references from lane-compare-page (LaneModel only has `deleted`)
- Adapt `useLaneComponents` call to single-arg signature returning an object
- Use `componentDescriptors` (not `components`) for the compositions map since `.get()` is a ComponentDescriptor method

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…hema

InlineContextProvider and EagerFileRegistrar used useGetComponents /
createComponentModel from the cloud GraphQL schema (getComponents /
CompDescriptor), which the workspace/scope dev-server schema does not
expose - every InlineComponentCompare fired a 400, breaking the code
diff and stalling the lane-diff query via a re-render storm.

Replace with the schema-compatible useComponent hook (spec section 7.1
fallback). Drop the now-unused cloud packages from workspace.jsonc.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Extract workspace-overview's data-agnostic pieces into a shared
@teambit/explorer.ui.components-overview component; refactor both
workspace-overview and lane-overview into thin adapters.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… plan

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…rview

Creates @teambit/explorer.ui.components-overview with data-agnostic card,
filter-panel, aggregation hooks, and a new ComponentsOverview orchestrator
that accepts getHref / storageNamespace injection points.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…onent

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Wraps the header slot and filter command bar in a single sticky div,
measures its height via ResizeObserver into --components-overview-sticky-height,
and uses that CSS var as the top offset for section headers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
luvkapur and others added 25 commits May 14, 2026 11:37
…scroll root

lane-overview passed its old .container class (padding: 50px 5%) to
ComponentsOverview's root, which is the sticky scroll container -
the top padding let content scroll above the sticky header. Drop the
className; delete the now-orphaned lane-overview.module.scss.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… from tab bar

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ions

Multiple versions of @teambit/lanes.entities.lane-diff in the pnpm store
(0.0.166 from registry + 0.0.188 local file:) caused the bundlers to pull
two copies; the cross-version mismatch left the lane-compare module
namespace undefined at runtime (Cannot read properties of undefined
reading LaneCompare). Add an exact resolve.alias in both the rspack
shared resolveAlias() and the react env webpack base config, pinning to
the single local copy via require.resolve.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Design for replacing the lane-compare N+1 request waterfall with a
paginated bulk compare resolver, scoped opt-in GraphQL batching, and
registrar rewiring.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
useCode is an external published component (not in this repo) and cannot
forward a batch context; new-component queries stay unbatched. Pagination
+ error-isolation logic extracted into a pure, unit-testable helper.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Task-by-task plan: paginated compareComponents resolver, opt-in GraphQL
batching, CompareDataProvider bulk context, and registrar rewiring.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Threads an optional `context` prop through UseComponentOptions →
useComponent → useComponentQuery → useComponentLogs, forwarding it into
each useDataQuery call so callers can opt queries into Apollo request
batching (e.g. `context: { batch: true }`). Purely additive; existing
callers are unaffected.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace per-component EagerFileRegistrar/EagerAspectRegistrar with RegistryFeeder
(bulk context) + NewComponentFileRegistrar (new-only). InlineContextProvider now
reads from useCompareData() instead of firing per-component GraphQL queries.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ng in registrars

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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