| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
PR Summary by QodoLoad former core envs as regular registry envs with legacy version pinning ✨ Enhancement 🐞 Bug fix 🕐 40+ Minutes AI Description
|
Sorry, something went wrong.
Code Review by Qodo🐞 Bugs (13) 📘 Rule violations (0) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0) 1. Unfixable NonLoadedEnv remediation 🐞 Bug ≡ Correctness Description Code Evidence Agent prompt 2. Stale installed-aspect cache 🐞 Bug ☼ Reliability Description Code Evidence Agent prompt 3. Empty-env main points dist 🐞 Bug ≡ Correctness Description Code Evidence Agent prompt View action required (1) 4. Versioned env lookup fails ✓ Resolved 🐞 Bug ≡ Correctness Description Code Evidence Agent prompt 5. Legacy env canonical ID unstable ✓ Resolved 🐞 Bug ☼ Reliability Description Code Evidence Agent prompt 6. Legacy env failures suppressed 🐞 Bug ◔ Observability Description Code Evidence Agent prompt 7. Core errors overly suppressed 🐞 Bug ☼ Reliability Description Code Evidence Agent prompt View review recommended (9) 8. In-flight loads not awaited 🐞 Bug ☼ Reliability Description Code Evidence Agent prompt 9. Legacy dep not sanitized 🐞 Bug ☼ Reliability Description Code Evidence Agent prompt 10. Unbounded pnpm dir restores ✓ Resolved 🐞 Bug ➹ Performance Description Code Evidence Agent prompt 11. Core link sync suppressed 🐞 Bug ☼ Reliability Description Code Evidence Agent prompt 12. Fallback compiler can crash 🐞 Bug ☼ Reliability Description Code Evidence Agent prompt 13. Dependents search stops early 🐞 Bug ≡ Correctness Description Code Evidence Agent prompt 14. CI versions legacy envs 🐞 Bug ≡ Correctness Description Code Evidence Agent prompt 15. Install masks env errors 🐞 Bug ☼ Reliability Description Code Evidence Agent prompt 16. Hardcoded dist main path 🐞 Bug ≡ Correctness Description Code Evidence Agent prompt Tip of the day 💡 Did you know, you can reply 'qodo' on any finding to push back, ask questions, or dig deeper |
Sorry, something went wrong.
|
Code review by qodo was updated up to the latest commit c7dd1a7 |
Sorry, something went wrong.
Sorry, something went wrong.
|
Code review by qodo was updated up to the latest commit e6418b9 |
Sorry, something went wrong.
|
Code review by qodo was updated up to the latest commit c9eca3d |
Sorry, something went wrong.
|
Code review by qodo was updated up to the latest commit 3f5c24e |
Sorry, something went wrong.
|
Code review by qodo was updated up to the latest commit 0607c7d |
Sorry, something went wrong.
|
Code review by qodo was updated up to the latest commit b23b273 |
Sorry, something went wrong.
|
Code review by qodo was updated up to the latest commit 94eddce |
Sorry, something went wrong.
|
Code review by qodo was updated up to the latest commit ac4b7d0 |
Sorry, something went wrong.
|
Code review by qodo was updated up to the latest commit ab21e34 |
Sorry, something went wrong.
|
Code review by qodo was updated up to the latest commit 66fd06b |
Sorry, something went wrong.
Sorry, something went wrong.
|
Code review by qodo was updated up to the latest commit 684cdf6 |
Sorry, something went wrong.
|
Code review by qodo was updated up to the latest commit 3df0fcd |
Sorry, something went wrong.
|
Code review by qodo was updated up to the latest commit eedfdcd |
Sorry, something went wrong.
…ce-cycle Verified against two real CI runs and a local repro: execSync's timeout error here doesn't set error.killed, it's a raw ETIMEDOUT from spawnSync, so the clearer message never fired. Also correct the message itself - the CI evidence points at a local force-write storm during aspect loading (every dist file of every loaded aspect written to every duplicate .pnpm-hash variant), not a network/registry stall.
Diagnostic addition to narrow down the perf regression found in this check: run it once with the repo's own binary (gating, as before) and once with the bvm-linked nightly release already fetched by setup_harmony (informational only, never fails the job). Reuses the existing install_bvm/bvm_upgrade commands and the same .bvm cache key setup_harmony populates this pipeline run, so it should mostly reuse the cached bundle rather than re-download. Remove once the regression in the repo binary's aspect-loading path is root-caused.
CircleCI skips steps after a failed one unless that specific step is
marked when:always - it doesn't propagate through a whole reusable
command's inner steps. install_bvm/bvm_upgrade sat after the repo-bit
check step, so when that step failed/timed out (as expected), bvm
setup never ran and the diagnostic comparison silently no-opped
("bbit: command not found", swallowed by the || true). Move the bvm
setup earlier so it runs unconditionally, independent of the repo-bit
check's outcome.
We already know the repo-bit check is slow/fails; running the known- good bvm baseline first gives that signal without waiting on the repo-bit run, and it stays non-blocking (|| true) so it can't skip the repo-bit gate either way.
Repo bit has a confirmed, reproducible perf regression on this check (~5min timeout vs ~1-2min on a bvm release, across 4 environments) - see the new CI-HANG-INVESTIGATION.md for the full root-cause writeup (narrowed to workspace.ts's self-as-aspect recursion, unlocked by isCoreAspect() now returning false for the envs this branch removed from the core manifest). Disabling the repo-bit step until it's fixed so it can't block merges on a broken check; the non-blocking bvm-bit comparison stays as a sanity signal. Re-enable once fixed.
Runtime-instrumented the workspace.ts self-as-aspect branch in a disposable /tmp clone - it's never entered during the hang, disproving the earlier hypothesis. Re-reading the captured debug.log's INFO-level loadAspects lines (not the much noisier DEBUG-level file-write lines) shows the real shape: one single trace root recurses for the entire 5-minute window, alternating consumer-fs-load/extension-merge calls into workspace.loadAspects without ever terminating - not fan-out across many components. Found a near-exact match already diagnosed and fixed (unmerged) on origin/refactor/component-loading-v2-take-3-stage2: commits f9ae003 and its follow-up 1213c36 describe and fix the identical mechanism in WorkspaceAspectsLoader.loadAspects (concurrent calls for different root aspects independently re-isolating a shared env dependency, because isAspectLoaded only flips true after a load completes). Their fix serializes loadAspects through a single queue; measured similarly (13:54 -> 10s on a 311-component workspace). Porting that approach is now the primary recommended next step.
…om-manifest # Conflicts: # .bitmap # pnpm-lock.yaml
@teambit/node, react, aspect, env: 1.0.1105 -> 1.0.1107 @teambit/mdx, readme: 1.0.1106 -> 1.0.1108
…tall, document root cause
…om-manifest # Conflicts: # .bitmap # pnpm-lock.yaml # scopes/react/react/react.templates.ts
…om-manifest # Conflicts: # .circleci/config.yml # pnpm-lock.yaml
…om-manifest # Conflicts: # .bitmap # .circleci/config.yml # pnpm-lock.yaml # scopes/workspace/workspace/build-graph-from-fs.ts
…into remove-core-envs-from-manifest # Conflicts: # pnpm-lock.yaml
…om-manifest # Conflicts: # .bitmap # pnpm-lock.yaml
…after merging master
…om-manifest # Conflicts: # .bitmap # e2e/harmony/dependency-resolver.e2e.ts # pnpm-lock.yaml # scripts/generate-e2e-timings.js
| Back | FazBrowse Home | New Git URL |
Removes the env aspects (teambit.react/react, teambit.harmony/node, teambit.harmony/aspect, teambit.envs/env, teambit.mdx/mdx, teambit.mdx/readme) from the core manifest to slim Bit. They now act like any other env, installed from the registry.
New default env: teambit.harmony/empty-env (core). A totally empty env - no compiler, no tester, no preview, no dependency policy. Components with no env configured use it and work fully offline out of the box (add → compile no-op → tag/snap → export). Since it has no behavior, it has nothing to drift when bit itself changes - the one env that is safe to keep core (and versionless in models) forever. To get a dev experience, users configure a real env (bit create flows already do).
teambit.harmony/aspect and teambit.envs/env are removed like the rest, with zero behavior change. Their implementation is untouched (react-based, preview and all) - users get the exact released behavior after bit install (the pinned-version machinery auto-installs them). New envs are created from the bitdev env packages (bit create react-env etc.), so these built-in envs are legacy surface. The bit-aspect template and the harmony starters moved to the core generator aspect, so bit create bit-aspect and bit new keep working out of the box (the created aspect needs bit install before it loads, like any env).
Versionless by design. Config entries for the removed env ids are persisted by name, without a version - exactly as they were when core (registered as core-extension names). Keeping them versionless is deliberate on two counts. First, it keeps the env from becoming a dependency edge of its own components; otherwise an env such as react, whose dependency closure includes components that use it as their env, creates circular TS project references and breaks lane/tag builds. Second, it preserves forward compatibility: a re-tag under the new bit keeps the env id versionless, so a teammate who has not upgraded yet (whose bit still ships these as core) can import the re-tagged component and resolve the env - instead of receiving a versioned id their bit has no component for. The alternative (showing the component as modified and pinning the env on the next tag) would silently break not-yet-upgraded consumers.
Backward compatibility. Old components have the removed envs saved without a version. legacy-core-envs.ts maps them to pinned versions, applied only at the resolution/loading/install level - stored objects are never mutated. Versionless legacy ids match the env slot ignoring version, bit install auto-adds their packages, and single-instance semantics are enforced (a loaded version is reused rather than loading another copy). Not-installed legacy envs fail fast with a NonLoadedEnv issue suggesting bit install - no scope-capsule isolation in workspace context (which used to take minutes). Old components load without being reported as modified, and re-tagging keeps the env versionless - covered end-to-end by e2e/harmony/legacy-core-env-back-compat.e2e.ts, which imports a component exported by a pre-removal bit (env saved versionless) and asserts it is not modified and stays versionless after a re-tag.
Relocated core wiring: the bit aspect CLI command moved to teambit.workspace/workspace; validateBeforePersistHook moved to teambit.dependencies/dependency-resolver; the dead @teambit/legacy link is now skipped instead of crashing.
Also fixes latent issues this path exposed: versionless seeders filtering out all manifests in loadExtensionsByManifests, circular env chains causing infinite component-load recursion, versioned core-aspect ids escaping core filters and doRequire mutating shared core manifests, stack overflows from recursive graph traversal, and a spurious MissingDists issue for compiler-less envs.
Verified locally: fresh workspace (JS and TS components) - clean status in ~1s, tag/snap/export offline, bit envs/bit test graceful; this repo's workspace - status/insights/list-core clean; the seven repo components that relied on the default env are now explicitly set to the node env. bit create <template> --env <removed-env> loads the env's templates on demand from the global scope (pinned version); this path also loads the full manifest graph, and binds manifest deps of legacy envs to their pinned versions (models built when these envs were core don't list them as dependencies). The e2e setCustomEnv helper installs the env package the fixture imports (e.g. @teambit/node).
Also removes the former-core env sources from this repo's workspace (scopes/harmony/node, scopes/react/react, scopes/harmony/aspect, scopes/envs/env, scopes/mdx/mdx, scopes/docs/readme) - bit now dogfoods them as installed packages like any consumer, and the source-vs-installed duality is gone. Making this pass end-to-end surfaced several general fixes that ride along: