ClamAV is a temporary dependency. Everything ClamAV-specific moves
behind a 4-method trait in crates/houndd/src/engine.rs:
trait ScanEngine { name; probe; scan; update }
struct ClamAvEngine // today
const ENGINE // one-line flip when the native engine lands
- parse_clamscan() is now a pure fn with unit tests (OK/FOUND/INCOMPLETE,
dedup, malformed lines)
- main.rs drops all clamscan/clamd/freshclam knowledge; Status reports
engine='clamav' via the trait
- README documents the seam and the wire contract that stays stable
GUI (gui/, Tauri 2, standalone workspace, vanilla JS premium-dark shell):
- system-tray sentinel on the 4-state dog-head ladder (green/amber/red/gray)
with tooltips; clicks open the window / scan / update
- window: protection hero, path + recursive scan, progress bar, results
table, signature update log; state mirrored to the tray
- compiles clean (cargo build, 0 warnings) on Mint 22.3 + webkit2gtk-4.1
All 11 workspace tests pass, incl. the E2E EICAR scan over the real
Unix-socket daemon (clamscan finds the planted EICAR).
17 lines
330 B
JSON
17 lines
330 B
JSON
{
|
|
"name": "hound-gui",
|
|
"version": "0.1.0",
|
|
"description": "Hound Antivirus — desktop app",
|
|
"type": "module",
|
|
"scripts": {
|
|
"tauri": "tauri",
|
|
"dev": "tauri dev",
|
|
"build": "tauri build"
|
|
},
|
|
"devDependencies": {
|
|
"@tauri-apps/cli": "^2.5.0"
|
|
},
|
|
"dependencies": {
|
|
"@tauri-apps/api": "^2.5.0"
|
|
}
|
|
}
|