dev-stub: @updateURL none, @downloadURL behouden met juiste update-check

This commit is contained in:
Glenn Goossens
2026-09-01 16:59:22 +02:00
parent d86d3925e9
commit 6e59f1797c
2 changed files with 28 additions and 5 deletions
+17 -3
View File
@@ -59,13 +59,27 @@ bijgewerkte, want Tampermonkey herkent een script aan `@namespace` plus `@name`.
`bin/dev-stub --list` toont de scriptmappen, `--no-copy` slaat het klembord over.
Twee dingen die aan die stub vasthangen:
Drie dingen die aan die stub vasthangen:
- **De metadata komt uit de stub, niet uit de required file.** `@match`, `@grant` en `@run-at`
moeten er dus in staan; het `==UserScript==`-blok van de file zelf wordt genegeerd. `dev-stub`
neemt die velden over uit het echte script, zodat de twee niet uit elkaar lopen.
- **`@downloadURL` en `@updateURL` horen er niet in.** Met die velden overschrijft Tampermonkey
je stub bij de eerste update-check met de volledige raw-versie. `dev-stub` laat ze weg.
- **`@updateURL` staat op `none`.** Die velden weglaten volstaat niet: Tampermonkey onthoudt de
download-URL van de oorspronkelijke installatie apart van het meta-blok, dus een rij die ooit
van de raw-URL kwam biedt daarna alsnog een update aan die je stub overschrijft. In
`determineMetaURL` gaat `@updateURL` vóór die onthouden URL, en `none` breekt de check af.
`@downloadURL` mag daardoor gewoon blijven staan: die wordt nooit meer bereikt, en levert wel
het GitHub-icoon op in de overzichtslijst, want de herkomst wordt uit die URL afgeleid.
`dev-stub` zet allebei zelf in de stub. Controleren doe je niet in Settings: het veld
**Update URL** daar is `downloadURL` onder een misleidend label (`file_url = downloadURL ||
fileURL`), en `@updateURL` heeft in dat scherm geen veld. Het toont dus de raw-URL, ook als
`none` netjes is overgenomen. Controleer in plaats daarvan het gedrag: klik in de
werkbalk-popup op **Check for userscript updates** en er hoort geen enkel dialoogvenster te
komen.
- **De stub moet mee met elke `@version`-bump.** De code komt via `@require` uit de repo, dus
functioneel merk je er niets van, maar de Version-kolom wijst anders een oude versie aan en
die kolom is nu net waarmee je dev van gebruik onderscheidt. Draai `bin/dev-stub` opnieuw en
plak.
Lokale bestanden lezen mag Tampermonkey alleen als **Allow access to file URLs** aanstaat, bij
`chrome://extensions` onder Details.
+11 -2
View File
@@ -80,14 +80,19 @@ name="$(meta name | head -1)"
version="$(meta version | head -1)"
namespace="$(meta namespace | head -1)"
author="$(meta author | head -1)"
downloadurl="$(meta downloadURL | head -1)"
if [ -z "$name" ] || [ -z "$version" ]; then
echo "dev-stub: @name of @version ontbreekt in $src" >&2
exit 1
fi
# @downloadURL en @updateURL komen er bewust NIET in: Tampermonkey zou de stub
# dan bij de eerste update-check overschrijven met de volledige raw-versie.
# @updateURL staat op none, want weglaten volstaat niet: Tampermonkey onthoudt de
# download-URL van de oorspronkelijke installatie los van het meta-blok, en zou de
# stub daarmee bij de eerste update-check overschrijven met de volledige raw-versie.
# In determineMetaURL gaat updateURL vóór die onthouden downloadURL en breekt de
# waarde none de check af. @downloadURL mag daardoor blijven staan: die wordt nooit
# meer bereikt en levert wel de GitHub-herkomst op in de overzichtslijst.
{
echo "// ==UserScript=="
printf '// @name %s\n' "$name"
@@ -95,6 +100,8 @@ fi
printf '// @version %s-dev\n' "${version%-dev}"
printf '// @description Dev-loader. De code staat in de repo, dit bestand wijst er alleen naar.\n'
[ -n "$author" ] && printf '// @author %s\n' "$author"
[ -n "$downloadurl" ] && printf '// @%-12s %s\n' downloadURL "$downloadurl"
printf '// @%-12s %s\n' updateURL none
for key in match include exclude; do
meta "$key" | while IFS= read -r value; do
[ -n "$value" ] && printf '// @%-12s %s\n' "$key" "$value"
@@ -126,4 +133,6 @@ if [ "$copy" -eq 1 ] && command -v pbcopy >/dev/null 2>&1; then
echo >&2
echo "dev-stub: staat op het klembord" >&2
fi
echo "dev-stub: genereer de stub opnieuw na elke @version-bump, anders wijst de" >&2
echo "dev-stub: Version-kolom in het dashboard een oude versie aan" >&2
rm -f "$dir/.dev-stub.tmp"