Repository navigation
Comparing changes
Open a pull request
base repository: angular/angular
base: main@{1day}
head repository: angular/angular
compare: main
- 15 commits
- 806 files changed
- 7 contributors
Commits on Oct 27, 2026
-
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.
Configuration menu - View commit details
-
Copy full SHA for 07de4b0 - Browse repository at this point
Copy the full SHA 07de4b0View commit details -
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.Configuration menu - View commit details
-
Copy full SHA for 63f7bec - Browse repository at this point
Copy the full SHA 63f7becView commit details -
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.
Configuration menu - View commit details
-
Copy full SHA for 0210eb4 - Browse repository at this point
Copy the full SHA 0210eb4View commit details -
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`.
Configuration menu - View commit details
-
Copy full SHA for e36a63e - Browse repository at this point
Copy the full SHA e36a63eView commit details -
fix(compiler-cli): format two-way bindings in preprocessor diagnostics
Fixes that the preprocessor wasn't formatting two-way binding diagnostics.
Configuration menu - View commit details
-
Copy full SHA for ea11c9a - Browse repository at this point
Copy the full SHA ea11c9aView commit details -
fix(compiler-cli): avoid duplicate diagnostics in invalid expressions
Updated the preprocessor to ignore diagnostics from a couple of types of invalid expressions.
Configuration menu - View commit details
-
Copy full SHA for 06af10f - Browse repository at this point
Copy the full SHA 06af10fView commit details -
fix(compiler-cli): validate deferredImports
Sets up validation for the `deferredImports` field of `@Component` in a similar way to ngtsc.
Configuration menu - View commit details
-
Copy full SHA for 401cb2e - Browse repository at this point
Copy the full SHA 401cb2eView commit details -
test(compiler-cli): enable more passing tests
Updates a bunch of tests that were generating correct code, but needed more lenient assertions.
Configuration menu - View commit details
-
Copy full SHA for 2bd4245 - Browse repository at this point
Copy the full SHA 2bd4245View commit details -
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.
Configuration menu - View commit details
-
Copy full SHA for 777c8c5 - Browse repository at this point
Copy the full SHA 777c8c5View commit details -
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.
Configuration menu - View commit details
-
Copy full SHA for 1172ba3 - Browse repository at this point
Copy the full SHA 1172ba3View commit details -
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.
Configuration menu - View commit details
-
Copy full SHA for c35b3ad - Browse repository at this point
Copy the full SHA c35b3adView commit details -
docs: update cross-repo adev docs
Updated Angular adev cross repo docs files.
Configuration menu - View commit details
-
Copy full SHA for 56f45e0 - Browse repository at this point
Copy the full SHA 56f45e0View commit details -
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.
Configuration menu - View commit details
-
Copy full SHA for 338d0a2 - Browse repository at this point
Copy the full SHA 338d0a2View commit details -
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.
Configuration menu - View commit details
-
Copy full SHA for 6ac3065 - Browse repository at this point
Copy the full SHA 6ac3065View commit details
Commits on Oct 28, 2026
-
Configuration menu - View commit details
-
Copy full SHA for b81b37d - Browse repository at this point
Copy the full SHA b81b37dView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff main@{1day}...main
