De stub moest tot nu toe mee met elke @version-bump, en dat is net het plakwerk waar het @require-spoor vanaf moest. Het nummer zei daar ook niets: de code komt bij elke pagina-load van schijf, dus wat er draait is wat er nú in de repo staat, niet wat er in het meta-blok bleef staan. De kolom hoeft enkel -dev te tonen, dus staat er voortaan 0.0.0-dev. Opnieuw genereren is nog nodig als de metadata zelf wijzigt, bij een andere @match, @grant, @run-at of @require. Heeft een map een src/, dan wijst @require daar rechtstreeks naar. Bij select-search was het gebouwde bestand niets anders dan de header plus die bron, dus stond build.sh alleen maar tussen opslaan en herladen in. Die draai je nu pas bij het publiceren, voor de raw-URL en de bookmarklet. De metadata blijft wel uit het gebouwde script komen, want de bron heeft geen ==UserScript==-blok. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4.0 KiB
ua-userscripts
Dev-conventies voor dit script-repo: dev-stub workflow en naamgeving.
Dev-stub vs. gebruik
De file in scripts/ is de bron van waarheid voor de code. Wat in Tampermonkey staat is dus
óf een loader die naar die file wijst, óf een kopie die van de raw-URL komt. Nooit een met de
hand geplakte kopie, want dan zijn er twee waarheden die stil uit elkaar lopen.
| spoor | wat er in Tampermonkey staat | grootte | @version |
|---|---|---|---|
| dev | stub met @require file:///... |
een paar honderd byte | 0.0.0-dev |
| gebruik | volledige kopie via de raw-URL | de echte grootte | 1.0.0 |
De grootte in het dashboard zegt dus in welk spoor een rij zit.
Een dev-stub maken
bin/dev-stub bipp-budgetcode
De stub gaat meteen naar het klembord. In Tampermonkey neem je het potlood van de bestaande
rij, dan Cmd+A, Cmd+V, Cmd+S. Via de +-tab krijg je een tweede rij in plaats van een
bijgewerkte, want Tampermonkey herkent een script aan @namespace plus @name.
bin/dev-stub --list toont de scriptmappen, --no-copy slaat het klembord over.
Drie dingen die aan die stub vasthangen:
- De metadata komt uit de stub, niet uit de required file.
@match,@granten@run-atmoeten er dus in staan; het==UserScript==-blok van de file zelf wordt genegeerd.dev-stubneemt die velden over uit het echte script, zodat de twee niet uit elkaar lopen. @updateURLstaat opnone. 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. IndetermineMetaURLgaat@updateURLvóór die onthouden URL, ennonebreekt de check af.@downloadURLmag 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-stubzet allebei zelf in de stub. Controleren doe je niet in Settings: het veld Update URL daar isdownloadURLonder een misleidend label (file_url = downloadURL || fileURL), en@updateURLheeft in dat scherm geen veld. Het toont dus de raw-URL, ook alsnonenetjes 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 hoeft niet mee met een
@version-bump. Ze staat op een vaste0.0.0-dev. Een echt nummer zou daar toch niets zeggen: de code komt bij elke pagina-load van schijf, dus wat er draait is wat er nú in de repo staat. De kolom hoeft enkel-devte tonen. Opnieuw genereren en plakken doe je alleen als de metadata zelf wijzigt, dus bij een andere@match,@grant,@run-atof@require. - Heeft de map een
src/, dan wijst@requiredaarnaar, niet naar het gebouwde script. Opslaan en de pagina herladen volstaat;build.shdraai je pas als je publiceert, voor de raw-URL en de bookmarklet.
Lokale bestanden lezen mag Tampermonkey alleen als Allow access to file URLs aanstaat, bij
chrome://extensions onder Details.
Naamgeving
<Toepassing>: <wat het doet>, met de toepassing zoals je ze zelf noemt (BIPP, iExpense,
PeopleSoft), daarna de dubbele punt en een kleine-letter naamwoordgroep zonder punt. Het
dashboard sorteert op naam, dus zo staan de scripts van dezelfde toepassing bij elkaar.
- Geen
[DEV]in de naam. Dat groepeert op ontwikkelstatus in plaats van op toepassing, en de Version-kolom zegt met-deval hetzelfde. - Geen technische slug in de naam. Die staat in het repo-pad en in
@homepageURL. - Draait een script op meerdere sites, dan
Algemeen: .... - Mapnaam en bestandsnaam in kebab-case, zelfde volgorde:
<toepassing>-<functie>.
Hoog @version op bij elke wijziging, anders krijgt niemand de update binnen.