Changelog
Eine Übersicht aller PrintAgent-Releases. Neue Versionen und Verbesserungen finden Sie hier.
Opgelost
- Het veld "Voorbeeld (canvas)" werd niet bewaard: de waarde verdween zodra je het veld
verliet of op Enter drukte, omdat de eigenschap niet in de lijst met elementeigenschappen stond.
Het veld wordt nu in het ontwerp opgeslagen en de barcode op het canvas wordt ermee getekend.
Opgelost
- Barcode met een veldplaceholder toonde "ongeldige data": een barcode met
{{veld}}als data
werd letterlijk naar de encoder gestuurd, waardoor Code 39 (en in feite elk formaat) een rode
foutbox gaf. Het canvas tekent nu de voorbeeldwaarde van het veld uit de dataset — en zonder
dataset een vaste waarde per formaat, met een geldig controlecijfer voor de EAN's — en het
eigenschappenpaneel noemt de waarde die je ziet; met het nieuwe veld Voorbeeld (canvas) op
het barcode-element bepaal je zelf waarmee de code op het canvas staat (ook een {{veld}} mag,
dat wordt dan met de dataset ingevuld). Past een voorbeeld niet bij het formaat, dan
volgt een amberkleurige melding ("voorbeeld past niet bij dit formaat"); de rode "ongeldige data"
blijft gereserveerd voor echte invoerfouten.
Toegevoegd
- Bedrijf en eigenaar in een keer aanmaken (admin): op
/admin-businessesopent de knop
*Nieuw bedrijf* een paneel waarin je de bedrijfsnaam, het adres, de bewaartermijn en het
e-mailadres van de eigenaar invult. De API maakt het Auth0-account aan als dat nog niet bestaat,
koppelt de rol Print_Owner, zet de bedrijfsclaim, stuurt de uitnodigingsmail en start
desgewenst direct de proefperiode. Faalt het koppelen, dan worden het bedrijf en een zojuist
aangemaakt Auth0-account weer opgeruimd. Nieuw endpoint: POST /Business/admin/create
(admin-only, buiten de API-key-scope).
Toegevoegd
- Printformats van een Dini Argeo-weegschaal beheren (#221): de node leest de formats 1-30
van de weegschaal (G804/G205), schrijft ze terug (S### met een S804-commit en daarna een
lengtecontrole), maakt ze leeg, verstuurt ze en koppelt een format aan een printfunctie
(LNKF). Bewerken gaat op /settings/scale in Dinitools-notatie; de node bewaart de formats
per weegschaal in scale-formats\{scaleId}.json, zodat je ze ook zonder open verbinding kunt
bekijken. Protocol en proeven staan in docs/SCALE-PRINT-FORMATS.md.
Opgelost
- Eigenschappenpaneel bleef leeg bij een via de API aangemaakt etiket: ontwerpen die via de
API of de AI-functie binnenkomen bevatten elementen zonder id. De designer zoekt een element
op via dat id, dus klikken op de canvas leverde geen eigenschappen op. Ontbrekende ids worden
nu bij het laden aangevuld en dubbele ids uniek gemaakt.
- Een gewijzigd printer-IP werd niet meteen gebruikt: een actie (filedrop, weegschaal of
HTTP-trigger) bleef tot een service-herstart naar het oude adres printen, en een gebufferde
opdracht werd tot 24 uur lang met het oude adres opnieuw geprobeerd. Beide halen het adres nu
opnieuw op voordat er geprint wordt.
- Een weegschaal bevestigt de ontvangst van artikelen; zonder die bevestiging meldt de node geen
succes meer (#135).
Toegevoegd
- Weegschaalregistraties met totalen (#135):
/scaletoont de registraties met totalen in
vier kolommen, houdt per registratie bij of ze al afgedrukt is, exporteert naar xlsx en kan
archiveren zonder afdruk.
- Producten en templates naar de weegschaal sturen (#135), zodat de 3590 zelf de
artikelgegevens heeft en de weging direct een label kan opleveren.
- Live verbindingsstatus per weegschaal op
/settings/scale. - Ruwe frames en testframes (#135): bekijk de frames die de weegschaal stuurt, stuur zelf een
testframe in en het komma-formaat wordt herkend.
- A4-totaalafdruk als PCL met kop, details en voettekst (#135).
- Ingebouwde
scale-dataset (#135): een dataset met de weegschaal-placeholders, zodat een
label direct aan een registratie gekoppeld kan worden.
Verbeterd
- Printen bij een weegschaalregistratie gaat alleen nog via een actie; de oude automatische
print-instellingen zijn uit de node-UI verdwenen. Een scale-trigger doet nu ook
productmatching (ProductLookup).
- De frames- en uploadpanelen staan bij elkaar op
/settings/scalein plaats van verspreid over
de pagina's.
- De WPF-agent is verwijderd; de agent-kern zit in de node, met één gedeelde runtime voor service
en tray.
Opgelost
- PCL-regels worden met CR+LF afgesloten, zodat de laserprinter elke regel apart afdrukt.
- Het CMD-commando van de 3590 wordt herkend ondanks voorloop-controltekens.
- Een identiek gewicht wordt alleen binnen 3 seconden genegeerd, zodat twee keer PRINTEN wel
registreert.
- De release-feed en de node-statistieken delen de GitHub-cache en token, zodat de cijfers niet
wegvallen zodra de API-limiet is bereikt (#229).
Toegevoegd
- SEO-basis voor de website (#225): elke pagina heeft een eigen titel en beschrijving in het
Engels, Nederlands en Duits, met canonical-URL's en hreflang-links (inclusief x-default).
De taalkeuze staat in de URL (?culture=nl|de), <html lang> volgt de requestcultuur en elke
pagina heeft Open Graph- en Twitter-kaarten met een 1200×630-afbeelding. De homepage en
/pricing leveren JSON-LD (Organisatie, SoftwareApplication met de actuele prijs uit
PrinterPricing, en FAQPage). /robots.txt en /sitemap.xml worden gegenereerd uit dezelfde
bron als de canonical-links, en de nooit gelinkte conceptpagina /v2 is verwijderd (onbekende
paden krijgen noindex).
- Bezoekers- en gebruikersstatistieken in de admin (#225): nieuwe pagina
/admin-analytics met drie tabbladen.
*Bezoekers* toont weergaven en unieke bezoekers per dag of maand, met de populairste pagina's,
talen en apparaten. De landing meet dit zonder cookies: het IP-adres wordt alleen als
SHA-256-hash met een maandsalt opgeslagen, bekende bots en onbekende paden worden genegeerd en
de gegevens bewaren 400 dagen.
*App* toont wie er nú in de App werkt (e-mailadres, bedrijf, pagina, laatst gezien), het aantal
online nodes en een 24-uursgrafiek. De App stuurt daarvoor één keer per minuut een hartslag.
*Node* toont de downloads per node-versie (GitHub Releases), het aantal actieve en online nodes
en een trend van 30 dagen.
- De node houdt zijn
LastSeennu actief bij via een hartslag elke vijf minuten en via de
hubverbinding (#225), zodat "online nodes" niet meer afhangt van de update-check.
- Op
/printersstaat alles in één lijst, met per printer het type Cloud, Lokaal of
Cloud + lokaal (#228). Een lokaal ingestelde printer kan met Naar cloud in één keer aan
de cloud worden toegevoegd (gekoppeld aan deze node); bestaat hetzelfde adres al, dan volgt
geen duplicaat.
- De products-pagina van de node ververst automatisch zodra de cloud een product wijzigt (#228),
zonder de pagina te herladen en zonder elke keer de volledige lijst op te halen.
Verbeterd
- De privacyverklaring legt in drie talen uit welke geanonimiseerde statistieken worden
bijgehouden en dat daarvoor geen cookiebanner nodig is (#225).
Opgelost
- Een node herkent zichzelf weer als node (#225). De controle vergeleek de assemblynaam exact met
PrintAgent.Node, maar de node compileert de agent-bronnen in PrintAgent.Node.Windows,
waardoor IsNode telkens op false werd gezet en de node niet als actieve node meetelde.
- De downloadcijfers op het tabblad *Node* blijven staan als GitHub tijdelijk niet antwoordt
(#225); de pagina waarschuwt en probeert het na vijf minuten opnieuw.
- Een node registreert na het herverbinden weer zijn bedrijfsgroep bij de hub (#226), zodat
printopdrachten en productwijzigingen niet stilvallen na een netwerkonderbreking.
Installatie
- Database: draai vóór de uitrol
Builder/SQL/20261026151810_AddAnalytics.sql(tabellen
PageViews, UserPresence en NodeVersionSnapshots). Migraties draaien niet automatisch.
- Optioneel: zet
Node__Stats__Tokenin Dokploy met een fine-grained PAT (public read op
tegrasystems/tegra-releases) om de GitHub-limiet van 60 naar 5.000 requests per uur te
brengen (zie #229). Zonder token blijven de cijfers werken, maar kunnen ze periodiek ontbreken.
Opgelost
- De printerinventaris van een node neemt nu ook een lege lijst over (#192). Werd de laatste
printer aan een andere node toegewezen, dan bleven de oude printers zichtbaar (en kregen
printerstatus en -commando's de verkeerde node) tot een service-herstart. Dezelfde correctie zit
in de OPC UA-printerstatus (PrinterStatusWorker). Bij een lege lijst blijft de node elke 30
seconden opnieuw kijken, zodat een later toegewezen printer snel verschijnt.
Verbeterd
- De release-feed (
GET /Node/release) heeft een instelbare cache:Node:Release:CacheSeconds
(seconden, 0 = geen cache, standaard 10 minuten per API-instantie). Zo is een net
gepubliceerde node-release sneller zichtbaar voor de update-check van de nodes.
- De Scalar-documentatie van de node groepeert de vijf endpoints die een integratie met een
API-key mag gebruiken onder de tag Integratie (API-key), met eigen samenvattingen en
beschrijvingen (status, historie, printers, templates en printen). Een dubbele registratie van
GET /api/templates is verwijderd.