Changelog
All notable changes to VerifyKit will be documented in this file.
The format is based on Keep a Changelog.
[0.5.0] -- 2026-03-26
Improved
- Full codebase audit: resolved all TypeScript type errors, unused variables, and dead code across core, react, and plugin-revocation packages
- Rust/WASM engine: zero clippy warnings — replaced manual iterator patterns with idiomatic
contains(),strip_prefix(),?operator, and const thread-local initializers - Removed dead functions (
injectIconIntoStream,getBannerSub), unused imports, and stale constants - Fixed type safety in plugin-revocation handler and proxy request paths
- ESLint configuration overhauled: proper ignore patterns for generated files,
_-prefix convention for unused params, removed inapplicable react-refresh rules - All workspace dependency references aligned to wildcard (
*) for consistent local resolution - Fresh production builds verified clean across all packages
[0.4.6] -- 2026-03-26
Added
- PAdES conformance tab in signature properties with progress bar and level timeline
- PAdES level badges (B-T, B-LT, B-LTA) and TIMESTAMP badge in signature panel
- Document Timestamp label and TSA name display for ETSI.RFC3161 signatures
- SDK logo in viewer About modal, documentation header, and favicon
- Branded name with logo colors (Verify in cyan, Kit in default)
- About modal redesigned with logo, capability pills, link cards, and TrexoLab product link
- Five new documentation pages: Security, Testing, Internationalization, Browser Support, Error Reference
- Documentation version badge in website header (read from root package.json at build time)
Fixed
- PAdES B-LTA detection: upgrade B-LT signatures when followed by RFC3161 document timestamp
- PAdES level detection restricted to ETSI signatures only (PKCS#7 signatures no longer incorrectly tagged as PAdES)
padesLevelfield now optional (nullfor non-PAdES signatures likeadbe.pkcs7.detached)- Documentation audit: 15 files corrected (wrong props, broken examples, stale versions, missing types)
Changed
- Details tab redesigned: verdict-first layout, verification checks promoted, signer card with avatar
- Removed GitHub references from documentation website
- All hardcoded version numbers removed from documentation (single source of truth via root package.json)
[0.4.5] -- 2026-03-26
Fixed
- Display status aligned with Adobe Reader DC default behavior — valid signatures with unchecked revocation now show as "Valid" instead of "Unknown" (matches Adobe's non-strict revocation mode)
- Missing React key props in plugin overlay, right panel, and page overlay collection functions
Added
- Changelog page added to documentation site
- Mermaid diagram rendering support in documentation
- Architecture diagrams (SDK overview + verification pipeline) using Mermaid
- "Adobe Reader Aligned" capability added to About modal
npm run version:syncscript — single source of truth for version across all packages- Version and release guide (
docs/creating-a-package.md)
Changed
- About modal redesigned — technology-neutral descriptions, cleaner layout with bordered cards, copyright footer
- Polyfills no longer need separate import — auto-included via main entry point
[0.4.4] -- 2026-03-25
Added
- Certificate chain resolution with AKI/SKI matching and PKCS#7 embedded certificate support
- Acro6 layer icons loaded from SVG source files instead of hardcoded paths
Fixed
- Signature display aligned with Adobe Reader for expired certificates, certification level, and N4 text
- Keyboard shortcuts now toggle instead of one-shot activate
- Multi-field signatures sharing a single PKCS#7 blob are correctly detected
- Unknown signature status aligned with Adobe Reader DC behavior
- Signature validation for malformed PDFs aligned with Adobe Reader
- H/V SVG path commands handled in Acro6 icon converter
Changed
- Documentation synced with recent SDK changes
- Homepage redesigned with stone palette, SEO metadata, and grid sections
- Demo site restyled with dark-first design tokens, Geist fonts, muted palette, and flat styles
[0.4.3] -- 2026-03-17
Fixed
- ETSI.RFC3161 document timestamp integrity check -- use TSTInfo messageImprint instead of signedAttrs messageDigest for document timestamps (PAdES B-LTA)
- Document timestamp EKU validation -- accept id-kp-timeStamping (1.3.6.1.5.5.7.3.8) for TSA certificates instead of requiring document-signing EKUs
- PDF field name extraction from binary stream data -- strict delimiter validation prevents
/Tmatches inside compressed streams from corrupting the field name - Signature widget overlay matching for multi-page fields -- handle sibling-replica suffix (
_sr{N}) and shared/Vreference patterns - Appearance layer swap (Acro6) for PDFs with multiple widget annotations sharing a single signature value
- Revocation check leniency for failed document timestamps -- require valid CMS signature before granting timestamp grace period
Added
- Scroll-to-signature on panel click -- viewport centers on the signature field with 4-blink highlight animation (matching Adobe Reader behavior)
- Widget registry in signature plugin for cross-page widget lookup
- Shared
field-name-utils.tsutility for normalized field name matching across the codebase
Changed
- Overall verification messages use "Document timestamp" language for ETSI.RFC3161 signatures instead of generic "Signature" wording
- Document timestamp signing time extracted from TSTInfo genTime (the CMS itself is the timestamp)
- Extracted duplicated field name suffix stripping into shared
normalizeFieldName()/isSameFieldFamily()helpers (was duplicated in 3 files with inconsistent order) - Removed redundant
overall_message.to_string()allocation and trivialextract_tst_gen_time_from_econtentwrapper - Marked file-dependent integration tests with
#[ignore]for CI compatibility
[0.4.2] -- 2026-03-16
Changed
- Enable
wasm-opt -Ozpost-compilation pass -- WASM binary reduced by 15.7% (1297 KB to 1093 KB) - Switch Rust build from
opt-level = 3toopt-level = "z"(size-optimized) with per-crate overrides keeping crypto crates (RSA, ECDSA, Ed25519) at full speed - Async base64 decode via
fetch(data:...)in browser -- avoids 1.3 MB intermediateatob()string, reducing peak init memory - Trust store refactor: removed unused
allfield, ownership transfer instead of cloning, single-pass classification with inlineroot_dnsbuild -- reduces heap allocations by ~1 MB
[0.4.1] -- 2026-03-16
Fixed
- Support BER indefinite-length CMS encoding (
0x30 0x80) -- PDF signatures using this encoding were rejected by the ASN.1 parser, causing all verification checks to cascade-fail - DSS extraction now resolves latest object revision in incremental PDF updates -- fixes LTV/DSS revocation data not being found when the catalog was updated after signing
Changed
- Bump version to 0.4.1
[0.4.0] -- 2026-03-16
Changed
- Version bump to 0.4.0
[0.3.3] -- 2026-03-16
Changed
- Flicker-free appearance swap for PDF page rendering
- Single-render VerificationFloater for improved performance
Added
- Automated registry and CDN update via
npm run pack:registrycommand
[0.3.2] -- 2026-03-15
Added
- Embedded VerificationFloater component in the viewer
- Smart context menu with signature-aware actions
- Live demo page
- CORS headers on revocation API route for cross-origin requests
- Revocation guide added to documentation navigation
Changed
workerUrlis now mandatory -- removed auto-detection and bundled worker- Updated all documentation for mandatory
workerUrlconfiguration - Updated Viewer props API
Fixed
- pdfjs-dist
getOrInsertComputedcompatibility error - Polyfill issues resolved
[0.3.1] -- 2026-03-13
Added
- Base64-embedded WASM binary for universal bundler compatibility -- no external
.wasmfile needed, works in Vite, webpack, Next.js, Node.js, Deno, and Bun with zero configuration - Comprehensive documentation update covering all packages
pack-registryscript for building registry tarballs
Changed
- Aligned all packages to v0.3.1
- Fixed type declaration paths across all packages
- Removed registry tarballs from git tracking