Codecov, Unit Test Improvements & Web Improvements
✨ Features
- client: TUI "Manage servers" now supports adding, deleting, and setting a server as default via a server action sub-menu
🐛 Bug Fixes
- web: Fixed note view incorrectly showing "permanently deleted" warning for unlimited-view notes (
maxViews === 0)
🧪 Tests
- infra: Added
@vitest/coverage-v8andtest:coveragescripts toserver,web,crypto, andclientpackages for coverage report generation in LCOV format - web: Added 57 unit tests across
lib/utils,lib/password-generator, andlib/upload-store- covering formatting functions,isSafaridetection,generatePassword/calculateEntropy, and full CRUD/sorting for IndexedDB upload and note storage (using an in-memoryidb-keyvalmock) - client: Added 93 unit tests across
lib/progress,lib/url,lib/password-generator,lib/config, andlib/history- covering all formatting/parsing utilities, fullparseShareUrl/buildShareUrllogic including edge cases, password generation, config file lifecycle with filesystem isolation viatmpdir, and history CRUD with expiry cleanup
🔧 CI/CD
- infra: Updated
validate.ymltest job to run with coverage and upload reports to Codecov viacodecov/codecov-action@v5 - infra: Added
codecov.ymlwith project and patch coverage status checks - crypto: Added 14 new unit tests covering previously untested security-critical paths:
validateMetadataerror branches (invalid JSON, null payload, unknown type, malformed archive entries, negative sizes, empty names, missing MIME type),deriveKeyFromPasswordArgon2input validation, ECE decrypt stream "record too short" path, and exact error message matching for the nonce-missing guard. Coverage: 94% → 99.29% statements, 88% → 97.82% branches. Addedvitest.config.tsto exclude the re-export barrelsrc/index.tsfrom coverage.
🐳 Docker
- Image:
skyfay/skysend:v2.4.3 - Also tagged as:
latest,v2 - Platforms: linux/amd64, linux/arm64