From 902aacbb9150b59dd1f9ab1e3fca3aa41d625dda Mon Sep 17 00:00:00 2001
From: someCatInTheWorld <162684669+someCatInTheWorld@users.noreply.github.com>
Date: Thu, 29 Jan 2026 06:25:31 +1100
Subject: [PATCH 1/2] feat: add server extension
---
package-lock.json | 25 ++++++++++++++++++++-----
src/lib/libraries/extensions/index.jsx | 17 +++++++++++++++++
2 files changed, 37 insertions(+), 5 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index d89c68cb0..478495cb3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -184,6 +184,7 @@
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz",
"integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@babel/code-frame": "^7.27.1",
"@babel/generator": "^7.28.3",
@@ -2987,7 +2988,6 @@
"integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"eslint-scope": "5.1.1"
}
@@ -3832,6 +3832,7 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT",
+ "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -3905,6 +3906,7 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -5281,6 +5283,7 @@
}
],
"license": "MIT",
+ "peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.8.9",
"caniuse-lite": "^1.0.30001746",
@@ -7853,6 +7856,7 @@
"integrity": "sha512-p2yy9Y7t/PFbPoTvrWde7JIYB2ZyGC+NgTNbVEGvZ5/EyoYSr9aG/2rSbVvyNvMHEhw9/dmGUJHWtfQIEiX9pg==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"array.prototype.flat": "^1.2.1",
"cheerio": "^1.0.0-rc.2",
@@ -8270,6 +8274,7 @@
"deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
@@ -8440,6 +8445,7 @@
"integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"array-includes": "^3.1.7",
"array.prototype.findlastindex": "^1.2.3",
@@ -8573,7 +8579,6 @@
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
"license": "BSD-2-Clause",
- "peer": true,
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
@@ -8588,7 +8593,6 @@
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true,
"license": "BSD-2-Clause",
- "peer": true,
"engines": {
"node": ">=4.0"
}
@@ -8599,7 +8603,6 @@
"integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"engines": {
"node": ">=10"
}
@@ -17235,6 +17238,7 @@
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"loose-envify": "^1.4.0",
"object-assign": "^4.1.1",
@@ -17571,6 +17575,7 @@
"resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz",
"integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
@@ -17600,6 +17605,7 @@
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz",
"integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
@@ -17635,6 +17641,7 @@
"resolved": "https://registry.npmjs.org/react-intl/-/react-intl-2.9.0.tgz",
"integrity": "sha512-27jnDlb/d2A7mSJwrbOBnUgD+rPep+abmoJE511Tf8BnoONIAUehy/U1zZCHGO17mnOwMWxqN4qC0nW11cD6rA==",
"license": "BSD-3-Clause",
+ "peer": true,
"dependencies": {
"hoist-non-react-statics": "^3.3.0",
"intl-format-cache": "^2.0.5",
@@ -17739,6 +17746,7 @@
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-5.0.7.tgz",
"integrity": "sha512-5VI8EV5hdgNgyjfmWzBbdrqUkrVRKlyTKk1sGH3jzM2M2Mhj/seQgPXaz6gVAj2lz/nz688AdTqMO18Lr24Zhg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"hoist-non-react-statics": "^2.5.0",
"invariant": "^2.0.0",
@@ -17763,6 +17771,7 @@
"resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-4.1.0.tgz",
"integrity": "sha512-ZuDraf0qsJlyiTwzeva+foHx83IP6SIhru9o7BvMwQ4ZHjRIL5WjdgVNNrKSRbmeWO9rEJoMpabei/5lJn8KaA==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"hyphenate-style-name": "^1.0.0",
"matchmediaquery": "^0.2.1",
@@ -17792,6 +17801,7 @@
"resolved": "https://registry.npmjs.org/react-style-proptype/-/react-style-proptype-3.2.2.tgz",
"integrity": "sha512-ywYLSjNkxKHiZOqNlso9PZByNEY+FTyh3C+7uuziK0xFXu9xzdyfHwg4S9iyiRRoPCR4k2LqaBBsWVmSBwCWYQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"prop-types": "^15.5.4"
}
@@ -17830,6 +17840,7 @@
"resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-3.8.0.tgz",
"integrity": "sha512-Uj/vVd0uGuqwTkWeRjKS56T2iwOSvsSMbjqTK7AseHZEMND+WCXXUajaF7+ZsJWTZgnpeT9kBnaBFhchzeDTbw==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"classnames": "^2.2.5",
"prop-types": "^15.6.0"
@@ -17939,6 +17950,7 @@
"resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz",
"integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"lodash": "^4.2.1",
"lodash-es": "^4.2.1",
@@ -18819,6 +18831,7 @@
"node_modules/scratch-render-fonts": {
"version": "1.0.0",
"resolved": "git+ssh://git@github.com/PenguinMod/penguinmod-render-fonts.git#4dda62c707f64505266aa62f7a6cc84f0e5812fd",
+ "peer": true,
"dependencies": {
"base64-loader": "1.0.0"
}
@@ -20990,7 +21003,8 @@
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
- "license": "0BSD"
+ "license": "0BSD",
+ "peer": true
},
"node_modules/tty-browserify": {
"version": "0.0.0",
@@ -22355,6 +22369,7 @@
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.47.0.tgz",
"integrity": "sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==",
"license": "MIT",
+ "peer": true,
"dependencies": {
"@webassemblyjs/ast": "1.9.0",
"@webassemblyjs/helper-module-context": "1.9.0",
diff --git a/src/lib/libraries/extensions/index.jsx b/src/lib/libraries/extensions/index.jsx
index bbf273884..1b31e4338 100644
--- a/src/lib/libraries/extensions/index.jsx
+++ b/src/lib/libraries/extensions/index.jsx
@@ -162,6 +162,23 @@ export default [
featured: true,
internetConnectionRequired: true
},
+ {
+ name: 'Web Server',
+ extensionId: 'server',
+ collaborator: 'LibreKitten',
+ // TODO: This is a placeholder until someone designs a cover or Amp gives permission to use the he made one for
+ // LibreKitten.
+ iconURL: customExtensionIcon,
+ description: (
+
+ ),
+ tags: ['ob'],
+ featured: true
+ },
{
name: 'Makey Makey',
extensionId: 'makeymakey',
From 597cf5418207fb4be76dadd6f08c18c6cc377468 Mon Sep 17 00:00:00 2001
From: someCatInTheWorld <162684669+someCatInTheWorld@users.noreply.github.com>
Date: Thu, 29 Jan 2026 08:59:00 +1100
Subject: [PATCH 2/2] feat: add server extension cover in gallery
Thanks @ampeletrecuted!
---
src/lib/libraries/extensions/index.jsx | 5 +-
.../libraries/extensions/server/server.svg | 88 +++++++++++++++++++
2 files changed, 90 insertions(+), 3 deletions(-)
create mode 100644 src/lib/libraries/extensions/server/server.svg
diff --git a/src/lib/libraries/extensions/index.jsx b/src/lib/libraries/extensions/index.jsx
index 1b31e4338..3f3d739ef 100644
--- a/src/lib/libraries/extensions/index.jsx
+++ b/src/lib/libraries/extensions/index.jsx
@@ -48,6 +48,7 @@ import gdxforConnectionSmallIconURL from './gdxfor/gdxfor-small.svg';
import twIcon from './tw/tw.svg';
import customExtensionIcon from './custom/custom.svg';
+import serverIcon from './server/server.svg';
import returnIcon from './custom/return.svg';
import galleryIcon from './gallery/gallery.svg';
import {APP_NAME} from '../../brand';
@@ -166,9 +167,7 @@ export default [
name: 'Web Server',
extensionId: 'server',
collaborator: 'LibreKitten',
- // TODO: This is a placeholder until someone designs a cover or Amp gives permission to use the he made one for
- // LibreKitten.
- iconURL: customExtensionIcon,
+ iconURL: serverIcon,
description: (
+