Systemstatus
Genereret: 9. August 2026 kl. 12:15:13 · Nexdoc Systems · PackTrack v4.66.0
Alle systemer kører normalt
Sidst kontrolleret: 12:15:13
Aktuel version
System
PackTrack · Nexdoc Systems
Systemtjek
✅
PHP version
8.5.9
✅
AES-256-GCM
Tilgængelig
✅
Argon2id
Understøttet
✅
OpenSSL
OpenSSL 1.1.1k FIPS 25 Mar 2021
✅
data/ skrivbar
Ja ✓
✅
settings.json
Fundet ✓
✅
HTTPS
Aktiv
Versionshistorik
v4.56.0
2026-06-22
Anti-spam på support-formularen. Fire usynlige lag (ingen ekstra besvær for rigtige brugere): (1) Honeypot-felt — skjult for mennesker, men botter udfylder det → afvises. (2) Signeret tidsstempel + tidsfælde — afviser direkte POST'er der aldrig har indlæst formularen (forfalsket/manglende signatur) samt indsendelser hurtigere end 3 sekunder. Bot-indsendelser 'lykkes' tilsyneladende (så de ikke prøver igen), men gemmes ALDRIG. (3) Rate-limit pr. IP — maks. 3 henvendelser pr. 15 min (atomisk via support_throttle.json), ellers venlig 'vent lidt'-besked. (4) Link-loft — beskeder med 4+ links afvises. Udløbne formularer (>2 t) beder om genindlæsning. Validering: php -l + funktionel test af alle grene (ægte/honeypot/signatur/tidsfælde/rate-limit/links/udløb) OK.
v4.55.0
2026-06-22
Brand-logo i header/footer på alle sider. Ny fælles Branding::logoTag() viser brandets logo som billede hvor der før stod tekst — falder tilbage til systemnavnet som tekst hvis intet logo. White-label-bevidst: tenant-sider bruger butikkens eget logo hvis white-label er aktiveret og logo uploadet, ellers jeres globale brand-logo. Ændret: forsidens footer, signup, kundesearch (havde det i forvejen), samt de delte renderSubNav()/renderFooter() (rammer support/status/privatliv/betingelser i både top og bund). Tenant: kunde-admin (sidebar), label-køb, selvbetjening og kundedisplay viser nu logo + butiksnavn under. clickcollect-footer ('Drevet af'). Leverandør-admin sidebar (med live brand-preview). Urørt med vilje: label-printets 'PackTrack.dk - Nexdoc Systems' (bevidst label-design) og de operationelle scanner-skærme (terminal/station/mobil), der ikke har et brand-header-element. Validering: php -l + node --check + test af logoTag (logo/tekst-fallback/imageOnly) OK.
v4.54.0
2026-06-22
PWA: favicon som ikon + leverandør-admin som app. (1) PWA-app-ikonet bruger nu brandets FAVICON (admin → Brand) i stedet for logoet — favicons er kvadratiske og egner sig bedre som app-ikon; centreres på et hvidt kvadrat i 192/512 + maskable. Intet favicon (eller SVG) → genereret farve-ikon. (2) Leverandør-admin (/admin/) kan nu installeres som en rigtig skrivebords-/app-genvej: eget manifest (scope /admin/, starter på admin-dashboardet, navn '<brand> Admin'), service worker og apple-meta — så I ikke skal åbne en browser. Ikon-genereringen er trukket ud i en fælles src/Pwa.php, som både tenant-scanneren og admin-PWA'en bruger (ét sted bestemmer app-ikonet). Validering: php -l + node --check + render-test af ikon-helper (favicon + fallback, gyldige PNG'er) OK. Bemærk: afinstallér/geninstallér app'en efter deploy for at nyt ikon/navn slår igennem.
v4.53.0
2026-06-22
PWA-forbedringer (3 ting). (1) Moduler åbner nu ALTID i et nyt vindue/skærm i stedet for samme vindue — så kunde-admin forbliver åben i det første vindue. Luk modulvinduet og du er tilbage i admin. På desktop-PWA bliver det et nyt standalone app-vindue; på mobil en ny fane (appen bliver liggende på admin). (2) PWA-navnet er nu et FAST brand-navn (fra admin → Brand → systemnavn, standard PackTrack) uanset enhed eller hvilken side man installerer fra — ikke længere 'Admin'/'Scan'. (3) PWA-app-ikonet bruger nu dit uploadede brand-logo (admin → Brand), centreret på et hvidt kvadrat i de nødvendige størrelser (192/512 + maskable). Er der intet logo (eller et SVG), falder det tilbage til det genererede farve-ikon. Validering: php -l + node --check + render-test af ikon-kompositionen (gyldige PNG'er) OK. Bemærk: efter deploy skal app'en afinstalleres og geninstalleres for at det nye navn/ikon slår igennem.
v4.52.0
2026-06-22
Forside: den øverste nav-knap (ved menuen) er ændret fra 'Kom i gang' til 'Log ind' og peger nu på kundesearch.php, så kunder nemt kan finde vej til deres butik. Hero-knappen og pris-knapperne peger stadig på signup.php, så nye kunder fortsat kan oprette sig. Nav-knappen er også synlig på mobil.
v4.51.0
2026-06-22
Ny: kundesearch.php — 'Find din pakkeshop' (offentlig genvejsside). Til kunder der har mistet deres unikke login-link (slettet mail, nulstillet browser/computer). Siden viser leverandørens brand-logo (fra Indstillinger → Branding) i ca. 2,5 sek., og derefter et søgefelt: kunden skriver sit butiksnavn (live-søgning fra mindst 3 tegn), vælger sin butik og trykker 'Log ind' → sendes til butikkens login-side (/tenant/index.php?t=<id>). Selvstændig fil: håndterer både live-søgningen (JSON) og selve siden. Branding (logo, systemnavn, primærfarve) hentes fra den globale brand-konfiguration. Sikkerhed: at finde en butik afslører kun dens login-side — adgang kræver stadig adgangskode/PIN; søgning kræver mindst 3 tegn og returnerer højst 10 resultater, så hele butikslisten ikke kan dumpes. Validering: php -l + node --check + funktionel test af søge-logikken OK.
v4.50.0
2026-06-22
Samlet auto-fakturering + opstartsdato-model (forud). To ting: (1) Abonnements-planlægning bygger nu på OPSTARTSDATO + afregningsinterval i stedet for en 'næste fornyelse'-dato man skal huske. Systemet beregner og VISER 'Næste faktura sendes: <dato>' direkte i kundedetaljerne. Fakturering sker FORUD — første faktura på opstartsdatoen, derefter automatisk hvert interval (måned/kvartal/halvår/år). Gælder både enkelt-kunder og samlet. (2) Ny 'Samlet auto-fakturering' pr. ejer (ét CVR, flere lokationer): slås til på ejerens hovedbutik med opstartsdato + interval, hvorefter cron dagligt tjekker forfald og sender ÉN samlet faktura forud for alle ejerens butikker (kvartal = 3× hver linje). Cron springer de enkelte butikker over for disse ejere, så der ALDRIG opstår dubletter. Idempotent via last_billed_cycle. Genbrug: den samlede faktura-logik er trukket ud i Subscription::createConsolidatedInvoice, som BÅDE den manuelle 'Samlet faktura'-knap og cron nu bruger — og den bygger linjer pr. butik via den centrale Modules::invoiceLines, så alle regler (plan, tilpasset pris, moduler) følges ét sted. Validering: php -l + node --check + ende-til-ende test (3-butiks ejer, kvartal: forfald→1 faktura med 3 sektioner=2.872,80 ekskl., idempotens, forud-cyklus) OK.
v4.49.0
2026-06-22
Tilpasset abonnementspris pr. kunde. Nyt felt 'Tilpasset abonnementspris (kr/md)' i leverandør admin → Pakkeshops → rediger kunde, lige under 'Maks. antal butikker'. Når sat, overskriver det planens grundpris på fakturaen — tilvalgte moduler lægges oveni præcis som hidtil; tom = brug planens normale pris. Designet til individuelle Enterprise-tilbud, hvor planen er sat til 0, men hvor en fast aftalt pris skal på fakturaen i stedet for 0. Genbruger den EKSISTERENDE faktureringslogik: feltet kobles blot til Modules::effectiveBasePrice's _base-override, som alle tre faktura-paths (enkelt, konsolideret, cron) allerede bruger via Modules::invoiceLines — så intet i selve faktureringen blev ændret, og den virker også for samlede multi-shop-fakturaer (pris pr. butik). Værdien er ekskl. moms, samme format som planpriserne. Validering: php -l + node --check + funktionel test af hele kæden (Enterprise 0→800, Pro rabat) OK.
v4.48.0
2026-06-22
Multi-shop — butiksgrænse pr. kunde. Leverandøren kan nu sætte en grænse for hvor mange butikker en kunde må have. Nyt felt 'Maks. antal butikker i alt' i leverandør admin → Pakkeshops → rediger kunde (under Multi-shop-kortet); 0 eller tomt = ubegrænset (bevarer nuværende adfærd). Grænsen gælder pr. kunde (email-gruppe) og propageres automatisk til alle ejerens butikker, så den er ens uanset hvilken butik kunden er logget ind på. Håndhæves server-side i create_my_shop (kan ikke omgås), og vises i kunde-admin: butiks-skifteren viser 'X af Y butikker brugt', og 'Ny butik'-knappen erstattes af en 'grænse nået'-besked når loftet er ramt. Nye butikker arver grænsen. Genbruger eksisterende multishop-endpoints (list_my_shops/create_my_shop) — intet nyt endpoint. Validering: php -l + node --check + funktionel test af håndhævelsen OK.
v4.47.0
2026-06-22
PWA — kundeadmin som ægte app + bliver-i-appen-navigation. (1) Kundeadmin (tenant-dashboardet) har nu sit eget PWA-manifest (standalone, scope /tenant/, starter på dashboardet) plus iOS-meta (apple-mobile-web-app-capable, apple-touch-icon, theme-color) og service worker — så den kan installeres som en rigtig app der dækker HELE tenant-området. Manifest/ikon/SW genbruger mobilens eksisterende PWA-endpoints (manifest parametriseret med home=admin), så intet nyt endpoint blev oprettet. (2) Navigationen til kundedisplay, label-køb, terminal, mobil og station brugte target=_blank/window.open, som altid åbner browseren og dermed sprang ud af appen. De er nu PWA-bevidste: i en installeret app navigeres i samme vindue (man bliver i appen), mens en almindelig browser stadig åbner ny fane (bevarer multiskærm på desktop, fx kundedisplay på en anden skærm). (3) Krydslinks: knap fra Selvbetjening → Køb label og fra Køb label → Selvbetjening. Validering: php -l + node --check på alle berørte filer + funktionel test af manifest-JSON OK.
Spørgsmål: hello@packtrack.dk
· +45 49 90 15 00