helloadhavan/github_issues huggingface dataset:
Repository: electron/electron
Pull request: fix: validate response header names and values before AddHeader

Backport of #50123

See that PR for details.


Notes: Fixed an issue where invalid characters in custom protocol or webRequest response header values were not rejected.

Changed files:
filename: shell/browser/net/electron_url_loader_factory.cc
patch: @@ -24,6 +24,7 @@
 #include "net/base/filename_util.h"
 #include "net/http/http_request_headers.h"
 #include "net/http/http_status_code.h"
+#include "net/http/http_util.h"
 #include "net/url_request/redirect_util.h"
 #include "services/network/public/cpp/resource_request.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
@@ -138,13 +139,17 @@ network::mojom::URLResponseHeadPtr ToResponseHead(
   base::Value::Dict headers;
   if (dict.Get("headers", &headers)) {
     for (const auto iter : headers) {
+      if (!net::HttpUtil::IsValidHeaderName(iter.first))
+        continue;
       if (iter.second.is_string()) {
         // key, value
-        head->headers->AddHeader(iter.first, iter.second.GetString());
+        if (net::HttpUtil::IsValidHeaderValue(iter.second.GetString()))
+          head->headers->AddHeader(iter.first, iter.second.GetString());
       } else if (iter.second.is_list()) {
         // key: [values...]
         for (const auto& item : iter.second.GetList()) {
-          if (item.is_string())
+          if (item.is_string() &&
+              net::HttpUtil::IsValidHeaderValue(item.GetString()))
             head->headers->AddHeader(iter.first, item.GetString());
         }
       } else {

filename: shell/common/gin_converters/net_converter.cc
patch: @@ -19,6 +19,7 @@
 #include "net/cert/x509_certificate.h"
 #include "net/cert/x509_util.h"
 #include "net/http/http_response_headers.h"
+#include "net/http/http_util.h"
 #include "net/http/http_version.h"
 #include "net/url_request/redirect_info.h"
 #include "services/network/public/cpp/data_element.h"
@@ -197,6 +198,10 @@ bool Converter<net::HttpResponseHeaders*>::FromV8(
     }
     std::string value;
     gin::ConvertFromV8(isolate, localStrVal, &value);
+    if (!net::HttpUtil::IsValidHeaderName(key) ||
+        !net::HttpUtil::IsValidHeaderValue(value)) {
+      return false;
+    }
     out->AddHeader(key, value);
     return true;
   };
Repository: nodejs/node
Pull request: build: add temporal test on GHA windows

Refs: https://github.com/nodejs/node/issues/58730

Changed files:
filename: .github/workflows/coverage-windows.yml
patch: @@ -79,10 +79,14 @@ jobs:
           allow-prereleases: true
       - name: Install deps
         run: choco install nasm
+      - name: Install Rust ${{ env.RUSTC_VERSION }}
+        run: |
+          rustup override set "$RUSTC_VERSION"
+          rustup --version
       - name: Environment Information
         run: npx envinfo
       - name: Build
-        run: ./vcbuild.bat clang-cl
+        run: ./vcbuild.bat clang-cl v8temporal
       # TODO(bcoe): investigate tests that fail with coverage enabled
       # on Windows.
       - name: Test

filename: vcbuild.bat
patch: @@ -72,6 +72,7 @@ set doc=
 set extra_msbuild_args=
 set compile_commands=
 set cfg=
+set v8temporal=
 set v8windbg=
 set exit_code=0
 
@@ -97,6 +98,7 @@ if /i "%1"=="sign"          set sign=1&goto arg-ok
 if /i "%1"=="nosnapshot"    set nosnapshot=1&goto arg-ok
 if /i "%1"=="nonpm"         set nonpm=1&goto arg-ok
 if /i "%1"=="ltcg"          set ltcg=1&goto arg-ok
+if /i "%1"=="v8temporal"    set v8temporal=1&goto arg-ok
 if /i "%1"=="v8windbg"      set v8windbg=1&goto arg-ok
 if /i "%1"=="licensertf"    set licensertf=1&goto arg-ok
 if /i "%1"=="test"          set test_args=%test_args% %common_test_suites%&set lint_cpp=1&set lint_js=1&set lint_md=1&goto arg-ok
@@ -214,6 +216,7 @@ if defined DEBUG_HELPER     set configure_flags=%configure_flags% --verbose
 if defined ccache_path      set configure_flags=%configure_flags% --use-ccache-win
 if defined compile_commands set configure_flags=%configure_flags% -C
 if defined cfg              set configure_flags=%configure_flags% --control-flow-guard
+if defined v8temporal       set configure_flags=%configure_flags% --v8-enable-temporal-support
 if defined v8windbg         set configure_flags=%configure_flags% --enable-v8windbg
 
 if "%target_arch%"=="x86" (
Repository: vercel/next.js
Pull request: [test] Fix jest-haste-map warnings

Fixes all of these:
```
jest-haste-map: Haste module naming collision: loader-utils
  The following files share their name; please adjust your hasteImpl:
    * <rootDir>/../packages/next/src/compiled/loader-utils2/package.json
    * <rootDir>/../packages/next/src/compiled/loader-utils3/package.json
```

They're only encountered on a fresh cache. Can be tested with `jest --clearCache` followed by running any test.

Changed files:
filename: jest.config.js
patch: @@ -19,7 +19,27 @@ const customJestConfig = {
     '<rootDir>/../packages/font/src/',
     '<rootDir>/../packages/next-routing/',
   ],
-  modulePathIgnorePatterns: ['/\\.next/'],
+  haste: {
+    // Throwing to avoid warnings creeping up over time polluting log output.
+    throwOnModuleCollision: true,
+  },
+  modulePathIgnorePatterns: [
+    '/\\.next/',
+    // Prevents jest-haste-map warnings due to multiple versions of the same
+    // package being vendored. Also means tests in `compiled` will be ignored.
+    // Jest does not normalize/resolve paths in modulePathIgnorePatterns so we can't
+    // prefix with <rootDir>/../ like we do in roots.
+    'packages/next/src/compiled/',
+    '<rootDir>/development/app-dir/ssr-in-rsc/internal-pkg/',
+    '<rootDir>/e2e/app-dir/self-importing-package/internal-pkg',
+    '<rootDir>/e2e/app-dir/self-importing-package-monorepo/internal-pkg',
+    '<rootDir>/e2e/app-dir/server-source-maps/fixtures/default/internal-pkg',
+    '<rootDir>/e2e/transpile-packages-typescript-foreign/pkg',
+    '<rootDir>/production/standalone-mode/tracing-side-effects-false/foo',
+    '<rootDir>/production/standalone-mode/tracing-static-files/foo',
+    '<rootDir>/production/standalone-mode/tracing-unparsable/foo',
+    '<rootDir>/production/supports-module-resolution-nodenext/pkg',
+  ],
   modulePaths: ['<rootDir>/lib'],
   transformIgnorePatterns: ['/next[/\\\\]dist/', '/\\.next/'],
   moduleNameMapper: {
Repository: vercel/next.js
Pull request: Replace `testonly` to `testheadless` in AGENTS.md

I don't want agents to open up browsers for testing.

<img width="1674" height="356" alt="CleanShot 2026-02-26 at 11 02 54@2x" src="https://github.com/user-attachments/assets/b71f1d57-6329-44aa-b663-cc876210f0d7" />


Changed files:
filename: AGENTS.md
patch: @@ -86,8 +86,9 @@ pnpm --filter=next dev
 
 ```bash
 # NEXT_SKIP_ISOLATE=1 - skip packing Next.js for each test (~100s faster)
-# testonly - runs with --runInBand (no worker isolation overhead)
-NEXT_SKIP_ISOLATE=1 NEXT_TEST_MODE=dev pnpm testonly test/path/to/test.ts
+# NEXT_TEST_MODE=<mode> - run dev or start based on the context provided
+# testheadless - runs headless with --runInBand (no worker isolation overhead)
+NEXT_SKIP_ISOLATE=1 NEXT_TEST_MODE=<dev|start> pnpm testheadless test/path/to/test.ts
 ```
 
 **3. When done, kill the background watch process (if you started it).**
@@ -139,7 +140,7 @@ pnpm test-dev-turbo test/development/
 **Other test commands:**
 
 - `pnpm test-unit` - Run unit tests only (fast, no browser)
-- `pnpm testonly <path>` - Run tests without rebuilding (faster iteration when build artifacts are already up to date)
+- `pnpm testheadless <path>` - Run tests headless without rebuilding (faster iteration when build artifacts are already up to date)
 - `pnpm new-test` - Generate a new test file from template (interactive)
 
 **Generate tests non-interactively (for AI agents):**
Repository: ollama/ollama
Pull request: Update README.md add Libraries achatbot-go a multimodal chatbot.

add Libraries [achatbot-go](https://github.com/ai-bot-pro/achatbot-go) a multimodal chatbot.



Changed files:
filename: README.md
patch: @@ -544,6 +544,7 @@ See the [API documentation](./docs/api.md) for all endpoints.
 - [any-llm](https://github.com/mozilla-ai/any-llm) (A single interface to use different llm providers by [mozilla.ai](https://www.mozilla.ai/))
 - [any-agent](https://github.com/mozilla-ai/any-agent) (A single interface to use and evaluate different agent frameworks by [mozilla.ai](https://www.mozilla.ai/))
 - [Neuro SAN](https://github.com/cognizant-ai-lab/neuro-san-studio) (Data-driven multi-agent orchestration framework) with [example](https://github.com/cognizant-ai-lab/neuro-san-studio/blob/main/docs/user_guide.md#ollama)
+- [achatbot-go](https://github.com/ai-bot-pro/achatbot-go) a multimodal(text/audio/image) chatbot.
 
 ### Mobile
Repository: huggingface/transformers
Pull request: Fix TypeError in convert_rope_params_to_dict when ignore_keys is a list

## What does this PR do?

Fixes a `TypeError: unsupported operand type(s) for |: 'list' and 'set'` in `RotaryEmbeddingConfigMixin.convert_rope_params_to_dict` when `ignore_keys_at_rope_validation` is a `list` instead of a `set`.

### Root cause

In `modeling_rope_utils.py` line 649, the `else` branch passes through `ignore_keys_at_rope_validation` without type coercion. Line 651 then performs `ignore_keys_at_rope_validation | {"partial_rotary_factor"}`, which fails if the value is a `list` (since `list | set` is not supported in Python).

### When does this happen?

Model configs define `ignore_keys_at_rope_validation` as a `set` literal in `__init__`, so the normal `from_pretrained` flow works. However, when third-party serving frameworks (e.g. vLLM) define their own config classes that pass this field through JSON deserialization, the value arrives as a `list`, triggering the crash.

Encountered in practice when serving **Qwen3.5-27B** via vLLM (which bundles its own `Qwen3_5TextConfig` that inherits from `PretrainedConfig`).

### Fix

Wrap in `set()` to normalize any iterable. `set(already_a_set)` returns a copy, so existing behavior is preserved.

```diff
- set() if ignore_keys_at_rope_validation is None else ignore_keys_at_rope_validation
+ set() if ignore_keys_at_rope_validation is None else set(ignore_keys_at_rope_validation)
```

## Traceback

```
File "transformers/modeling_rope_utils.py", line 651, in convert_rope_params_to_dict
    ignore_keys_at_rope_validation = ignore_keys_at_rope_validation | {"partial_rotary_factor"}
TypeError: unsupported operand type(s) for |: 'list' and 'set'
```

Full call chain: `Qwen3_5TextConfig.__init__` → `PretrainedConfig.__init__` → `convert_rope_params_to_dict`

Changed files:
filename: src/transformers/modeling_rope_utils.py
patch: @@ -646,7 +646,7 @@ def convert_rope_params_to_dict(self, ignore_keys_at_rope_validation: set | None
         if partial_rotary_factor is not None:
             self.rope_parameters.setdefault("partial_rotary_factor", partial_rotary_factor)
             ignore_keys_at_rope_validation = (
-                set() if ignore_keys_at_rope_validation is None else ignore_keys_at_rope_validation
+                set() if ignore_keys_at_rope_validation is None else set(ignore_keys_at_rope_validation)
             )
             ignore_keys_at_rope_validation = ignore_keys_at_rope_validation | {"partial_rotary_factor"}
Repository: electron/electron
Pull request: fix: validate response header names and values before AddHeader

Adds `net::HttpUtil::IsValidHeaderName`/`IsValidHeaderValue` checks before calling `HttpResponseHeaders::AddHeader` in:

- `ToResponseHead` (custom protocol handler response headers) — invalid headers are dropped
- `Converter<HttpResponseHeaders*>::FromV8` (`webRequest.onHeadersReceived`) — conversion fails on invalid input

This matches the existing validation already applied to request headers in `electron_api_url_loader.cc`.

Notes: Fixed an issue where invalid characters in custom protocol or webRequest response header values were not rejected.

Changed files:
filename: shell/browser/net/electron_url_loader_factory.cc
patch: @@ -24,6 +24,7 @@
 #include "net/base/filename_util.h"
 #include "net/http/http_request_headers.h"
 #include "net/http/http_status_code.h"
+#include "net/http/http_util.h"
 #include "net/url_request/redirect_util.h"
 #include "services/network/public/cpp/resource_request.h"
 #include "services/network/public/cpp/shared_url_loader_factory.h"
@@ -138,13 +139,17 @@ network::mojom::URLResponseHeadPtr ToResponseHead(
   base::DictValue headers;
   if (dict.Get("headers", &headers)) {
     for (const auto iter : headers) {
+      if (!net::HttpUtil::IsValidHeaderName(iter.first))
+        continue;
       if (iter.second.is_string()) {
         // key, value
-        head->headers->AddHeader(iter.first, iter.second.GetString());
+        if (net::HttpUtil::IsValidHeaderValue(iter.second.GetString()))
+          head->headers->AddHeader(iter.first, iter.second.GetString());
       } else if (iter.second.is_list()) {
         // key: [values...]
         for (const auto& item : iter.second.GetList()) {
-          if (item.is_string())
+          if (item.is_string() &&
+              net::HttpUtil::IsValidHeaderValue(item.GetString()))
             head->headers->AddHeader(iter.first, item.GetString());
         }
       } else {

filename: shell/common/gin_converters/net_converter.cc
patch: @@ -19,6 +19,7 @@
 #include "net/cert/x509_certificate.h"
 #include "net/cert/x509_util.h"
 #include "net/http/http_response_headers.h"
+#include "net/http/http_util.h"
 #include "net/http/http_version.h"
 #include "net/url_request/redirect_info.h"
 #include "services/network/public/cpp/data_element.h"
@@ -198,6 +199,10 @@ bool Converter<net::HttpResponseHeaders*>::FromV8(
     }
     std::string value;
     gin::ConvertFromV8(isolate, localStrVal, &value);
+    if (!net::HttpUtil::IsValidHeaderName(key) ||
+        !net::HttpUtil::IsValidHeaderValue(value)) {
+      return false;
+    }
     out->AddHeader(key, value);
     return true;
   };
Repository: ollama/ollama
Pull request: openai: make tool call conversion fns public


Changed files:
filename: openai/openai.go
patch: @@ -235,7 +235,8 @@ func toolCallId() string {
 	return "call_" + strings.ToLower(string(b))
 }
 
-func toToolCalls(tc []api.ToolCall) []ToolCall {
+// ToToolCalls converts api.ToolCall to OpenAI ToolCall format
+func ToToolCalls(tc []api.ToolCall) []ToolCall {
 	toolCalls := make([]ToolCall, len(tc))
 	for i, tc := range tc {
 		toolCalls[i].ID = toolCallId()
@@ -256,7 +257,7 @@ func toToolCalls(tc []api.ToolCall) []ToolCall {
 
 // ToChatCompletion converts an api.ChatResponse to ChatCompletion
 func ToChatCompletion(id string, r api.ChatResponse) ChatCompletion {
-	toolCalls := toToolCalls(r.Message.ToolCalls)
+	toolCalls := ToToolCalls(r.Message.ToolCalls)
 	return ChatCompletion{
 		Id:                id,
 		Object:            "chat.completion",
@@ -282,7 +283,7 @@ func ToChatCompletion(id string, r api.ChatResponse) ChatCompletion {
 
 // ToChunk converts an api.ChatResponse to ChatCompletionChunk
 func ToChunk(id string, r api.ChatResponse, toolCallSent bool) ChatCompletionChunk {
-	toolCalls := toToolCalls(r.Message.ToolCalls)
+	toolCalls := ToToolCalls(r.Message.ToolCalls)
 	return ChatCompletionChunk{
 		Id:                id,
 		Object:            "chat.completion.chunk",
@@ -424,7 +425,7 @@ func FromChatRequest(r ChatCompletionRequest) (*api.ChatRequest, error) {
 		}
 		switch content := msg.Content.(type) {
 		case string:
-			toolCalls, err := fromCompletionToolCall(msg.ToolCalls)
+			toolCalls, err := FromCompletionToolCall(msg.ToolCalls)
 			if err != nil {
 				return nil, err
 			}
@@ -487,7 +488,7 @@ func FromChatRequest(r ChatCompletionRequest) (*api.ChatRequest, error) {
 			// since we might have added multiple messages above, if we have tools
 			// calls we'll add them to the last message
 			if len(messages) > 0 && len(msg.ToolCalls) > 0 {
-				toolCalls, err := fromCompletionToolCall(msg.ToolCalls)
+				toolCalls, err := FromCompletionToolCall(msg.ToolCalls)
 				if err != nil {
 					return nil, err
 				}
@@ -618,7 +619,8 @@ func nameFromToolCallID(messages []Message, toolCallID string) string {
 	return ""
 }
 
-func fromCompletionToolCall(toolCalls []ToolCall) ([]api.ToolCall, error) {
+// FromCompletionToolCall converts OpenAI ToolCall format to api.ToolCall
+func FromCompletionToolCall(toolCalls []ToolCall) ([]api.ToolCall, error) {
 	apiToolCalls := make([]api.ToolCall, len(toolCalls))
 	for i, tc := range toolCalls {
 		apiToolCalls[i].Function.Name = tc.Function.Name
Repository: nodejs/node
Pull request: doc: clarify process.argv[1] behavior for -e/--eval

This PR clarifies the behavior of `process.argv[1]` when Node.js is run in
no-script execution modes such as `-e` / `--eval`.

Fixes: https://github.com/nodejs/node/issues/61363

Changed files:
filename: doc/api/process.md
patch: @@ -834,8 +834,8 @@ added: v0.1.27
 The `process.argv` property returns an array containing the command-line
 arguments passed when the Node.js process was launched. The first element will
 be [`process.execPath`][]. See `process.argv0` if access to the original value
-of `argv[0]` is needed. The second element will be the path to the JavaScript
-file being executed. The remaining elements will be any additional command-line
+of `argv[0]` is needed. If a [program entry point][] was provided, the second element
+will be the absolute path to it. The remaining elements are additional command-line
 arguments.
 
 For example, assuming the following script for `process-args.js`:
@@ -4594,6 +4594,7 @@ cases:
 [process.cpuUsage]: #processcpuusagepreviousvalue
 [process_emit_warning]: #processemitwarningwarning-type-code-ctor
 [process_warning]: #event-warning
+[program entry point]: https://nodejs.org/api/cli.html#program-entry-point
 [report documentation]: report.md
 [terminal raw mode]: tty.md#readstreamsetrawmodemode
 [uv_get_available_memory]: https://docs.libuv.org/en/v1.x/misc.html#c.uv_get_available_memory
Repository: facebook/react
Pull request: [playground] Improve DiffEditor scrollbar + view

The previous DiffEditor view of the playground looked broken and not cohesive. There would be parts of the scrollbar appearing on the left side for some reason, along with two scrollbars on the right side. This PR makes the DiffEditor look more cohesive. 

Previous:

https://github.com/user-attachments/assets/1aa1c775-5940-43b2-a75a-9b46452fb78b

After:

https://github.com/user-attachments/assets/b5c04998-6a6c-4b52-b3c5-b2fef21729e0



Changed files:
filename: compiler/apps/playground/components/AccordionWindow.tsx
patch: @@ -7,7 +7,6 @@
 
 import {Resizable} from 're-resizable';
 import React, {
-  useCallback,
   useId,
   unstable_ViewTransition as ViewTransition,
   unstable_addTransitionType as addTransitionType,
@@ -66,7 +65,7 @@ function AccordionWindowItem({
 
   const transitionName = `accordion-window-item-${id}`;
 
-  const toggleTabs = () => {
+  const toggleTabs = (): void => {
     startTransition(() => {
       addTransitionType(EXPAND_ACCORDION_TRANSITION);
       const nextState = new Set(tabsOpen);

filename: compiler/apps/playground/components/Editor/EditorImpl.tsx
patch: @@ -24,11 +24,7 @@ import BabelPluginReactCompiler, {
   printFunctionWithOutlined,
   type LoggerEvent,
 } from 'babel-plugin-react-compiler';
-import {
-  useDeferredValue,
-  useMemo,
-  unstable_ViewTransition as ViewTransition,
-} from 'react';
+import {useDeferredValue, useMemo} from 'react';
 import {useStore} from '../StoreContext';
 import ConfigEditor from './ConfigEditor';
 import Input from './Input';

filename: compiler/apps/playground/components/Editor/Output.tsx
patch: @@ -372,12 +372,18 @@ function TextTabContent({
           loading={''}
           options={{
             ...monacoOptions,
+            scrollbar: {
+              vertical: 'hidden',
+            },
+            dimension: {
+              width: 0,
+              height: 0,
+            },
             readOnly: true,
             lineNumbers: 'off',
             glyphMargin: false,
             // Undocumented see https://github.com/Microsoft/vscode/issues/30795#issuecomment-410998882
-            lineDecorationsWidth: 0,
-            lineNumbersMinChars: 0,
+            overviewRulerLanes: 0,
           }}
         />
       ) : (

filename: compiler/apps/playground/styles/globals.css
patch: @@ -124,3 +124,11 @@
 ::view-transition-group(.expand-accordion) {
   overflow: clip;
 }
+
+/**
+ * For some reason, the original Monaco editor is still visible to the
+ * left of the DiffEditor. This is a workaround for better visual clarity.
+ */
+.monaco-diff-editor .editor.original{
+  visibility: hidden !important;
+}
Repository: rust-lang/rust
Pull request: Update the tracking issue for #[diagnostic::on_move]


PR rust-lang/rust#150935 has been merged and then I have opened the tracking issue (whoops ?). So this update `compiler/rustc_feature/src/unstable.rs` to point to the right tracking issue.

This is related to the tracking issue rust-lang/rust#154181 


Changed files:
filename: compiler/rustc_feature/src/unstable.rs
patch: @@ -473,7 +473,7 @@ declare_features! (
     /// Allows giving non-const impls custom diagnostic messages if attempted to be used as const
     (unstable, diagnostic_on_const, "1.93.0", Some(143874)),
     /// Allows giving on-move borrowck custom diagnostic messages for a type
-    (unstable, diagnostic_on_move, "CURRENT_RUSTC_VERSION", Some(150935)),
+    (unstable, diagnostic_on_move, "CURRENT_RUSTC_VERSION", Some(154181)),
     /// Allows `#[doc(cfg(...))]`.
     (unstable, doc_cfg, "1.21.0", Some(43781)),
     /// Allows `#[doc(masked)]`.