Changelog

Lodd & Dice2 – Changelog

Version history for the Lodd and Dice2 system.

Showing 3 versions

Understanding Version Numbers

Our versioning follows semantic versioning (SemVer) to help you understand the impact of each update:

Major (X.0.0)

Breaking changes that may require action from users.

2.8.0 → 3.0.0

Minor (0.X.0)

New features added in a backward-compatible manner.

3.0.0 → 3.1.0

Patch (0.0.X)

Bug fixes and minor improvements.

3.1.0 → 3.1.1

Showing 3 of 3 versions

Version 1.2.0

23.02.2026

Minor

Login and registration

  • Logout: Logout now redirects to /login; old admin login page removed (redirect only).
  • Language on login and 2FA: English | Norsk switcher on login and 2FA step; 2FA error message localized.
  • Registration: Canonical URL /register (same level as /login); nightscout/register redirects to /register. Language switcher on register page.
  • Form on error: Username and email preserved on validation error; only password is cleared.
  • Show password: Checkbox to show/hide password on login, register and reset-password forms.
  • Log in with security key: Button on login page for passkey-first login (no password required).
  • 2FA after registration: After Nightscout registration users are redirected to Profile → 2FA with welcome message and optional setup.

Profile and 2FA

  • Profile page: Language preference persisted in DB, cookie and session; Profile link above username in sidebar on all pages. Nightscout profile merged into /profile (Account, 2FA, Subscription).
  • Profile container and buttons: Visible profile card; button labels fixed with $profileL (sidebar no longer overwrites $L).
  • 2FA tab: URL uses tab=2fa (not mfa); redirect from tab=mfa. QR code for TOTP setup.
  • Account linking: Email and Discord can be linked; sign in with either; 2FA applies to both. Set password for Discord-only users; change password shown for all with password.
  • Login history: New «Login history» tab with devices, IP, revoke per session and «Sign out all other sessions».
  • Password tab: Dedicated Password tab; change password and set password moved there. Policy: min 7 chars, 1 capital, 1 special, no ÆØÅ (profile, reset, registration).
  • 2FA backup: «Download backup codes» button to download backup codes as text file.
  • Disable 2FA: «Are you sure?» popup instead of typing DISABLE.

Security keys (WebAuthn / Windows Hello)

  • Attestation formats: android-key, android-safetynet, apple, tpm and fido-u2f allowed (Android/iPad/Windows Hello).
  • ByteBuffer: getBase64Url() replaced with base64url helper (lbuchs/webauthn v2).
  • API and path: DIABETES_ROOT set in profile.php and auth/webauthn.php; vendor autoload loaded correctly. POST with JSON body: action read from body (fixes invalid_action).
  • TPM attestation: Raw ECDSA signature converted to DER; Microsoft TPM root certificates added (fixes «invalid certificate signature»).
  • User messages: webauthn_unavailable and technical codes replaced with friendly «Security key not set up or not available»; cancelled prompt shows «Cancelled…». Dynamic message shows actual PHP version and missing package.

Compare devices

  • Backup: Script and full tar backup of diabetes.newstargeted.com to /home/backup (timestamped).
  • Diabetes type: Filter and comparison mode: Type 1, Type 2, Type 1 vs Type 1, Type 2 vs Type 2, Type 1 vs Type 2. Devices tagged with diabetesType (T1/T2/Both).
  • One-to-one comparison: «Select for comparison» per device; side-by-side specification table for selected device A and B.
  • New devices: FreeStyle Lite (BGM), Medtronic Simplera (CGM), Beta Bionics iLet, Sequel twiist (pumps), Tandem Mobi, Omnipod 5, MiniMed 780G; updated descriptions for Dexcom G7, Libre 3, NovoPen 6, etc.
  • Full-page layout: Comparison section uses full width (no large empty space to the right).

Miscellaneous

  • Sidebar: «Login» button to /login (not just Discord). Dice and Dice Statistics translated to Lodd and Lodd-statistikk in Norwegian.
  • Favicon: favicon.ico added at root; profile pages include favicon link.

Travel expenses

  • List, create, edit, view: Full travel expense flow with own reports per user.
  • Sharing: Public share link (share token) for each report.
  • Export: Excel (CSV) and PDF; report loaded by report ID when exporting.
  • Receipts: Receipt image uploads stored under images/receipts/{user_id}/{report_id}/.
  • Logo: Custom logo upload and display in PDF export.
  • Rows: Add and remove expense rows in the form.
  • Routing: Clean URL structure under /travel-expenses/ (router, create, edit, view, export, share).

Meeting minutes (Referat)

  • List, create, edit, view: Meeting minutes with cases, decisions and contact.
  • Sharing: Public share link per meeting.
  • Export: CSV (Excel), Word and PDF.
  • Layout: Referat-style layout and styling (referat.css), form JS (referat-form.js).
  • Routing: Clean URL structure under /referat/ (router, create, edit, view, export, share, print).

Website and security

  • Maintenance mode: Check on all pages (maintenance-check) before output.
  • Authentication: Discord-based login; protected pages for travel expenses and referat.
  • Sidebar: Unified sidebar with Travel expenses and Referat in addition to Dashboard, Dice2 and Admin.
  • Language: Norwegian and English (language-detection) across pages.

Lodd / Dice2 – Initial changelog

  • Changelog: New changelog page available from the sidebar.
  • Dice2: Unified sidebar with Dashboard, Dice2, Dice (classic), Compare devices and Admin.
  • Dashboard: Stats (last 24h), draws and CSV export log.
  • Export: CSV export with timestamp, number, lottery, color and range.
  • QR / Vipps: QR display in sidebar with zoom and size controls.
  • Understanding Version Numbers: SemVer section with Major (red), Minor (orange) and Patch (green), including icon badges (fa-exclamation-triangle, fa-plus-circle, fa-bug).
  • Version badge: Version 1.0.0 displays «Major» instead of «New», aligned with SemVer.
  • Copy link: Copy-link button per version to copy direct link with hash to clipboard.
  • Filters: Filters container (filters-container) with search, version type (Major/Minor/Patch), year, per page and Clear, plus «Showing X of Y versions».
  • Filter logic: Search in title and body, filter by data-type and data-year, limit by per page, update results count.