helloadhavan/github_issues huggingface dataset:
Repository: ollama/ollama
Pull request: update README.md


Changed files:
filename: README.md
patch: @@ -127,6 +127,8 @@ Ollama bundles model weights, configuration, and data into a single package, def
 
 ## Building
 
+You will also need a C/C++ compiler such as GCC for MacOS and Linux or Mingw-w64 GCC for Windows.
+
 ```
 go build .
 ```

filename: docs/development.md
patch: @@ -25,20 +25,3 @@ Now you can run `ollama`:
 ```
 ./ollama
 ```
-
-## Releasing
-
-To release a new version of Ollama you'll need to set some environment variables:
-
-- `GITHUB_TOKEN`: your GitHub token
-- `APPLE_IDENTITY`: the Apple signing identity (macOS only)
-- `APPLE_ID`: your Apple ID
-- `APPLE_PASSWORD`: your Apple ID app-specific password
-- `APPLE_TEAM_ID`: the Apple team ID for the signing identity
-- `TELEMETRY_WRITE_KEY`: segment write key for telemetry
-
-Then run the publish script with the target version:
-
-```
-VERSION=0.0.2 ./scripts/publish.sh
-```
Repository: denoland/deno
Pull request: fix(ext/node): TLS emit close event on parent socket

Fixes https://github.com/denoland/deno/issues/28543


Changed files:
filename: ext/node/polyfills/_tls_wrap.js
patch: @@ -119,6 +119,7 @@ export class TLSSocket extends net.Socket {
       manualStart: true, // This prevents premature reading from TLS handle
     });
     if (socket) {
+      this.on("close", () => this._parent?.emit("close"));
       this._parent = socket;
     }
     this._tlsOptions = tlsOptions;

filename: tests/unit_node/tls_test.ts
patch: @@ -149,6 +149,8 @@ Deno.test("tls.connect after-read tls upgrade", async () => {
   });
   socket.on("connect", () => {
     socket.on("data", () => {});
+    socket.on("close", resolve);
+
     socket.removeAllListeners("data");
 
     const conn = tls.connect({
@@ -169,7 +171,6 @@ Deno.test("tls.connect after-read tls upgrade", async () => {
       conn.destroy();
       ctl.abort();
     });
-    conn.on("close", resolve);
   });
 
   await serve.finished;
Repository: huggingface/transformers
Pull request: remove transpose_for_scores call in ESM-2

#38751 broke the flash-attention 2 backend for ESM-2 by removing transpose_for_scores, this fixes the few places in ESM flash attention that still reference that removed function.

@ArthurZucker, @Rocketknight1 

I'm also working on the attention_interface version here #40211, but having this fixed will help in debugging where some of those functions are being called incorrectly

Changed files:
filename: src/transformers/models/esm/modeling_esm.py
patch: @@ -426,9 +426,10 @@ def forward(
 
         bsz, q_len, _ = hidden_states.size()
 
-        query_layer = self.transpose_for_scores(self.query(hidden_states))
-        key_layer = self.transpose_for_scores(self.key(hidden_states))
-        value_layer = self.transpose_for_scores(self.value(hidden_states))
+        hidden_shape = (hidden_states.shape[0], -1, self.num_attention_heads, self.attention_head_size)
+        query_layer = self.query(hidden_states).view(hidden_shape).transpose(1, 2)
+        key_layer = self.key(hidden_states).view(hidden_shape).transpose(1, 2)
+        value_layer = self.value(hidden_states).view(hidden_shape).transpose(1, 2)
 
         # In PEFT, usually we cast the layer norms in float32 for training stability reasons
         # therefore the input hidden states gets silently casted in float32. Hence, we need

filename: src/transformers/models/evolla/modeling_evolla.py
patch: @@ -405,9 +405,10 @@ def forward(
 
         bsz, q_len, _ = hidden_states.size()
 
-        query_layer = self.transpose_for_scores(self.query(hidden_states))
-        key_layer = self.transpose_for_scores(self.key(hidden_states))
-        value_layer = self.transpose_for_scores(self.value(hidden_states))
+        hidden_shape = (hidden_states.shape[0], -1, self.num_attention_heads, self.attention_head_size)
+        query_layer = self.query(hidden_states).view(hidden_shape).transpose(1, 2)
+        key_layer = self.key(hidden_states).view(hidden_shape).transpose(1, 2)
+        value_layer = self.value(hidden_states).view(hidden_shape).transpose(1, 2)
 
         # In PEFT, usually we cast the layer norms in float32 for training stability reasons
         # therefore the input hidden states gets silently casted in float32. Hence, we need
Repository: ollama/ollama
Pull request: add 34b to mem check


Changed files:
filename: llm/llm.go
patch: @@ -55,7 +55,7 @@ func New(model string, adapters []string, opts api.Options) (LLM, error) {
 		if totalResidentMemory < 16*1024*1024 {
 			return nil, fmt.Errorf("model requires at least 16GB of memory")
 		}
-	case ModelType30B:
+	case ModelType30B, ModelType34B:
 		if totalResidentMemory < 32*1024*1024 {
 			return nil, fmt.Errorf("model requires at least 32GB of memory")
 		}
Repository: denoland/deno
Pull request: test: add ability to ignore Node compat tests

This commits adds a way to ignore Node compat tests in `tests/node_compat/config.toml` like so:
```toml
[tests]
"abort/test-addon-register-signal-handler.js" = { windows = false }
"abort/test-addon-uv-handle-leak.js" = { linux = false }
"es-module/test-cjs-prototype-pollution.js" = { darwin = false }
"es-module/test-esm-assert-strict.mjs" = { windows = false, linux = false }
```

Changed files:
filename: tests/node_compat/test.ts
patch: @@ -11,6 +11,9 @@ export const generateTestSerialId = () => ++testSerialId;
 
 interface SingleFileConfig {
   flaky?: boolean;
+  windows?: boolean;
+  darwin?: boolean;
+  linux?: boolean;
 }
 
 type Config = {
@@ -40,10 +43,26 @@ async function run(name: string, testConfig: SingleFileConfig) {
   assert(result.result === "pass", `Test "${name}" failed: ${msg}`);
 }
 
+function computeIgnores(testConfig: SingleFileConfig): boolean {
+  if (testConfig.windows === false && Deno.build.os === "windows") {
+    return true;
+  } else if (testConfig.linux === false && Deno.build.os === "linux") {
+    return true;
+  } else if (testConfig.darwin === false && Deno.build.os === "darwin") {
+    return true;
+  }
+
+  return false;
+}
+
 for (const [name, testConfig] of sequentialTests) {
-  Deno.test("Node compat: " + name, async () => {
-    await run(name, testConfig);
-  });
+  Deno.test(
+    "Node compat: " + name,
+    { ignore: computeIgnores(testConfig) },
+    async () => {
+      await run(name, testConfig);
+    },
+  );
 }
 
 Deno.test("Node compat: parallel tests", async (t) => {
@@ -53,6 +72,7 @@ Deno.test("Node compat: parallel tests", async (t) => {
     ([name, testConfig]) =>
       t.step({
         name,
+        ignore: computeIgnores(testConfig),
         fn: () => run(name, testConfig),
         sanitizeExit: false,
         sanitizeOps: false,
Repository: ollama/ollama
Pull request: set default template

fixes #413 

Changed files:
filename: server/images.go
patch: @@ -163,8 +163,9 @@ func GetModel(name string) (*Model, error) {
 	}
 
 	model := &Model{
-		Name:   mp.GetFullTagname(),
-		Digest: manifest.Config.Digest,
+		Name:     mp.GetFullTagname(),
+		Digest:   manifest.Config.Digest,
+		Template: "{{ .Prompt }}",
 	}
 
 	for _, layer := range manifest.Layers {
Repository: vercel/next.js
Pull request: [turbopack] Update Turbopack build warning message 

Drop the scare text about not running turbopack in production.  Instead clarify that builds are beta and direct people to our documentation site.

For example:
![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/AwJ29EfoPcPdLSwCZxAz/a50ca03c-7065-4fc4-ad3a-2232e14984d3.png)

Compared to the old notice:

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/AwJ29EfoPcPdLSwCZxAz/c802c577-39d6-4408-bd9e-144d3f9c23dd.png)

Notably

- mission critical applications are a good idea! just be careful with compatibility issues
- the source maps issues is fixed! no need to talk about it at all
- A discussion of bundle size issues and build caches is being added in #82560

Closes PACK-5237

Changed files:
filename: packages/next/src/build/index.ts
patch: @@ -3980,7 +3980,7 @@ export default async function build(
     await lockfilePatchPromise.cur
 
     if (isTurbopack && !process.env.__NEXT_TEST_MODE) {
-      warnAboutTurbopackBuilds(loadedConfig)
+      warnAboutTurbopackBuilds()
     }
 
     // Ensure all traces are flushed before finishing the command
@@ -4007,31 +4007,12 @@ function errorFromUnsupportedSegmentConfig(): never {
   process.exit(1)
 }
 
-function warnAboutTurbopackBuilds(config?: NextConfigComplete) {
-  let warningStr =
-    `Support for Turbopack builds is experimental. ` +
-    bold(
-      `We don't recommend deploying mission-critical applications to production.`
-    )
-  warningStr +=
-    '\n\n- ' +
-    bold(
-      'Turbopack currently always builds production source maps for the browser. This will include project source code if deployed to production.'
-    )
-  warningStr +=
-    '\n- It is expected that your bundle size might be different from `next build` with webpack. This will be improved as we work towards stability.'
-
-  if (!config?.experimental.turbopackPersistentCaching) {
-    warningStr +=
-      '\n- This build is without disk caching; subsequent builds will become faster when disk caching becomes available.'
-  }
-
-  warningStr +=
-    '\n- When comparing output to webpack builds, make sure to first clear the Next.js cache by deleting the `.next` directory.'
-  warningStr +=
-    '\n\nProvide feedback for Turbopack builds at https://github.com/vercel/next.js/discussions/77721'
-
-  Log.warn(warningStr)
+function warnAboutTurbopackBuilds() {
+  Log.ready(
+    `Turbopack builds are ${bold('beta')}.\n\n` +
+      '   Please see our docs https://nextjs.org/docs/app/api-reference/turbopack for information on known differences with webpack builds.\n\n' +
+      '   Provide feedback for Turbopack builds at https://github.com/vercel/next.js/discussions/77721'
+  )
 }
 
 function getBundlerForTelemetry(isTurbopack: boolean) {
Repository: electron/electron
Pull request: fix: `UtilityProcess.fork` crash before app ready

Backport of #46380

See that PR for details.


Notes: Fixed an issue where calling `UtilityProcess.fork` prior to the app ready event would cause a crash.


Changed files:
filename: docs/api/utility-process.md
patch: @@ -44,6 +44,8 @@ Process: [Main](../glossary.md#main-process)<br />
 
 Returns [`UtilityProcess`](utility-process.md#class-utilityprocess)
 
+**Note:** `utilityProcess.fork` can only be called after the `ready` event has been emitted on `App`.
+
 ## Class: UtilityProcess
 
 > Instances of the `UtilityProcess` represent the Chromium spawned child process

filename: shell/browser/api/electron_api_utility_process.cc
patch: @@ -21,11 +21,13 @@
 #include "gin/object_template_builder.h"
 #include "mojo/public/cpp/bindings/pending_receiver.h"
 #include "shell/browser/api/message_port.h"
+#include "shell/browser/browser.h"
 #include "shell/browser/javascript_environment.h"
 #include "shell/browser/net/system_network_context_manager.h"
 #include "shell/common/gin_converters/callback_converter.h"
 #include "shell/common/gin_converters/file_path_converter.h"
 #include "shell/common/gin_helper/dictionary.h"
+#include "shell/common/gin_helper/error_thrower.h"
 #include "shell/common/gin_helper/object_template_builder.h"
 #include "shell/common/node_includes.h"
 #include "shell/common/v8_util.h"
@@ -412,6 +414,13 @@ raw_ptr<UtilityProcessWrapper> UtilityProcessWrapper::FromProcessId(
 // static
 gin::Handle<UtilityProcessWrapper> UtilityProcessWrapper::Create(
     gin::Arguments* args) {
+  if (!Browser::Get()->is_ready()) {
+    gin_helper::ErrorThrower(args->isolate())
+        .ThrowTypeError(
+            "utilityProcess cannot be created before app is ready.");
+    return {};
+  }
+
   gin_helper::Dictionary dict;
   if (!args->GetNext(&dict)) {
     args->ThrowTypeError("Options must be an object.");

filename: spec/fixtures/crash-cases/utility-process-app-ready/index.js
patch: @@ -0,0 +1,31 @@
+const { app, BrowserWindow, utilityProcess } = require('electron');
+
+const path = require('node:path');
+
+function createWindow () {
+  const mainWindow = new BrowserWindow();
+  mainWindow.loadFile('about:blank');
+}
+
+app.whenReady().then(() => {
+  createWindow();
+
+  app.on('activate', function () {
+    if (BrowserWindow.getAllWindows().length === 0) createWindow();
+  });
+});
+
+app.on('window-all-closed', function () {
+  if (process.platform !== 'darwin') app.quit();
+});
+
+try {
+  utilityProcess.fork(path.join(__dirname, 'utility.js'));
+} catch (e) {
+  if (/utilityProcess cannot be created before app is ready/.test(e.message)) {
+    app.exit(0);
+  } else {
+    console.error(e);
+    app.exit(1);
+  }
+}
Repository: ollama/ollama
Pull request: delete all models (not just 1st) in `ollama rm`

Previously, `ollama rm model1 model2 modelN` would only delete `model1`. The other model command-line arguments would be silently ignored. Now, all models mentioned are deleted.

Changed files:
filename: cmd/cmd.go
patch: @@ -220,11 +220,13 @@ func DeleteHandler(cmd *cobra.Command, args []string) error {
 		return err
 	}
 
-	req := api.DeleteRequest{Name: args[0]}
-	if err := client.Delete(context.Background(), &req); err != nil {
-		return err
+	for _, name := range args {
+		req := api.DeleteRequest{Name: name}
+		if err := client.Delete(context.Background(), &req); err != nil {
+			return err
+		}
+		fmt.Printf("deleted '%s'\n", name)
 	}
-	fmt.Printf("deleted '%s'\n", args[0])
 	return nil
 }
Repository: ggml-org/llama.cpp
Pull request: vulkan: fix debug build (add_rms_len/data not found)

Fixes #16502.


Changed files:
filename: ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp
patch: @@ -959,7 +959,7 @@ void write_output_files() {
     }
 
     std::string suffixes[2] = {"_f32", "_f16"};
-    for (auto op : {"add", "sub", "mul", "div", "add_rms"}) {
+    for (std::string op : {"add", "sub", "mul", "div", "add_rms"}) {
         hdr << "extern const void * " << op << "_data[2][2][2][2];\n";
         hdr << "extern const uint64_t " << op << "_len[2][2][2][2];\n";
Repository: facebook/react
Pull request: Update gate pragma to detect global error events

If a global error event is dispatched during a test, Jest reports that test as a failure.

Our `@gate` pragma feature should account for this — if the gate condition is false, and the global error event is dispatched, then the test should be reported as a success.

The solution is to install an error event handler right before invoking the test function. Because we install our own handler, Jest will not report the test as a failure if a global error event is dispatched; it's conceptually as if we wrapped the whole test event in a try-catch.

Changed files:
filename: scripts/babel/__tests__/transform-test-gate-pragma-test.js
patch: @@ -203,6 +203,15 @@ describe('transform test-gate-pragma: actual runtime', () => {
     console.error('Stop that!');
     throw Error('I told you to stop!');
   });
+
+  // @gate false
+  test('a global error event is treated as a test failure', () => {
+    dispatchEvent(
+      new ErrorEvent('error', {
+        error: new Error('Oops!'),
+      })
+    );
+  });
 });
 
 describe('dynamic gate method', () => {

filename: scripts/jest/setupTests.js
patch: @@ -241,13 +241,30 @@ if (process.env.REACT_CLASS_EQUIVALENCE_TEST) {
     global.Error = ErrorProxy;
   }
 
-  const expectTestToFail = async (callback, error) => {
+  const expectTestToFail = async (callback, errorToThrowIfTestSucceeds) => {
     if (callback.length > 0) {
       throw Error(
         'Gated test helpers do not support the `done` callback. Return a ' +
           'promise instead.'
       );
     }
+
+    // Install a global error event handler. We treat global error events as
+    // test failures, same as Jest's default behavior.
+    //
+    // Becaused we installed our own error event handler, Jest will not report a
+    // test failure. Conceptually it's as if we wrapped the entire test event in
+    // a try-catch.
+    let didError = false;
+    const errorEventHandler = () => {
+      didError = true;
+    };
+    // eslint-disable-next-line no-restricted-globals
+    if (typeof addEventListener === 'function') {
+      // eslint-disable-next-line no-restricted-globals
+      addEventListener('error', errorEventHandler);
+    }
+
     try {
       const maybePromise = callback();
       if (
@@ -262,11 +279,20 @@ if (process.env.REACT_CLASS_EQUIVALENCE_TEST) {
       // throws, we won't have captured it.
       flushAllUnexpectedConsoleCalls();
     } catch (testError) {
-      // Failed as expected
-      resetAllUnexpectedConsoleCalls();
-      return;
+      didError = true;
+    }
+    resetAllUnexpectedConsoleCalls();
+    // eslint-disable-next-line no-restricted-globals
+    if (typeof removeEventListener === 'function') {
+      // eslint-disable-next-line no-restricted-globals
+      removeEventListener('error', errorEventHandler);
+    }
+
+    if (!didError) {
+      // The test did not error like we expected it to. Report this to Jest as
+      // a failure.
+      throw errorToThrowIfTestSucceeds;
     }
-    throw error;
   };
 
   const gatedErrorMessage = 'Gated test was expected to fail, but it passed.';
Repository: ggml-org/llama.cpp
Pull request: webui: reorganize settings layout

<img width="768" height="507" alt="Dev" src="https://github.com/user-attachments/assets/d960bf59-0a0c-4039-bcea-651eb1a3fd44" />
<img width="787" height="517" alt="Sampling" src="https://github.com/user-attachments/assets/107ab699-2545-4b1f-83ca-9e0c6d82bebe" />


Changed files:
filename: tools/server/webui/src/lib/components/app/chat/ChatSettings/ChatSettingsDialog.svelte
patch: @@ -4,7 +4,7 @@
 		Funnel,
 		AlertTriangle,
 		Brain,
-		Cog,
+		Code,
 		Monitor,
 		Sun,
 		Moon,
@@ -88,9 +88,59 @@
 			]
 		},
 		{
-			title: 'Samplers',
+			title: 'Sampling',
 			icon: Funnel,
 			fields: [
+				{
+					key: 'temperature',
+					label: 'Temperature',
+					type: 'input'
+				},
+				{
+					key: 'dynatemp_range',
+					label: 'Dynamic temperature range',
+					type: 'input'
+				},
+				{
+					key: 'dynatemp_exponent',
+					label: 'Dynamic temperature exponent',
+					type: 'input'
+				},
+				{
+					key: 'top_k',
+					label: 'Top K',
+					type: 'input'
+				},
+				{
+					key: 'top_p',
+					label: 'Top P',
+					type: 'input'
+				},
+				{
+					key: 'min_p',
+					label: 'Min P',
+					type: 'input'
+				},
+				{
+					key: 'xtc_probability',
+					label: 'XTC probability',
+					type: 'input'
+				},
+				{
+					key: 'xtc_threshold',
+					label: 'XTC threshold',
+					type: 'input'
+				},
+				{
+					key: 'typ_p',
+					label: 'Typical P',
+					type: 'input'
+				},
+				{
+					key: 'max_tokens',
+					label: 'Max tokens',
+					type: 'input'
+				},
 				{
 					key: 'samplers',
 					label: 'Samplers',
@@ -152,68 +202,17 @@
 					key: 'showThoughtInProgress',
 					label: 'Show thought in progress',
 					type: 'checkbox'
-				},
-				{
-					key: 'disableReasoningFormat',
-					label:
-						'Show raw LLM output without backend parsing and frontend Markdown rendering to inspect streaming across different models.',
-					type: 'checkbox'
 				}
 			]
 		},
 		{
-			title: 'Advanced',
-			icon: Cog,
+			title: 'Developer',
+			icon: Code,
 			fields: [
 				{
-					key: 'temperature',
-					label: 'Temperature',
-					type: 'input'
-				},
-				{
-					key: 'dynatemp_range',
-					label: 'Dynamic temperature range',
-					type: 'input'
-				},
-				{
-					key: 'dynatemp_exponent',
-					label: 'Dynamic temperature exponent',
-					type: 'input'
-				},
-				{
-					key: 'top_k',
-					label: 'Top K',
-					type: 'input'
-				},
-				{
-					key: 'top_p',
-					label: 'Top P',
-					type: 'input'
-				},
-				{
-					key: 'min_p',
-					label: 'Min P',
-					type: 'input'
-				},
-				{
-					key: 'xtc_probability',
-					label: 'XTC probability',
-					type: 'input'
-				},
-				{
-					key: 'xtc_threshold',
-					label: 'XTC threshold',
-					type: 'input'
-				},
-				{
-					key: 'typ_p',
-					label: 'Typical P',
-					type: 'input'
-				},
-				{
-					key: 'max_tokens',
-					label: 'Max tokens',
-					type: 'input'
+					key: 'disableReasoningFormat',
+					label: 'Show raw LLM output',
+					type: 'checkbox'
 				},
 				{
 					key: 'custom',
Repository: huggingface/transformers
Pull request: fix error vocab_size at Qwen2_5_VLForConditionalGeneration loss_function

# What does this PR do?

<!--
Congratulations! You've made it this far! You're not quite done yet though.

Once merged, your PR is going to appear in the release notes with the title you set, so make sure it's a great title that fully reflects the extent of your awesome contribution.

Then, please replace this with a description of the change and which issue is fixed (if applicable). Please also include relevant motivation and context. List any dependencies (if any) that are required for this change.

Once you're done, someone will review your PR shortly (see the section "Who can review?" below to tag some potential reviewers). They may suggest changes to make the code even better. If no one reviewed your PR after a week has passed, don't hesitate to post a new comment @-mentioning the same persons---sometimes notifications get lost.
-->

<!-- Remove if not applicable -->

Based on changes at PR #37033, `vocab_size` should be obtained from `self.config.text_config`, not `self.config` at Qwen2_5_VLForConditionalGeneration loss_function calling.


Changed files:
filename: src/transformers/models/qwen2_5_vl/modeling_qwen2_5_vl.py
patch: @@ -1524,7 +1524,9 @@ def forward(
 
         loss = None
         if labels is not None:
-            loss = self.loss_function(logits=logits, labels=labels, vocab_size=self.config.vocab_size)
+            loss = self.loss_function(
+                logits=logits, labels=labels, vocab_size=self.config.text_config.vocab_size, **kwargs
+            )
 
         return Qwen2_5_VLCausalLMOutputWithPast(
             loss=loss,

filename: src/transformers/models/qwen2_5_vl/modular_qwen2_5_vl.py
patch: @@ -749,7 +749,9 @@ def forward(
 
         loss = None
         if labels is not None:
-            loss = self.loss_function(logits=logits, labels=labels, vocab_size=self.config.vocab_size)
+            loss = self.loss_function(
+                logits=logits, labels=labels, vocab_size=self.config.text_config.vocab_size, **kwargs
+            )
 
         return Qwen2_5_VLCausalLMOutputWithPast(
             loss=loss,

filename: src/transformers/models/qwen2_vl/modeling_qwen2_vl.py
patch: @@ -1405,7 +1405,9 @@ def forward(
 
         loss = None
         if labels is not None:
-            loss = self.loss_function(logits=logits, labels=labels, vocab_size=self.config.vocab_size)
+            loss = self.loss_function(
+                logits=logits, labels=labels, vocab_size=self.config.text_config.vocab_size, **kwargs
+            )
 
         return Qwen2VLCausalLMOutputWithPast(
             loss=loss,
Repository: facebook/react
Pull request: Also apply content hash for experimental files

Also apply content hash for experimental files

In #28582 I missed that experimental files have a copy of this build function setting the version strings.


Changed files:
filename: scripts/rollup/build-all-release-channels.js
patch: @@ -239,6 +239,18 @@ function processExperimental(buildDir, version) {
     );
   }
 
+  [
+    buildDir + '/react-native/implementations/',
+    buildDir + '/facebook-react-native/',
+  ].forEach(reactNativeBuildDir => {
+    if (fs.existsSync(reactNativeBuildDir)) {
+      updatePlaceholderReactVersionInCompiledArtifacts(
+        reactNativeBuildDir,
+        ReactVersion + '-' + canaryChannelLabel + '-%FILEHASH%'
+      );
+    }
+  });
+
   // Update remaining placeholders with canary channel version
   updatePlaceholderReactVersionInCompiledArtifacts(
     buildDir,