Compare commits

..

1 Commits

Author SHA1 Message Date
CanbiZ (MickLesk)
45ac3d32bc fix(tools): use matching-refs API for prefix-filtered tag lookups
When a prefix is provided, get_latest_gh_tag now uses the GitHub
matching-refs API (/git/matching-refs/tags/<prefix>) for server-side
filtering. This fixes repos with 100+ tags (e.g. mongodb/mongo-tools
with 463 tags) where the relevant tags were beyond page 1 and never
found by the old tags?per_page=100 approach.
2026-03-06 14:33:07 +01:00
5 changed files with 47 additions and 32 deletions

View File

@@ -416,7 +416,6 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
- #### 🐞 Bug Fixes
- wealthfolio: update cors [@CrazyWolf13](https://github.com/CrazyWolf13) ([#12617](https://github.com/community-scripts/ProxmoxVE/pull/12617))
- CryptPad: Better update handling [@tremor021](https://github.com/tremor021) ([#12611](https://github.com/community-scripts/ProxmoxVE/pull/12611))
- #### ✨ New Features

View File

@@ -29,11 +29,8 @@ function update_script() {
exit
fi
if grep -q '^WF_CORS_ALLOW_ORIGINS=\*$' /opt/wealthfolio/.env; then
sed -i "s|^WF_CORS_ALLOW_ORIGINS=\*$|WF_CORS_ALLOW_ORIGINS=http://${LOCAL_IP}:8080|" /opt/wealthfolio/.env
fi
if check_for_gh_release "wealthfolio" "afadil/wealthfolio"; then
RELEASE="3.0.3"
if check_for_gh_release "wealthfolio" "afadil/wealthfolio" "${RELEASE}"; then
msg_info "Stopping Service"
systemctl stop wealthfolio
msg_ok "Stopped Service"
@@ -43,7 +40,7 @@ function update_script() {
cp /opt/wealthfolio/.env /opt/wealthfolio_env_backup
msg_ok "Backed up Data"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wealthfolio" "afadil/wealthfolio" "tarball"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wealthfolio" "afadil/wealthfolio" "tarball" "v${RELEASE}"
msg_info "Building Frontend (patience)"
cd /opt/wealthfolio

View File

@@ -1,5 +1,5 @@
{
"generated": "2026-03-06T18:13:12Z",
"generated": "2026-03-06T12:10:39Z",
"versions": [
{
"slug": "2fauth",
@@ -501,9 +501,9 @@
{
"slug": "grocy",
"repo": "grocy/grocy",
"version": "v4.6.0",
"version": "v4.5.0",
"pinned": false,
"date": "2026-03-06T17:35:19Z"
"date": "2025-03-28T19:02:22Z"
},
{
"slug": "guardian",
@@ -641,9 +641,9 @@
{
"slug": "kapowarr",
"repo": "Casvt/Kapowarr",
"version": "V1.3.0",
"version": "V1.2.0",
"pinned": false,
"date": "2026-03-06T16:38:21Z"
"date": "2025-04-16T14:55:28Z"
},
{
"slug": "karakeep",
@@ -872,9 +872,9 @@
{
"slug": "metube",
"repo": "alexta69/metube",
"version": "2026.03.06",
"version": "2026.03.03",
"pinned": false,
"date": "2026-03-06T13:52:56Z"
"date": "2026-03-03T19:15:55Z"
},
{
"slug": "miniflux",
@@ -1229,9 +1229,9 @@
{
"slug": "pulse",
"repo": "rcourtman/Pulse",
"version": "v5.1.21",
"version": "v5.1.20",
"pinned": false,
"date": "2026-03-06T12:13:08Z"
"date": "2026-03-06T00:30:32Z"
},
{
"slug": "pve-scripts-local",
@@ -1411,9 +1411,9 @@
{
"slug": "silverbullet",
"repo": "silverbulletmd/silverbullet",
"version": "2.5.2",
"version": "2.5.1",
"pinned": false,
"date": "2026-03-06T12:20:58Z"
"date": "2026-03-05T15:13:22Z"
},
{
"slug": "slskd",
@@ -1474,9 +1474,9 @@
{
"slug": "stirling-pdf",
"repo": "Stirling-Tools/Stirling-PDF",
"version": "v2.7.0",
"version": "v2.6.0",
"pinned": false,
"date": "2026-03-06T11:21:47Z"
"date": "2026-03-03T20:46:42Z"
},
{
"slug": "streamlink-webui",
@@ -1593,9 +1593,9 @@
{
"slug": "traefik",
"repo": "traefik/traefik",
"version": "v3.6.10",
"version": "v3.6.9",
"pinned": false,
"date": "2026-03-06T15:08:35Z"
"date": "2026-02-23T17:21:17Z"
},
{
"slug": "trilium",
@@ -1740,9 +1740,9 @@
{
"slug": "wealthfolio",
"repo": "afadil/wealthfolio",
"version": "v3.0.3",
"pinned": true,
"date": "2026-03-03T21:47:55Z"
"version": "v3.0.4",
"pinned": false,
"date": "2026-03-05T19:58:24Z"
},
{
"slug": "web-check",

View File

@@ -51,8 +51,8 @@ WF_DB_PATH=/opt/wealthfolio_data/wealthfolio.db
WF_SECRET_KEY=${SECRET_KEY}
WF_AUTH_PASSWORD_HASH=${WF_PASSWORD_HASH}
WF_STATIC_DIR=/opt/wealthfolio/dist
WF_CORS_ALLOW_ORIGINS=*
WF_REQUEST_TIMEOUT_MS=30000
WF_CORS_ALLOW_ORIGINS=http://${LOCAL_IP}:8080
EOF
echo "WF_PASSWORD=${WF_PASSWORD}" >~/wealthfolio.creds
msg_ok "Configured Wealthfolio"

View File

@@ -2008,6 +2008,8 @@ verify_gpg_fingerprint() {
# 0 on success (tag printed to stdout), 1 on failure
#
# Notes:
# - When a prefix is given, uses the matching-refs API for server-side
# filtering (avoids pagination issues with repos that have 100+ tags)
# - Skips tags containing "rc", "alpha", "beta", "dev", "test"
# - Sorts by version number (sort -V) to find the latest
# - Respects GITHUB_TOKEN for rate limiting
@@ -2021,11 +2023,21 @@ get_latest_gh_tag() {
[[ -n "${GITHUB_TOKEN:-}" ]] && header_args=(-H "Authorization: Bearer $GITHUB_TOKEN")
local http_code=""
local api_url=""
# When a prefix is given, use the matching-refs API for server-side filtering.
# This avoids pagination issues with repos that have hundreds of tags (e.g. mongodb/mongo-tools).
if [[ -n "$prefix" ]]; then
api_url="https://api.github.com/repos/${repo}/git/matching-refs/tags/${prefix}"
else
api_url="https://api.github.com/repos/${repo}/tags?per_page=100"
fi
http_code=$(curl -sSL --max-time 20 -w "%{http_code}" -o /tmp/gh_tags.json \
-H 'Accept: application/vnd.github+json' \
-H 'X-GitHub-Api-Version: 2022-11-28' \
"${header_args[@]}" \
"https://api.github.com/repos/${repo}/tags?per_page=100" 2>/dev/null) || true
"$api_url" 2>/dev/null) || true
if [[ "$http_code" == "401" ]]; then
msg_error "GitHub API authentication failed (HTTP 401)."
@@ -2063,12 +2075,19 @@ get_latest_gh_tag() {
tags_json=$(</tmp/gh_tags.json)
rm -f /tmp/gh_tags.json
# Extract tag names, filter by prefix, exclude pre-release patterns, sort by version
# Extract tag names depending on API response format
local latest=""
latest=$(echo "$tags_json" | grep -oP '"name":\s*"\K[^"]+' |
{ [[ -n "$prefix" ]] && grep "^${prefix}" || cat; } |
grep -viE '(rc|alpha|beta|dev|test|preview|snapshot)' |
sort -V | tail -n1)
if [[ -n "$prefix" ]]; then
# matching-refs API returns {"ref": "refs/tags/100.14.1", ...}
latest=$(echo "$tags_json" | grep -oP '"ref":\s*"refs/tags/\K[^"]+' |
grep -viE '(rc|alpha|beta|dev|test|preview|snapshot)' |
sort -V | tail -n1)
else
# tags API returns {"name": "v1.2.3", ...}
latest=$(echo "$tags_json" | grep -oP '"name":\s*"\K[^"]+' |
grep -viE '(rc|alpha|beta|dev|test|preview|snapshot)' |
sort -V | tail -n1)
fi
if [[ -z "$latest" ]]; then
msg_warn "No matching tags found for ${repo}${prefix:+ (prefix: $prefix)}"