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]
|
> [!CAUTION]
|
||||||
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
|
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
|
## 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
|
## 2025-09-02
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ APP="Element Synapse"
|
|||||||
var_tags="${var_tags:-server}"
|
var_tags="${var_tags:-server}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-8}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|||||||
@@ -45,13 +45,14 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating $APP"
|
msg_info "Updating $APP"
|
||||||
cd /opt/wizarr
|
cd /opt/wizarr
|
||||||
/usr/local/bin/uv -q sync --locked
|
$STD /usr/local/bin/uv lock
|
||||||
$STD /usr/local/bin/uv -q run pybabel compile -d app/translations
|
$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 install
|
||||||
$STD npm --prefix app/static run build:css
|
$STD npm --prefix app/static run build:css
|
||||||
mkdir -p ./.cache
|
mkdir -p ./.cache
|
||||||
$STD tar -xf "$BACKUP_FILE" --directory=/
|
$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_ok "Updated $APP"
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
@@ -61,7 +62,7 @@ function update_script() {
|
|||||||
msg_info "Cleaning Up"
|
msg_info "Cleaning Up"
|
||||||
rm -rf "$BACKUP_FILE"
|
rm -rf "$BACKUP_FILE"
|
||||||
msg_ok "Cleanup Completed"
|
msg_ok "Cleanup Completed"
|
||||||
msg_ok "Update Successfully"
|
msg_ok "Updated Successfully"
|
||||||
fi
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 1,
|
"cpu": 1,
|
||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 4,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,68 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "mongodb/mongo",
|
"name": "Cleanuparr/Cleanuparr",
|
||||||
"version": "r8.0.14-rc0",
|
"version": "v2.2.2",
|
||||||
"date": "2025-09-02T22:46:40Z"
|
"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",
|
"name": "mattermost/mattermost",
|
||||||
@@ -10,9 +70,64 @@
|
|||||||
"date": "2025-09-02T21:38:40Z"
|
"date": "2025-09-02T21:38:40Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Cleanuparr/Cleanuparr",
|
"name": "cockpit-project/cockpit",
|
||||||
"version": "v2.2.0",
|
"version": "346",
|
||||||
"date": "2025-09-02T20:30:49Z"
|
"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",
|
"name": "ollama/ollama",
|
||||||
@@ -21,18 +136,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "runtipi/runtipi",
|
"name": "runtipi/runtipi",
|
||||||
"version": "v4.4.0",
|
"version": "nightly",
|
||||||
"date": "2025-09-02T17:52:03Z"
|
"date": "2025-09-02T19:26:18Z"
|
||||||
},
|
|
||||||
{
|
|
||||||
"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"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Luligu/matterbridge",
|
"name": "Luligu/matterbridge",
|
||||||
@@ -64,11 +169,6 @@
|
|||||||
"version": "10.1.45",
|
"version": "10.1.45",
|
||||||
"date": "2025-09-02T12:46:34Z"
|
"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",
|
"name": "fuma-nama/fumadocs",
|
||||||
"version": "fumadocs-ui@15.7.8",
|
"version": "fumadocs-ui@15.7.8",
|
||||||
@@ -79,31 +179,6 @@
|
|||||||
"version": "22.0.1",
|
"version": "22.0.1",
|
||||||
"date": "2025-09-02T10:29:08Z"
|
"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",
|
"name": "cloudreve/cloudreve",
|
||||||
"version": "4.7.0",
|
"version": "4.7.0",
|
||||||
@@ -129,26 +204,11 @@
|
|||||||
"version": "v4.39.8",
|
"version": "v4.39.8",
|
||||||
"date": "2025-09-02T00:44:45Z"
|
"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",
|
"name": "MediaBrowser/Emby.Releases",
|
||||||
"version": "4.9.1.2",
|
"version": "4.9.1.2",
|
||||||
"date": "2025-06-26T22:08:00Z"
|
"date": "2025-06-26T22:08:00Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "booklore-app/booklore",
|
|
||||||
"version": "v1.1.1",
|
|
||||||
"date": "2025-09-01T22:05:26Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "postgres/postgres",
|
"name": "postgres/postgres",
|
||||||
"version": "REL_18_RC1",
|
"version": "REL_18_RC1",
|
||||||
@@ -164,11 +224,6 @@
|
|||||||
"version": "2.6.1",
|
"version": "2.6.1",
|
||||||
"date": "2025-09-01T19:05:18Z"
|
"date": "2025-09-01T19:05:18Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "keycloak/keycloak",
|
|
||||||
"version": "26.0.15",
|
|
||||||
"date": "2025-08-27T12:12:03Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "outline/outline",
|
"name": "outline/outline",
|
||||||
"version": "v0.87.3",
|
"version": "v0.87.3",
|
||||||
@@ -200,14 +255,9 @@
|
|||||||
"date": "2025-09-01T09:47:06Z"
|
"date": "2025-09-01T09:47:06Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "zitadel/zitadel",
|
"name": "wazuh/wazuh",
|
||||||
"version": "v4.1.0",
|
"version": "coverity-w36-4.13.0",
|
||||||
"date": "2025-09-01T12:03:04Z"
|
"date": "2025-09-01T11:40:11Z"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "VictoriaMetrics/VictoriaMetrics",
|
|
||||||
"version": "pmm-6401-v1.125.0",
|
|
||||||
"date": "2025-09-01T11:01:54Z"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "grokability/snipe-it",
|
"name": "grokability/snipe-it",
|
||||||
@@ -229,21 +279,11 @@
|
|||||||
"version": "v1.19.2",
|
"version": "v1.19.2",
|
||||||
"date": "2025-09-01T02:33:52Z"
|
"date": "2025-09-01T02:33:52Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "crafty-controller/crafty-4",
|
|
||||||
"version": "v4.5.2",
|
|
||||||
"date": "2025-08-31T22:21:50Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "YunoHost/yunohost",
|
"name": "YunoHost/yunohost",
|
||||||
"version": "debian/12.1.17.1",
|
"version": "debian/12.1.17.1",
|
||||||
"date": "2025-08-31T21:38:21Z"
|
"date": "2025-08-31T21:38:21Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "rcourtman/Pulse",
|
|
||||||
"version": "v4.12.1",
|
|
||||||
"date": "2025-08-31T21:33:41Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "wizarrrr/wizarr",
|
"name": "wizarrrr/wizarr",
|
||||||
"version": "2025.8.5",
|
"version": "2025.8.5",
|
||||||
@@ -304,11 +344,6 @@
|
|||||||
"version": "v1.24.26",
|
"version": "v1.24.26",
|
||||||
"date": "2025-08-29T20:26:08Z"
|
"date": "2025-08-29T20:26:08Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "homarr-labs/homarr",
|
|
||||||
"version": "v1.35.0",
|
|
||||||
"date": "2025-08-29T19:14:25Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "silverbulletmd/silverbullet",
|
"name": "silverbulletmd/silverbullet",
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
@@ -319,11 +354,6 @@
|
|||||||
"version": "v2.1.0",
|
"version": "v2.1.0",
|
||||||
"date": "2025-08-29T12:56:13Z"
|
"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",
|
"name": "semaphoreui/semaphore",
|
||||||
"version": "v2.16.19",
|
"version": "v2.16.19",
|
||||||
@@ -394,11 +424,6 @@
|
|||||||
"version": "4.4.45",
|
"version": "4.4.45",
|
||||||
"date": "2025-08-28T10:12:16Z"
|
"date": "2025-08-28T10:12:16Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "apache/cassandra",
|
|
||||||
"version": "4.1.10-tentative",
|
|
||||||
"date": "2025-08-28T10:02:40Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "garethgeorge/backrest",
|
"name": "garethgeorge/backrest",
|
||||||
"version": "v1.9.2",
|
"version": "v1.9.2",
|
||||||
@@ -484,11 +509,6 @@
|
|||||||
"version": "v3.1.2",
|
"version": "v3.1.2",
|
||||||
"date": "2025-08-25T18:00:52Z"
|
"date": "2025-08-25T18:00:52Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "wazuh/wazuh",
|
|
||||||
"version": "coverity-w35-4.13.0",
|
|
||||||
"date": "2025-08-25T15:17:33Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "sabnzbd/sabnzbd",
|
"name": "sabnzbd/sabnzbd",
|
||||||
"version": "4.5.3",
|
"version": "4.5.3",
|
||||||
@@ -519,11 +539,6 @@
|
|||||||
"version": "2.1",
|
"version": "2.1",
|
||||||
"date": "2025-08-24T15:42:19Z"
|
"date": "2025-08-24T15:42:19Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Radarr/Radarr",
|
|
||||||
"version": "v5.26.2.10099",
|
|
||||||
"date": "2025-06-11T20:10:39Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Prowlarr/Prowlarr",
|
"name": "Prowlarr/Prowlarr",
|
||||||
"version": "v2.0.5.5160",
|
"version": "v2.0.5.5160",
|
||||||
@@ -609,21 +624,11 @@
|
|||||||
"version": "v1.4.6",
|
"version": "v1.4.6",
|
||||||
"date": "2025-08-21T14:05:58Z"
|
"date": "2025-08-21T14:05:58Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "glpi-project/glpi",
|
|
||||||
"version": "10.0.19",
|
|
||||||
"date": "2025-07-16T09:45:14Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "AdguardTeam/AdGuardHome",
|
"name": "AdguardTeam/AdGuardHome",
|
||||||
"version": "v0.107.65",
|
"version": "v0.107.65",
|
||||||
"date": "2025-08-20T14:02:28Z"
|
"date": "2025-08-20T14:02:28Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "cockpit-project/cockpit",
|
|
||||||
"version": "345",
|
|
||||||
"date": "2025-08-20T11:52:24Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "openhab/openhab-core",
|
"name": "openhab/openhab-core",
|
||||||
"version": "4.3.7",
|
"version": "4.3.7",
|
||||||
@@ -809,11 +814,6 @@
|
|||||||
"version": "v25.08.1",
|
"version": "v25.08.1",
|
||||||
"date": "2025-08-06T21:04:07Z"
|
"date": "2025-08-06T21:04:07Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "NodeBB/NodeBB",
|
|
||||||
"version": "v4.4.6",
|
|
||||||
"date": "2025-08-06T17:48:36Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "TryGhost/Ghost-CLI",
|
"name": "TryGhost/Ghost-CLI",
|
||||||
"version": "v1.28.3",
|
"version": "v1.28.3",
|
||||||
|
|||||||
@@ -36,19 +36,24 @@ export function formattedBadge(type: string) {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// random Script
|
function getRandomScript(categories: Category[], previouslySelected: Set<string> = new Set()): Script | null {
|
||||||
function getRandomScript(categories: Category[]): Script | null {
|
|
||||||
const allScripts = categories.flatMap(cat => cat.scripts || []);
|
const allScripts = categories.flatMap(cat => cat.scripts || []);
|
||||||
if (allScripts.length === 0)
|
if (allScripts.length === 0)
|
||||||
return null;
|
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 [open, setOpen] = React.useState(false);
|
||||||
const [links, setLinks] = React.useState<Category[]>([]);
|
const [links, setLinks] = React.useState<Category[]>([]);
|
||||||
const [isLoading, setIsLoading] = React.useState(false);
|
const [isLoading, setIsLoading] = React.useState(false);
|
||||||
|
const [selectedScripts, setSelectedScripts] = React.useState<Set<string>>(new Set());
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
const fetchSortedCategories = () => {
|
const fetchSortedCategories = () => {
|
||||||
@@ -65,25 +70,26 @@ export default function CommandMenu() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
const down = (e: KeyboardEvent) => {
|
const handleKeyDown = (e: KeyboardEvent) => {
|
||||||
if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
|
if (e.key === "k" && (e.metaKey || e.ctrlKey)) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
fetchSortedCategories();
|
fetchSortedCategories();
|
||||||
setOpen(open => !open);
|
setOpen(open => !open);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
document.addEventListener("keydown", down);
|
document.addEventListener("keydown", handleKeyDown);
|
||||||
return () => document.removeEventListener("keydown", down);
|
return () => document.removeEventListener("keydown", handleKeyDown);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const openRandomScript = async () => {
|
const handleOpenRandomScript = async () => {
|
||||||
if (links.length === 0) {
|
if (links.length === 0) {
|
||||||
setIsLoading(true);
|
setIsLoading(true);
|
||||||
try {
|
try {
|
||||||
const categories = await fetchCategories();
|
const categories = await fetchCategories();
|
||||||
setLinks(categories);
|
setLinks(categories);
|
||||||
const randomScript = getRandomScript(categories);
|
const randomScript = getRandomScript(categories, selectedScripts);
|
||||||
if (randomScript) {
|
if (randomScript) {
|
||||||
|
setSelectedScripts(prev => new Set([...prev, randomScript.slug]));
|
||||||
router.push(`/scripts?id=${randomScript.slug}`);
|
router.push(`/scripts?id=${randomScript.slug}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -92,13 +98,54 @@ export default function CommandMenu() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const randomScript = getRandomScript(links);
|
const randomScript = getRandomScript(links, selectedScripts);
|
||||||
if (randomScript) {
|
if (randomScript) {
|
||||||
|
setSelectedScripts(prev => new Set([...prev, randomScript.slug]));
|
||||||
router.push(`/scripts?id=${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 (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="flex gap-2">
|
<div className="flex gap-2">
|
||||||
@@ -122,7 +169,20 @@ export default function CommandMenu() {
|
|||||||
<TooltipProvider>
|
<TooltipProvider>
|
||||||
<Tooltip delayDuration={100}>
|
<Tooltip delayDuration={100}>
|
||||||
<TooltipTrigger asChild>
|
<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" />
|
<Sparkles className="size-4" />
|
||||||
<span className="sr-only">Open Random Script</span>
|
<span className="sr-only">Open Random Script</span>
|
||||||
</Button>
|
</Button>
|
||||||
@@ -139,16 +199,24 @@ export default function CommandMenu() {
|
|||||||
<CommandInput placeholder="Search for a script..." />
|
<CommandInput placeholder="Search for a script..." />
|
||||||
<CommandList>
|
<CommandList>
|
||||||
<CommandEmpty>{isLoading ? "Loading..." : "No scripts found."}</CommandEmpty>
|
<CommandEmpty>{isLoading ? "Loading..." : "No scripts found."}</CommandEmpty>
|
||||||
{links.map(category => (
|
{Object.entries(uniqueScriptsByCategory).map(([categoryName, scripts]) => (
|
||||||
<CommandGroup key={`category:${category.name}`} heading={category.name}>
|
<CommandGroup key={`category:${categoryName}`} heading={categoryName}>
|
||||||
{category.scripts.map(script => (
|
{scripts.map(script => (
|
||||||
<CommandItem
|
<CommandItem
|
||||||
key={`script:${script.slug}`}
|
key={`script:${script.slug}`}
|
||||||
value={`${script.slug}-${script.name}`}
|
value={`${script.name}-${script.type}`}
|
||||||
onSelect={() => {
|
onSelect={() => {
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
router.push(`/scripts?id=${script.slug}`);
|
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)}>
|
<div className="flex gap-2" onClick={() => setOpen(false)}>
|
||||||
<Image
|
<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"
|
curl -fsSL "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
|
||||||
$STD unzip "v${RELEASE}.zip"
|
$STD unzip "v${RELEASE}.zip"
|
||||||
mv /opt/netbox-"${RELEASE}"/ /opt/netbox
|
mv /opt/netbox-"${RELEASE}"/ /opt/netbox
|
||||||
|
mkdir -p /opt/netbox/netbox/media
|
||||||
|
|
||||||
$STD adduser --system --group netbox
|
$STD adduser --system --group netbox
|
||||||
chown --recursive netbox /opt/netbox/netbox/media/
|
chown --recursive netbox /opt/netbox/netbox/media/
|
||||||
|
|||||||
@@ -23,12 +23,13 @@ fetch_and_deploy_gh_release "wizarr" "wizarrrr/wizarr"
|
|||||||
|
|
||||||
msg_info "Configure ${APPLICATION}"
|
msg_info "Configure ${APPLICATION}"
|
||||||
cd /opt/wizarr
|
cd /opt/wizarr
|
||||||
/usr/local/bin/uv -q sync --locked
|
$STD /usr/local/bin/uv lock
|
||||||
$STD /usr/local/bin/uv -q run pybabel compile -d app/translations
|
$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 install
|
||||||
$STD npm --prefix app/static run build:css
|
$STD npm --prefix app/static run build:css
|
||||||
mkdir -p ./.cache
|
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_ok "Configure ${APPLICATION}"
|
||||||
|
|
||||||
msg_info "Creating env, start script and service"
|
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