helloadhavan/github_issues huggingface dataset:
Repository: vercel/next.js
Pull request: In-Depth Explanation of React Version Handling Doc

There have been multiple discussions and some confusion around [React version handling](https://nextjs.org/docs#react-version-handling) in Next.js. This PR adds an in-depth explanation to clarify how React and react-dom versions are managed internally, and why they still need to be declared in package.json.

The goal is to help developers better understand this behavior and reduce recurring questions around it.

Reference discussion:
https://github.com/vercel/next.js/discussions/87958

@icyJoseph

Changed files:
filename: docs/01-app/01-getting-started/01-installation.mdx
patch: @@ -126,7 +126,10 @@ yarn add next@latest react@latest react-dom@latest
 bun add next@latest react@latest react-dom@latest
 ```
 
-> **Good to know**: The App Router uses [React canary releases](https://react.dev/blog/2023/05/03/react-canaries) built-in, which include all the stable React 19 changes, as well as newer features being validated in frameworks. The Pages Router uses the React version you install in `package.json`.
+> **Good to know**:
+>
+> - The `App Router` uses [React canary releases](https://react.dev/blog/2023/05/03/react-canaries) built-in, which include all the stable React 19 changes, as well as newer features being validated in frameworks, but you should still declare react and react-dom in package.json for tooling and ecosystem compatibility.
+> - The `Pages Router` uses the React version from your `package.json`.
 
 Then, add the following scripts to your `package.json` file:
Repository: facebook/react
Pull request: Match `react-dom/static` test entrypoints and published entrypoints

Does not affect published files.

I think these were added accidentally in https://github.com/facebook/react/pull/33441/ due to copy&paste. `react-dom/static.edge` doesn't have these methods either.

Noticed this while diffing against latest stable release. The published entrypoints didn't have them. Just the entrypoints for tests.

Changed files:
filename: packages/react-dom/static.node.js
patch: @@ -11,19 +11,6 @@
 import ReactVersion from 'shared/ReactVersion';
 export {ReactVersion as version};
 
-export function renderToString() {
-  return require('./src/server/ReactDOMLegacyServerNode').renderToString.apply(
-    this,
-    arguments,
-  );
-}
-export function renderToStaticMarkup() {
-  return require('./src/server/ReactDOMLegacyServerNode').renderToStaticMarkup.apply(
-    this,
-    arguments,
-  );
-}
-
 export function prerenderToNodeStream() {
   return require('./src/server/react-dom-server.node').prerenderToNodeStream.apply(
     this,
Repository: ollama/ollama
Pull request: prefer ollama engine for qwen3moe

this change enables qwen3moe so it runs on the ollama engine

Changed files:
filename: fs/ggml/ggml.go
patch: @@ -244,6 +244,7 @@ func (kv KV) OllamaEngineRequired() bool {
 		"gemma3n",
 		"mistral3",
 		"qwen3",
+		"qwen3moe",
 		"llama4",
 		"mllama",
 		"qwen25vl",
Repository: ggml-org/llama.cpp
Pull request: ci : add AMD ZenDNN label to PR labeler

This PR adds a new "AMD ZenDNN" label to automatically tag pull requests that modify ZenDNN backend files, making it easier to track changes to AMD's EPYC CPU acceleration support.

cc: @amukho @avinashcpandey @taronaeo @danbev

Changed files:
filename: .github/labeler.yml
patch: @@ -27,6 +27,11 @@ IBM zDNN:
         - any-glob-to-any-file:
             - ggml/include/ggml-zdnn.h
             - ggml/src/ggml-zdnn/**
+AMD ZenDNN:
+    - changed-files:
+        - any-glob-to-any-file:
+            - ggml/include/ggml-zendnn.h
+            - ggml/src/ggml-zendnn/**
 documentation:
     - changed-files:
         - any-glob-to-any-file:
Repository: ollama/ollama
Pull request: harmony: don't sanitize built-ins

In #11910 we started sanitizing function names, but we accidentally were modifying built-ins like `browser.open` to `browser_open`. This was removing the special prompt rendering for built-ins, but this wasn't immediately apparent since the models seem to be reasonably good at remembering the built-ins even when presented with these slightly renamed version. This fix prevents built-ins from ever being renamed.

Changed files:
filename: harmony/harmonyparser.go
patch: @@ -463,6 +463,10 @@ func (h *HarmonyMessageHandler) HasThinkingSupport() bool {
 
 func (m *FunctionNameMap) ConvertAndAdd(userFunctionName string) string {
 	harmonyFunctionName := m.deriveName(userFunctionName)
+	// built-in functions should not be renamed
+	if userFunctionName == "browser.open" || userFunctionName == "browser.search" || userFunctionName == "browser.find" || userFunctionName == "python" {
+		harmonyFunctionName = userFunctionName
+	}
 	m.userToHarmony[userFunctionName] = harmonyFunctionName
 	m.harmonyToUser[harmonyFunctionName] = userFunctionName
 	return harmonyFunctionName

filename: harmony/harmonyparser_test.go
patch: @@ -513,6 +513,7 @@ func TestFunctionConvertAndAdd(t *testing.T) {
 		{name: "dupes from different user-specified names", in: []string{"get weather", "get_weather", "get-weather"}, want: []string{"get_weather", "get_weather_2", "get_weather_3"}},
 		{name: "non dupes after dupes", in: []string{"get weather", "get_weather", "get-weather", "something-different"}, want: []string{"get_weather", "get_weather_2", "get_weather_3", "something_different"}},
 		{name: "multiple sets of dupes", in: []string{"a", "a", "b", "a", "a", "b", "a"}, want: []string{"a", "a_2", "b", "a_3", "a_4", "b_2", "a_5"}},
+		{name: "built-in functions should not be renamed", in: []string{"browser.open", "python", "not.a.built-in.function", "browser.not_a_real_built_in"}, want: []string{"browser.open", "python", "not_a_built_in_function", "browser_not_a_real_built_in"}},
 	}
 
 	for i, tt := range tests {
Repository: huggingface/transformers
Pull request: Raise informative error when loading video processors

# What does this PR do?

Fixes https://github.com/huggingface/transformers/issues/43986

Changed files:
filename: src/transformers/models/auto/video_processing_auto.py
patch: @@ -94,8 +94,8 @@
 
 
 def video_processor_class_from_name(class_name: str):
-    for module_name, extractors in VIDEO_PROCESSOR_MAPPING_NAMES.items():
-        if class_name in extractors:
+    for module_name, extractor in VIDEO_PROCESSOR_MAPPING_NAMES.items():
+        if class_name == extractor:
             module_name = model_type_to_module_name(module_name)
 
             module = importlib.import_module(f".{module_name}", "transformers.models")
@@ -383,13 +383,14 @@ def from_pretrained(cls, pretrained_model_name_or_path, *inputs, **kwargs):
         # Last try: we use the VIDEO_PROCESSOR_MAPPING.
         elif type(config) in VIDEO_PROCESSOR_MAPPING:
             video_processor_class = VIDEO_PROCESSOR_MAPPING[type(config)]
-
             if video_processor_class is not None:
                 return video_processor_class.from_pretrained(pretrained_model_name_or_path, *inputs, **kwargs)
-            else:
-                raise ValueError(
-                    "This video processor cannot be instantiated. Please make sure you have `torchvision` installed."
-                )
+
+        # Raise a more informative error message if torchvision isn't found, otherwise just fallback to default
+        if not is_torchvision_available():
+            raise ValueError(
+                f"{pretrained_model_name_or_path} requires `torchvision` to be installed. Please install `torchvision` and try again."
+            )
 
         raise ValueError(
             f"Unrecognized video processor in {pretrained_model_name_or_path}. Should have a "
Repository: ollama/ollama
Pull request: fix: leaf alt name

a leaf node with an alternative name gets all its alternatives names added into the same branch rather than creating branches themselves

this fixes the issue with gptoss where the attention sink tensor contains a leaf with an alternative name. this code incorrectly looks for `blk.%d.attn_sinks.attn_sinks.weight` rather than `blk.%d.attn_sinks` and `blk.%d.attn_sinks.weight`

Changed files:
filename: model/model.go
patch: @@ -187,15 +187,17 @@ func populateFields(base Base, v reflect.Value, tags ...Tag) reflect.Value {
 								names = append(names, prefix+n+suffix)
 							}
 						}
-
-						if childNames := fn(tags[1:], tags[0].prefix, tags[0].suffix); len(childNames) == 0 {
-							// no child names, append current names
-							fullNames = append(fullNames, names)
-						} else if len(names) == 0 {
-							// no current names, append child names
+						childNames := fn(tags[1:], tags[0].prefix, tags[0].suffix)
+						if len(names) == 0 {
+							// current tag has no name, use child names only
 							fullNames = append(fullNames, childNames...)
+						} else if len(childNames) == 0 {
+							// current tag has names but no children, create branches for each name
+							for _, name := range names {
+								fullNames = append(fullNames, []string{name})
+							}
 						} else {
-							// combine current and child names
+							// merge each name with each child
 							for _, name := range names {
 								for _, childName := range childNames {
 									fullNames = append(fullNames, append([]string{name}, childName...))

filename: model/model_test.go
patch: @@ -125,6 +125,7 @@ func TestPopulateFieldsAlternateName(t *testing.T) {
 		Input  *nn.Embedding `gguf:"input"`
 		Output *nn.Linear    `gguf:"output,alt:input"`
 		Nested *nested       `gguf:"nested"`
+		Tensor ml.Tensor     `gguf:"leaf,alt:tensor"`
 	}
 
 	var m fakeModel
@@ -133,6 +134,7 @@ func TestPopulateFieldsAlternateName(t *testing.T) {
 		names: []string{
 			"input.weight",
 			"nested.b.weight",
+			"leaf",
 		},
 	}}, v.Elem()))
 
@@ -142,6 +144,7 @@ func TestPopulateFieldsAlternateName(t *testing.T) {
 		Nested: &nested{
 			Weight: &nn.Linear{Weight: &fakeTensor{Name: "nested.b.weight"}},
 		},
+		Tensor: &fakeTensor{Name: "leaf"},
 	}, m); diff != "" {
 		t.Errorf("populateFields() set incorrect values (-want +got):\n%s", diff)
 	}
Repository: vercel/next.js
Pull request: Add PR tarball install note to stats comment

### Why?

Make it easier for reviewers to test changes from a PR by showing the tarball install command directly in the next-stats-action comment.

### How?

Added `generatePrTarballSection()` to `add-comment.js` that appends a "Next.js Tarball from current PR" section to the stats comment with the install command:

```
next@https://vercel-packages.vercel.app/next/prs/<pr-number>/next
```

<img width="1790" height="680" alt="CleanShot 2026-02-21 at 16 48 28@2x" src="https://github.com/user-attachments/assets/8f5a1d84-da87-4a6f-a0a0-282cee490f23" />

The section is skipped for release PRs and only shown when a valid PR number is available.

### Testing Plan

- Verify the stats comment on this PR includes the tarball section

Changed files:
filename: .github/actions/next-stats-action/src/add-comment.js
patch: @@ -973,6 +973,24 @@ function generateDiffsSection(result) {
   return content
 }
 
+function generatePrTarballSection(actionInfo) {
+  if (actionInfo.isRelease || !actionInfo.issueId) return ''
+
+  const prNumber = String(actionInfo.issueId).trim()
+  if (!/^\d+$/.test(prNumber)) return ''
+
+  return `<details>
+<summary><strong>📎 Tarball URL</strong></summary>
+
+\`\`\`
+next@https://vercel-packages.vercel.app/next/prs/${prNumber}/next
+\`\`\`
+
+</details>
+
+`
+}
+
 // ============================================================================
 // Main Export
 // ============================================================================
@@ -1034,6 +1052,8 @@ module.exports = async function addComment(
     }
   }
 
+  comment += generatePrTarballSection(actionInfo)
+
   // Save canary stats to history (only for releases, not PR comparisons)
   // This ensures we only track official canary metrics, not PR-specific data
   if (results.length > 0 && actionInfo.isRelease && actionInfo.commitId) {
Repository: vercel/next.js
Pull request: Fix route.replace crash with --debug-build-paths

## Summary

- Fixes `route.replace is not a function` error when running `next build --debug-build-paths` on projects with parallel routes

**Root cause:** Turbopack filters routes at the route level (e.g., `/parallel-test` includes all page entries), while JS route discovery filters at the file path level (e.g., only `app/parallel-test/page.tsx`). This causes the `appPathsManifest` to contain entries (like `/@sidebar/page`) that `mappedAppPages` doesn't have. The unguarded lookup at `mappedAppPages[originalPath].replace(...)` crashes on `undefined`.

**Fix:** Added a guard to skip manifest entries that don't exist in `mappedAppPages`.

## Test plan

- [x] Verified `next build --debug-build-paths 'app/parallel-test/**/page.tsx'` succeeds on test fixture
- [x] Verified other `--debug-build-paths` patterns still work (multi-page, pages-only, etc.)

Changed files:
filename: packages/next/src/build/index.ts
patch: @@ -2185,7 +2185,10 @@ export default async function build(
                   for (const [originalPath, normalizedPath] of Object.entries(
                     appPathRoutes
                   )) {
-                    if (normalizedPath === page) {
+                    if (
+                      normalizedPath === page &&
+                      mappedAppPages[originalPath]
+                    ) {
                       pagePath = mappedAppPages[originalPath].replace(
                         /^private-next-app-dir/,
                         ''
Repository: facebook/react
Pull request: [DevTools] Show Transition indicator when "suspended by" rows are expanded

This can actually take a while on real apps so without any progress indication it looked like it was broken.

We could use React's default Transition indicator but outside of a nprogress-like implementation I'm not sure what to pick. 

So I just went with a waiting cursor for now just to get at least some signal out that something is happening. 

Changed files:
filename: packages/react-devtools-shared/src/devtools/views/Components/InspectedElementSharedStyles.css
patch: @@ -75,6 +75,10 @@
   display: flex;
 }
 
+.CollapsableHeader[data-pending="true"] {
+  cursor: progress;
+}
+
 .CollapsableHeaderIcon {
   flex: 0 0 1rem;
   margin-left: -0.25rem;

filename: packages/react-devtools-shared/src/devtools/views/Components/InspectedElementSuspendedBy.js
patch: @@ -9,7 +9,7 @@
 
 import {copy} from 'clipboard-js';
 import * as React from 'react';
-import {useState} from 'react';
+import {useState, useTransition} from 'react';
 import Button from '../Button';
 import ButtonIcon from '../ButtonIcon';
 import KeyValue from './KeyValue';
@@ -101,6 +101,7 @@ function SuspendedByRow({
   maxTime,
 }: RowProps) {
   const [isOpen, setIsOpen] = useState(false);
+  const [openIsPending, startOpenTransition] = useTransition();
   const ioInfo = asyncInfo.awaited;
   const name = useInferredName(asyncInfo);
   const description = ioInfo.description;
@@ -144,7 +145,16 @@ function SuspendedByRow({
     <div className={styles.CollapsableRow}>
       <Button
         className={styles.CollapsableHeader}
-        onClick={() => setIsOpen(prevIsOpen => !prevIsOpen)}
+        // TODO: May be better to leave to React's default Transition indicator.
+        // Though no apps implement this option at the moment.
+        data-pending={openIsPending}
+        onClick={() => {
+          startOpenTransition(() => {
+            setIsOpen(prevIsOpen => !prevIsOpen);
+          });
+        }}
+        // Changing the title on pending transition will not be visible since
+        // (Reach?) tooltips are dismissed on activation.
         title={
           longName +
           ' — ' +
Repository: rust-lang/rust
Pull request: Preserve braces around `self` in use tree pretty printing

The AST pretty printer strips braces from single-item `use` sub-groups, simplifying `use foo::{Bar}` to `use foo::Bar`. However, when the single item is `self`, this produces `use foo::self` which is not valid Rust (E0429) — the grammar requires `use foo::{self}`.

This affects both `stringify!` and `rustc -Zunpretty=expanded`, causing `cargo expand` output to be unparseable when a crate uses `use path::{self}` imports (a common pattern in the ecosystem).

The fix checks whether the single nested item's path starts with `self` before stripping braces. If so, the braces are preserved.

## Example

**before** (`rustc 1.96.0-nightly (3b1b0ef4d 2026-03-11)`):

```rust
#![feature(prelude_import)]
//@ pp-exact
//@ edition:2021

#![allow(unused_imports)]
extern crate std;
#[prelude_import]
use std::prelude::rust_2021::*;

// Braces around `self` must be preserved, because `use foo::self` is not valid Rust.
use std::io::self;
use std::fmt::{self, Debug};

fn main() {}
```

**after** (this branch):

```rust
#![feature(prelude_import)]
//@ pp-exact
//@ edition:2021

#![allow(unused_imports)]
extern crate std;
#[prelude_import]
use std::prelude::rust_2021::*;

// Braces around `self` must be preserved, because `use foo::self` is not valid Rust.
use std::io::{self};
use std::fmt::{self, Debug};

fn main() {}
```

Notice the `use std::io::self` (invalid, E0429) in the before becomes `use std::io::{self}` in the after.

<!-- homu-ignore:start -->
<!--
If this PR is related to an unstable feature or an otherwise tracked effort,
please link to the relevant tracking issue here. If you don't know of a related
tracking issue or there are none, feel free to ignore this.

This PR will get automatically assigned to a reviewer. In case you would like
a specific user to review your work, you can assign it to them by using

    r? <reviewer name>
-->
<!-- homu-ignore:end -->


Changed files:
filename: compiler/rustc_ast_pretty/src/pprust/state/item.rs
patch: @@ -881,7 +881,13 @@ impl<'a> State<'a> {
                 }
                 if items.is_empty() {
                     self.word("{}");
-                } else if let [(item, _)] = items.as_slice() {
+                } else if let [(item, _)] = items.as_slice()
+                    && !item
+                        .prefix
+                        .segments
+                        .first()
+                        .is_some_and(|seg| seg.ident.name == rustc_span::symbol::kw::SelfLower)
+                {
                     self.print_use_tree(item);
                 } else {
                     let cb = self.cbox(INDENT_UNIT);

filename: tests/pretty/use-self-braces.rs
patch: @@ -0,0 +1,10 @@
+//@ pp-exact
+//@ edition:2021
+
+#![allow(unused_imports)]
+
+// Braces around `self` must be preserved, because `use foo::self` is not valid Rust.
+use std::io::{self};
+use std::fmt::{self, Debug};
+
+fn main() {}
Repository: electron/electron
Pull request: fix: avoid redundant `page-favicon-updated` events on `setBounds`

#### Description of Change

Closes #49392

Fixes an issue where calling `setBounds` on a `WebContentsView` unintentionally triggers the `page-favicon-updated` event even when the favicon has not actually changed.

Currently, layout-related updates such as resizing or repositioning a `WebContentsView` can cause redundant emissions of `page-favicon-updated`, which is unexpected and leads to duplicate callbacks in user code. This change ensures that the event is only emitted when there is a real change in the favicon data, preventing unnecessary and misleading notifications.

This makes the `page-favicon-updated` event more semantically correct and avoids side effects caused by purely visual or layout updates.

#### Checklist
<!-- Remove items that do not apply. For completed items, change [ ] to [x]. -->

- [ x] PR description included
- [ ] `npm test` passes
- [ ] tests are [changed or added](https://github.com/electron/electron/blob/main/docs/development/testing.md)
- [ ] relevant API documentation, tutorials, and examples are updated and follow the [documentation style guide](https://github.com/electron/electron/blob/main/docs/development/style-guide.md)
- [x] [PR release notes](https://github.com/electron/clerk/blob/main/README.md) describe the change in a way relevant to app developers and are [capitalized, punctuated, and in past tense](https://github.com/electron/clerk/blob/main/README.md#examples).
---

#### Release Notes

Notes: Fixed an issue where calling `setBounds` on a `WebContentsView` could trigger redundant `page-favicon-updated` events even when the favicon had not changed.

Changed files:
filename: shell/browser/api/electron_api_web_contents.cc
patch: @@ -2267,6 +2267,11 @@ void WebContents::DidUpdateFaviconURL(
         iter->icon_url.is_valid())
       unique_urls.insert(iter->icon_url);
   }
+  // Only emit if favicon URLs actually changed
+  if (unique_urls == last_favicon_urls_)
+    return;
+  last_favicon_urls_ = unique_urls;
+
   Emit("page-favicon-updated", unique_urls);
 }
 

filename: shell/browser/api/electron_api_web_contents.h
patch: @@ -11,6 +11,7 @@
 #include <string>
 #include <vector>
 
+#include "base/containers/flat_set.h"
 #include "base/functional/callback_forward.h"
 #include "base/memory/raw_ptr.h"
 #include "base/memory/raw_ptr_exclusion.h"
@@ -462,6 +463,9 @@ class WebContents final : public ExclusiveAccessContext,
   WebContents& operator=(const WebContents&) = delete;
 
  private:
+  // Store last emitted favicon URLs to avoid duplicate page-favicon-updated
+  // events
+  base::flat_set<GURL> last_favicon_urls_;
   // Does not manage lifetime of |web_contents|.
   WebContents(v8::Isolate* isolate, content::WebContents* web_contents);
   // Takes over ownership of |web_contents|.
Repository: facebook/react
Pull request: flags: make enableAsyncDebugInfo dynamic for www

As titled. This adds dev-only debugging information to Fizz / Flight that could be used for tracking Promise's stack traces in "suspended by" section of DevTools.

Changed files:
filename: packages/react-server-dom-webpack/src/__tests__/ReactFlightDOM-test.js
patch: @@ -3021,7 +3021,8 @@ describe('ReactFlightDOM', () => {
     expect(getMeaningfulChildren(container)).toEqual(<div>loading...</div>);
   });
 
-  // @gate enableHalt
+  // This could be a bug. Discovered while making enableAsyncDebugInfo dynamic for www.
+  // @gate experimental && (enableHalt || (enableAsyncDebugInfo && __DEV__))
   it('will leave async iterables in an incomplete state when halting', async () => {
     let resolve;
     const wait = new Promise(r => (resolve = r));

filename: packages/shared/forks/ReactFeatureFlags.www-dynamic.js
patch: @@ -36,6 +36,7 @@ export const enableComponentPerformanceTrack: boolean = __VARIANT__;
 export const enableScrollEndPolyfill: boolean = __VARIANT__;
 export const enableFragmentRefs: boolean = __VARIANT__;
 export const enableFragmentRefsScrollIntoView: boolean = __VARIANT__;
+export const enableAsyncDebugInfo: boolean = __VARIANT__;
 
 // TODO: These flags are hard-coded to the default values used in open source.
 // Update the tests so that they pass in either mode, then set these

filename: packages/shared/forks/ReactFeatureFlags.www.js
patch: @@ -34,6 +34,7 @@ export const {
   enableScrollEndPolyfill,
   enableFragmentRefs,
   enableFragmentRefsScrollIntoView,
+  enableAsyncDebugInfo,
 } = dynamicFeatureFlags;
 
 // On WWW, __EXPERIMENTAL__ is used for a new modern build.
@@ -94,7 +95,6 @@ export const passChildrenWhenCloningPersistedNodes: boolean = false;
 
 export const enablePersistedModeClonedFlag: boolean = false;
 
-export const enableAsyncDebugInfo: boolean = false;
 export const disableClientCache: boolean = true;
 
 export const enableReactTestRendererWarning: boolean = false;