Skip to content

v2.2.164

Latest

Choose a tag to compare

@davidfirst davidfirst released this 28 Oct 16:54

New Features

  • pnpm v12 — Bit's package manager internals are migrated to pnpm v12, now running through the @pnpm/napi Rust engine, which also renders install output, answers bit why and owns the lockfile (#10508, #10653)
    • Opt-in support for pnpm's global virtual store (#10582)
    • bit install --restore rebuilds the lockfile from the components' dependency graphs (#10325)
    • A repeat install that is already up to date is skipped by the engine (#10720)
  • bit ci sync — bi-directional sync between Bit lanes and git branches/PRs (#10541)
    • Sync cross-scope lanes by mirroring the workspace-scope slice (#10644)
    • PR run summary, with convergence decided from a status probe (#10581)
    • Support GitHub Enterprise Server via GITHUB_API_URL and GITHUB_SERVER_URL (#10817)
    • bit ci sync --init writes the sync rules for agents into AGENTS.md (#10835)
  • Redesigned changes & compare experience — single-component compare, lane compare and the workspace/lane overviews share one bulk-fetched implementation, the Monaco code diff is replaced with a lean Shiki-based viewer, and the semantic API diff is a first-class view (#10378, #10708, #10716, #10825)
  • Workspace-root component — a component can live at the workspace root (rootDir: "."), with a new trackAllFiles flag (#10698)
  • bit gc removes unneeded objects from the local scope (#10714)
  • bit ripple simulate and bit lane updates commands (#10712)
  • Hidden peer dependencies (#10066)
  • Introduce the empty-env core aspect (#10535)

Improvements

  • Warn when a new component id already exists on the remote (#10503)
  • Add --delete to bit resume-export to clear stuck exports (#10683)
  • bit delete --hard requires an interactive human confirmation (#10648)
  • Deprecate bit validate --all in favor of --unmodified (#10560)
  • bit diff --parent defaults to the current version and skips non-meaningful ancestors (#10526)
  • Save the planned build tasks of a version tagged or snapped without a build (#10822)
  • Show dependencies whose version is pinned by config (#10792)
  • Explain why a text file shows as a binary conflict during merge (#10754)
  • Profile timing for install phases (#10685)
  • Report components that were not compiled for lack of a compiler (#10592)
  • Rename bit ripple errors --log to --full-log, and show the real error in its summary (#10827, #10509)
  • Stabilize the node and edge order of bit graph --json (#10811)
  • Expand the generated agent instructions (#10693)
  • Extract md/mdx import detection into a detective component (#10519)
  • Replace the community Slack links with Discord (#10699)

Performance

  • Bundle both UI roots in one compilation and shrink the UI pre-bundle from 58MB to 16MB (#10628, #10629, #10637)
  • Enable Node's built-in compile cache on startup, and stop loading hard-link-directory on every invocation (#10669, #10599)
  • Drop the lsof port pre-flight from server-routed commands (#10673)
  • Reduce memory usage during snap on large workspaces (#10862)
  • Bound the objects cache by bytes instead of count, and read flattened dependencies lazily from a separate object (#10723, #10758)
  • Speed up export of components with many objects (#10745)
  • Faster version lookups: index version lookups in history walks and export, index version parents by hash, look up a single tag without copying all versions, speed up the ref-to-tag lookup, and use a set in VersionHistory.merge (#10869, #10865, #10739, #10753, #10868)
  • Filter objects by type from their header when listing the repository (#10730)
  • Copy small Source contents out of the shared inflate buffer (#10785)
  • Skip needless deep copies when hashing and converting versions (#10741)
  • Look up .bitmap components by name instead of scanning all of them (#10742)
  • Reuse evicted components that are still in use (#10736)
  • Batch, dedupe and bound dependency imports when building graphs from the filesystem (#10635)
  • Let pnpm reuse the lockfile across installs, install without a readPackage hook, and filter the lockfile in memory when calculating the dependency graph (#10748, #10787, #10854)
  • Avoid loading removed components and their envs on bit remove (#10836)

Bug Fixes

  • Lanes and merges:
    • Fix an issue where lane snaps could depend on snaps of another lane (#10737)
    • Fix an issue where lane dependents depending on another version of the snapped component were not snapped (#10845)
    • Fix an issue where hidden updateDependents were not fetched from the lane scope (#10844)
    • Fix an issue where unexported main snaps were not moved to the new lane on bit lane create (#10838)
    • Fix an issue where bit lane merge-abort didn't restore the main heads after merging a lane into main (#10846)
    • Fix an issue where a bare-scope lane merge produced different snaps than a workspace merge, including wrong dependencies and policy versions (#10808, #10823, #10847)
    • Fix an issue where dependencies added on the other lane were not installed after a lane merge (#10579)
    • Fix an issue where false "config changes" appeared during a lane merge (#10660)
    • Fix an issue where env.jsonc component peers were lost after a lane merge; +^/+~ versions are now supported (#10815)
    • Fix an issue where a types package added by the other side was dropped on a merge (#10841)
    • Fix an issue where referenced non-head dependency snaps were not shipped when merging a lane to main and exporting (#10523)
  • CI:
    • Fix an issue where bit ci merge didn't commit main's .bitmap when a lane release tagged nothing, and restored lane config for components the workspace doesn't track (#10840, #10818)
    • Fix an issue where a cross-scope lane was archived before every scope released its slice (#10661)
    • Fix an issue where bit ci choked on lane-only components and --workspace-only was ineffective (#10611)
    • Fix an issue where bit ci tagged versions already published to the registry (#10686)
    • Fix several bit ci sync issues: lane-mapped branches resolved against the wrong scope, rejected pushes labeled as conflicts, stale .bitmap versions and re-planning loops (#10819, #10594, #10593, #10652, #10580, #10569, #10573, #10820)
    • Fix an issue where version-bump commits accumulated user-agent lines in .npmrc (#10565)
  • Install and dependencies:
    • Fix an issue where native dependencies were built with a different Node than the one running Bit, and node-gyp was missing from PATH (#10695, #10554)
    • Fix an issue where package names colliding with Node core module names were rejected (#10547)
    • Fix an issue where depsRequiringBuild was wiped from the lockfile on repeat installs (#10551)
    • Fix an issue where non-directory entries blocked .bit_roots links (#10355)
    • Fix transient filesystem races when linking components and clearing the deps cache (#10746, #10756)
    • Fix an issue where env files re-created by the package manager were not restored before compiling (#10779)
    • Fix an issue where the package manager's sockets were capped at 15 by default (#10782)
    • Fix an issue where bit link couldn't link a subset of the workspace components (#8497)
    • Fix an issue where a restored dependencies graph was not deduped to the versions the capsules root provides (#10829)
    • Fix an issue where source-imported packages were missing on import (#10365)
    • Fix an issue where a dependency version set by config was not kept on snap (#10792)
  • Envs and aspects:
    • Fix an issue where an installed env of a different version than requested was loaded (#10791)
    • Fix an issue where env.jsonc extends didn't resolve outside a workspace (#10810)
    • Fix a false "env was not loaded" warning on partial loads, and load envs first even when the extensions cache evicts them (#10713, #10735)
    • Fix a false MultipleEnvs issue, and stale env config left in .bitmap (#10550, #10674)
    • Fix an issue where components using a .bit-env plugin-file env didn't have a clean status (#10525)
    • Fix an issue where multiple versions of an aspect were loaded from the scope, and a never-loaded aspect was not replaced by a newer manifest (#10816, #10799)
  • Scope, snap and export:
    • Fix an issue where a missing Version object failed loading until a manual import; it's now fetched on load (#10707)
    • Retry transient remote-fetch failures (#10603)
    • Fix an issue where newly exported components were missing the scope in .bitmap (#10538)
    • Fix several issues when snapping from a scope: the previous env was kept when replaced, docs of changed files were not parsed, apps were loaded as aspects without building, and the previous snap log was mutated (#10831, #10812, #10832, #10527)
    • Fix an issue where --tasks was ignored by the tag pipeline and full task-ids were not accepted (#10809)
    • Fix an issue where the import default dir collided with another owner's component (#10833)
  • Workspace and CLI:
    • Fix an issue where bit status listed components pending import as invalid (#10866)
    • Fix an issue where bit watch deleted the whole dist dir when a file was removed, compiled during another process's install, and reported a false untracked-dependencies issue for a new file (#10790, #10806, #10705)
    • Fix an issue where the watcher failed when the @parcel/watcher native binary was missing; it now falls back to chokidar (#10518)
    • Fix an issue where bit ws-config overrode config files Bit didn't generate (#10701, #10703)
    • Fix an issue where comments inside workspace.jsonc policy were lost (#10647)
    • Fix an issue where commands with sub-commands didn't register their own flags (#10622)
    • Hide Node's SQLite ExperimentalWarning (#10777)
    • Fix an issue where circular-dependency detection used outdated edges of modified components (#10778)
    • Strip ANSI codes from the JSON output of component issues (#10706)
    • Fix an issue where the login URL used the wrong port (#10516)
  • UI and preview:
    • Fix stuck previews, runaway iframe sizing and the iframe sandbox on first load (#10802, #10821, #10696)
    • Fix scope SSR and several minimal-mode issues (Preview tab, Search, mobile tabs, notifications) (#10628, #10795, #10646, #10607, #10506)

Internal

  • Migrate core envs and typescript-compiler to TypeScript 7-based majors, and move React components to core-react-env and React 19 (#10529, #10642, #10671, #10544)
  • Break the remaining circular dependencies across aspects and legacy code, and fail CI on any new cycle (#10856, #10848, #10843, #10740)
  • Resolve type errors behind TS-migration ts-ignore comments (#10858–#10861, #10857, #10867)
  • Move bit new to a workspace-starter aspect and the bit-aspect template to core-aspect-env (#10752, #10531)
  • Update Node.js to 22.23.4 and bump lodash/proxy-addr for security (#10850, #10775)
  • Custom merge-queue bot, e2e offloading to GitHub Actions, and other CI/e2e stability improvements (#10561, #10662, #10664, #10651)