Compare commits

...

9 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
bbe71cbbb9 Update CHANGELOG.md (#7428)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-06 00:12:58 +00:00
community-scripts-pr-app[bot]
9b6a736c8c Update versions.json (#7427)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-06 02:12:30 +02:00
community-scripts-pr-app[bot]
c395ccc270 Update CHANGELOG.md (#7421)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-05 17:28:01 +00:00
Chris
3dd72e08e9 Pin version to 0.80 (#7420)
- a lot of changes in next version
2025-09-05 19:27:40 +02:00
community-scripts-pr-app[bot]
1d989bea73 Update versions.json (#7417)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-05 14:05:32 +02:00
community-scripts-pr-app[bot]
f881b88344 Update CHANGELOG.md (#7411)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-05 06:07:57 +00:00
Slaviša Arežina
06dbad83ef AdventureLog: Update dependencies (#7404)
* Update adventurelog-install.sh

* Check and install memcached if not present

---------

Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-09-05 08:07:34 +02:00
community-scripts-pr-app[bot]
7ff966b042 Update CHANGELOG.md (#7410)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-05 05:24:44 +00:00
Bram Suurd
62264f37a6 refactor: Enhance ScriptAccordion and Sidebar components to support selectedCategory state (#7405)
* refactor: Enhance ScriptAccordion and Sidebar components to support selectedCategory state

* lint

* chore: Add ESLint configuration to ignore errors during builds in next.config.mjs
2025-09-05 07:24:19 +02:00
11 changed files with 194 additions and 153 deletions

View File

@@ -10,8 +10,22 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-09-06
## 2025-09-05
### 🚀 Updated Scripts
- Tududi: Pin version to 0.80 [@vhsdream](https://github.com/vhsdream) ([#7420](https://github.com/community-scripts/ProxmoxVE/pull/7420))
- #### 🐞 Bug Fixes
- AdventureLog: Update dependencies [@tremor021](https://github.com/tremor021) ([#7404](https://github.com/community-scripts/ProxmoxVE/pull/7404))
### 🌐 Website
- refactor: Enhance ScriptAccordion and Sidebar components to support selectedCategory state [@BramSuurdje](https://github.com/BramSuurdje) ([#7405](https://github.com/community-scripts/ProxmoxVE/pull/7405))
## 2025-09-04
### 🚀 Updated Scripts

View File

@@ -27,6 +27,10 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if ! command -v memcached >/dev/null 2>&1; then
$STD apt-get update
$STD apt-get install -y memcached libmemcached-tools
fi
if check_for_gh_release "adventurelog" "seanmorley15/adventurelog"; then
msg_info "Stopping Services"
systemctl stop adventurelog-backend

View File

@@ -37,7 +37,7 @@ function update_script() {
rm -rf /opt/tududi/backend/dist
msg_ok "Backup and removed Files"
fetch_and_deploy_gh_release "tududi" "chrisvel/tududi"
fetch_and_deploy_gh_release "tududi" "chrisvel/tududi" "tarball" "v0.80" "/opt/tududi"
msg_info "Updating ${APP}"
cd /opt/tududi

View File

@@ -18,6 +18,10 @@ const nextConfig = {
BASE_PATH: "ProxmoxVE",
},
eslint: {
ignoreDuringBuilds: true,
},
output: "export",
basePath: `/ProxmoxVE`,
};

View File

@@ -1,4 +1,114 @@
[
{
"name": "moghtech/komodo",
"version": "v1.19.3",
"date": "2025-09-05T21:32:38Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.36.1",
"date": "2025-09-05T21:14:40Z"
},
{
"name": "booklore-app/booklore",
"version": "v1.2.0",
"date": "2025-09-05T20:43:03Z"
},
{
"name": "immich-app/immich",
"version": "v1.141.1",
"date": "2025-09-05T19:44:39Z"
},
{
"name": "gtsteffaniak/filebrowser",
"version": "v0.8.4-beta",
"date": "2025-09-05T19:34:44Z"
},
{
"name": "Stirling-Tools/Stirling-PDF",
"version": "v1.3.2",
"date": "2025-09-05T18:44:15Z"
},
{
"name": "diced/zipline",
"version": "v4.3.0",
"date": "2025-09-05T18:43:28Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.14.0",
"date": "2025-09-05T18:28:28Z"
},
{
"name": "henrygd/beszel",
"version": "v0.12.7",
"date": "2025-09-05T18:11:36Z"
},
{
"name": "Brandawg93/PeaNUT",
"version": "v5.14.2",
"date": "2025-09-05T17:24:12Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "create-fumadocs-app@15.7.9",
"date": "2025-09-05T14:33:41Z"
},
{
"name": "wizarrrr/wizarr",
"version": "2025.9.0",
"date": "2025-09-05T14:21:34Z"
},
{
"name": "cross-seed/cross-seed",
"version": "v6.13.2",
"date": "2025-08-19T18:18:40Z"
},
{
"name": "chrisvel/tududi",
"version": "v0.80",
"date": "2025-07-24T14:12:39Z"
},
{
"name": "home-assistant/core",
"version": "2025.9.1",
"date": "2025-09-05T11:15:21Z"
},
{
"name": "syncthing/syncthing",
"version": "v2.0.7",
"date": "2025-09-05T10:18:24Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.1.2",
"date": "2025-09-05T08:23:30Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2429",
"date": "2025-09-05T06:05:30Z"
},
{
"name": "CrazyWolf13/streamlink-webui",
"version": "0.6",
"date": "2025-09-05T06:05:04Z"
},
{
"name": "louislam/uptime-kuma",
"version": "2.0.0-beta.2-temp",
"date": "2025-03-28T08:45:58Z"
},
{
"name": "jeedom/core",
"version": "4.4.19",
"date": "2025-09-05T00:27:15Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w36-4.13.0",
@@ -19,11 +129,6 @@
"version": "v1.0.0-beta17",
"date": "2025-09-04T21:30:14Z"
},
{
"name": "rcourtman/Pulse",
"version": "v4.13.0",
"date": "2025-09-03T13:48:17Z"
},
{
"name": "TandoorRecipes/recipes",
"version": "2.1.0",
@@ -34,11 +139,6 @@
"version": "r7.0.24",
"date": "2025-09-04T19:50:49Z"
},
{
"name": "immich-app/immich",
"version": "v1.141.0",
"date": "2025-09-04T19:42:02Z"
},
{
"name": "Cleanuparr/Cleanuparr",
"version": "v2.2.3",
@@ -49,6 +149,11 @@
"version": "v5.40.1",
"date": "2025-09-04T19:10:45Z"
},
{
"name": "runtipi/runtipi",
"version": "nightly",
"date": "2025-09-04T18:29:10Z"
},
{
"name": "AdguardTeam/AdGuardHome",
"version": "v0.107.65",
@@ -74,6 +179,11 @@
"version": "v4.5.1",
"date": "2025-09-04T16:02:49Z"
},
{
"name": "keycloak/keycloak",
"version": "26.0.15",
"date": "2025-08-27T12:12:03Z"
},
{
"name": "semaphoreui/semaphore",
"version": "v2.16.19",
@@ -114,56 +224,21 @@
"version": "v1.5.3-beta.10",
"date": "2025-07-15T06:07:03Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.22.2418",
"date": "2025-09-04T05:53:46Z"
},
{
"name": "actualbudget/actual",
"version": "v25.9.0",
"date": "2025-09-04T01:12:37Z"
},
{
"name": "jeedom/core",
"version": "4.4.19",
"date": "2025-09-04T00:27:08Z"
},
{
"name": "hyperion-project/hyperion.ng",
"version": "2.1.1",
"date": "2025-06-14T17:45:06Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "VictoriaMetrics/VictoriaMetrics",
"version": "pmm-6401-v1.125.1",
"date": "2025-09-03T20:17:18Z"
},
{
"name": "keycloak/keycloak",
"version": "26.0.15",
"date": "2025-08-27T12:12:03Z"
},
{
"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": "zitadel/zitadel",
"version": "v4.1.1",
"date": "2025-09-03T15:12:56Z"
},
{
"name": "Graylog2/graylog2-server",
"version": "6.1.15",
@@ -214,26 +289,11 @@
"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": "booklore-app/booklore",
"version": "v1.1.2",
"date": "2025-09-03T03:18:53Z"
},
{
"name": "crafty-controller/crafty-4",
"version": "v4.5.3",
"date": "2025-09-02T23:52:26Z"
},
{
"name": "runtipi/runtipi",
"version": "nightly",
"date": "2025-09-02T19:26:18Z"
},
{
"name": "Luligu/matterbridge",
"version": "3.2.5",
@@ -259,11 +319,6 @@
"version": "10.1.45",
"date": "2025-09-02T12:46:34Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-ui@15.7.8",
"date": "2025-09-02T11:29:00Z"
},
{
"name": "Dolibarr/dolibarr",
"version": "22.0.1",
@@ -354,21 +409,11 @@
"version": "0.20.1",
"date": "2025-09-01T07:35:48Z"
},
{
"name": "moghtech/komodo",
"version": "v1.19.2",
"date": "2025-09-01T02:33:52Z"
},
{
"name": "YunoHost/yunohost",
"version": "debian/12.1.17.1",
"date": "2025-08-31T21:38:21Z"
},
{
"name": "wizarrrr/wizarr",
"version": "2025.8.5",
"date": "2025-08-31T17:56:37Z"
},
{
"name": "karakeep-app/karakeep",
"version": "ios/v1.8.0-1",
@@ -399,21 +444,11 @@
"version": "v0.9.91",
"date": "2025-08-30T21:49:57Z"
},
{
"name": "Brandawg93/PeaNUT",
"version": "v5.14.0",
"date": "2025-08-30T18:41:03Z"
},
{
"name": "bunkerity/bunkerweb",
"version": "v1.6.4",
"date": "2025-08-18T20:22:07Z"
},
{
"name": "henrygd/beszel",
"version": "v0.12.6",
"date": "2025-08-29T21:40:09Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.24.26",
@@ -499,11 +534,6 @@
"version": "v0.37.0",
"date": "2025-08-27T20:03:52Z"
},
{
"name": "gtsteffaniak/filebrowser",
"version": "v0.8.3-beta",
"date": "2025-08-27T18:18:48Z"
},
{
"name": "zwave-js/zwave-js-ui",
"version": "v11.2.1",
@@ -679,21 +709,11 @@
"version": "v5.23.2",
"date": "2025-08-19T21:24:45Z"
},
{
"name": "cross-seed/cross-seed",
"version": "v6.13.2",
"date": "2025-08-19T18:18:40Z"
},
{
"name": "karlomikus/bar-assistant",
"version": "v5.8.0",
"date": "2025-08-19T16:46:00Z"
},
{
"name": "chrisvel/tududi",
"version": "v0.80",
"date": "2025-07-24T14:12:39Z"
},
{
"name": "oauth2-proxy/oauth2-proxy",
"version": "v7.12.0",
@@ -794,16 +814,6 @@
"version": "1012-08-09",
"date": "2025-08-10T13:50:58Z"
},
{
"name": "diced/zipline",
"version": "v4.2.3",
"date": "2025-08-10T05:53:43Z"
},
{
"name": "Stirling-Tools/Stirling-PDF",
"version": "v1.2.0",
"date": "2025-08-09T14:30:52Z"
},
{
"name": "kimai/kimai",
"version": "2.38.0",
@@ -1134,11 +1144,6 @@
"version": "v0.14.1",
"date": "2025-06-04T08:57:15Z"
},
{
"name": "louislam/uptime-kuma",
"version": "2.0.0-beta.2-temp",
"date": "2025-03-28T08:45:58Z"
},
{
"name": "Pf2eToolsOrg/Pf2eTools",
"version": "v0.9.0",
@@ -1159,11 +1164,6 @@
"version": "v0.26.2",
"date": "2025-05-22T05:24:42Z"
},
{
"name": "CrazyWolf13/streamlink-webui",
"version": "0.5",
"date": "2025-05-21T20:19:14Z"
},
{
"name": "hansmi/prometheus-paperless-exporter",
"version": "v0.0.8",

View File

@@ -73,7 +73,13 @@ function CategoryView() {
};
const handleScriptClick = (scriptSlug: string) => {
router.push(`/scripts?id=${scriptSlug}`);
// Include category context when navigating to scripts
const categoryName = selectedCategoryIndex !== null ? categories[selectedCategoryIndex]?.name : null;
const queryParams = new URLSearchParams({ id: scriptSlug });
if (categoryName) {
queryParams.append("category", categoryName);
}
router.push(`/scripts?${queryParams.toString()}`);
};
const navigateCategory = (direction: "prev" | "next") => {

View File

@@ -4,12 +4,7 @@ import Link from "next/link";
import type { Category } from "@/lib/types";
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/ui/accordion";
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion";
import { formattedBadge } from "@/components/command-menu";
import { basePath } from "@/config/site-config";
import { cn } from "@/lib/utils";
@@ -18,14 +13,16 @@ export default function ScriptAccordion({
items,
selectedScript,
setSelectedScript,
selectedCategory,
setSelectedCategory,
}: {
items: Category[];
selectedScript: string | null;
setSelectedScript: (script: string | null) => void;
selectedCategory: string | null;
setSelectedCategory: (category: string | null) => void;
}) {
const [expandedItem, setExpandedItem] = useState<string | undefined>(
undefined,
);
const [expandedItem, setExpandedItem] = useState<string | undefined>(undefined);
const linkRefs = useRef<{ [key: string]: HTMLAnchorElement | null }>({});
const handleAccordionChange = (value: string | undefined) => {
@@ -41,15 +38,27 @@ export default function ScriptAccordion({
useEffect(() => {
if (selectedScript) {
const category = items.find(category =>
category.scripts.some(script => script.slug === selectedScript),
let category;
// If we have a selected category, try to find the script in that specific category
if (selectedCategory) {
category = items.find(
cat => cat.name === selectedCategory && cat.scripts.some(script => script.slug === selectedScript),
);
}
// Fallback: if no category is selected or script not found in selected category,
// use the first category containing the script (backward compatibility)
if (!category) {
category = items.find(category => category.scripts.some(script => script.slug === selectedScript));
}
if (category) {
setExpandedItem(category.name);
handleSelected(selectedScript);
}
}
}, [selectedScript, items, handleSelected]);
}, [selectedScript, selectedCategory, items, handleSelected]);
return (
<Accordion
type="single"
@@ -82,10 +91,7 @@ export default function ScriptAccordion({
</div>
{" "}
</AccordionTrigger>
<AccordionContent
data-state={expandedItem === category.name ? "open" : "closed"}
className="pt-0"
>
<AccordionContent data-state={expandedItem === category.name ? "open" : "closed"} className="pt-0">
{category.scripts
.slice()
.sort((a, b) => a.name.localeCompare(b.name))
@@ -94,7 +100,7 @@ export default function ScriptAccordion({
<Link
href={{
pathname: "/scripts",
query: { id: script.slug },
query: { id: script.slug, category: category.name },
}}
prefetch={false}
className={`flex cursor-pointer items-center justify-between gap-1 px-1 py-1 text-muted-foreground hover:rounded-lg hover:bg-accent/60 hover:dark:bg-accent/20 ${
@@ -102,7 +108,10 @@ export default function ScriptAccordion({
? "rounded-lg bg-accent font-semibold dark:bg-accent/30 dark:text-white"
: ""
}`}
onClick={() => handleSelected(script.slug)}
onClick={() => {
handleSelected(script.slug);
setSelectedCategory(category.name);
}}
ref={(el) => {
linkRefs.current[script.slug] = el;
}}
@@ -113,15 +122,11 @@ export default function ScriptAccordion({
height={16}
width={16}
unoptimized
onError={e =>
((e.currentTarget as HTMLImageElement).src
= `/${basePath}/logo.png`)}
onError={e => ((e.currentTarget as HTMLImageElement).src = `/${basePath}/logo.png`)}
alt={script.name}
className="mr-1 w-4 h-4 rounded-full"
/>
<span className="flex items-center gap-2">
{script.name}
</span>
<span className="flex items-center gap-2">{script.name}</span>
</div>
{formattedBadge(script.type)}
</Link>

View File

@@ -8,10 +8,14 @@ function Sidebar({
items,
selectedScript,
setSelectedScript,
selectedCategory,
setSelectedCategory,
}: {
items: Category[];
selectedScript: string | null;
setSelectedScript: (script: string | null) => void;
selectedCategory: string | null;
setSelectedCategory: (category: string | null) => void;
}) {
const uniqueScripts = items.reduce((acc, category) => {
for (const script of category.scripts) {
@@ -37,6 +41,8 @@ function Sidebar({
items={items}
selectedScript={selectedScript}
setSelectedScript={setSelectedScript}
selectedCategory={selectedCategory}
setSelectedCategory={setSelectedCategory}
/>
</div>
</div>

View File

@@ -8,16 +8,14 @@ import type { Category, Script } from "@/lib/types";
import { ScriptItem } from "@/app/scripts/_components/script-item";
import { fetchCategories } from "@/lib/data";
import {
LatestScripts,
MostViewedScripts,
} from "./_components/script-info-blocks";
import { LatestScripts, MostViewedScripts } from "./_components/script-info-blocks";
import Sidebar from "./_components/sidebar";
export const dynamic = "force-static";
function ScriptContent() {
const [selectedScript, setSelectedScript] = useQueryState("id");
const [selectedCategory, setSelectedCategory] = useQueryState("category");
const [links, setLinks] = useState<Category[]>([]);
const [item, setItem] = useState<Script>();
@@ -47,6 +45,8 @@ function ScriptContent() {
items={links}
selectedScript={selectedScript}
setSelectedScript={setSelectedScript}
selectedCategory={selectedCategory}
setSelectedCategory={setSelectedCategory}
/>
</div>
<div className="mx-4 w-full sm:mx-0 sm:ml-4">

View File

@@ -17,7 +17,9 @@ msg_info "Installing Dependencies"
$STD apt-get install -y \
gdal-bin \
libgdal-dev \
git
git \
memcached \
libmemcached-tools
msg_ok "Installed Dependencies"
PYTHON_VERSION="3.12" setup_uv

View File

@@ -20,7 +20,7 @@ $STD apt-get install -y \
msg_ok "Installed Dependencies"
NODE_VERSION="20" setup_nodejs
fetch_and_deploy_gh_release "tududi" "chrisvel/tududi"
fetch_and_deploy_gh_release "tududi" "chrisvel/tududi" "tarball" "v0.80" "/opt/tududi"
msg_info "Configuring Tududi"
cd /opt/tududi