Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: angular/angular-cli
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: dc79270
Choose a base ref
...
head repository: angular/angular-cli
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: ee30413
Choose a head ref
  • 13 commits
  • 71 files changed
  • 5 contributors

Commits on Sep 16, 2026

  1. Configuration menu
    Copy the full SHA
    0035d82 View commit details
    Browse the repository at this point in the history

Commits on Sep 17, 2026

  1. test(@angular/build): add performance benchmark suite for i18n inliner

    Introduces an automated macro performance benchmark suite for the i18n inlining subsystem in @angular/build, executable via the benchmark command.
    
    The suite generates synthetic in-memory bundles, source maps, and translation catalogs to evaluate realistic workloads without checking large test fixtures into the repository.
    
    Benchmark scenarios cover standard applications with and without source maps, enterprise multilingual applications across 32 locales, monolithic bundles to verify 2D task sharding, and warm persistent cache throughput.
    
    Each scenario is executed in an isolated child process, and persistent cache priming is performed out-of-process to avoid cross-scenario memory contamination from the OS memory allocator. The harness collects high-precision timing, peak heap, peak RSS, and memory deltas with explicit garbage collection support.
    
    The runner is integrated into devkit-admin with support for baseline comparison, machine-readable JSON output, stale build detection, and automatic rebuilds.
    
    (cherry picked from commit 2a636a7)
    clydin authored and alan-agius4 committed Sep 17, 2026
    Configuration menu
    Copy the full SHA
    deed5d8 View commit details
    Browse the repository at this point in the history
  2. test(@angular/build): add large-enterprise-10k benchmark scenario

    Adds a large-scale stress test scenario to the i18n inliner benchmark suite with 10,000 translation messages across 32 locales. The scenario generates a 3 MB main bundle and 100 route chunks with source maps, evaluating binary translation catalog encoding, small file batching, and memory scaling under maximum enterprise workloads.
    
    (cherry picked from commit d285bd8)
    clydin authored and alan-agius4 committed Sep 17, 2026
    Configuration menu
    Copy the full SHA
    33e6d5f View commit details
    Browse the repository at this point in the history
  3. build: update cross-repo angular dependencies

    See associated pull request for more information.
    angular-robot authored and alan-agius4 committed Sep 17, 2026
    Configuration menu
    Copy the full SHA
    24dc029 View commit details
    Browse the repository at this point in the history
  4. build: update bazel dependencies

    See associated pull request for more information.
    angular-robot authored and alan-agius4 committed Sep 17, 2026
    Configuration menu
    Copy the full SHA
    6ffd267 View commit details
    Browse the repository at this point in the history
  5. refactor(@angular/build): cap default i18n inlining concurrency to 8

    Translation inlining and sourcemap remapping are CPU- and memory-intensive operations. When Piscina is initialized without explicit maxThreads, it defaults to floor(cpus * 1.5), spawning 18 to 48 worker threads on high-core machines. This excessive concurrency causes severe thread oversubscription, memory allocator lock contention, and high-core performance degradation under Promise.all barriers.
    
    This change introduces maxInlinerWorkers in environment options defaulting to min(8, availableParallelism()) while preserving explicit overrides via NG_BUILD_MAX_WORKERS. Concurrency passed to I18nInliner in the application builder is bounded to maxInlinerWorkers, capping standalone workers and shared worker pools while honoring shared pool thread limits when lower.
    
    (cherry picked from commit 93c118e)
    clydin committed Sep 17, 2026
    Configuration menu
    Copy the full SHA
    c76b2d5 View commit details
    Browse the repository at this point in the history
  6. Revert "refactor(@angular/cli): import markdown files directly for co…

    …mmand descriptions"
    
    This reverts commit 3d7f081.
    alan-agius4 committed Sep 17, 2026
    Configuration menu
    Copy the full SHA
    9c6037a View commit details
    Browse the repository at this point in the history
  7. build: update cross-repo angular dependencies

    See associated pull request for more information.
    angular-robot authored and alan-agius4 committed Sep 17, 2026
    Configuration menu
    Copy the full SHA
    cf21837 View commit details
    Browse the repository at this point in the history
  8. refactor(@angular/build): extract shared concurrency, watcher, and st…

    …yling utilities
    
    (cherry picked from commit d0eb6b6)
    alan-agius4 committed Sep 17, 2026
    Configuration menu
    Copy the full SHA
    96832f1 View commit details
    Browse the repository at this point in the history

Commits on Sep 18, 2026

  1. fix(@angular/build): support standard JavaScript MIME types and case …

    …insensitivity in auto-CSP
    
    Previously, isJavascriptMimeType() in auto-csp.ts only performed a case-sensitive check against 'text/javascript' on the slice prior to the first semicolon.
    
    This caused several issues:
    1. Valid and common JavaScript MIME types specified in the HTML Living Standard such as application/javascript and text/ecmascript were not recognized as JavaScript.
    2. Case differences (e.g. type="text/JavaScript" or type="Module") were not matched, despite HTML attribute matching and MIME types being ASCII case-insensitive.
    3. Whitespace around the essence (e.g. type="text/javascript ; charset=utf-8" or type=" text/javascript") caused the strict equality check to fail.
    
    When a script tag with one of these valid types was not recognized, auto-csp bypassed dynamic script rewriting and emitted the script element as-is into index.html. Under the generated strict CSP, the browser would then block the script from executing.
    
    This change introduces JAVASCRIPT_MIME_TYPES containing all HTML-standard JavaScript MIME types, normalizes the essence (stripping parameters, trimming surrounding whitespace, and lowercasing), and updates shouldDynamicallyLoadScriptTagBasedOnType to support case-insensitive module types.
    
    (cherry picked from commit 8e1b202)
    clydin authored and alan-agius4 committed Sep 18, 2026
    Configuration menu
    Copy the full SHA
    e31bd66 View commit details
    Browse the repository at this point in the history
  2. fix(@angular-devkit/core): name the unknown option in a schema valida…

    …tion error
    
    An unknown property in `angular.json` or in a builder's options reported
    `Data path "" must NOT have additional properties(allowedCommonJsDependencies).`,
    which names neither the object the property was found in nor what is valid
    there. It now reads `Unknown option "allowedCommonJsDependencies". Valid
    options are: assets, browser, ...`, with `at "/cli"` where the instance path
    is not empty. Errors that are not about an unknown option are unchanged.
    
    Listing the valid options needs ajv's `verbose` option, which is what puts
    `parentSchema` on an error. That is the schema the property was rejected by, so
    a `$ref` and a `oneOf` branch each list their own options; a schema that
    declares no `properties` at all stops after the option name rather than
    offering an empty list.
    
    (cherry picked from commit 8c43889)
    thekhegay authored and alan-agius4 committed Sep 18, 2026
    Configuration menu
    Copy the full SHA
    c0e6b3c View commit details
    Browse the repository at this point in the history
  3. fix(@schematics/angular): update @types/node to a version vitest 5 ac…

    …cepts
    
    `ng new --ssr` and `ng add @angular/ssr` fail to install their dependencies:
    the server schematic adds `@types/node@^20.17.19`, and vitest 5, which the
    same schematics now add, has `@types/node@^22.0.0 || >=24.0.0` as a peer.
    npm refuses the tree and the workspace is left without `node_modules`.
    
    `^22.12.0` is what this repository uses for `@types/node` itself, and Node 20
    is already outside the `engines.node` range of the generated project.
    
    (cherry picked from commit 1627ccb)
    thekhegay authored and alan-agius4 committed Sep 18, 2026
    Configuration menu
    Copy the full SHA
    4ebaa66 View commit details
    Browse the repository at this point in the history
  4. fix(@angular/build): ensure chokidar watcher is ready before returning

    When initializing chokidar.watch with ignoreInitial: true, files visited during the initial scan are treated as the initial baseline and do not emit change events. If createChokidarWatcher returns before the initial scan completes, subsequent file modifications made shortly after setup can be visited for the first time during the initial scan, causing the change event to be dropped.
    
    (cherry picked from commit dc79270)
    alan-agius4 committed Sep 18, 2026
    Configuration menu
    Copy the full SHA
    ee30413 View commit details
    Browse the repository at this point in the history
Loading