- Fix B324: add usedforsecurity=False to hashlib.md5
- Fix B108: use tempfile.gettempdir() instead of hardcoded /tmp
- Fix B307: replace eval() with safe fraction parser
- Add vitest config with e2e exclusion
- Change CI vitest command to run only src/test
- Skip tests for non-existent components