diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 2f6565d8..08559896 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -12,7 +12,7 @@ jobs:
strategy:
matrix:
- node-version: [20.x, 22.x]
+ node-version: [24.x]
steps:
- uses: actions/checkout@v4
@@ -39,7 +39,7 @@ jobs:
retention-days: 5
- name: Publish backend coverage summary
- if: ${{ always() && matrix.node-version == '22.x' }}
+ if: ${{ always() && matrix.node-version == '24.x' }}
uses: actions/github-script@v7
with:
script: |
@@ -86,7 +86,7 @@ jobs:
strategy:
matrix:
- node-version: [22.x]
+ node-version: [24.x]
steps:
- uses: actions/checkout@v4
@@ -115,7 +115,7 @@ jobs:
strategy:
matrix:
- node-version: [22.x]
+ node-version: [24.x]
steps:
- uses: actions/checkout@v4
diff --git a/README.md b/README.md
index 4f369150..9ef80bed 100644
--- a/README.md
+++ b/README.md
@@ -114,7 +114,7 @@ Puter is available as a hosted service at [**puter.com**](https://puter.com).
- **Operating Systems:** Linux, macOS, Windows
- **RAM:** 2GB minimum (4GB recommended)
- **Disk Space:** 1GB free space
-- **Node.js:** Version 20.19.5+ (Version 23+ recommended)
+- **Node.js:** Version 24+
- **npm:** Latest stable version
diff --git a/doc/i18n/README.pa.md b/doc/i18n/README.pa.md
index b4d03fed..cad6ee84 100644
--- a/doc/i18n/README.pa.md
+++ b/doc/i18n/README.pa.md
@@ -112,7 +112,7 @@ Puter [**puter.com**](https://puter.com) 'ਤੇ ਇੱਕ ਹੋਸਟ ਕੀ
- **Operating Systems:** Linux, macOS, Windows
- **RAM:** ਘੱਟੋ-ਘੱਟ 2GB (4GB ਸਿਫ਼ਾਰਸ਼ੀ)
- **Disk Space:** 1GB ਖਾਲੀ ਜਗ੍ਹਾ
-- **Node.js:** Version 20.19.5+ (23+ ਸਿਫ਼ਾਰਸ਼ੀ)
+- **Node.js:** Version 24+
- **npm:** ਨਵੀਨਤਮ ਸਥਿਰ ਵਰਜਨ
diff --git a/package.json b/package.json
index 0a2e0b4c..499e8e19 100644
--- a/package.json
+++ b/package.json
@@ -97,6 +97,6 @@
"sharp-ico": "^0.1.5"
},
"engines": {
- "node": ">=20.19.5"
+ "node": ">=24.0.0"
}
}
diff --git a/src/backend/package.json b/src/backend/package.json
index 7c4cf3c4..9def1911 100644
--- a/src/backend/package.json
+++ b/src/backend/package.json
@@ -95,7 +95,7 @@
"yargs": "^17.7.2"
},
"devDependencies": {
- "@types/node": "^20.5.3",
+ "@types/node": "^24.0.0",
"chai": "^4.3.7",
"jsdom": "^27.2.0",
"mocha": "^10.2.0",
diff --git a/src/backend/src/util/CircularQueue.bench.js b/src/backend/src/util/CircularQueue.bench.js
index cd5029e9..9c317532 100644
--- a/src/backend/src/util/CircularQueue.bench.js
+++ b/src/backend/src/util/CircularQueue.bench.js
@@ -18,7 +18,7 @@
*/
import { bench, describe } from 'vitest';
-const { CircularQueue } = require('./CircularQueue');
+import { CircularQueue } from './CircularQueue';
/**
* Naive array-based implementation for comparison (no Map optimization).
diff --git a/src/backend/src/util/CircularQueue.js b/src/backend/src/util/CircularQueue.js
index 0f642d01..f29ddf33 100644
--- a/src/backend/src/util/CircularQueue.js
+++ b/src/backend/src/util/CircularQueue.js
@@ -24,7 +24,7 @@
* Items expire when they are evicted from the queue (when the queue is full
* and a new item is pushed).
*/
-class CircularQueue {
+export class CircularQueue {
/**
* Creates a new CircularQueue instance with the specified size.
*
@@ -87,7 +87,3 @@ class CircularQueue {
return false;
}
}
-
-module.exports = {
- CircularQueue,
-};
diff --git a/tests/ci/common.py b/tests/ci/common.py
index e6f7dc90..fa4d78a6 100644
--- a/tests/ci/common.py
+++ b/tests/ci/common.py
@@ -30,7 +30,7 @@ def get_admin_password() -> str:
"""
Get the admin password from the backend server, throw an error if not found.
"""
- for attempt in range(60): # wait up to 60 seconds (1 minute)
+ for attempt in range(90): # wait up to 60 seconds (1 minute)
time.sleep(1)
# read the log file