Changelog
<!-- markdownlint-disable MD024 -->All notable changes to this project will be documented in this file.
[1.33.0] - 2026-02-24
Added
-
PQC Live Comparison Demo (
DigitalAssets/PQCMigrationFlow,PQCLiveComparisonFlow): Added Part 5 "Try It Live" to the PQC Defense workshop flow in the Digital Assets module. Users can now run real ML-DSA-65 and secp256k1 crypto operations side-by-side in the browser via OpenSSL WASM v3.6.0. Three-step interactive wizard: (1) key generation with real PEM byte size comparison, (2) signing the same message with both algorithms and a CSS bar chart showing the ~46× signature size difference, (3) verifying both signatures with a live BIP-360 witness overhead calculation. secp256k1 signing uses-rawin -digest sha256to handle raw messages (ECDSA expects a pre-computed digest by default); ML-DSA-65 handles arbitrary-length messages natively per FIPS 204. No liboqs required — OpenSSL 3.6.0 natively supports ML-DSA-44/65/87. -
ML_DSA_65command templates (DigitalAssets/constants.ts): AddedML_DSA_65command group alongside existingBITCOIN,ETHEREUM,SOLANAgroups withGEN_KEY,EXTRACT_PUB,SIGN, andVERIFYhelpers for OpenSSL ML-DSA-65 operations.
[1.32.0] - 2026-02-24
Fixed
-
Glossary tooltip overflow clipping (
InlineTooltip, all 16 learning modules): Tooltips were silently clipped inside any container withoverflow: hiddenoroverflow-y: auto(TLS panel glass-panels, PKIWorkshop modal bodies, DigitalID scroll container, FiveG diagram wrappers, DigitalAssets step wizard). Fixed by switching fromposition: absolute(relative to nearest positioned ancestor) toReactDOM.createPortal()rendering intodocument.bodywithposition: fixedcoordinates computed fromgetBoundingClientRect(). Z-index raised to9999via inline style. A scroll event listener (window capture phase) closes the tooltip when the page scrolls, preventing stale-position display. -
DigitalAssets
InfoTooltipand localInlineTooltipclipping (modules/DigitalAssets): Applied the same portal + fixed positioning fix to both exported components in the module-localInfoTooltip.tsx. Arrow decorations removed since they don't work with fixed positioning. -
DigitalID
InfoTooltipclipping (modules/DigitalID): Applied portal + fixed positioning fix. Added above/below smart positioning (the original always rendered below regardless of viewport space).
Added
SCTglossary term (glossaryData.ts): Signed Certificate Timestamp was used in the Merkle Tree Certs module (<InlineTooltip term="SCT">) but had no glossary entry, causing the tooltip to silently render as plain text. Added with a complete definition covering CT log membership proofs and the relationship to MTC inclusion proofs.
[1.31.0] - 2026-02-23
Added
-
Full SEO overhaul: Per-route metadata for all 31 pages — unique titles, descriptions, canonical URLs, Open Graph tags, and Twitter Card tags dynamically rendered using React 19's native document metadata hoisting. No external dependency required.
-
Playwright-based prerendering: All 31 routes now generate static HTML at build time via
scripts/prerender.mjs. Crawlers receive real rendered content (navigation, headings, page text) without executing JavaScript, solving the SPA indexing problem. WASM-heavy interactive content still loads client-side after hydration. -
Expanded sitemap (
public/sitemap.xml): Grew from 13 to 31 URLs, now covering all 16 learning modules (/learn/pqc-101,/learn/quantum-threats, etc.),/assess,/learn/quiz, and all main routes — each with<lastmod>dates for accurate crawl scheduling. -
Enhanced structured data (
index.html,src/seo/routeMeta.ts): Homepage now declares a@graphwithWebSite(includingSearchActionfor sitelinks search),Organization(with logo and GitHub sameAs), andWebApplicationschemas. Individual routes inject page-specific JSON-LD:Coursefor the learning hub,LearningResourceper module,Datasetfor compliance and timeline data,ItemListfor the algorithm explorer. -
Journey-oriented descriptions: Homepage and 5 key pages (
/learn,/assess,/migrate,/compliance,/timeline) now carry elevated, mission-driven descriptions that convey the end-to-end guided PQC transformation journey — education → risk assessment → migration → regulatory compliance alignment. -
CI prerender support (
.github/workflows/deploy.yml): Playwright Chromium is now installed before the build step soscripts/prerender.mjsruns correctly in the GitHub Actions deploy pipeline. -
robots.txtcrawl-delay: AddedCrawl-delay: 1directive to pace crawler traffic.
[1.30.0] - 2026-02-22
Added
-
Persona-aware assessment report (
/assess): Executive persona now sees a streamlined report — HNDL/HNFL risk windows and algorithm migration matrix are hidden by default, recommended actions are clamped to top 5. A "View full technical report" toggle reveals the complete report. Researcher and architect personas get the Industry Threat Landscape section expanded by default. -
Wizard pre-fill from persona store (
/assess): The assessment wizard now auto-fills industry and country from the persona/region selections made on the landing page, so users don't re-enter data they already provided. -
Industry filter on Migrate catalog (
/migrate): New Industry dropdown filter in the software catalog, powered by each product'stargetIndustriesfield. Auto-initialized from the assessment's industry, persona store, or?industry=URL parameter. Includes a filter banner with clear button matching the existing layer/step filter pattern. -
Assessment → Migrate deep link (
/assess): "Explore" links on recommended actions pointing to/migratenow append?industry=...so the Migrate catalog auto-filters to industry-relevant tools.
Fixed
-
Chunk loading resilience: All 30 lazy-loaded routes and modules now use
lazyWithRetry— a wrapper that retries failed dynamic imports up to 3 times with exponential backoff (1s → 2s → 4s) and auto-reloads the page as a last resort (once, via sessionStorage guard). Eliminates the "page won't load until you manually refresh" issue caused by stale chunks after deploys or transient network failures. -
ErrorBoundary smart recovery: The "Try again" button now detects chunk load errors (
dynamically imported module,Failed to fetch) and performs a full page reload instead of just resetting React error state — which was ineffective because React.lazy caches rejected promises. -
WASM promise cache invalidation: liboqs KEM and signature instance caches (
liboqs_kem.ts,liboqs_sig.ts) now evict rejected promises on failure so the next call retries the WASM factory instead of permanently returning the same dead promise. Cleanup also catches already-failed promises to prevent unhandled rejection warnings. -
LmsService init race condition: Concurrent
init()callers now detect whether the first init attempt succeeded or failed, instead of silently returning without a module. Failed script elements are removed from the DOM so retries can re-add them.
[1.29.0] - 2026-02-22
Added
-
Industry-weighted composite scoring (
/assess): Risk scores now use industry-tailored category weights — government and finance boost regulatory pressure (0.30), telecom and energy boost migration complexity (0.25), and technology boosts organizational readiness (0.30) — instead of fixed weights across all industries. -
Country planning horizons (
/assess): HNDL and HNFL risk windows now use country-specific regulatory deadlines (US/France/Canada target 2030, Germany/UK/Australia target 2035) instead of a universal 2035 planning horizon. Users in countries with earlier deadlines see more urgent risk assessments. -
Compliance deadline-aware scoring (
/assess): Regulatory pressure scoring now parses actual deadline years from compliance frameworks. Passed deadlines score 15 points, imminent (≤2 years) score 14, near-term (≤5 years) score 12, and distant deadlines score 8 — replacing the previous flat per-framework scoring. -
Category score driver explanations (
/assess): Each of the four risk category progress bars now shows a human-readable explanation of what drives the score (e.g., "3 vulnerable algorithms, high sensitivity, 25-year retention"). -
Industry-specific recommended actions (
/assess): Nine industry-tailored actions added — from CNSA 2.0 alignment for government to SCADA/OT assessment for energy, V2X planning for automotive, and cloud KMS evaluation for technology. -
Algorithm-highlighted threat landscape (
/assess): Threat rows matching the user's selected algorithms are now visually highlighted with a primary-colored left border and subtle background. -
Country-aware migration roadmap (
/assess): Roadmap swim lane phases (Immediate, Short-term, Long-term) now dynamically compress or expand based on deadline proximity — urgent deadlines (≤24 months) compress to 0–3/3–12 months, distant deadlines (≥60 months) expand to 0–12/12–24 months. -
Industry-aware retention defaults (
/assess): "I don't know" retention answers now use industry-specific conservative defaults from CSV data (75 years for government, 40 for aerospace) instead of a flat 15-year default.
Changed
-
Methodology modal accuracy (
/assess): Updated risk score description to reflect actual industry-tailored weights and deadline proximity scoring. Added country planning horizon context to HNDL description. Updated "I don't know" section with industry-specific retention defaults. -
Country urgency scoring uncapped (
/assess): Removed the artificial cap on country regulatory urgency contribution, allowing high-urgency countries (US, France) to contribute their full weight to the regulatory pressure score. -
Executive summary country context (
/assess): When a user's country has an accelerated planning horizon, the executive summary now explicitly mentions the country's target year relative to the global planning horizon.
[1.28.0] - 2026-02-22
Added
- Report methodology modal (
/assess): Info button next to the report title opens a modal explaining how the risk score, four risk categories, HNDL/HNFL risk windows, conservative defaults for "I don't know" responses, and action prioritization work. Hidden in print view.
Fixed
- Compliance impact industry filtering (
/assess): Fixed bug where telecom-only compliance frameworks (e.g., GSMA NG.116) appeared in Finance industry reports. Changing industry or country now clears stale compliance selections, and the scoring engine filters out frameworks that don't match the selected industry.
[1.27.0] - 2026-02-22
Added
- Web Browsers category in Migrate catalog (
/migrate): Added Google Chrome, Microsoft Edge, Mozilla Firefox, and Apple Safari (CSC-037) with ML-KEM TLS 1.3 support details. All four tagged for both migrate and launch phases. New02222026.csvcreated per CSV maintenance rules.
Changed
- Three-tier FIPS validation badge (
/migrate): FIPS column now distinguishes between FIPS 140/203 certified (green "Validated"), indirect or partial claims like FedRAMP, WebTrust, FIPS mode (amber "Partial"), and no validation (gray "No"). Previously any "Yes" value showed a misleading green "Validated" badge.
Fixed
- CSV line ending normalization: Fixed mixed CRLF/LF line endings in software reference CSVs that caused PapaParse to silently drop rows with quoted comma fields.
[1.26.0] - 2026-02-22
Added
-
Sources button on Compliance page (
/compliance): Page header now includes aSourcesButtongiving users direct access to authoritative sources referenced in the compliance landscape. -
Full header cluster on Migrate page (
/migrate): The PQC Migration Catalog page header now includes anArrowRightLefticon, plusSourcesButton,ShareButton, andGlossaryButton, completing the standard content-page header pattern across all major views. -
Share & Glossary buttons on OpenSSL Studio (
/openssl): Desktop header now includesShareButtonandGlossaryButton(hidden on mobile), consistent with other tool pages.
Changed
- Authoritative sources data model (
src/data/authoritativeSourcesData.ts): AddedcomplianceCsvandmigrateCsvboolean fields toAuthoritativeSource; extendedViewTypeto include'Compliance'and'Migrate'; CSV parser updated to 13 columns withlastVerifiedDateshifted from index 10 to index 12.
Fixed
- Playground page layout (
/playground): Description paragraph moved above the button cluster so it reads correctly before the action controls rather than inline with them.
[1.25.0] - 2026-02-22
Added
-
Persona-aware journey step rail (
/): The landing page now features a horizontal 7-step progression rail — Learn → Assess → Explore → Test → Deploy → Ramp Up → Stay Agile — replacing the previous feature-grid layout. Inaccessible steps are dimmed at 35% opacity based on the active persona; persona-priority steps receive a "For you" badge. Each step card shows route chips for all paths (Explore → Timeline / Algorithms / Library; Stay Agile → Threats / Leaders; single-path steps show their chip too for visual consistency). -
Hero messaging refresh (
/): Updated hero tagline to "The quantum era is here. Your transformation journey starts now." with a new "Your PQC Transformation" headline and persona-aware CTA buttons routing each role to its most relevant starting point (Executive → Assess, Developer → Playground, Architect → Timeline, Researcher → Algorithms).
Fixed
-
Landing — path chips on all step cards (
/): Route chips previously only rendered on multi-path steps (step.paths.length > 1guard removed). All 7 journey cards now display their chips, giving every step a consistent visual affordance. -
Landing — step rail connector alignment (
/): Vertical connector lines between step circles now pin correctly to circle center regardless of card column height (fixed viaitems-start+mt-4offset on the connector div). -
Tests — ComplianceView and audit_suci (
src/): Resolved pre-existing failures by wrappingrender()calls in<MemoryRouter>, correcting the default-tab assertion ("landscape"not"all"), addingBufferto the WASM testvmcontext, and replacingnew Function()withvm.runInContext()for safer WASM glue code loading.
[1.24.0] - 2026-02-22
Added
-
Entropy & Randomness quiz category (
/learn/quiz): Newentropy-randomnesscategory with Dice icon covering SP 800-90 A/B/C, DRBG mechanisms, entropy sources, TRNG vs QRNG, and min-entropy estimation. Integrated into Developer, Architect, and Researcher learning personas — quiz paths and checkpoint categories updated; estimated path minutes increased accordingly. -
BB84 simulator — configurable Eve interception rate (
/learn): Eve eavesdropping is no longer all-or-nothing. A slider (10%–100%) controls the fraction of qubits Eve intercepts, enabling partial-eavesdropping experiments that show how QBER scales with interception probability.BB84ServicegainseveInterceptionRateandchannelNoiseparameters;runFullProtocolandcreateInitialStateupdated accordingly. -
QKD deployment explorer — 2 new US deployments (
/learn): Added AWS Center for Quantum Networking (CQN) — Amazon's research initiative focused on quantum memory, repeaters, and scalable networking toward a global quantum internet — and the Chicago Quantum Exchange (CQE) 111 km fiber network connecting UChicago, Argonne National Laboratory, and Toshiba, demonstrating multi-node entanglement distribution. -
Entropy & Randomness module — FIPS 203/204 seed requirements (
/learn): New callout section documents that ML-KEM (FIPS 203) requires exactly 32 bytes of full entropy fordandzseeds, ML-DSA (FIPS 204) requires 32 bytes forρ,ρ', andKseeds, and that per SP 800-131A Rev 3 the RBG security strength must match the target PQC security category (e.g., 256-bit RBG for ML-KEM-1024 Category 5). Also added LMS/XMSS stateful signature entropy failure note and XOF_DRBG (SHAKE-based, SP 800-90A Rev 2) to the DRBG mechanism comparison. -
Standards Library — 4 new records (
/library): RFC 9258 (TLS 1.3 external PSK importer for QKD key injection), NIST SP 800-108 Rev 1 (KDF using PRFs — counter, feedback, and double-pipeline modes; PKCS#11CKM_SP800_108_COUNTER_KDF), NIST SP 800-56C Rev 2 (key derivation for key-establishment including hybrid QKD+PQC EtE), and PKCS#11 v3.0 OASIS Standard (CKM_HKDF_DERIVE,CKM_SP800_108_COUNTER_KDF,CKM_HKDF_KEY_GEN). All tagged withqkd,key-management,hybrid-crypto, ortls-basicscross-references. -
ScoreCard — scoring transparency modal (
/): An info button (ⓘ) on the Learning Journey ScoreCard opens aScoringModalexplaining the four weighted dimensions: Knowledge (40%), Breadth (30%), Practice (20%), and Time & Consistency (10%), with belt thresholds displayed for each rank.
Fixed
-
Security — Assessment URL parameter injection (
/assess): URL-hydrated state (industry, country, algorithms, compliance frameworks, use cases, infrastructure) is now validated against allowlists derived from the canonicalassessmentDataconstants andREGION_COUNTRIES_MAP. Arbitrary values injected via shared assessment URLs are silently discarded rather than written to the store. -
Security — XSS-safe global error overlay (
src/main.tsx): ReplacedinnerHTML-based error display with safe DOM construction (textContent/createElement). Handler is now gated behindimport.meta.env.DEVso it is completely absent from production bundles. -
Security — OpenSSL worker eval() removal (
/openssl): Thefetch()+eval()fallback path in the WASM script loader has been replaced with a hard fail and descriptive error message. The worker is a Classic Worker and must useimportScripts; silent eval was a supply-chain risk and is now gone.
[1.23.0] - 2026-02-22
Added
-
Quantum Key Distribution (QKD) Learning Module (
/learn): New module with three workshop parts — (1) Interactive BB84 protocol simulator with configurable qubit count (8/16/32) and toggleable Eve eavesdropper for eavesdropping detection demos, (2) Post-processing visualization covering error correction, privacy amplification, and hybrid key derivation, and (3) Global QKD deployment explorer with real-world adoption data. Includes Learn, Workshop, Exercises, and References tabs. Fully integrated with InlineTooltip glossary, time-spent tracking, and the Learning Journey scorecard. -
Compliance Landscape Dashboard (
/compliance): New interactive compliance visualization with a 2024–2036 deadline timeline (urgency-coded: imminent/near-term/future), framework cards showing PQC requirements, region/industry chips, and cross-references to Library and Timeline. Persona integration pre-selects relevant region/industry filters. Includes summary stats (total frameworks, PQC-required count, deadline count) and expandable framework detail with related documents. -
Four new UI components (
src/components/ui/):<Skeleton>(pulse loading placeholder),<EmptyState>(icon/title/description/action),<ErrorAlert>(retry-capable error display), and<CategoryBadge>(region/industry/level semantic badge). All use semantic tokens only and fulfill missing component entries fromdocs/ux-standard.md. -
Assessment wizard modularized: The 13-step risk assessment wizard is now split into dedicated step components (
src/components/Assess/steps/) — one file per step — improving maintainability and enabling independent testing. Steps include multi-select fields for data sensitivity, retention, and credential lifetime with consistent "Unknown" escape-hatch buttons. -
Assessment data layer extracted: Scoring logic, type definitions (
AssessmentInput,HNDLRiskWindow,HNFLRiskWindow), and algorithm database extracted intosrc/hooks/assessmentData.ts,assessmentTypes.ts, andassessmentUtils.tsfor cleaner separation of concerns and reuse across wizard steps. -
UX design system documentation (
docs/): Addedux-standard.md(full semantic token standard, component contracts, page header conventions) andux-gap-analysis.md(current violations inventory and remediation backlog). -
Compliance CSV (
src/data/compliance_02222026.csv): New date-stamped compliance framework dataset with framework metadata, deadlines, regions, industries, PQC requirements, and cross-references. Auto-discovered bycomplianceData.tsviaimport.meta.glob.
[1.22.0] - 2026-02-22
Added
-
Persona-filtered quiz (
/learn/quiz): Quiz questions now carry apersonastag (CSV column). When a learning persona is active, the quiz module filters questions and dynamically recomputes category metadata (question counts, available categories) so each persona sees only relevant content. Quick, Full, and Category modes all respect the active persona filter. -
Glossary expansion (
/learn): Added 24 new glossary terms covering TLS (cipher suites, handshake), VPN/SSH (Rosenpass, sntrup761), email signing (SignedData, EnvelopedData, KEMRecipientInfo), key management (PKCS#11, key lifecycle), stateful signatures (Merkle tree, Winternitz OTS), digital assets (P2PKH, BIP44), 5G security (ECIES, AUSF, SIDF, UDM), and digital identity (PID, Relying Party, Wallet Instance Attestation). Enriched ~40 existing terms withrelatedModuledeep links to learning modules. -
Glossary button in Learn header (
/learn): Added theGlossaryButtoncomponent to thePKILearningViewheader bar, accessible from both the dashboard and individual module views.
[1.21.1] - 2026-02-22
Added
- Simulated Hybrid KEM in Hybrid Crypto Workshop (
/learn): X25519MLKEM768 is not available as a standalonegenpkeyalgorithm in the OpenSSL WASM build. The workshop now simulates hybrid KEM by running X25519 ECDH (Web Crypto API) and ML-KEM-768 (OpenSSL WASM) as separate operations, then combining shared secrets via HKDF-Extract (SHA-256). The KEM demo shows side-by-side cards for pure PQC (ML-KEM-768) and hybrid (X25519 + ML-KEM-768) with component secret breakdown (PQC secret, classical secret, combined HKDF secret) and per-phase timing. Key generation step produces separate X25519 and ML-KEM-768 keys with combined PEM output.
Fixed
-
Hybrid Crypto WASM file persistence (
/learn): All HybridCryptoService methods now correctly pass file data between OpenSSL WASM calls. Previously, key files, ciphertext, and signatures were lost betweenopenSSLService.execute()invocations because each call creates a fresh WASM instance. Fixes ML-DSA-65 certificate generation ("No such file or directory") and KEM encapsulation/decapsulation failures. -
Complete Module button visibility (
/learn): The "Complete Module" button now correctly appears on the last step of all learning modules including Quantum Threats and Hybrid Crypto. Previously the button was hidden on the final step due to an off-by-one check. -
Composite certificate generation (
/learn): Fixed CompositeCertificateViewer to pass key file data when generating self-signed certificates, resolving "Could not open file" errors for both ECDSA P-256 and ML-DSA-65 certificates. -
Library detail modal on mobile (
/library): Made the document detail modal responsive on mobile devices with proper layout and scrolling.
[1.21.0] - 2026-02-21
Added
-
7-layer Enterprise Infrastructure Stack: Restructured the Migrate module from 5 layers to 7 distinct architectural tiers — Cloud, Network, Application Servers & Software, Database, Security Stack, Operating System, Hardware & Secure Elements. Each layer has a dedicated icon, color scheme, and descriptive subtitle. Products can now span multiple layers via comma-separated values (e.g., AWS KMS appears under both Cloud and Security Stack), with the filter, table icon, and layer label column all supporting multi-layer display.
-
Security Stack layer with 42 products: New dedicated layer for security-critical infrastructure covering KMS, PKI, Crypto Libraries, Certificate Lifecycle Management, Secrets Management, IAM, Data Protection, and CIAM. Includes Venafi, Keyfactor, HashiCorp Vault, Okta, Keycloak, Auth0, ForgeRock, DigiCert, Sectigo, Thales CipherTrust DSP, IBM Guardium, Virtru, and core cryptographic libraries (OpenSSL, Bouncy Castle, liboqs, wolfSSL, Google Tink, AWS-LC).
-
30+ new product entries across 10 categories: Cloud KMS (AWS, Google, Azure), Cloud HSM (Thales Luna, AWS CloudHSM, Azure Dedicated HSM), QRNG (ID Quantique Quantis, Quantinuum Quantum Origin, QuintessenceLabs), QKD (ID Quantique Cerberis, Toshiba QKD, Quantum Bridge), Network Encryptors (Thales HSE, Senetas CN7000, Adva FSP 3000, Ciena WaveLogic 6), Confidential Computing (Intel TDX, AMD SEV-SNP, ARM CCA), IAM (Okta, Keycloak, Ping Identity), CIAM (Auth0, ForgeRock), Data Protection (Thales CipherTrust DSP, IBM Guardium, Virtru), and Certificate Lifecycle Management (DigiCert, Sectigo, EJBCA).
-
PQC Support filter: Replaced the Platform dropdown with a PQC Support filter that normalizes the detailed capability strings into four broad groups — Yes, Limited, Planned, No — so users can instantly find products with production-ready quantum-safe capabilities versus those still on the roadmap.
-
Contextual filter cascading: Category and PQC Support dropdowns now derive their available options from the currently filtered dataset. Selecting a layer automatically reduces the Category dropdown to only categories present in that layer, and vice versa. Stale selections auto-reset to "All" when they become unavailable.
Changed
-
Reference Catalog renamed: "Software Reference Catalog" heading renamed to "Reference Catalog", "Software" column renamed to "Product", "View Related Software" button renamed to "View Related Products", and "Software Coverage Gaps" renamed to "Coverage Gaps" throughout the Migrate module.
-
193 total products (up from 161), with multi-layer overlap bringing effective per-layer counts to: Cloud 24, Network 13, Application 86, Database 6, Security Stack 42, OS 7, Hardware 27.
Fixed
-
CSV data quality audit: Consolidated redundant PKI category (CSC-020 merged into CSC-004), removed duplicate HashiCorp Vault row, corrected Palo Alto PAN-OS layer assignment from OS to Network to match its NGFW peer group.
-
Thales Luna Cloud HSM accuracy: Corrected PQC support from "Yes (ML-KEM ML-DSA FIPS 140-3 L3)" to "No (PQC roadmap pending)" and FIPS validation from "FIPS 140-3 L3" to "FIPS 140-2 L3" based on current product capabilities.
[1.20.0] - 2026-02-21
Added
- HNFL concept in PQC 101: The introductory module now covers both harvest-now attack models side-by-side. A new "Key concept: HNFL" panel in Step 1 explains that "Harvest Now, Forge Later" targets authenticity and integrity — adversaries capture signed artifacts (firmware images, certificate chains, code-signing blobs) today and retroactively forge or repudiate those signatures once a CRQC exists. This contrasts with HNDL (which targets confidentiality). The "Digital signatures & code signing" risk bullet now surfaces the HNFL label as a forward reference, and Exercise 2 has been reframed to ask learners to distinguish both threat models and the algorithm families (ML-DSA/SLH-DSA for HNFL, ML-KEM for HNDL) that address each.
[1.19.0] - 2026-02-21
Added
- Expanded quantum threat dataset (80 threats, 20 industries): The Quantum Threats module now draws from an updated dataset covering Aerospace/Aviation, Automotive/Connected Vehicles, Cloud Computing, Cryptocurrency/Blockchain, Energy/Critical Infrastructure, Financial Services, Government/Defense, Healthcare, Insurance, IoT, IT/Software, Legal/eSignature, Media/DRM, Payment Card Industry, Rail/Transit, Retail/E-Commerce, Supply Chain/Logistics, Telecommunications, and Water/Wastewater — each with criticality rating, vulnerable algorithms, PQC replacement recommendation, and primary source citations.
- Expanded global PQC timeline: Timeline updated with new milestones through February 2026 including DoD/SandboxAQ AQtive Guard deployment (Pentagon 5-year contract), Ethereum Foundation PQC security initiative ($2M research prize pool, Jan 2026), CISA federal PQC procurement guidance (Jan 2026, pursuant to EO 14306), G7 financial sector PQC roadmap (Jan 2026, U.S. Treasury + Bank of England), National Quantum Initiative reauthorization (Jan 2026), Samsung/Thales ML-KEM embedded secure element (Jan 2026), Australia ASD migration deadlines (2026–2030), Canada departmental planning deadlines (2026–2031), China NGCC program and financial sector milestones (2025–2030), EU coordinated PQC roadmap milestones (2026–2035), France ANSSI first PQC certifications (Sept–Oct 2025), and Germany BSI quantum-secure demonstrator (Nov 2025).
Changed
- Transformation Leaders updated to 100 verified profiles: Dataset refreshed with corrections and new additions including Philip Intallura (HSBC Group Head Quantum Technologies), Dr. Krysta Svore (NVIDIA, former Microsoft Azure Quantum VP), Niccolò De Masi (IonQ Chairman & CEO), Bruno Couillard (Crypto4A, pioneer of crypto-agile HSMs), Denis Mandich (Qrypt, 20 years US Intelligence Community), Éric Brier (Thales, FALCON algorithm co-designer), Dr. Bob Sutor (Sutor Group, former IBM VP Quantum, 40+ years at IBM), Prof. Bill Buchanan OBE (Edinburgh Napier, Stanford top 2% scientists 2025), Dr. Colin Soutar (Deloitte Global Quantum Cyber Readiness Lead), Konstantinos Karagiannis (Protiviti Director Quantum Computing Services), Sheetal Mehta (NTT DATA SVP Global Head of Cybersecurity), and Tom Patterson (Accenture Managing Director Emerging Technology Security).
- Software reference corrected — Google Cloud HSM now shows PQC support: Google Cloud HSM entry updated to reflect that PQC key types (ML-KEM, ML-DSA, SLH-DSA, X-Wing) are available through Cloud KMS with HSM protection level. Previous entry incorrectly listed PQC as unavailable.
[1.18.1] - 2026-02-21
Added
- Consistent "I don't know" UX across all wizard steps: Steps 6 (Migration Status), 11 (Crypto Agility), and 14 (Timeline Pressure) now use the same dashed-border escape-hatch button pattern as Step 3. Previously these three steps embedded "Don't Know" as a regular radio option indistinguishable from substantive answers.
- Consolidated HNDL / HNFL Risk Windows section in report: The two separate risk window panels are now unified into a single "Harvest-Now Attack Risk Windows" section with a Key Milestones table at the top (Today, Estimated CRQC, Data/Credential expiry dates with at-risk / safe badges) followed by the individual timeline visualizations.
- HNDL / HNFL risk windows for "I don't know" users: When users select "I don't know" on the Data Retention or Credential Lifetime steps, the report now shows risk window visualizations using conservative defaults (15-year retention, 10-year credential lifetime) with "(estimated)" labels and guidance to define policies for a precise assessment. Previously these sections were invisible when the user didn't know their values.
Changed
- "I don't know" scoring treats unknowns as high risk: All "don't know" inputs are now scored
conservatively rather than as low/moderate risk:
- Crypto agility unknown: 0.7 → 0.9 (same as hardcoded)
- Timeline pressure unknown: 1.1× → 1.2× (near-term pressure assumed)
- Sensitivity unknown: treated as "high" (was implicitly "low")
- Retention unknown: 12pts retention score (was 0)
- Infrastructure unknown: 15pts complexity (was 10)
- Vendor dependency unknown: treated as heavy-vendor (was mixed)
[1.18.0] - 2026-02-21
Added
- "I don't know" escape hatches in Risk Assessment wizard: Six wizard steps now include explicit
uncertainty options, ensuring users who lack complete information can still complete the assessment:
- Step 3 (Current Crypto): "I don't know / Not sure" chip clears algorithm selections and triggers conservative RSA-2048 + ECDH equivalent scoring in the engine; all algorithm chips dim while active. Wizard cannot advance without at least one algorithm selected or the unknown flag set.
- Step 5 (Compliance): "None apply / I don't know" button clears all selected frameworks (optional step — no blocking).
- Step 7 (Use Cases): Styled "I don't know / None of these" button replaces the old plain text skip hint (optional step — no blocking).
- Step 8 (Data Retention): "I don't know / Not sure" chip clears retention selections; engine falls back to sensitivity-based HNDL estimate. Wizard requires at least one selection or the unknown flag before advancing.
- Step 11 (Infrastructure): Styled "None of these / I don't know" button (optional step — no blocking).
- Step 12 (Vendors): "I don't know / Not sure" button clears vendor selection and defaults
engine to
mixeddependency weighting. Wizard requires a selection or the unknown flag.
- Compliance framework descriptions in Step 5: Each compliance framework button now shows a description sub-line — industry-specific frameworks use their config description; universal frameworks (NIST, NIS2, etc.) show the deadline and first sentence of regulatory notes.
- Awareness-gap remediation actions: When a user answers "I don't know" on any wizard step, the assessment report automatically surfaces targeted recommended actions at the top of the priority list to help close those knowledge gaps — e.g. "Conduct a cryptographic asset inventory" for unknown algorithms, "Establish a data retention policy" for unknown retention, etc. Covers unknown crypto, unknown retention, unknown vendors, missing compliance selections, missing use cases, and missing infrastructure data.
- Quick Assessment executive summary: Quick assessments (steps 1–6 only) now produce a concise executive summary paragraph in the report, summarising risk level, vulnerable algorithms, compliance pressure, and migration status. Previously only comprehensive assessments had this.
- Quick/Comprehensive badge in report header: A small pill badge in the report header identifies whether the result came from a Quick or Comprehensive assessment.
- HNDL warning banner for quick assessments: When a quick assessment is completed with
highorcriticaldata sensitivity, a warning banner appears in the report noting that Harvest-Now-Decrypt-Later risk was not quantified (data retention was not collected) and recommending a comprehensive assessment. - Country-aware regulatory pressure scoring: The compound engine now incorporates a
COUNTRY_REGULATORY_URGENCYmap (14 jurisdictions) so selecting a country with active PQC mandates (e.g. United States, France) increases the Regulatory Pressure category score. The legacy quick path also receives a country boost proportional to the urgency weight. requiresPQC: nullthird state for unrecognised compliance frameworks: Compliance frameworks not in the database now surface as "Status unknown" (grey badge) rather than "No PQC mandate yet" (which was misleading). The report's compliance impact panel handles all three states:true(PQC Required / amber),null(Status unknown / grey),false(No PQC mandate yet / grey).
Changed
- Risk thresholds recalibrated: Low/Medium/High/Critical boundaries moved from 30/60/80 to 25/55/75. This better reflects the distribution of real scores — fewer organisations incorrectly land in "Low" and the "Critical" band triggers sooner for high-exposure profiles.
- NIS2 deadline text updated: The NIS2 Directive entry now reads "October 2024 (transposition passed — enforcement underway)" to reflect that the transposition deadline has passed and enforcement is active across the EU.
- Assessment stale threshold extended: In-progress (incomplete) wizard sessions are now preserved for 30 days before being auto-reset (previously 7 days), reducing accidental loss of partially-completed assessments.
[1.17.5] - 2026-02-21
Changed
- Dependency upgrades: Merged 4 Dependabot updates —
@vitest/coverage-v84.0.18,eslint-plugin-react-refresh0.5.0,jsdom28.1.0,eslint-plugin-security4.0.0. - ESLint config for security plugin v4: Adapted flat config to manually extract plugins and
rules from
security.configs.recommendedto avoid circular reference crash indefineConfig(). - Updated SBOM: Refreshed 9 dependency versions in About page to match actual installed (React 19.2.4, Framer Motion 12.34.2, Tailwind CSS 4.2.0, tailwind-merge 3.5.0, React Router 7.13.0, Zustand 5.0.11, Prettier 3.8.1, Vitest 4.0.18, Playwright 1.58.2).
- Security audit date: Bumped to February 21, 2026 (same findings — 13 dev-only, 0 production).
Fixed
- Persona "For you" badge:
setPersonano longer resetssuppressSuggestionto false, preventing the assessment-inferred badge from reappearing after selecting then clearing a role.
[1.17.4] - 2026-02-20
Added
- Persona-aware guided tour: The first-visit onboarding tour now filters steps to only highlight features visible in the active persona's navigation — an Executive won't be shown the Playground or OpenSSL Studio steps.
- Persona-aware hero CTAs: Landing page primary and secondary call-to-action buttons now adapt to the selected role — Executives are directed to Risk Assessment, Developers to the Playground, Architects to the Migration Timeline, and Researchers to Algorithm Explorer.
- "For you" persona badge on landing: After completing the Risk Assessment, the inferred recommended persona is surfaced with a "For you" badge on the home page role picker.
- Cross-view CTAs: Assessment report now includes a "Start Learning" link to the persona-matched learning path; the learning path panel includes a "Start Assessment" CTA when no assessment has been completed.
- Compliance and Migrate in executive nav:
/complianceand/migrateadded to the Executive persona's navigation — assessment report links to both views are no longer dead ends. - Assess in developer nav:
/assessadded to the Developer persona's navigation — the algorithm migration matrix in the report is now reachable. - Playground in architect nav:
/playgroundadded to the Security Architect persona's navigation for hands-on PoC algorithm evaluation.
Changed
- Persona inference rewritten:
inferPersonaFromAssessment()now correctly maps assessment answers to all four persona types. Previous implementation used wrong enum values and always defaulted to Architect; Researcher was never reachable. Now uses correct field values (not-started/started/planning,fully-abstracted, etc.) and returnsnullwhen signal is insufficient. - Default persona is now null: First-time visitors see the full navigation (same as Researcher) rather than being silently assigned Researcher. "Clear all" in the persona picker now fully resets to no selection.
- Developer learning path expanded: Added Quantum Threats module (after PQC 101) and Crypto Agility module (after Hybrid Crypto). Path now includes a 4th checkpoint and grows from 405 to 495 estimated minutes.
- Architect learning path expanded: Added TLS Basics module (after Hybrid Crypto). Estimated time grows from 420 to 465 minutes.
- Executive quiz categories fixed: Removed
industry-threatsfrom quiz pre-selection — the corresponding module was never taught in the executive path. Replaced withcrypto-agilitywhich is covered by the Crypto Agility module. - Persona order unified: Role buttons across home page and learn page now follow the same order: Executive → Developer → Architect → Researcher.
- Assessment report link filtering: "Explore" action links in the assessment report are now hidden when they point to a route outside the active persona's navigation — no more dead links.
- Researcher learning path: Added 5th checkpoint after the three application modules (Digital Assets, 5G Security, Digital ID) for consistent knowledge verification before the final quiz.
[1.17.3] - 2026-02-20
Changed
- Single-select industry: The industry picker on the home page now works as single-select — clicking an industry selects it exclusively; clicking the active industry deselects it (returns to All Industries). Previously allowed multi-select.
- Timeline country dropdown scoped to region: When a region is selected on the home page, the Timeline country filter shows only that region's group and its individual countries (Americas → US + Canada, Europe → 8 EU countries, APAC → 8 APAC countries; Global/none shows all).
- Digital ID learning module: Finance & Banking added as a relevant industry alongside Government & Defense and Healthcare.
[1.17.2] - 2026-02-20
Fixed
- Library industry filter: Normalized 40+ raw CSV industry aliases (e.g.
Finance,Gov,Telecom,Critical Infrastructure) to the 11 canonical industry names used across the app. The industry dropdown now shows clean canonical names instead of 30+ fragmented raw tags. - Library persona → filter: Selecting an industry on the home page now correctly pre-filters the Library (was returning 0 results due to vocabulary mismatch between canonical names and CSV tags).
- Library untagged items: Documents with no specific industry tag (broadly applicable standards) now appear in all industry-filtered views instead of being hidden.
Changed
- Assessment country step: Step 2 (Country) now lists only the countries that belong to the region selected on the home page (Americas → US + Canada, Europe → 8 EU countries, APAC → 8 APAC countries, Global/none → all countries).
- Assessment pre-seeding: Industry and country fields are now seeded from the home page persona selection when starting a fresh assessment (no URL params, no in-progress assessment).
[1.17.1] - 2026-02-21
Added
- Mobile Compliance View (
/compliance): New dedicated mobile layout with card-based display for compliance records, optimized for touch navigation and small screens. - Mobile Threats List (
/threats): New dedicated mobile layout for the threats dashboard, presenting threat cards in a vertically stacked, touch-friendly format.
Changed
- Compliance Table tooltips: PQC mechanism and classical algorithm tooltips now support tap-to-toggle on mobile in addition to hover on desktop, replacing the hover-only interaction.
- Tooltip viewport clamping: Tooltip width constrained to
min(256px, 100vw-32px)to prevent overflow on small screens. - Gantt Detail Popover: Refactored layout for improved readability and usability on mobile.
- Filter Dropdown: Adjusted touch targets for better mobile usability.
- Personalization Section: Minor layout refinements for small-screen display.
- Main Layout: Navigation adjustments for mobile responsiveness.
[1.17.0] - 2026-02-20
Added
- Personalization Panel (
/): New three-dimension picker on the home page lets users set their role (Executive, Developer, Architect, Researcher), region (Americas, Europe, APAC, Global), and industry (11 sectors) in a single always-editable section below the hero stats bar. Selections persist across sessions via localStorage. - Persona-driven navigation: Selecting a role hides irrelevant pages from the nav; always-visible pages (Home, Learn, Timeline, Threats, About) remain accessible to all users regardless of persona.
- "For you" card badges: Landing page feature cards show a "For you" badge for the top 3 pages most relevant to the active persona.
- Region pre-seeding: Selecting a region pre-filters the Timeline on mount and pre-seeds the Assessment country field (Americas → United States, Europe → France, APAC → Japan).
- Industry pre-seeding: Selecting an industry pre-seeds the Assessment industry field, pre-filters the Threats dashboard, adds an industry filter chip row to the Library, and highlights relevant Learning modules with a "Relevant" badge.
- Industry icons: Each industry chip in the personalization panel now displays a contextual
icon (e.g.
Landmarkfor Finance,Shieldfor Government,HeartPulsefor Healthcare). - "All Industries" chip: Explicit chip in the industry row to reset to no filter, always highlighted when no industry is selected.
Changed
- Learn module: Removed the in-Learn persona picker; learning paths are now driven entirely by the home page persona selection. When no persona is set, the full module grid is shown with a "Personalize from home" button linking back to the home page.
[1.16.1] - 2026-02-20
Added
- Executive Summary Dashboard (
/executive): High-level PQC readiness metrics, organizational risk scores, and priority action items. - 7 New PKI Learning Modules (
/learn): Added new comprehensive interactive courses:- Quantum Threats (HNDL Timeline, Algorithm Vulnerability)
- Hybrid Cryptography (Key Generation, Signatures)
- Crypto Agility & Architecture (Abstraction, CBOM)
- Stateful Hash Signatures (LMS, XMSS)
- Email & Document Signing (S/MIME, CMS)
- VPN/IPsec & SSH
- Key Management & HSM
Fixed
- Time Tracking Analytics (
/learn): Replaced erroneousDate.now()logic that was previously causing massivetimeSpentmetric inflation. Restored sub-minutefloatstate precision to correctly accumulate elapsed time across all 14 learning modules, and applied a clean decimal-mask (Math.floor()) during frontend Dashboard render. - KeyRotationPlanner Build: Fixed a strict TS compilation error regarding target algorithms missing data keys.
[1.16.0] - 2026-02-20
Added
Learning Platform Restructure
- Learning Platform Restructure (
/learn): PKI Workshop, Digital Assets, and 5G Security modules restructured to the 3-tab layout (Learn | Simulate | Exercises) established by TLS Basics. Each module now separates educational theory from hands-on practice and includes guided exercise scenarios with "Load & Run" presets and a Quiz CTA. - PKI Workshop (
/learn/pki-workshop): New Learn tab with 6 educational sections (What is PKI, Certificate Lifecycle with interactive diagram, X.509 Anatomy, Trust Chains & Validation, PQC in PKI, CTA). New Exercises tab with 5 guided scenarios (RSA-2048, ECDSA P-256, ML-DSA-44, ML-DSA-87, SLH-DSA) that pre-configure the workshop and navigate to the correct step. - Digital Assets (
/learn/digital-assets): New Learn tab with blockchain cryptography introduction covering key generation, address derivation, digital signing, and PQC threat analysis per chain. New Exercises tab with guided scenarios for Bitcoin, Ethereum, Solana, and HD Wallet flows. - 5G Security (
/learn/5g-security): New Learn tab with 6 sections — What is 5G Security (3GPP TS 33.501 overview, IMSI catcher history), The Three Pillars (Privacy/Authentication/ Provisioning), SUCI Protection Schemes (Profile A/B/C comparison), 5G-AKA Authentication (MILENAGE f1-f5, key hierarchy), SIM Provisioning & Supply Chain, Post-Quantum Threat to 5G (quantum-vulnerable vs quantum-resistant components). New Exercises tab with 5 scenarios (Profile A Classical, Profile B NIST, Profile C Hybrid, Profile C Pure PQC, 5G-AKA Authentication).
Data Expansion
- Leaders Board Expanded: 12 new PQC leaders added via
leaders_02202026.csv— Prof Bill Buchanan OBE (Edinburgh Napier), Dr. Bob Sutor (Sutor Group), Bruno Couillard (Crypto4A), Dr. Colin Soutar (Deloitte), Denis Mandich (Qrypt), Éric Brier (Thales), Konstantinos Karagiannis (Protiviti), Dr. Krysta Svore (Microsoft Azure Quantum), Niccolò De Masi (IonQ), Philip Intallura (HSBC), Sheetal Mehta (NTT DATA), Tom Patterson (Accenture); total now 98 leaders
Changed
- Dashboard Progress (
/learn): Module progress calculation now uses accurate per-module step counts via aMODULE_STEP_COUNTSmap instead of a hardcoded default of 4 steps. PKI Workshop description and duration updated (45 min → 60 min).
Fixed
- Algorithm Data: 10 factual inaccuracies corrected across PQC algorithm profiles
- Migration Guide: 5 factual inaccuracies corrected in migration planning content
[1.15.0] - 2026-02-20
Added
- Quiz CSV Data Layer (
/learn/quiz): Extracted all quiz questions from hardcoded TypeScript into a date-stamped CSV file (pqcquiz_02192026.csv), following the established pattern used by Leaders, Timeline, Threats, and Library modules. The quiz software auto-selects the most recent CSV viaimport.meta.globin the newquizDataLoader.tsloader. - Quiz Mode Column (
/learn/quiz): Newquiz_modefield on every question (quick,full,both) enables pool-based filtering — Quick Quiz draws from thequick+bothpool (~121 questions), Full Assessment samples from all 162 questions. - Expanded Question Pool (
/learn/quiz): Grew from 80 to 162 questions across 8 categories, grounded in the app's authoritative data sources (algorithm reference, timeline, threats, and learn module content). ~20 questions per category. - Smart Sampling with Guaranteed Coverage (
/learn/quiz): Both quiz modes now guarantee minimum category representation — Quick Quiz: 20 questions with ≥2 per category; Full Assessment: 80 questions with ≥10 per category. Every run produces a unique random mix. - Source Attribution (
/learn/quiz): Quiz intro header displays the source CSV filename and last-updated date, consistent with other data-driven pages.
Changed
- Full Assessment (
/learn/quiz): Changed from "all questions" to an 80-question random sample drawn from the full 162-question pool with guaranteed category coverage. - Quiz Data Structure (
/learn/quiz):quizData.tsis now a thin re-export shim; all data loading and category metadata live inquizDataLoader.ts.
Fixed
- Quiz Question Accuracy (
/learn/quiz): Applied 7 factual corrections — CNSA 2.0 2030 scope clarification, EO 14306 date/attribution, Germany's QUANTITY initiative description, GSMA PQ.03 v2.0 publication date, Canada CCCS 2026 milestone wording, and a self-contradictory TLS hybrid failure explanation.
[1.14.4] - 2026-02-19
Added
- Inline Tooltips (
/assess): Jargon terms (HNDL, PQC, Crypto Agility, HSM) in the wizard now show click-to-open glossary definitions via a newInlineTooltipcomponent backed by 180+ glossary terms. - Quick Assessment Mode (
/assess): New mode selector on the landing page — "Quick" (6 steps, ~2 min) or "Comprehensive" (13 steps, ~5 min). Quick mode uses the legacy scoring path. - Migration Roadmap (
/assess): Phased visualization in the report grouping recommended actions into 3 swim lanes (0–6 mo, 6–18 mo, 18–36 mo) with effort badges and country deadline indicator.
Changed
- Context-Aware Cross-Links (
/assess): "Explore" links in recommended actions now carry user-specific query params (e.g./algorithms?highlight=RSA-2048,ECDH,/threats?industry=Finance). Algorithm Transition Guide highlights matching rows; Threats Dashboard pre-filters by industry. Migration matrix adds "Try in Playground" links for PQC replacement algorithms. - Progress Persistence (
/assess): Stale assessment threshold extended from 24 hours to 7 days. Resume banner shows on return with step info, timestamp, and Continue / Start Over options.
[1.14.3] - 2026-02-19
Fixed
- PDF Print Cross-Browser (
/assess): Report PDF now renders correctly in both Chrome and Safari. Chrome was not repeatinghtml { margin-top }on pages 2+, causing content to overlap the fixed header/footer. Replaced with an invisible<table class="print-report-table">whose<thead>(14mm) and<tfoot>(10mm) are treated as per-page repeating groups by both browsers. All CSS selectors use child combinators (>) to avoid cascading into inner report tables. - Library Markdown Parser (
/library): Fixed markdown rendering regression introduced by Prettier reformatting the parser configuration. - Security Dependencies (
deps): Addedoverridesforminimatchandajvto resolve high-severity audit findings in transitive dependencies. - CI Security Audit (
ci): Scopednpm auditto production dependencies only, eliminating false positives from dev-only packages in the CI pipeline.
[1.14.2] - 2026-02-19
Fixed
- Retention Step Industry-Awareness (
/assess): Step 8 (Data Retention) no longer shows finance/healthcare-specific language for unrelated industries. Universal time-range options are now sourced from the CSV (empty industries column) with purely time-based descriptions. Every industry now has specific regulatory retention entries: Automotive (telematics 1-3y, vehicle lifetime 10-15y), Technology (SOC 2 audit logs 3y), Energy & Utilities (NERC CIP-007 3y, FERC/billing 7y), Aerospace (FAA/DO-178C aircraft lifetime 20-40y), Retail & E-Commerce (PCI DSS audit logs 1y, cardholder data 2y), Education (FERPA/financial aid 6y, permanent transcripts). - PDF Export (
/assess): Reverted towindow.print()from html2canvas/jsPDF for more reliable cross-browser output.
[1.14.1] - 2026-02-19
Fixed
- PDF Content Clipping (
/assess): Eliminated content overlap behind the fixed print header/footer on pages 2+. Uses invisible<thead>/<tfoot>spacer table to reserve per-page space for the repeating header (14mm) and footer (10mm). - Print Visibility (
GuidedTour,WhatsNewToast): Hidden from print output viaprint:hidden. - Threat Table Print (
/assess): Addedprint:overflow-visibleandprint:min-w-0to prevent right-column clipping in the PDF.
[1.14.0] - 2026-02-19
Added
- Industry-Aware Assessment Wizard (
/assess): Compliance, crypto usage, use case, and infrastructure steps now surface industry-relevant options first based on CSV-driven config (pqcassessment_02192026.csv). Industry-specific threats appendix included in report. - Country Compliance Filtering (
/assess): Step 5 (Compliance) filters frameworks by the selected country/jurisdiction — only globally-applicable and country-relevant frameworks are shown. - PDF Print Support (
/assess): Full print-optimized report with repeating header (app version, industry, country, date) and footer (assess URL, page number). Includesbreak-inside: avoidon sections, light-mode forced variables,print-color-adjust: exactfor background colors, and framer-motion suppression. - Report Collapsible Sections (
/assess): Country PQC Migration Timeline and Industry Threat Landscape are collapsible on screen but always expanded in print viahidden print:blockpattern. - Organization Filter (
/library): Replaced the Region dropdown with an Organization filter (NIST, IETF, ETSI, ISO, BSI, ANSSI, etc.) using a canonical org map that rolls up sub-groups.
Fixed
- Share URL Arrays (
/assess):dataSensitivityanddataRetentionnow correctly encode as comma-joined arrays in the share URL; addedcy(country) parameter. - PDF Dark Mode (
/assess): Print CSS forces all semantic color variables to light-mode values, preventing invisible text on white paper when dark theme is active. - PDF Background Colors (
/assess): Addedprint-color-adjust: exactso bar graphs, badges, and colored elements render in the PDF instead of being stripped by the browser. - PDF Page Breaks (
/assess):glass-panelsections avoid splitting across pages; Threat Landscape starts on a fresh page; trailing blank page eliminated viamin-height: 0. - Timeline Label Clipping (
/assess): Edge year labels (2024, 2035) use left/right-aligned transforms instead of centered, preventing clipping in the report timeline strip.
Changed
- Mobile Walkthrough (
GuidedTour): Redesigned the guided tour on mobile as a full-screen swipeable card carousel with step icons, dot indicators, and drag gestures. Desktop anchored tooltips unchanged. Added?tourquery param to reset and replay the tour. - WhatsNew Toast (
WhatsNewToast): Centered on mobile (was fixed bottom-right, overflowed on narrow screens). Added?whatsnewquery param for easy testing. - Assessment Report (
/assess): "Explore" links and action buttons hidden in print. Cross-industry threats section removed from report — only industry-specific threats shown.
[1.13.0] - 2026-02-18
Added
- Risk Assessment Country Picker (
/assess): New "Country" step (step 2 of 13) lets organizations select their jurisdiction; the selection aligns the Timeline step with real regulatory deadlines sourced directly from the PQC Gantt timeline data. - Multi-select Data Sensitivity (
/assess): Organizations can now select multiple sensitivity levels simultaneously (Low / Medium / High / Critical). Risk scoring uses the highest selected level; useful for organizations managing data of mixed sensitivity. - Multi-select Data Retention (
/assess): Multiple retention periods can be selected at once. HNDL risk is computed against the longest selected period for accurate worst-case assessment. - Country-aligned Migration Deadlines (
/assess): The Timeline step surfaces Deadline phases from the selected country's Gantt timeline (real years, titles, descriptions) instead of generic static options. Falls back gracefully when no country-specific deadlines exist. - Wizard Reset Button (
/assess): A "Reset" button in the wizard navigation footer clears all answers and returns to step 1, providing a quick path to restart without navigating away.
Fixed
- Assessment Store Schema Migration (
/assess): Persisted assessments from v1.12 and earlier storeddataSensitivityanddataRetentionas strings. On rehydration these are now automatically upgraded to arrays, preventing aTypeError: .filter is not a functioncrash.
Changed
- Risk Assessment Wizard (
/assess): Expanded from 12 to 13 steps with the Country picker.AssessmentInput.dataSensitivityand.dataRetentionare nowstring[]; the scoring engine usesgetMaxSensitivity()andgetMaxRetentionYears()helpers — fully backward-compatible.
[1.12.0] - 2026-02-18
Added
- Timeline Document Table (
/timeline): Selecting a country from the Country filter now reveals a document table below the Gantt chart listing all matching phases and milestones with organization, phase badge, type, title, period (year range), description, and source link.
Fixed
- Timeline Filter UX (
/timeline):- Renamed "Region" dropdown label to "Country" for clarity
- Active filter chips with × dismiss now appear below the filter bar for every active filter (country, phase type, event type, and text search)
- Result count shown alongside chips ("N results · X of Y countries")
- Empty state with "Clear all filters" action when no results match
- Country dropdown now renders above the sticky Gantt table headers (z-index fix)
[1.11.0] - 2026-02-17
Added
- PQC Quiz Module (
/learn): New interactive quiz in the Learning dashboard covering post-quantum cryptography fundamentals, algorithm families, and migration concepts.
Fixed
-
Compliance page UI/UX (
/compliance):- Renamed ambiguous "CC" column header to "Classic" (was misread as Common Criteria)
- Added missing BSI (DE) source card so the authoritative-sources grid is complete
- Unified all four filter active states to
primarycolor (was: accent, secondary, warning, tertiary) - Loading overlay now correctly reads "Refreshing Data…" during a refresh vs. "Filtering Records…" during filtering
- Close button in detail modal replaced with
<X>icon +aria-label; focus moves into modal on open - Filter backdrop
role="button"replaced witharia-hidden="true" - Empty-state
colSpancorrected from 10 to 8 - ShareButton/GlossaryButton now visible at
mdbreakpoint (waslg-only)
-
Guided Tour (
/): Fixed mobile portrait layout blocking tour from completing; fixed tooltip position jumping on step transitions.
[1.10.0] - 2026-02-17
Added
-
PQC Risk Assessment — Comprehensive Upgrade (
/assess):- Expanded from 5-step to 12-step wizard with 7 new dimensions:
- Cryptographic use cases (TLS, data-at-rest, digital signatures, key exchange, etc.)
- Data retention and HNDL risk window analysis
- Organizational scale (system count + team size)
- Crypto agility assessment (abstracted, partially-abstracted, hardcoded)
- Infrastructure dependencies (Cloud KMS, HSMs, IoT, legacy systems)
- Vendor dependency profiling (heavy-vendor, open-source, mixed, in-house)
- Timeline pressure and compliance deadlines
- Compound scoring engine replacing simple additive model:
- 4 category sub-scores (Quantum Exposure, Migration Complexity, Regulatory Pressure, Organizational Readiness)
- Weighted composite with interaction multipliers (HNDL, compliance urgency, migration difficulty)
- Full backward compatibility — old 5-field assessments produce identical scores
- HNDL Risk Window visualization: SVG timeline showing data retention vs. estimated quantum threat horizon (2035)
- Migration effort estimation: Per-algorithm complexity rating (quick-win, moderate, major-project, multi-year)
- Executive summary: One-paragraph C-suite synthesis with risk level, top priorities, and quick-win count
- Category score breakdown: Horizontal progress bars for each risk dimension
- Enhanced CSV export: Includes migration effort, estimated scope, and rationale columns
- URL-shareable assessments: All 12 inputs encoded in URL parameters for team sharing
- Responsive step indicator: Compact progress bar on mobile, full step circles on desktop
- Expanded from 5-step to 12-step wizard with 7 new dimensions:
-
Glossary Expansion:
- 20+ new PQC terms: Diffie-Hellman, FN-DSA, XMSS, X25519, X448, Ed448, and more
- Inline
GlossaryButtoncomponent for contextual access from Algorithms, Threats, and other views
-
Algorithm Comparison Overhaul (
/algorithms):- New filter controls: Type (All/PQC/Classical), Security Level, and search
- Sortable columns across all fields
- Performance-optimized with
useMemo
-
Landing Page Dynamic Counts:
- Stats bar now loads actual data counts (timeline events, standards, software, leaders, algorithms)
- New "Risk Assessment" feature card linking to
/assess
-
Migration Step-to-Software Linking (
/migrate):- Clicking a workflow step filters the software database to relevant categories
- Step filter banner with category context and clear button
- Updated category mappings for steps 2, 4, and 5
-
Software Reference Data:
- 6 new software categories: Operating Systems, Network Operating Systems, Network Security, Hardware Security, Blockchain, Remote Access/VDI
- Updated product category assignments (CSC-031 through CSC-036)
- Enhanced SLH-DSA variant descriptions with specific use-case guidance
Changed
-
Color System Standardization:
- Migrated all remaining hardcoded Tailwind colors to semantic tokens across Algorithms, Landing, and data files
blue-500→primary,green-500→success,yellow-500→warning,red-500→destructive
-
Navigation:
- Reordered nav items with Assess prominently placed
- Glossary button moved from global floating overlay to per-view inline placement
-
Test Coverage:
- New test suites: AssessReport (31 tests), AssessWizard (32 tests), useAssessmentEngine (39 tests)
- Updated Executive data and Timeline tests for expanded schemas
- All 402 unit tests passing
[1.9.0] - 2026-02-16
Added
-
PQC Risk Assessment Module (
/assess):- Interactive 5-step wizard for personalized quantum risk evaluation
- Algorithm migration recommendations based on assessment results
- Compliance analysis with actionable remediation steps
- Printable risk assessment report generation
-
Enhanced Migration Workflow (
/migrate):- 7-step structured migration process: Assess, Plan, Pilot, Implement, Test, Optimize, Measure
- Framework mappings for NIST, ETSI, and CISA guidelines
- Gap analysis with software category coverage assessment
- Authoritative reference panel with curated migration resources
-
Global PQC Glossary:
- Floating access button available on every page
- 100+ post-quantum cryptography terms with definitions
- Category filters (Algorithm, Protocol, Standard, Concept, Organization)
- A-Z index, full-text search, and complexity badges (Beginner, Intermediate, Advanced)
- Cross-references to relevant learning modules
-
Guided First-Visit Tour:
- Interactive onboarding overlay highlighting key platform features
- Auto-triggers on first visit, remembers completion in localStorage
- Step-by-step walkthrough with skip and navigation controls
-
PQC 101 Learning Module (
/learn/pqc-101):- Beginner-friendly introduction to post-quantum cryptography
- Covers quantum threat landscape and Shor's algorithm impact
- At-risk sectors and Harvest Now, Decrypt Later (HNDL) attack explanation
-
Enhanced Gantt Timeline:
- Phase type filter dropdown (Discovery, Testing, POC, Migration, etc.)
- Event type filter dropdown (Phase, Milestone)
- CSV export of filtered timeline data
- Milestone phase labels displayed on flag markers
-
New Software Reference Data:
- Added
quantum_safe_cryptographic_software_reference_02162026.csv - Updated PQC software category priority matrix
- Added
Changed
-
Learning Progress System:
- Module store versioning and migration support for schema evolution
- Added
beforeunloadandpagehidepersistence handlers for reliable auto-save - iOS Safari compatibility fixes for storage persistence
- QuotaExceededError handling with user-friendly feedback via
react-hot-toast
-
Navigation:
- Added Assess to main navigation bar with ClipboardCheck icon
Fixed
- Storage Reliability:
- Resolved iOS Safari storage persistence issues on page close
- Added fallback handling for QuotaExceededError during progress save
[1.8.7] - 2026-02-16
Added
- Library Module Redesign:
- New card grid view with
DocumentCardandDocumentCardGridcomponents CategorySidebarfor quick category navigation with update indicatorsActivityFeedshowing recent new and updated standardsViewToggleto switch between card grid and tree table viewsSortControlwith options: Newest, Oldest, Name A-Z, Name Z-A, Urgency- Detail popover integration in card view
- New card grid view with
Changed
-
Library Module:
- Refactored monolithic
LibraryViewinto modular sub-components - Improved category filtering with sidebar navigation
- Enhanced sorting with urgency-based ordering
- Refactored monolithic
-
Learn Dashboard:
- Simplified module card system — removed unused
disabledandcomingSoonproperties - Cleaner duration display logic
- Simplified module card system — removed unused
-
Build System:
- Added
predevscript to copy liboqs WASM files before dev server starts - Updated build script to include liboqs dist copy step
- Added
-
liboqs DSA Integration:
- Updated WASM wrapper for improved compatibility
Fixed
- Algorithm Deprecation Dates:
- Corrected deprecation timelines per NIST IR 8547 and SP 800-131A Rev 3
- Only 112-bit security algorithms (RSA-2048) deprecated in 2030; 128-bit+ algorithms (RSA-3072, P-256, P-384, etc.) correctly show 2035 (Disallowed) only
- P-256 reclassified from 112-bit to 128-bit security tier
- Updated sorting logic and color coding to distinguish deprecated (amber) from disallowed (red)
[1.8.6] - 2026-02-14
Added
-
SEO & Discoverability:
- Comprehensive meta tags (title, description, keywords)
- Open Graph protocol tags for Facebook/LinkedIn link previews
- Twitter Card tags for rich social media sharing
- JSON-LD structured data (WebApplication + EducationalOrganization schema)
robots.txtto allow search engine crawlingsitemap.xmlwith 13 routes, priorities, and change frequencies- Branded
favicon.svgwith quantum-shield icon og-image.png(1200x630) for social media preview images- Theme color and canonical URL meta tags
-
Landing Page Experience:
- New hero landing page at
/route with value proposition - Stats bar displaying: 42 Algorithms, 165+ Events, 92 Standards, 6 Modules
- Feature cards grid highlighting platform capabilities
- Clear CTAs: "Explore Timeline", "Try Playground", "Start Learning"
- Professional hero messaging: "The quantum threat is not theoretical"
- New hero landing page at
-
Social Sharing:
- New
ShareButtoncomponent with native Web Share API - Fallback share menu with Copy Link, Twitter/X, LinkedIn options
- Keyboard accessibility (Escape to close)
- Share buttons added to 4 key views: Timeline, Algorithms, Playground, Compliance
- Pre-filled share text optimized for each view
- New
-
Analytics & Engagement:
- 11 new analytics event helpers in
utils/analytics.ts:logModuleStart()- Track learning module startslogModuleComplete()- Track completions with durationlogStepComplete()- Track individual step progresslogArtifactGenerated()- Track downloads (keys, certs, configs)logLibrarySearch()/logLibraryFilter()- Standards library trackinglogMigrateSearch()/logMigrateFilter()- Software tool trackinglogComplianceFilter()- Compliance view trackinglogDownload()- File download trackinglogExternalLink()- Outbound link tracking
- Analytics integration in
useModuleStorefor automatic progress tracking - Instrumented Library and Migrate views for search/filter analytics
- 11 new analytics event helpers in
-
Developer Tools:
scripts/validate-seo.sh- Automated SEO validation script- Validates meta tags, static files, sitemap routes, HTTP status codes
Changed
-
Routing:
- Timeline moved from
/to/timelineroute - Updated navigation with new "Home" button (with
endprop) - Updated sitemap to include
/timelineroute - Updated tests to reflect new routing structure
- Timeline moved from
-
Performance Optimization:
- Removed 196 duplicate WASM files from
public/dist/directory - Bundle size reduced from 66MB to 11MB (83% reduction)
- Enhanced vendor code splitting in
vite.config.ts:vendor-react: React core librariesvendor-ui: Framer Motion, Lucide iconsvendor-pqc: Cryptography librariesvendor-zip,vendor-csv,vendor-markdown,vendor-pdf: Specialized chunks
- Simplified Framer Motion animation variants to reduce type complexity
- Removed
mkdir -p public/distfrom build script (no longer needed)
- Removed 196 duplicate WASM files from
-
Code Quality:
- Fixed ESLint accessibility warnings in ShareButton (proper keyboard event handling)
- Updated MainLayout tests for new Home button behavior
- All 226 unit and E2E tests passing
Fixed
- ESLint
jsx-a11y/click-events-have-key-eventserror on ShareButton backdrop - ESLint
jsx-a11y/no-static-element-interactionswarning with proper event handlers - MainLayout test expecting Timeline to be active at
/(now expects Home)
[1.8.5] - 2026-01-06
Added
-
Migrate Module (New Feature):
- Added new "Migrate" view for PQC readiness planning
- Verified PQC Software Reference Database with 70+ entries
- "New" and "Updated" status indicators for change tracking
- Filtering by Category, Platform, and Support status
-
Data Updates:
- Added Jan 6, 2026 data files for Leaders, Threats, and Library (
01062026) - Added 39 new PQC software entries (OS, Libraries, Network, Apps)
- Updated PQC Software CSV to
12162025version - Added comprehensive details for Windows Server 2025, Android 16, iOS 19, and major firewalls
- Added Jan 6, 2026 data files for Leaders, Threats, and Library (
Changed
-
Threats Module:
- Updated AERO-001 reference to RTCA Security page (
https://www.rtca.org/security/) - Removed "Accuracy / Probability" field from Threat Detail UI for cleaner presentation
- Updated AERO-001 reference to RTCA Security page (
-
Library Module:
- Corrected OpenPGP reference ID to
draft-ietf-openpgp-pqc-16
- Corrected OpenPGP reference ID to
-
Navigation:
- Reordered main menu to: Timeline -> Threats -> Algorithms -> Library -> Learn -> Migrate -> Playground -> OpenSSL Studio -> Compliance -> Leaders -> About
- Better alignment with "Awareness -> Plan -> Act" user journey
-
Documentation:
- Updated
README.mdandREQUIREMENTS.mdwith Migrate module details - Added dedicated
requirements/Migrate_Module_Requirements.md
- Updated
[1.8.4] - 2025-12-16
Added
- LMS/HSS (Hash-Based Signatures):
- Unified "LMS (HSS)" button with Generate / Sign / Verify mode tabs
- WASM-based key generation, signing, and verification
- Parameters: LMS height (H5-H25), LM-OTS width (W1-W8)
- Stateful signature warning for private key updates
- Added
data-testidattributes for E2E test reliability
Changed
- OpenSSL Studio:
- Now shows 13 operation types (added LMS/HSS)
- "Run Command" button hidden for LMS (uses WASM buttons instead)
Fixed
- LMS Signature Verification:
- Fixed signature size issue (trimmed trailing zeros from 5KB buffer)
- Fixed verify mode key selection to prefer
.pubover.keyfiles - Filtered verify dropdown to only show public keys (
.pub,.pem)
- Code Quality:
- Resolved all remaining lint errors (any types, label, useEffect deps)
- Fixed prettier formatting across multiple components
Removed
- SKEY (Symmetric Key): Removed experimental EVP_SKEY feature due to WASM handle persistence limitations
[1.8.3] - 2025-12-16
Added
-
OpenSSL 3.6.0 Upgrade:
- Updated WASM binaries to OpenSSL 3.6.0 (4.12MB)
- Native ML-KEM and ML-DSA support in OpenSSL
- Enhanced PQC algorithm compatibility
- OpenSSL documentation links in Studio command preview
-
Project Organization:
- Created
certs/directory structure for TLS certificates - Added
certs/README.mddocumentation - Organized certificates into
pqc/andrsa/subdirectories
- Created
Changed
-
Analytics:
- Improved localhost detection to prevent E2E test data from skewing production analytics
- Enhanced analytics filtering logic
-
TLS Module:
- Regenerated all default certificates using OpenSSL 3.6.0
- Updated ML-DSA certificate chains
- Enhanced crypto operation logging
- Certificate Inspector component with tree/raw view modes
- TLS Comparison Table for side-by-side algorithm analysis
- Improved client/server panel UI with better certificate management
-
Playground:
- Improved WASM instance management
- Better error handling for key generation
- Refactored ML-DSA and ML-KEM WASM integration
-
5G Module:
- Fixed state propagation issues
- Improved file data handling between steps
-
Documentation:
- Updated data files to 12/15/2025 versions (Timeline, Library, Leaders, Threats)
- Enhanced E2E tests for TLS module
- Updated requirements documentation
Fixed
- Race conditions in KEM playground E2E tests
- WASM caching issues in liboqs modules
- TypeScript errors in 5G service
- E2E test stability improvements across multiple modules
- Linting errors in TLS module (accessibility, TypeScript)
- AboutView test to match current SBOM content
- WASM library files added to repository for production deployment
- Removed mlkem-wasm references from vite config
[1.8.2] - 2025-12-16
Added
- TLS Module Enhancements:
- Certificate Inspector component with tree/raw view modes
- TLS Comparison Table for side-by-side algorithm analysis
- Improved client/server panel UI with better certificate management
- Certificate generation scripts for development
Changed
- Updated data files to 12/15/2025 versions (Timeline, Library, Leaders, Threats)
- Enhanced E2E tests for TLS module
- Updated requirements documentation
Fixed
- Linting errors in TLS module (accessibility, TypeScript)
- Added .gitignore rules for certificate files
- Excluded generated WASM file from Prettier checks
[1.8.1] - 2025-12-15
Added
-
What's New Feature:
- Dismissible toast notification on app load after version updates
- Dedicated
/changelogroute displayingCHANGELOG.mdwith styled markdown - Interactive filter buttons for "New Features", "Enhancements", and "Bug Fixes"
- Version tracking using Zustand store persisted to
localStorage - "View Changelog" link added to About page
- Comprehensive E2E tests for changelog functionality
-
Authoritative Sources Feature:
- "Sources" button added to 5 data views: Timeline, Library, Threats, Leaders, Algorithms
- Modal displaying filtered authoritative sources grouped by type (Government, Academic, Industry Workgroup)
- 52 curated sources from
pqc_authoritative_sources_reference_12152025.csv - Timestamp-based CSV file selection for automatic latest version loading
- Region badges with color coding (Americas, EMEA, APAC, Global)
- Clickable source names linking to primary URLs
- View-specific filtering using CSV columns
Fixed
- E2E test strict mode violations in
algorithms.spec.tsandlibrary.spec.ts - Changelog linting warnings (removed unnecessary eslint-disable comments)
[1.8.0] - 2025-12-14
Added
-
TLS 1.3 Basics Learning Module:
- Interactive TLS 1.3 handshake simulation with dual configuration modes (GUI + Raw OpenSSL config)
- Support for RSA and ML-DSA (Post-Quantum) identity certificates
- Detailed cryptographic logging showing key derivation, HKDF, signatures, and encryption
- PQC algorithm support: ML-KEM (Kyber) key exchange, ML-DSA and SLH-DSA signatures
- Custom certificate import from OpenSSL Studio
- Separate CA trust configuration for client and server
- Full interaction flow with customizable messages
- Comprehensive requirements documentation (
learn_openssltls13_requirement.md)
-
CI/CD Optimizations:
- Implemented Playwright test sharding (2 shards) to parallelize E2E test execution
- Reduced CI execution time from >30 minutes (timeout) to ~4.5 minutes
- Configured
workers: 1in CI to prevent resource deadlocks on GitHub Actions runners - Added
ignoreHTTPSErrors: trueto handle SSL issues with external compliance sites
Changed
-
5G Module:
- Refactored to use OpenSSL WASM instead of WebCrypto
- Improved hybrid crypto implementation
-
Digital ID Module:
- Implemented OpenSSL log transparency and cleanup
-
Documentation:
- Updated SBOM in About page to match current package.json versions (Framer Motion, Lucide, Zustand, Vite, Prettier)
- Updated Node.js requirement from v18 to v20 in README
- Added TLS 1.3 Basics module to README feature list
- Updated module count from 5 to 6 across documentation
- Added TLSBasics directory to project structure documentation
Fixed
-
E2E Test Regressions:
- Fixed
timeline.spec.tscountry selector locator (changed from "All Countries" to "Region") - Fixed
compliance-sources.spec.tsSSL errors in Firefox by enabling HTTPS error ignoring - Fixed
playground-kem-updated.spec.tsrace condition in HKDF key derivation switching - Fixed
playground-kem-additional.spec.tsrace conditions in HKDF normalization tests - Added proper waits for WASM operation completion and hybrid mode key selection
- Fixed
useKemOperations.tsto clear decapsulated secrets during WASM encapsulation - Removed networkidle to resolve hanging CI tests
- Stabilized CI with sharding and resolved all E2E test failures
- Fixed
-
5G Module:
- Restored 5G module, fixed E2E tests and linting
- Made shared secret derivation stateless-safe for CI
- Resolved unused variable build error
- Restored missing public API methods and suppressed lint warnings
- Restored robust hybrid crypto (WebCrypto + OpenSSL) to fix E2E failures
-
Build Issues:
- Removed invalid 'variant' prop from FilterDropdown usage
- Resolved JSX.Element type error in SimpleGanttChart
- Resolved wasm adapter lint errors
[1.7.0] - 2025-12-12
Added
-
Dynamic Data Loading:
- Implemented dynamic selection of the latest CSV data files for algorithms and transitions
- Added "New" and "Updated" status badges to Library, Threats, Leaders, and Timeline modules
- Timestamp-based CSV file selection for automatic latest version loading
-
Compliance Module Enhancements:
- Added ENISA EUCC scraper (
scripts/scrapers/enisa.ts) and requirements - Multi-URL support for CC certificates and ANSSI scraper
- Multi-URL dropdown display in compliance table
- Lab column and expert lab extraction for CC
- Comprehensive data improvements with filters embedded in column headers
- Prioritized Cert Report over ST for extraction
- Improved ANSSI link detection with 'certificat' keyword
- Added ENISA EUCC scraper (
-
Library Module:
- Library search functionality
- Updated data classification
Changed
-
Documentation:
- Updated
README.mdto accurately reflect the current project structure (includingscriptsat root) - Added comprehensive scraper requirements for all data sources
- Updated contributing guidelines and added submit_feature workflow
- Added CODEOWNERS file for branch protection
- Updated
-
Compliance Module:
- Removed Status column from table
- Centralized lab extraction logic in utils
- Disabled generic CC links and fixed doc parsing regex
- Used CC Portal product page URLs instead of corrupted PDF URLs
- Properly encoded CC certificate URLs and extracted lab field
Fixed
-
Code Quality:
- Resolved
eslinterrors in scraper scripts (anssi.ts,cc.ts) and various components - Fixed security warnings related to object injection and unsafe regex
- Resolved build failures and security warnings
- Fixed lint errors in debug scripts
- Resolved
-
E2E Tests:
- Fixed e2e regression for removed columns in compliance tests
- Stabilized CI by skipping flaky tests and optimizing config
- Used preview server in CI for stability
- Added timeouts and disabled audit to prevent hangs
- Disabled vitest watch mode in test script
-
Scraper Issues:
- Resolved unused variables and refined CC fetch logic
- Resolved runtime errors in CC lab extraction
- Fixed ANSSI links and extracted lab info from ST
-
UI Issues:
- Restored E2E fixes and IV management improvements
- Resolved E2E test failures in PKI and Leaders modules
- Fixed AttributeTable accessibility
- Completed truncated AI acknowledgment text
[1.6.0] - 2025-12-06
Added
-
Theme Toggle:
- Implemented persistent theme selection (Light/Dark modes)
- Global state management using Zustand with localStorage persistence
- Theme toggle UI added to About page (desktop and mobile)
- Synchronized state between mobile and desktop views
- Refactored CSS to support manual
.darkclass overrides
-
Mobile Timeline Swipeable Phase Navigation:
- Swipe gestures for browsing through all phases per country
- Interactive phase indicator dots showing current position
- Direct navigation by clicking phase indicators
- Visual distinction: Flag icon for milestones, colored dot for phases
- Smooth Framer Motion animations (200ms transitions)
- 50px drag threshold for phase transitions
-
5G Module Improvements:
- Implemented 5G Profile C PQC Dual Mode and EUDI Wallet Crypto alignment
- Enhanced E2E validation tests for 5G flows
-
Digital Assets Module:
- Complete refactor with strict typing, E2E tests, and HD Wallet UI unification
- Enhanced flows with improved components and utilities
- Shared hooks to reduce code duplication
-
PKI Workshop Enhancements:
- Enhanced certificate parser with deep tree structure and semantic colors
- Profile info buttons with optimized markdown modal
- Completed button to PKI Workshop final step
- Interactive PKI Workshop on mobile with read-only inputs
- Top-level certificate sections always visible
-
Testing:
- Comprehensive unit tests for core utilities
- Tests for OpenSSLService and PKILearning
- Tests for ThreatsDashboard and LeadersGrid
- SimpleGanttChart tests and fixed analytics testing
- AlgorithmsView and LibraryView tests
- Comprehensive test coverage for core components
Changed
-
Appearance Settings:
- Removed "System" theme option to simplify user experience
- Set default theme to Light
- Updated
Aboutpage and Mobile About view to reflect theme changes
-
Semantic Color Tokens:
- Global refactor of all Learning Modules (5G, DigitalAssets, DigitalID, PKIWorkshop) to use semantic color tokens
- Introduced
--color-tertiary(Purple) for Profile C support - Refactored hardcoded colors to semantic tokens across app
- Replaced hardcoded dark styles with theme-aware variables in About page
-
UI Improvements:
- GitHub link added to about section
- Unified file manager badge text color to muted-foreground style
- Darkened file manager badge text for better light mode contrast
- Fixed broken leader icons by adding resilient LeaderCard component
- Improved console output readability with better semantic tokens
- Improved attribute value input readability
- Consistent readable input colors across all PKI Workshop steps
- Lightened code block backgrounds for better light mode visibility
- Theme consistency overhaul for Digital Assets module
-
Documentation:
- Updated
requirements/timeline.mdwith comprehensive mobile timeline specifications - Updated
REQUIREMENTS.mdwith responsive design breakpoint details - Added mobile swipeable navigation requirements and UX specifications
- Updated project structure in README
- Fixed README inconsistencies
- Added maintainability audit report for Learn/Digital Assets modules
- Added mobile design patterns to design system requirements
- Updated
-
Build & Deployment:
- Display build timestamp in CST (Austin, TX timezone)
- Made build timestamp update on every build/HMR
- Added 404.html generation for GitHub Pages SPA routing
- Updated license info in package.json and About page
Fixed
-
Navigation Issues:
- Resolved critical bug where new users were forced into a redirect loop to the About page (WelcomeRedirect removed)
- Resolved Timeline blank screen navigation bug
- Removed AnimatePresence to resolve blank screen navigation bug
-
Test Stability:
- Fixed stale
useThemetests that referenced the deprecated "system" theme - Fixed e2e tests: seed localStorage to bypass welcome, update selectors and mock data
- Fixed BitcoinFlow unit test crash
- Updated MobileTimelineList.test.tsx mock data to match interface
- Fixed stale
-
Linting & Code Quality:
- Addressed various security (
detect-object-injection) and React Hook warnings - Resolved build errors in DigitalID and Tabs
- Resolved Ethereum signature verification issues
- Suppressed testing-library and security warnings to unblock build
- Resolved remaining lint errors and bypassed strict checks
- Corrected TypeScript import for Plugin type
- Addressed various security (
-
Accessibility:
- Fixed label-control associations in ThreatsDashboard
-
Theme Consistency:
- Removed hardcoded colors across multiple components
- Ensured openssl terminal supports light mode
- Ensured light mode consistency for Threats and Leaders pages
- Ensured consistent light mode by using theme variables
-
PKI Workshop:
- Skipped basicConstraints from profile attributes
- Removed constraints from PKI Workshop components
- Completed constraints removal from CSRGenerator
- Preserved CSR source attribution when loading CA profile
-
Dependabot:
- Resolved dependabot validation errors by reformatting
- Enabled dependabot grouping and added AboutView tests
[1.5.0] - 2025-12-06
Added
-
Theme Toggle:
- Implemented persistent theme selection (Light/Dark/System modes)
- Global state management using Zustand with localStorage persistence
- Theme toggle UI added to About page (desktop and mobile)
- Synchronized state between mobile and desktop views
- Refactored CSS to support manual
.darkclass overrides
-
Mobile Timeline Swipeable Phase Navigation:
- Swipe gestures for browsing through all phases per country
- Interactive phase indicator dots showing current position
- Direct navigation by clicking phase indicators
- Visual distinction: Flag icon for milestones, colored dot for phases
- Smooth Framer Motion animations (200ms transitions)
- 50px drag threshold for phase transitions
Changed
-
UI Improvements:
- Learn module added to Kudos and Change Request forms
- Updated About page SBOM layout to compact 3-column view
-
Documentation:
- Updated mobile timeline requirements
- Created Design System, updated cursor rules with crypto/tech guidelines
Fixed
-
Theme Consistency:
- Ensured openssl terminal supports light mode
- Ensured light mode consistency for Threats and Leaders pages
- Ensured consistent light mode by using theme variables
-
Build Issues:
- Added 404.html generation for GitHub Pages SPA routing
[1.4.0] - 2025-12-04
Added
-
Algorithm Comparison:
- Comprehensive algorithm comparison with multi-tab interface
- Data source attribution to Algorithms and Threats pages
-
Digital Assets Module:
- Implemented digital assets module with full cryptocurrency support
- Complete digital assets flows with improved components and utilities
-
PKI Workshop:
- Profile info button with optimized markdown modal
Changed
-
OpenSSL Studio Redesign:
- Layout: Implemented a split-pane design with dedicated areas for Configuration (Left) and File Management (Right)
- Command Preview: Moved to the top of the left pane, vertically centered, with an embedded "Run Command" button for a streamlined workflow
- File Manager:
- Now permanently visible in the right pane
- Added "Size" column and compact timestamp formatting
- Implemented column sorting (Name, Type, Size, Date)
- Toolbar: Simplified navigation by removing the redundant "Key Files" button
-
Tailwind v4 Migration:
- Migrated to Tailwind v4 with UX improvements
- Refined algorithms table layout and typography
- Improved contrast by using proper semantic tokens
-
Data Format:
- Converted algorithms data from TypeScript to CSV
-
Filter UI:
- Applied grouped filter layout to Timeline page
- Added opaque styling to filter dropdowns
- Replaced glass-panel with opaque background in FilterDropdown wrapper
- Replaced semi-transparent backgrounds in FilterDropdown options
- Made all select dropdown options opaque globally
- Made dropdown menus opaque for better readability
- Improved Threats page filter layout and spacing
Fixed
-
OpenSSL Studio:
- Resolved file writing error and standardized PKI Workshop layout
-
Build & Linting:
- Stabilized e2e tests, updated SBOM, and fixed accessibility issues
- Fixed formatting and lint errors
- Resolved type error in WorkbenchToolbar and added type check to pre-commit
- Resolved lint errors and updated lint-staged config
- Setup husky and lint-staged for automatic formatting
- Fixed code formatting
-
Component Issues:
- Workbench component refactor and fixed regression tests
- Updated Workbench tests with required props
Documentation
- Updated
requirements/opensslstudio.mdwith the new layout specifications and feature set - Updated SBOM section with accurate dependency versions
- Updated package-lock.json to sync with package.json
- Updated project structure in README
[1.3.0] - 2025-12-02
Added
-
PKI Learning Module Enhancements:
- File Naming: Standardized naming for artifacts (e.g.,
pkiworkshop_<timestamp>.csr,pkiworkshop_ca_<timestamp>.key) - OpenSSL Studio Sync: Automatically syncs generated keys, CSRs, and certificates to the OpenSSL Studio file store
- State Persistence: Workshop progress and OpenSSL Studio files are now persisted to
localStorage - UI Improvements:
- CertSigner: Refactored to a 4-step flow (CSR -> Profile -> Content -> Sign) with an educational process diagram
- Attribute Source: Added visual indicators for attributes from CSR vs. CA Profile
- Constraints: Moved constraints to a dedicated display row
- Reset Functionality: Added a "Reset Workshop" button to clear all state
- CertParser: Added artifact selection dropdown and format conversion (DER/P7B)
- File Naming: Standardized naming for artifacts (e.g.,
-
OpenSSL Studio Enhancements:
- File upload support
- Auto-encryption filename
- Playground backup functionality
- Enhanced logs and UI navigation
Changed
- OpenSSL Studio:
- Updated requirements with verified algorithms and gap analysis
- Improved command generation syntax for keys, signatures, and KEM
Fixed
-
Code Quality & Stability:
- Linting: Resolved all lint warnings (unused variables,
anytypes, security alerts) - Build: Fixed module resolution error by renaming
Root.tsxtoAppRoot.tsxand ensuring git tracking - Formatting: Enforced consistent code style
- Resolved remaining lint warnings and build error
- Resolved remaining lint warnings and Fast Refresh issue
- Resolved remaining lint warnings and security alerts
- Resolved linting, build, and accessibility errors
- Applied code formatting fixes
- Linting: Resolved all lint warnings (unused variables,
-
OpenSSL Studio:
- Fixed SLH-DSA key generation: Added missing variants to Workbench.tsx and updated E2E tests
- Resolved lint errors
-
Accessibility:
- ADA accessibility and UI consistency improvements
[1.2.0] - 2025-12-02
Added
-
About Page:
- About page with SBOM and AI acknowledgment
- Comprehensive Security Audit Report (
src/data/security_audit_report_12022025.md)
-
Threats Dashboard:
- Implemented Threats dashboard with tabs and sorting
- Standardized filtering UI and added criticality filter
-
Analytics:
- Implemented granular analytics tracking
- Integrated Google Analytics
-
Data Updates:
- Display data source metadata and updated data files
- Updated timeline data and schema
- Updated leaders data and schema
- Implemented versioned CSV loading for leaders data
- Added detailed CNSA 2.0 migration phases and milestones
- Augmented leaders list with new details
-
Algorithms:
- Updated algorithms list with full OpenSSL Studio support
-
Build Improvements:
- Used static build timestamp
- Added automated release workflow
Changed
- UI Improvements:
- Reordered tabs in playground and openssl studio
- Removed close button and compacted library detail popover
- Optimized library detail popover metadata layout
- Refined library popover layout and table actions
- Used SVG flags and updated footer text
- Enforced strict sizing for country flags
Fixed
-
Accessibility & Security:
- Accessibility and security issues, added about requirements
- Resolved lint and security warnings
-
Build Issues:
- Fixed formatting issues
- Fixed lint error: unused variable in timelineData.ts
- Fixed build error: unused variable in timelineData.ts
-
E2E Tests:
- Updated e2e tests for UI changes
- Added E2E tests for PQC algorithms (ML-DSA, SLH-DSA, ML-KEM)
Documentation
- Updated
requirements/timeline.mdandopensslstudio.md - Updated requirements with GA, timestamp, and algorithm details
- Updated formatting and added security audit report
[1.1.0] - 2025-11-30
Added
-
Revised Timeline Design:
- New Gantt chart visualization with sticky columns for Country and Organization
- Improved popover details for timeline phases and milestones
- Country selection and filtering
- Mock data support for stable E2E testing
- Prioritized milestones in timeline sorting
- Rendered phases as individual cells for continuous bars
- Added visible grid lines to timeline
- Horizontal borders only between countries
-
Timeline Features:
- Grouped pre-2025 events and added <2024 header
- Updated timeline to group pre-2025 events
- Refined timeline visualization, support new CSV structure
Changed
-
Popover Improvements:
- Removed close button from popover, rely on click-outside
- Optimized popover header layout to save space
- Made popover fonts smaller and consistent with timeline
- Improved popover positioning and text wrapping
-
Phase Handling:
- Added 'Research' to phase order for correct sorting
- Reordered phases for better visualization
- Used fixed table layout to make phase bars span correctly
- Made phase bars fill full width of spanned columns
Fixed
-
OpenSSL Studio:
- Resolved duplicate terminal log issues
- Fixed worker initialization errors (
importScriptsand redeclaration issues) - Resolved importScripts error by providing correct URL
-
Accessibility:
- Restored high-contrast colors for better visibility
- Improved color contrast for WCAG AA compliance
- Added keyboard accessibility to phase cells
-
CI/CD:
- Fixed linting and formatting issues for a clean build pipeline
- Resolved lint errors and security warnings
- Fixed formatting issues in openssl worker
- Triggered CI
-
Navigation:
- Resolved runtime error in Legend and correct phase sorting
- Resolved runtime error and type issues with Deadline phase
-
E2E Tests:
- Decoupled E2E tests from production CSV data using mock data
- Updated E2E test expectation to match current data
- Fixed production test to match current UI
- Fixed production test strict mode violation
- Updated E2E tests to match current UI implementation
- Updated E2E test to close popover by clicking outside
-
Linting:
- Resolved ESLint errors - changed let to const for immutable variables
- Resolved remaining lint errors
- Resolved type error in FileManager.tsx by casting blob content to BlobPart
- Resolved persistent lint errors and Fast Refresh warnings
- Resolved build lint errors and unused variables
- Resolved 'any' type lint error in SimpleGanttChart.tsx
- Resolved lint error in GanttDetailPopover.tsx by removing unnecessary mounted state
-
Styling:
- Fixed formatting issues
- Removed .text-muted utility class to restore original styling
- Restored original text-muted color for better visual hierarchy
- Added bold styling to active navigation button
- Improved navigation button readability
Documentation
- Updated timeline requirements with recent sorting and visualization changes
- Updated timeline requirements with popover improvements
- Updated requirements with recent fixes and testing strategy
- Fixed formatting in requirements docs
[1.0.0] - Initial Release
Initial release of PQC Timeline Application.