Comparing main@{1day}...main · angular/angular · GitHub
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
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main@{1day}
Choose a base ref
...
head repository: angular/angular
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
  • 15 commits
  • 806 files changed
  • 7 contributors

Commits on Oct 27, 2026

  1. fix(docs-infra): keep focus in the API reference filter

    The API reference filter writes its value to the URL on each change. With
    the Navigation API integration, each of these navigations ends with the
    browser moving focus to the body, so typing `signal` in the filter leaves
    `s` and the other keys go to the page.
    
    Pass `focusReset: 'manual'` next to `scroll: 'manual'`, so focus stays in
    the filter field.
    aminesbdev authored and mattrbeck committed Oct 27, 2026
    Configuration menu
    Copy the full SHA
    07de4b0 View commit details
    Browse the repository at this point in the history
  2. docs: fix inaccurate notes in the forms guides

    The validators snippet used an inline Validators.pattern call that
    removeValidators can never match, because Angular compares validators by
    reference. The signal forms guides said that dirty compares the value
    with its initial state, that debounce('blur') has no effect without a
    touch output (the value is never written to the form model), and that
    only hidden and disabled fields skip validation.
    erkamyaman authored and mattrbeck committed Oct 27, 2026
    Configuration menu
    Copy the full SHA
    63f7bec View commit details
    Browse the repository at this point in the history
  3. refactor(compiler-cli): make tsconfig optional for the preprocessor a…

    …nalyzer
    
    Integrations such as bundlers and the Angular CLI may have no tsconfig at all, or already own
    the parsed configuration. The analyzer can now be constructed from options alone.
    
    `AnalyzerOptions.tsconfigPath` is now optional, and three options replace what could
    previously only come from the tsconfig:
    
    - `entryPoints`: the roots of the program closure. When set, they replace the tsconfig's root
      files, and the roots are no longer re-read from the tsconfig after file updates (the same
      holds after `setEntryPoints`). Bundlers pass their own entry files; the analyzer follows
      imports from there. The `.d.ts` files a tsconfig lists are still searched for ambient
      modules either way.
    - `r3SymbolsFile`: the `r3_symbols.ts` file used when compiling `@angular/core` itself, which
      was only found by scanning the root files for that name. The scan remains the fallback.
    - `implicitStandalone`: whether declarations without an explicit `standalone` flag are
      standalone, which was only derived from `angularCompilerOptions._angularCoreVersion`. The
      tsconfig value remains the fallback, and the default is `true`.
    
    `setEntryPoints` is now exposed on every backend (N-API, WASM and the sidecar) and on
    `IAnalyzer`, so integrations that discover entry files incrementally can replace the roots
    after construction. Like `updateFileContent`, it returns every path whose cached analysis is
    now stale.
    
    `createAnalyzer` and `createAnalyzerWithInfo` also accept a single options object in which
    `tsconfigPath` is optional, alongside the existing tsconfig-path form, which is unchanged.
    
    Without a tsconfig, every unset option takes its documented default (matching the defaults of
    an empty tsconfig), path-valued options must be absolute since there is no directory to
    resolve them against, and the module resolver runs without tsconfig `paths` mappings.
    Behavior is unchanged when a tsconfig is given and the new options are unset.
    clydin authored and mattrbeck committed Oct 27, 2026
    Configuration menu
    Copy the full SHA
    0210eb4 View commit details
    Browse the repository at this point in the history
  4. test(compiler-cli): migrate compliance test expectations to full-file…

    … goldens
    
    Migrate the ngtsc compliance test suite from snippet-based golden files to full-file golden files:
    - Expand macro calls (__AttributeMarker, __SelectorFlags, __QueryFlags, __i18nMsg__) and $...$ identifier placeholders in compliance golden files to full-file ngtsc output.
    - Format full-file compliance golden files and generated compliance outputs (`ngtsc` and `ngp`) with Prettier (`printWidth: 100`).
    - Consolidate multi-snippet expectations in TEST_CASES.json into single full-file expectations and un-share shared line-ending normalization expectations so each test case has its own full-file golden, using `…` for partial-linker divergent fragments.
    - Enforce start-of-file and end-of-file bounds in `expectEmit` for full-file goldens, sub-chunk large token arrays and string literals, and explicitly scope partial-linker normalizations (`isLinkedCompilation`) and NGP emit normalizations (`isNgpCompilation` / `isNgpTestMode()`) to their respective test runners.
    - Align `ngp` (`HybridCompiler`) DI and class metadata emission with `ngtsc` and consolidate remaining NGP cosmetic emit normalizations into `normalizeNgpEmitForComparison`.
    JeanMeche authored Oct 27, 2026
    Configuration menu
    Copy the full SHA
    e36a63e View commit details
    Browse the repository at this point in the history
  5. fix(compiler-cli): format two-way bindings in preprocessor diagnostics

    Fixes that the preprocessor wasn't formatting two-way binding diagnostics.
    crisbeto committed Oct 27, 2026
    Configuration menu
    Copy the full SHA
    ea11c9a View commit details
    Browse the repository at this point in the history
  6. fix(compiler-cli): avoid duplicate diagnostics in invalid expressions

    Updated the preprocessor to ignore diagnostics from a couple of types of invalid expressions.
    crisbeto committed Oct 27, 2026
    Configuration menu
    Copy the full SHA
    06af10f View commit details
    Browse the repository at this point in the history
  7. fix(compiler-cli): validate deferredImports

    Sets up validation for the `deferredImports` field of `@Component` in a similar way to ngtsc.
    crisbeto committed Oct 27, 2026
    Configuration menu
    Copy the full SHA
    401cb2e View commit details
    Browse the repository at this point in the history
  8. test(compiler-cli): enable more passing tests

    Updates a bunch of tests that were generating correct code, but needed more lenient assertions.
    crisbeto committed Oct 27, 2026
    Configuration menu
    Copy the full SHA
    2bd4245 View commit details
    Browse the repository at this point in the history
  9. fix(compiler-cli): enforce declaration-only emission diagnostics in p…

    …reprocessor
    
    Pass through `compilerOptions.emitDeclarationOnly` and `angularCompilerOptions._experimentalAllowEmitDeclarationOnly` into `ng-analyze` and enforce the diagnostics required in experimental declaration-only emission mode:
    - Reject custom class decorators with `NG1005` (`DECORATOR_UNEXPECTED`) and skip trait compilation for those classes without affecting standard dev-mode builds.
    - Report `NG1010` (`VALUE_HAS_WRONG_TYPE`) when an inline `@Input` transform function has an untyped or spread first parameter.
    - Report `NG11003` (`LOCAL_COMPILATION_UNSUPPORTED_EXPRESSION`) when a `hostDirectives` entry resolves to an external reference via an expression other than an identifier or property access.
    crisbeto committed Oct 27, 2026
    Configuration menu
    Copy the full SHA
    777c8c5 View commit details
    Browse the repository at this point in the history
  10. fix(compiler-cli): match ctorParameters behavior from ngtsc

    Resolves a test failure internally where we weren't matching how ngtsc emits `ctorParameters` for primitive types. It appears that in ngtsc we have some logic where `string` gets emitted as the `String` object, `number` as the `Number` object etc.
    crisbeto committed Oct 27, 2026
    Configuration menu
    Copy the full SHA
    1172ba3 View commit details
    Browse the repository at this point in the history
  11. docs: fix inaccurate null and class notes in the template binding guide

    Interpolation renders null and undefined as an empty string instead of
    converting them with toString. Attribute bindings remove the attribute for
    undefined as well as null. The [class] binding does not drop strings that
    are not valid CSS class names, so describe the string form instead.
    erkamyaman authored and mattrbeck committed Oct 27, 2026
    Configuration menu
    Copy the full SHA
    c35b3ad View commit details
    Browse the repository at this point in the history
  12. docs: update cross-repo adev docs

    Updated Angular adev cross repo docs files.
    angular-robot authored and mattrbeck committed Oct 27, 2026
    Configuration menu
    Copy the full SHA
    56f45e0 View commit details
    Browse the repository at this point in the history
  13. refactor(compiler-cli): decouple preprocessor HybridCompiler from tsc…

    …onfigPath
    
    `HybridCompiler` wrote `<tsconfig>.ngdiag.json` itself from `prepareChunk` and `prepareChunkSync`,
    which tied it to a `tsconfigPath` and to the Node filesystem, or to a `virtualFiles` overlay
    standing in for it. Now that the analyzer no longer requires a tsconfig, hosts that embed the
    compiler without one have nowhere to write such a file, and whether and where diagnostics are
    persisted is a decision for the build driver rather than for the compiler.
    
    `tsconfigPath` and `virtualFiles` are therefore removed from `HybridCompilerOptions`, together
    with `writeDiagnosticsFile` and `writeDiagnosticsFileSync`, and `hybrid_compiler.ts` no longer
    imports `node:fs`. In their place, `HybridCompiler.getDiagnostics()` returns the collected
    per-file diagnostics in the deterministic order the `.ngdiag.json` already used and leaves out
    diagnostics anchored on `.d.ts` files unless `includeDeclarationFiles` is set, making it the
    single place that filters and orders them; `serializeDiagnostics` now only formats that output.
    The `.ngdiag.json` write moves into `run` in `ngp.ts`, gated on a new optional
    `RunOptions.tsconfigPath`. The write that preceded the processing of each chunk is dropped as
    redundant, while `run` still writes after every chunk and once more at the end so that option
    diagnostics reach the file even when the analyzer produces no chunks.
    
    Without a tsconfig there is also nothing to resolve relative paths against, so `rootDir` and
    `rootDirs` on `HybridCompilerOptions` must now be absolute; relative `rootDirs` used to be
    resolved against `rootDir` or `dirname(tsconfigPath)`. This matters because
    `getProjectRelativePath`, which produces the `ɵsetClassDebugInfo` paths and HMR IDs, uses
    `path.posix.relative` and would silently resolve a relative root against the process cwd. Both
    options are normalized to forward slashes; `rootDir` previously was not, which would have broken
    that computation for backslash paths on Windows. `main.ts` resolves relative `rootDirs` against
    the tsconfig directory, matching TypeScript and the analyzer, and the test helpers do the same.
    clydin authored and mattrbeck committed Oct 27, 2026
    Configuration menu
    Copy the full SHA
    338d0a2 View commit details
    Browse the repository at this point in the history
  14. refactor(compiler-cli): unconditionally use namespace imports for imp…

    …orted constructor tokens in ngp
    
    Align ngp with ngtsc by unconditionally emitting imported constructor
    DI tokens and class metadata through module namespace imports (e.g.
    i1.Service) instead of only doing so for @angular/core or in
    complianceMode.
    
    This removes the divergence and eliminates the need to pass complianceMode
    to buildDeps or useCoreNamespace/complianceMode to buildCtorParametersExpr.
    JeanMeche authored and mattrbeck committed Oct 27, 2026
    Configuration menu
    Copy the full SHA
    6ac3065 View commit details
    Browse the repository at this point in the history

Commits on Oct 28, 2026

  1. Revert "build: update rust dependencies"

    This reverts commit 3d5bfdf.
    Also reverts follow-up commit 4690b54 (#71651).
    
    The Oxc 0.144 -> 0.155 update in `ng-analyze` (#71599) requires a separate
    dependency update in google3. Reverting to unblock google3 sync.
    mattrbeck committed Oct 28, 2026
    Configuration menu
    Copy the full SHA
    b81b37d View commit details
    Browse the repository at this point in the history
Loading