mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-09-13 07:10:51 +02:00
Compare commits
13 Commits
2025-09-02
...
2025-09-03
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d314168a37 | ||
|
|
d6ad11c5c2 | ||
|
|
534592b44a | ||
|
|
d9b6b58b36 | ||
|
|
298eb7e83d | ||
|
|
c2dd1e413f | ||
|
|
a4f1766408 | ||
|
|
a24169e9b8 | ||
|
|
45a2163e66 | ||
|
|
2fc3e62d60 | ||
|
|
210b846d61 | ||
|
|
b04cfb65f7 | ||
|
|
6a2fc4083b |
20
CHANGELOG.md
20
CHANGELOG.md
@@ -10,8 +10,28 @@
|
||||
> [!CAUTION]
|
||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
||||
|
||||
## 2025-09-04
|
||||
|
||||
## 2025-09-03
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Element-Synapse: Increase HDD size [@tremor021](https://github.com/tremor021) ([#7384](https://github.com/community-scripts/ProxmoxVE/pull/7384))
|
||||
- Wizarr: fix uv lock issue; use correct output suppression [@vhsdream](https://github.com/vhsdream) ([#7378](https://github.com/community-scripts/ProxmoxVE/pull/7378))
|
||||
- Netbox: Fix missing directory [@tremor021](https://github.com/tremor021) ([#7374](https://github.com/community-scripts/ProxmoxVE/pull/7374))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Enhanced IP-Tag installation script with interactive configuration, improved VM IP detection, and better visual indicators [@DesertGamer](https://github.com/DesertGamer) ([#7366](https://github.com/community-scripts/ProxmoxVE/pull/7366))
|
||||
|
||||
### 🌐 Website
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Fix navigation [@BramSuurdje](https://github.com/BramSuurdje) ([#7376](https://github.com/community-scripts/ProxmoxVE/pull/7376))
|
||||
|
||||
## 2025-09-02
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
@@ -9,7 +9,7 @@ APP="Element Synapse"
|
||||
var_tags="${var_tags:-server}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-4}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
@@ -45,13 +45,14 @@ function update_script() {
|
||||
|
||||
msg_info "Updating $APP"
|
||||
cd /opt/wizarr
|
||||
/usr/local/bin/uv -q sync --locked
|
||||
$STD /usr/local/bin/uv -q run pybabel compile -d app/translations
|
||||
$STD /usr/local/bin/uv lock
|
||||
$STD /usr/local/bin/uv sync --locked
|
||||
$STD /usr/local/bin/uv run pybabel compile -d app/translations
|
||||
$STD npm --prefix app/static install
|
||||
$STD npm --prefix app/static run build:css
|
||||
mkdir -p ./.cache
|
||||
$STD tar -xf "$BACKUP_FILE" --directory=/
|
||||
$STD /usr/local/bin/uv -q run flask db upgrade
|
||||
$STD /usr/local/bin/uv run flask db upgrade
|
||||
msg_ok "Updated $APP"
|
||||
|
||||
msg_info "Starting $APP"
|
||||
@@ -61,7 +62,7 @@ function update_script() {
|
||||
msg_info "Cleaning Up"
|
||||
rm -rf "$BACKUP_FILE"
|
||||
msg_ok "Cleanup Completed"
|
||||
msg_ok "Update Successfully"
|
||||
msg_ok "Updated Successfully"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 2048,
|
||||
"hdd": 4,
|
||||
"hdd": 8,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
|
||||
@@ -1,8 +1,68 @@
|
||||
[
|
||||
{
|
||||
"name": "mongodb/mongo",
|
||||
"version": "r8.0.14-rc0",
|
||||
"date": "2025-09-02T22:46:40Z"
|
||||
"name": "Cleanuparr/Cleanuparr",
|
||||
"version": "v2.2.2",
|
||||
"date": "2025-09-03T20:58:13Z"
|
||||
},
|
||||
{
|
||||
"name": "VictoriaMetrics/VictoriaMetrics",
|
||||
"version": "pmm-6401-v1.125.1",
|
||||
"date": "2025-09-03T20:17:18Z"
|
||||
},
|
||||
{
|
||||
"name": "homarr-labs/homarr",
|
||||
"version": "v1.35.1",
|
||||
"date": "2025-09-03T18:53:36Z"
|
||||
},
|
||||
{
|
||||
"name": "home-assistant/core",
|
||||
"version": "2025.9.0",
|
||||
"date": "2025-09-03T17:58:41Z"
|
||||
},
|
||||
{
|
||||
"name": "NodeBB/NodeBB",
|
||||
"version": "v4.5.0",
|
||||
"date": "2025-09-03T17:42:18Z"
|
||||
},
|
||||
{
|
||||
"name": "zitadel/zitadel",
|
||||
"version": "v4.1.1",
|
||||
"date": "2025-09-03T15:12:56Z"
|
||||
},
|
||||
{
|
||||
"name": "Graylog2/graylog2-server",
|
||||
"version": "6.1.15",
|
||||
"date": "2025-09-03T14:51:37Z"
|
||||
},
|
||||
{
|
||||
"name": "emqx/emqx",
|
||||
"version": "v5.8.8",
|
||||
"date": "2025-09-03T14:25:26Z"
|
||||
},
|
||||
{
|
||||
"name": "rcourtman/Pulse",
|
||||
"version": "v4.13.0",
|
||||
"date": "2025-09-03T13:48:17Z"
|
||||
},
|
||||
{
|
||||
"name": "glpi-project/glpi",
|
||||
"version": "10.0.19",
|
||||
"date": "2025-07-16T09:45:14Z"
|
||||
},
|
||||
{
|
||||
"name": "Radarr/Radarr",
|
||||
"version": "v5.27.5.10198",
|
||||
"date": "2025-09-03T12:08:43Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "n8n@1.109.2",
|
||||
"date": "2025-09-03T07:50:21Z"
|
||||
},
|
||||
{
|
||||
"name": "Checkmk/checkmk",
|
||||
"version": "v2.4.0p11",
|
||||
"date": "2025-09-03T09:58:14Z"
|
||||
},
|
||||
{
|
||||
"name": "mattermost/mattermost",
|
||||
@@ -10,9 +70,64 @@
|
||||
"date": "2025-09-02T21:38:40Z"
|
||||
},
|
||||
{
|
||||
"name": "Cleanuparr/Cleanuparr",
|
||||
"version": "v2.2.0",
|
||||
"date": "2025-09-02T20:30:49Z"
|
||||
"name": "cockpit-project/cockpit",
|
||||
"version": "346",
|
||||
"date": "2025-09-03T09:13:05Z"
|
||||
},
|
||||
{
|
||||
"name": "jenkinsci/jenkins",
|
||||
"version": "jenkins-2.526",
|
||||
"date": "2025-09-02T18:44:42Z"
|
||||
},
|
||||
{
|
||||
"name": "apache/cassandra",
|
||||
"version": "cassandra-4.1.10",
|
||||
"date": "2025-09-03T08:46:02Z"
|
||||
},
|
||||
{
|
||||
"name": "syncthing/syncthing",
|
||||
"version": "v2.0.6",
|
||||
"date": "2025-09-03T07:55:14Z"
|
||||
},
|
||||
{
|
||||
"name": "morpheus65535/bazarr",
|
||||
"version": "v1.5.3-beta.10",
|
||||
"date": "2025-07-15T06:07:03Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.22.2411",
|
||||
"date": "2025-09-03T05:51:25Z"
|
||||
},
|
||||
{
|
||||
"name": "booklore-app/booklore",
|
||||
"version": "v1.1.2",
|
||||
"date": "2025-09-03T03:18:53Z"
|
||||
},
|
||||
{
|
||||
"name": "jeedom/core",
|
||||
"version": "4.4.19",
|
||||
"date": "2025-09-03T00:27:10Z"
|
||||
},
|
||||
{
|
||||
"name": "steveiliop56/tinyauth",
|
||||
"version": "v3.6.2",
|
||||
"date": "2025-07-17T12:08:03Z"
|
||||
},
|
||||
{
|
||||
"name": "crafty-controller/crafty-4",
|
||||
"version": "v4.5.3",
|
||||
"date": "2025-09-02T23:52:26Z"
|
||||
},
|
||||
{
|
||||
"name": "mongodb/mongo",
|
||||
"version": "r8.0.14-rc0",
|
||||
"date": "2025-09-02T22:46:40Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.0.15",
|
||||
"date": "2025-08-27T12:12:03Z"
|
||||
},
|
||||
{
|
||||
"name": "ollama/ollama",
|
||||
@@ -21,18 +136,8 @@
|
||||
},
|
||||
{
|
||||
"name": "runtipi/runtipi",
|
||||
"version": "v4.4.0",
|
||||
"date": "2025-09-02T17:52:03Z"
|
||||
},
|
||||
{
|
||||
"name": "syncthing/syncthing",
|
||||
"version": "v2.0.5",
|
||||
"date": "2025-09-02T19:18:08Z"
|
||||
},
|
||||
{
|
||||
"name": "jenkinsci/jenkins",
|
||||
"version": "jenkins-2.526",
|
||||
"date": "2025-09-02T18:44:42Z"
|
||||
"version": "nightly",
|
||||
"date": "2025-09-02T19:26:18Z"
|
||||
},
|
||||
{
|
||||
"name": "Luligu/matterbridge",
|
||||
@@ -64,11 +169,6 @@
|
||||
"version": "10.1.45",
|
||||
"date": "2025-09-02T12:46:34Z"
|
||||
},
|
||||
{
|
||||
"name": "emqx/emqx",
|
||||
"version": "v5.8.8-rc.1",
|
||||
"date": "2025-09-02T12:00:55Z"
|
||||
},
|
||||
{
|
||||
"name": "fuma-nama/fumadocs",
|
||||
"version": "fumadocs-ui@15.7.8",
|
||||
@@ -79,31 +179,6 @@
|
||||
"version": "22.0.1",
|
||||
"date": "2025-09-02T10:29:08Z"
|
||||
},
|
||||
{
|
||||
"name": "home-assistant/core",
|
||||
"version": "2025.8.3",
|
||||
"date": "2025-08-21T18:23:10Z"
|
||||
},
|
||||
{
|
||||
"name": "n8n-io/n8n",
|
||||
"version": "n8n@1.108.2",
|
||||
"date": "2025-08-27T13:05:35Z"
|
||||
},
|
||||
{
|
||||
"name": "Checkmk/checkmk",
|
||||
"version": "v2.4.0p11-rc3",
|
||||
"date": "2025-09-02T06:53:18Z"
|
||||
},
|
||||
{
|
||||
"name": "Jackett/Jackett",
|
||||
"version": "v0.22.2404",
|
||||
"date": "2025-09-02T06:08:35Z"
|
||||
},
|
||||
{
|
||||
"name": "morpheus65535/bazarr",
|
||||
"version": "v1.5.3-beta.10",
|
||||
"date": "2025-07-15T06:07:03Z"
|
||||
},
|
||||
{
|
||||
"name": "cloudreve/cloudreve",
|
||||
"version": "4.7.0",
|
||||
@@ -129,26 +204,11 @@
|
||||
"version": "v4.39.8",
|
||||
"date": "2025-09-02T00:44:45Z"
|
||||
},
|
||||
{
|
||||
"name": "jeedom/core",
|
||||
"version": "4.4.19",
|
||||
"date": "2025-09-02T00:27:05Z"
|
||||
},
|
||||
{
|
||||
"name": "steveiliop56/tinyauth",
|
||||
"version": "v3.6.2",
|
||||
"date": "2025-07-17T12:08:03Z"
|
||||
},
|
||||
{
|
||||
"name": "MediaBrowser/Emby.Releases",
|
||||
"version": "4.9.1.2",
|
||||
"date": "2025-06-26T22:08:00Z"
|
||||
},
|
||||
{
|
||||
"name": "booklore-app/booklore",
|
||||
"version": "v1.1.1",
|
||||
"date": "2025-09-01T22:05:26Z"
|
||||
},
|
||||
{
|
||||
"name": "postgres/postgres",
|
||||
"version": "REL_18_RC1",
|
||||
@@ -164,11 +224,6 @@
|
||||
"version": "2.6.1",
|
||||
"date": "2025-09-01T19:05:18Z"
|
||||
},
|
||||
{
|
||||
"name": "keycloak/keycloak",
|
||||
"version": "26.0.15",
|
||||
"date": "2025-08-27T12:12:03Z"
|
||||
},
|
||||
{
|
||||
"name": "outline/outline",
|
||||
"version": "v0.87.3",
|
||||
@@ -200,14 +255,9 @@
|
||||
"date": "2025-09-01T09:47:06Z"
|
||||
},
|
||||
{
|
||||
"name": "zitadel/zitadel",
|
||||
"version": "v4.1.0",
|
||||
"date": "2025-09-01T12:03:04Z"
|
||||
},
|
||||
{
|
||||
"name": "VictoriaMetrics/VictoriaMetrics",
|
||||
"version": "pmm-6401-v1.125.0",
|
||||
"date": "2025-09-01T11:01:54Z"
|
||||
"name": "wazuh/wazuh",
|
||||
"version": "coverity-w36-4.13.0",
|
||||
"date": "2025-09-01T11:40:11Z"
|
||||
},
|
||||
{
|
||||
"name": "grokability/snipe-it",
|
||||
@@ -229,21 +279,11 @@
|
||||
"version": "v1.19.2",
|
||||
"date": "2025-09-01T02:33:52Z"
|
||||
},
|
||||
{
|
||||
"name": "crafty-controller/crafty-4",
|
||||
"version": "v4.5.2",
|
||||
"date": "2025-08-31T22:21:50Z"
|
||||
},
|
||||
{
|
||||
"name": "YunoHost/yunohost",
|
||||
"version": "debian/12.1.17.1",
|
||||
"date": "2025-08-31T21:38:21Z"
|
||||
},
|
||||
{
|
||||
"name": "rcourtman/Pulse",
|
||||
"version": "v4.12.1",
|
||||
"date": "2025-08-31T21:33:41Z"
|
||||
},
|
||||
{
|
||||
"name": "wizarrrr/wizarr",
|
||||
"version": "2025.8.5",
|
||||
@@ -304,11 +344,6 @@
|
||||
"version": "v1.24.26",
|
||||
"date": "2025-08-29T20:26:08Z"
|
||||
},
|
||||
{
|
||||
"name": "homarr-labs/homarr",
|
||||
"version": "v1.35.0",
|
||||
"date": "2025-08-29T19:14:25Z"
|
||||
},
|
||||
{
|
||||
"name": "silverbulletmd/silverbullet",
|
||||
"version": "2.0.0",
|
||||
@@ -319,11 +354,6 @@
|
||||
"version": "v2.1.0",
|
||||
"date": "2025-08-29T12:56:13Z"
|
||||
},
|
||||
{
|
||||
"name": "Graylog2/graylog2-server",
|
||||
"version": "7.0.0-alpha.2",
|
||||
"date": "2025-08-29T10:57:06Z"
|
||||
},
|
||||
{
|
||||
"name": "semaphoreui/semaphore",
|
||||
"version": "v2.16.19",
|
||||
@@ -394,11 +424,6 @@
|
||||
"version": "4.4.45",
|
||||
"date": "2025-08-28T10:12:16Z"
|
||||
},
|
||||
{
|
||||
"name": "apache/cassandra",
|
||||
"version": "4.1.10-tentative",
|
||||
"date": "2025-08-28T10:02:40Z"
|
||||
},
|
||||
{
|
||||
"name": "garethgeorge/backrest",
|
||||
"version": "v1.9.2",
|
||||
@@ -484,11 +509,6 @@
|
||||
"version": "v3.1.2",
|
||||
"date": "2025-08-25T18:00:52Z"
|
||||
},
|
||||
{
|
||||
"name": "wazuh/wazuh",
|
||||
"version": "coverity-w35-4.13.0",
|
||||
"date": "2025-08-25T15:17:33Z"
|
||||
},
|
||||
{
|
||||
"name": "sabnzbd/sabnzbd",
|
||||
"version": "4.5.3",
|
||||
@@ -519,11 +539,6 @@
|
||||
"version": "2.1",
|
||||
"date": "2025-08-24T15:42:19Z"
|
||||
},
|
||||
{
|
||||
"name": "Radarr/Radarr",
|
||||
"version": "v5.26.2.10099",
|
||||
"date": "2025-06-11T20:10:39Z"
|
||||
},
|
||||
{
|
||||
"name": "Prowlarr/Prowlarr",
|
||||
"version": "v2.0.5.5160",
|
||||
@@ -609,21 +624,11 @@
|
||||
"version": "v1.4.6",
|
||||
"date": "2025-08-21T14:05:58Z"
|
||||
},
|
||||
{
|
||||
"name": "glpi-project/glpi",
|
||||
"version": "10.0.19",
|
||||
"date": "2025-07-16T09:45:14Z"
|
||||
},
|
||||
{
|
||||
"name": "AdguardTeam/AdGuardHome",
|
||||
"version": "v0.107.65",
|
||||
"date": "2025-08-20T14:02:28Z"
|
||||
},
|
||||
{
|
||||
"name": "cockpit-project/cockpit",
|
||||
"version": "345",
|
||||
"date": "2025-08-20T11:52:24Z"
|
||||
},
|
||||
{
|
||||
"name": "openhab/openhab-core",
|
||||
"version": "4.3.7",
|
||||
@@ -809,11 +814,6 @@
|
||||
"version": "v25.08.1",
|
||||
"date": "2025-08-06T21:04:07Z"
|
||||
},
|
||||
{
|
||||
"name": "NodeBB/NodeBB",
|
||||
"version": "v4.4.6",
|
||||
"date": "2025-08-06T17:48:36Z"
|
||||
},
|
||||
{
|
||||
"name": "TryGhost/Ghost-CLI",
|
||||
"version": "v1.28.3",
|
||||
|
||||
@@ -36,19 +36,24 @@ export function formattedBadge(type: string) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// random Script
|
||||
function getRandomScript(categories: Category[]): Script | null {
|
||||
function getRandomScript(categories: Category[], previouslySelected: Set<string> = new Set()): Script | null {
|
||||
const allScripts = categories.flatMap(cat => cat.scripts || []);
|
||||
if (allScripts.length === 0)
|
||||
return null;
|
||||
const idx = Math.floor(Math.random() * allScripts.length);
|
||||
return allScripts[idx];
|
||||
|
||||
const availableScripts = allScripts.filter(script => !previouslySelected.has(script.slug));
|
||||
if (availableScripts.length === 0) {
|
||||
return allScripts[Math.floor(Math.random() * allScripts.length)];
|
||||
}
|
||||
const idx = Math.floor(Math.random() * availableScripts.length);
|
||||
return availableScripts[idx];
|
||||
}
|
||||
|
||||
export default function CommandMenu() {
|
||||
function CommandMenu() {
|
||||
const [open, setOpen] = React.useState(false);
|
||||
const [links, setLinks] = React.useState<Category[]>([]);
|
||||
const [isLoading, setIsLoading] = React.useState(false);
|
||||
const [selectedScripts, setSelectedScripts] = React.useState<Set<string>>(new Set());
|
||||
const router = useRouter();
|
||||
|
||||
const fetchSortedCategories = () => {
|
||||
@@ -65,25 +70,26 @@ export default function CommandMenu() {
|
||||
};
|
||||
|
||||
React.useEffect(() => {
|
||||
const down = (e: KeyboardEvent) => {
|
||||
const handleKeyDown = (e: KeyboardEvent) => {
|
||||
if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
|
||||
e.preventDefault();
|
||||
fetchSortedCategories();
|
||||
setOpen(open => !open);
|
||||
}
|
||||
};
|
||||
document.addEventListener("keydown", down);
|
||||
return () => document.removeEventListener("keydown", down);
|
||||
document.addEventListener("keydown", handleKeyDown);
|
||||
return () => document.removeEventListener("keydown", handleKeyDown);
|
||||
}, []);
|
||||
|
||||
const openRandomScript = async () => {
|
||||
const handleOpenRandomScript = async () => {
|
||||
if (links.length === 0) {
|
||||
setIsLoading(true);
|
||||
try {
|
||||
const categories = await fetchCategories();
|
||||
setLinks(categories);
|
||||
const randomScript = getRandomScript(categories);
|
||||
const randomScript = getRandomScript(categories, selectedScripts);
|
||||
if (randomScript) {
|
||||
setSelectedScripts(prev => new Set([...prev, randomScript.slug]));
|
||||
router.push(`/scripts?id=${randomScript.slug}`);
|
||||
}
|
||||
}
|
||||
@@ -92,13 +98,54 @@ export default function CommandMenu() {
|
||||
}
|
||||
}
|
||||
else {
|
||||
const randomScript = getRandomScript(links);
|
||||
const randomScript = getRandomScript(links, selectedScripts);
|
||||
if (randomScript) {
|
||||
setSelectedScripts(prev => new Set([...prev, randomScript.slug]));
|
||||
router.push(`/scripts?id=${randomScript.slug}`);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const getUniqueScriptsMap = React.useCallback(() => {
|
||||
const scriptMap = new Map<string, { script: Script; categoryName: string }>();
|
||||
for (const category of links) {
|
||||
for (const script of category.scripts) {
|
||||
if (!scriptMap.has(script.slug)) {
|
||||
scriptMap.set(script.slug, { script, categoryName: category.name });
|
||||
}
|
||||
}
|
||||
}
|
||||
return scriptMap;
|
||||
}, [links]);
|
||||
|
||||
const getUniqueScriptsByCategory = React.useCallback(() => {
|
||||
const scriptMap = getUniqueScriptsMap();
|
||||
const categoryOrder = links.map(cat => cat.name);
|
||||
const grouped: Record<string, Script[]> = {};
|
||||
|
||||
for (const name of categoryOrder) {
|
||||
grouped[name] = [];
|
||||
}
|
||||
|
||||
for (const { script, categoryName } of scriptMap.values()) {
|
||||
if (grouped[categoryName]) {
|
||||
grouped[categoryName].push(script);
|
||||
}
|
||||
else {
|
||||
grouped[categoryName] = [script];
|
||||
}
|
||||
}
|
||||
|
||||
Object.keys(grouped).forEach((cat) => {
|
||||
if (grouped[cat].length === 0)
|
||||
delete grouped[cat];
|
||||
});
|
||||
|
||||
return grouped;
|
||||
}, [getUniqueScriptsMap, links]);
|
||||
|
||||
const uniqueScriptsByCategory = getUniqueScriptsByCategory();
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="flex gap-2">
|
||||
@@ -122,7 +169,20 @@ export default function CommandMenu() {
|
||||
<TooltipProvider>
|
||||
<Tooltip delayDuration={100}>
|
||||
<TooltipTrigger asChild>
|
||||
<Button variant="outline" size="icon" onClick={openRandomScript} disabled={isLoading} className="hidden lg:flex">
|
||||
<Button
|
||||
variant="outline"
|
||||
size="icon"
|
||||
onClick={handleOpenRandomScript}
|
||||
disabled={isLoading}
|
||||
className="hidden lg:flex"
|
||||
aria-label="Open Random Script"
|
||||
tabIndex={0}
|
||||
onKeyDown={(e) => {
|
||||
if (e.key === "Enter" || e.key === " ") {
|
||||
handleOpenRandomScript();
|
||||
}
|
||||
}}
|
||||
>
|
||||
<Sparkles className="size-4" />
|
||||
<span className="sr-only">Open Random Script</span>
|
||||
</Button>
|
||||
@@ -139,16 +199,24 @@ export default function CommandMenu() {
|
||||
<CommandInput placeholder="Search for a script..." />
|
||||
<CommandList>
|
||||
<CommandEmpty>{isLoading ? "Loading..." : "No scripts found."}</CommandEmpty>
|
||||
{links.map(category => (
|
||||
<CommandGroup key={`category:${category.name}`} heading={category.name}>
|
||||
{category.scripts.map(script => (
|
||||
{Object.entries(uniqueScriptsByCategory).map(([categoryName, scripts]) => (
|
||||
<CommandGroup key={`category:${categoryName}`} heading={categoryName}>
|
||||
{scripts.map(script => (
|
||||
<CommandItem
|
||||
key={`script:${script.slug}`}
|
||||
value={`${script.slug}-${script.name}`}
|
||||
value={`${script.name}-${script.type}`}
|
||||
onSelect={() => {
|
||||
setOpen(false);
|
||||
router.push(`/scripts?id=${script.slug}`);
|
||||
}}
|
||||
tabIndex={0}
|
||||
aria-label={`Open script ${script.name}`}
|
||||
onKeyDown={(e) => {
|
||||
if (e.key === "Enter" || e.key === " ") {
|
||||
setOpen(false);
|
||||
router.push(`/scripts?id=${script.slug}`);
|
||||
}
|
||||
}}
|
||||
>
|
||||
<div className="flex gap-2" onClick={() => setOpen(false)}>
|
||||
<Image
|
||||
@@ -172,3 +240,5 @@ export default function CommandMenu() {
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default CommandMenu;
|
||||
|
||||
@@ -56,6 +56,7 @@ RELEASE=$(curl -fsSL https://api.github.com/repos/netbox-community/netbox/releas
|
||||
curl -fsSL "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
|
||||
$STD unzip "v${RELEASE}.zip"
|
||||
mv /opt/netbox-"${RELEASE}"/ /opt/netbox
|
||||
mkdir -p /opt/netbox/netbox/media
|
||||
|
||||
$STD adduser --system --group netbox
|
||||
chown --recursive netbox /opt/netbox/netbox/media/
|
||||
|
||||
@@ -23,12 +23,13 @@ fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr"
|
||||
|
||||
msg_info "Configure ${APPLICATION}"
|
||||
cd /opt/wizarr
|
||||
/usr/local/bin/uv -q sync --locked
|
||||
$STD /usr/local/bin/uv -q run pybabel compile -d app/translations
|
||||
$STD /usr/local/bin/uv lock
|
||||
$STD /usr/local/bin/uv sync --locked
|
||||
$STD /usr/local/bin/uv run pybabel compile -d app/translations
|
||||
$STD npm --prefix app/static install
|
||||
$STD npm --prefix app/static run build:css
|
||||
mkdir -p ./.cache
|
||||
$STD /usr/local/bin/uv -q run flask db upgrade
|
||||
$STD /usr/local/bin/uv run flask db upgrade
|
||||
msg_ok "Configure ${APPLICATION}"
|
||||
|
||||
msg_info "Creating env, start script and service"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user