RELEASE LOG
Every change shipped to this website, newest first — 23 releases. The version in the footer links here.
/blog/sustainable-identity-multimodal-ecocir-ink, en/fr/es): Meerv's evolution from Sustainable Radiofrequency Identity to multimodal Sustainable Identity — the printed visual twin (serialized 1D/2D GS1 Digital Links) alongside the RF tag, why the printing/ink must itself be sustainable, EcoCir as the one material behind both forms, and QDat.io as a multimodal spatiotemporal intelligence automation plane. Newest entry on the blog index; added to the prerender list and sitemap./news index card title/summary were synced to the article wording./news/qdatdroid-2.1.4-production-2026-06-08), its /news index card, and the companion blog post (/blog/qdatdroid-2.1.4-cooltag-axzon-zebra), in en/fr/es — repositioning the build from "experiment with" to "deploy with" CoolTags and Axzon AZN5201 tags./sdpp and /SNSNDigitalLinkDPP hero headings rendered at normal weight (Tailwind preflight resets <h1>); both now use font-bold, matching every other product page./qseq — a trilingual (en/fr/es) product page for QSeq (Meerv Inc., qseq.app), the print-true generator for GS1 Barcodes, QR Codes and Data Matrix. Replicates the qseq.app content: the *Sustainable Identity on Every Thing* hero with Open QSeq / macOS / Windows download CTAs, the *Standards-first · Print-true · Yours to fork* pillars, the live physical-size calculator, the 1D / 2D / combined / serialized-sheet label types, the controls reference, the structure-aware damage-tolerance note, the QDat.io resolver tie-in (links to /tapdpp), the "why QSeq" name story, the one-core/three-platforms build, the QRPic sister product, and the PolyForm Noncommercial license footer./releases — a human-readable history of every QDat.io website release, rendered at build time from this CHANGELOG.md (the single source of truth, imported raw — no duplicated copy). The version number in the footer now links here, and the page is en/fr/es with the entries in English. Added to the vike prerender list.**bold** and ` code `), used by the Release Log and the QDatDroid release notes./qdatdroid "What's new" panel and the /support/qdatdroid full history now show 2.3.4 (locate and read OPUS sensor tags on the built-in TC701/TC22R and EM45 radios, GPS/NFC status indicators, a clearer Read Logger, and connection fixes), plus the 2.3.3 table-view default and the previously-missing 2.3.1 entry.tapdpp-1.21.apk → tapdpp-1.22.apk) and updated every download link, version label, and release date on /tapdpp and /sdpp (en/fr/es). The TapDPP launch (May 27) and public-beta (June 5) press releases — plus the matching blog post body — now read v1.22.0 throughout..exe), macOS (.dmg), and Linux (.deb) at v1.1.0, with copy explaining near feature parity with the web dashboard and that 100% of the functionality is reachable through the public API (a live demonstration of WMS/ERP integration)./support = Features, plus /support/user-guide, /support/desktop, /support/qdatdroid, /support/faq, /support/api, /support/cooldat-standard, /support/backend-changes). The active tab is derived from the route, each tab carries its own canonical + <title>, and all URLs were added to the vike prerender list and the sitemap.qdat-desktop-dashboard-api-parity, en/fr/es) — the API-first parity story and the WMS/ERP integration path. Wired into blogSlugs + thumbnail map; auto-enrolls in the prerender list via blogPage.posts./support/desktop (en/fr/es).1199241421), and the section label renamed to "Cooldat® on QDat.io Demonstration Tutorial (15 minutes)" — now i18n'd across en/fr/es (cooldatPage.demoLabel)./cooltag page. Also fixed the now-contradictory blog subsection heading and a "no log / no battery to die" line./news/qdatdroid-2.1.4-production-2026-06-08 + /actualites/qdatdroid-2.1.4-production-2026-06-08) announcing that QDatDroid 2.1.4 is fully tested for production, and inviting anyone with CoolTags or Axzon AZN5201 sensor tags and a portable Zebra Android RFID reader to download it and start experimenting. New QDatDroidProd20260608 page component, qdatdroidProd20260608 locale block (en/fr/es), and a news.items entry.qdatdroid-2.1.4-cooltag-axzon-zebra, en/fr/es) — a field guide from download to a GPS-and-time-stamped, live-streamed sensor read. Wired into blogSlugs + thumbnail map.App.tsx and the prerender list (blog post auto-enrolls via blogPage.posts); sitemap now covers 45 URLs.qdatdroid-2.1.4-base.apk; QDATDROID_VERSION updated to 2.1.4. Removed the old qdatdroid-2.1.2-base.apk.sitemap.xml is now auto-generated at build time from the vike prerender URL list, so it can no longer drift from the pages that actually exist. The list was extracted to pages/prerenderUrls.ts (shared by +onBeforePrerenderStart and the new scripts/generate-sitemap.ts, run from the build script via tsx); the hand-maintained client/public/sitemap.xml was removed. The generated file now also covers routes the static one had been missing (/heli, /mtp + /ptm, the French /actualites + /blogue alternates, the localized blog slug, etc.). Per-path priority/changefreq come from a small override map + URL-shape heuristic; the no-nav /SNSNDigitalLinkDPP page is excluded.sitemap.xml: added /tapdpp, the TapDPP public-beta news release (/news/tapdpp-public-beta-2026-06-05), the tied blog post (/blog/tapdpp-public-beta-sdpp-playground), and backfilled the previously missing DPP launch (/news/dpp-launch-2026-05-27). Refreshed lastmod on the /news and /blog indexes./blog/tapdpp-public-beta-sdpp-playground: the "Try it" links rendered as raw markdown because they were written as **[label](url)** (bold wrapping the link). Moved the emphasis inside the link ([**label**](url)), which the blog renderer handles — fixed in en/fr/es./news/tapdpp-public-beta-2026-06-05 (+ French /actualites/beta-publique-tapdpp-2026-06-05): public betas of TapDPP on Android and iPhone, downloadable from QDat.io/tapdpp and interworking with the tapdpp.qdat.io playground. New page component, routes, prerender entries, featured slot on the News index, and en/fr/es content./blog/tapdpp-public-beta-sdpp-playground detailing what's now possible with any NFC tag (write → tap → switch template → geotime fence → re-route). Added to blogSlugs with a thumbnail; tapdppIcon added to the central image map./tapdpp: "The resolver in action" section with a real screenshot of tapdpp.qdat.io resolving https://tapdpp.qdat.io/E0167801144FBFE9 to a live DPP view (product, manufacturer, sustainability, RFID, and the spatiotemporal last-scan location)./tapdpp: refer to the tappable object as a "tag" throughout instead of "chip" (en/fr/es, with article/gender fixes) — fitting the TapDPP name./tapdpp hero: title set to "TapDPP, the QDat.io App for Android and iPhone for NFC Digital Product Passports" (en/fr/es), and the <h1> now matches the /cooldat heading style (Space Grotesk, text-4xl md:text-5xl font-bold)./tapdpp: SDPP intro/excerpt block at the top of the page (above the platform cards) excerpting qdat.io/sdpp and framing TapDPP as the simplest way to see an SDPP resolve./tapdpp: the iOS and Android release-notes text sections (the screenshot galleries remain)./tapdpp walkthrough step 07: "Tap the same NFC or RAIN+NFC tag again"./tapdpp page covering the TapDPP NFC NDPP reader on both platforms — the Android client (v1.21.0, sideload APK) and the new native iPhone client (v1.4, public TestFlight beta) — with a shared SDPP feature set, a seven-tap walkthrough, and iOS + Android screenshot galleries. Fully translated (en/fr/es, in-page toggle like /sdpp).nav.tapdpp as a top-level Navbar item; route wired in App.tsx and added to the prerender list.qdatio-www./sdpp hero: the top-right TapDPP icon card (icon + version/release text) is now a clickable in-page anchor that scrolls down to the "Android client — v1.21.0" spotlight box (#tapdpp-app), with a subtle hover lift. Added scroll-mt-24 to the target section so the navbar doesn't overlap it./demo is now fully internationalized (en/fr/es). All form labels, options, headings, and messages move to a demoPage dictionary; option lists are {value,label} pairs so submitted data and comparisons stay canonical English while the UI translates. The submission now records the active UI language./ptm for the MTP page (prerendered in French; added to the French-route detection and prerender list)./mtp citing Hajjaj et al. (Transfusion 2024, doi:10.1111/trf.17876) and Denesiuk et al. (Arch Pathol Lab Med 2006) for the redistribution / cold-chain wastage figures.xl (hamburger below) to fix the menu overflow/wrapping at intermediate desktop widths./mtp challenge + protocol sections now cite the redistribution-program findings (outdating as top wastage cause; 23%→2.8% transport-loss reduction; 15,499 units / ~$17.6M CAD redistributed). Removed the unsourced UK figure./mtp page — "Cooldat® and the Mass Transfer of Blood Products", a briefing focused on QDatDroid and handheld RFID readers (RFD40, TC22R) for regional health networks. Excludes atek.io and fixed-reader/QDatFX content. Fully translated across en/fr/es./mtp hero label set to "QDAT.IO SPATIOTEMPORAL INTELLIGENCE AUTOMATION PLANE FOR BLOOD BAGS"; removed the EcoTag element so the CoolKit is now a four-element bundle./cooldat and /mtp cloud-backend sections: heading renamed to "QDat.io Cloud Backend for Cooldat®", dropped the AWS-managed MQTT and Database "Option 2" rows, and reworded the remaining options to "Cluster of Docker images under Kubernetes orchestration" and "TimeScale DB Open Source".© 2026 … line on every page. The value is sourced from package.json at build time via a Vite define (__APP_VERSION__) and baked into the pre-rendered HTML, so it stays in sync with version bumps automatically./support and /use-cases now keep all tab/category panels mounted in the DOM and hide the inactive ones with CSS (hidden) instead of unmounting them. Previously only the active tab/category was rendered, so the Guide (incl. 13 screenshots), QDatDroid report, FAQ, CDX-1 Standard, and Backend Changes sections — and every non-active use-case category — were absent from the pre-rendered HTML and unreadable by crawlers/LLMs. /support visible text went from ~5 KB to ~108 KB. The nested collapsibles (FAQ answers, release-note blocks, the QDatDroid "show all releases" overflow) are likewise rendered-but-hidden. No visual/UX change. The API Reference tab remains runtime-fetched and is not yet pre-rendered.client/src/locales/es.json with full key parity to en/fr (441 keys, including all seven long-form blog articles), plus esContent objects on the inline-content pages (SDPP, Heli, SNSNDigitalLinkDPP). Spanish is wired into i18n.ts, the Navbar language switcher (EN/FR/ES, desktop + mobile), ContactSection, the PageHead/HeadContext types, and the server contact/demo language enum. Spanish is an in-page toggle only — it reuses the English routes and renders client-side (no dedicated /es URLs, unlike French).qdatdroid-2.1.2-base.apk; QDATDROID_VERSION updated to 2.1.2./support Web Interface User Guide (PlatformGuide) from the new platform documentation export QDat-Platform-Documentation2.html. Regenerated client/src/data/platformGuide.json (10 sections) and re-extracted the screenshots (now 13) to client/public/images/docs/. The "Open the full documentation" link points at the new export.scripts/gen-platform-guide.py to parse the new export's markup (.sec/.wrap/.card/.ss/.note/.tag-box) into the same JSON block model, so the PlatformGuide renderer is unchanged.client/public/images/QDat-Platform-Documentation.html export (replaced)./cooldat, /qdatdroid, and /use-cases./blog/blood-cold-chain-traceability-mass-transfusion/blogue/tracabilite-chaine-du-froid-sang-transfusion-massive/blogue while keeping content keyed by the canonical English slug. Centralized in a new React-free module client/src/lib/blogSlugs.ts (frSlugOverrides, localizedSlug, canonicalSlug) so the app and the build-time prerender hook share one source of truth.pages/+onBeforePrerenderStart.ts now emits /blogue/<fr-slug> for posts that define a French slug override, in addition to the English slug under both /blog and /blogue.BlogPost resolves any incoming slug (English or localized French) back to the canonical key for validation and content lookup, and emits a canonical URL that tracks the localized slug.<title> and a homepage <link rel="canonical">, because the prerender hook only enumerated the English slug. The French slug is now prerendered with the correct French title and canonical, and the legacy English-slug-under-/blogue URL canonicalizes to the French slug.