| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-06-07 | 1.6 kB | |
| v1.5.1 source code.tar.gz | 2026-06-07 | 9.7 MB | |
| v1.5.1 source code.zip | 2026-06-07 | 9.8 MB | |
| Totals: 3 Items | 19.5 MB | 0 | |
v1.5.1 — Bug Fixes & Algorithm Reliability
Frequency-Domain Algorithm Fixes
DCT — Round-trip extraction was failing when DCT coefficients were near zero (floating-point noise ~10^-14 flipped bits after IDCT→clamp→DCT). Fixed by guaranteeing a minimum coefficient pair gap of \max(|diff|, 5) + K.
DFT — Same gap fix applied. Also fixed conjugate-symmetry preservation (only real parts were modified, breaking IDFT reconstruction).
DWT — LSB embedding had ~39% bit-flip rate because the 2×2 Haar DWT divides by 2 in the inverse transform, losing ±1 changes through rounding. Changed to step-2 embedding (\loor(coeff/2)×2 + bit), achieving 100% preservation.
Hybrid DCT-DWT — Rewritten from scratch. The previous implementation blended two independently watermarked images at 70/30 pixel level, corrupting both watermarks. Now embeds sequentially: DCT pair comparison → DWT step-2, with no blending. Added \xtractHybridDCTDWT().
Workflow & Automation
- a11y-fix.yml: Changed from direct push to PR creation via \peter-evans/create-pull-request. SHA pinned to v7.0.8. Scorecard score: 9/10 (max achievable for write workflows).
- translate.yml: Re-enabled with \if: github.actor != 'github-actions[bot]'. Uses LibreTranslate as free fallback.
- Scorecard alert [#205]: Fixed (wrong SHA in a11y-fix.yml causing zizmor block).
Full Algorithm Test Results (1366×768 image)
| Algorithm | Round-trip | Time |
|---|---|---|
| DCT | ✅ 100% | 2.0s |
| DFT | ✅ 100% | 5.0s |
| DWT | ✅ 100% | 0.1s |
| Hybrid | ✅ 100% | 2.3s |