Every serious bug found in desktop testing had one shape: Hound reporting success it had not achieved. A build script that said "built" without building. A window showing "Protected" while its front-end had failed to load. A rootkit check calling 988 processes hidden when it was the one that had been blinded. A settings write refused while the switch stayed where the user put it. A visible error is something a person can act on; a false green is not. `hound selfcheck` asks the question directly — what can this installation not currently do? — and the daemon prints anything wrong at startup rather than waiting for it to be inferred from behaviour. The states are ok, degraded, and blind; the last is the one that matters, because blind means a detector is running and cannot see. It exits non-zero when blind, so it can be wired into monitoring. It earned its place within a minute of existing, by reporting the vault as /root/.local/share/hound/quarantine. The daemon runs as root, root has a home directory, and the XDG rules therefore sent the system vault into root's dotfiles — while the installer created and hardened /var/lib/hound/vault, which sat empty, and the desktop app read the user's own vault. Three vaults, none agreeing, which is exactly why the Quarantine tab reported "vault is empty" beside two quarantined files. Root now uses the system vault; an unprivileged daemon keeps its own, since a developer running houndd by hand must not need /var/lib. Also: `hound update` restarts the desktop app itself after installing. The app can notice its own package being replaced, but only from the version that learned how — updating from an older one leaves the stale process showing the old front-end, which is indistinguishable from an update that did nothing. The updater matches processes on the executable rather than a command line anyone could imitate, and relaunches each as its own owner with the session environment it was already using: DISPLAY, Wayland socket and bus address are taken from the running process, because guessing them breaks on Wayland or a second seat. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
265 lines
8.4 KiB
JSON
265 lines
8.4 KiB
JSON
{
|
|
"name": "hound-gui",
|
|
"version": "0.1.5",
|
|
"lockfileVersion": 3,
|
|
"requires": true,
|
|
"packages": {
|
|
"": {
|
|
"name": "hound-gui",
|
|
"version": "0.1.5",
|
|
"dependencies": {
|
|
"@tauri-apps/api": "^2.5.0",
|
|
"@tauri-apps/plugin-dialog": "^2.7.2",
|
|
"@tauri-apps/plugin-notification": "^2.3.3"
|
|
},
|
|
"devDependencies": {
|
|
"@tauri-apps/cli": "^2.5.0"
|
|
}
|
|
},
|
|
"node_modules/@tauri-apps/api": {
|
|
"version": "2.11.1",
|
|
"resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.11.1.tgz",
|
|
"integrity": "sha512-M2FPuYND2m+wh5hfW9ZpSdxMPdEJovPBWwoHJmwUpysTYNHaOkVFN419m/K0LIgjb/7KU2vBgsUepJWugQCvAA==",
|
|
"license": "Apache-2.0 OR MIT",
|
|
"funding": {
|
|
"type": "opencollective",
|
|
"url": "https://opencollective.com/tauri"
|
|
}
|
|
},
|
|
"node_modules/@tauri-apps/cli": {
|
|
"version": "2.11.4",
|
|
"resolved": "https://registry.npmjs.org/@tauri-apps/cli/-/cli-2.11.4.tgz",
|
|
"integrity": "sha512-R8xGtMpwyetawSqm9kYOuMmEqkhUbvcUy8n0aNXIxollKBLESUu5f4Fx+64hgASYm1H+jSWq6jCW6zqTnH6hqQ==",
|
|
"dev": true,
|
|
"license": "Apache-2.0 OR MIT",
|
|
"bin": {
|
|
"tauri": "tauri.js"
|
|
},
|
|
"engines": {
|
|
"node": ">= 10"
|
|
},
|
|
"funding": {
|
|
"type": "opencollective",
|
|
"url": "https://opencollective.com/tauri"
|
|
},
|
|
"optionalDependencies": {
|
|
"@tauri-apps/cli-darwin-arm64": "2.11.4",
|
|
"@tauri-apps/cli-darwin-x64": "2.11.4",
|
|
"@tauri-apps/cli-linux-arm-gnueabihf": "2.11.4",
|
|
"@tauri-apps/cli-linux-arm64-gnu": "2.11.4",
|
|
"@tauri-apps/cli-linux-arm64-musl": "2.11.4",
|
|
"@tauri-apps/cli-linux-riscv64-gnu": "2.11.4",
|
|
"@tauri-apps/cli-linux-x64-gnu": "2.11.4",
|
|
"@tauri-apps/cli-linux-x64-musl": "2.11.4",
|
|
"@tauri-apps/cli-win32-arm64-msvc": "2.11.4",
|
|
"@tauri-apps/cli-win32-ia32-msvc": "2.11.4",
|
|
"@tauri-apps/cli-win32-x64-msvc": "2.11.4"
|
|
}
|
|
},
|
|
"node_modules/@tauri-apps/cli-darwin-arm64": {
|
|
"version": "2.11.4",
|
|
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-2.11.4.tgz",
|
|
"integrity": "sha512-1ryOF3ZhpZ/nemHV5zVwBQBz9jDGKmKPvWPADOhc83ig0P4bMc2iER4NbC6r9sjeIZ6RVQ4g3RZIYvezhcl4TQ==",
|
|
"cpu": [
|
|
"arm64"
|
|
],
|
|
"dev": true,
|
|
"license": "Apache-2.0 OR MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"darwin"
|
|
],
|
|
"engines": {
|
|
"node": ">= 10"
|
|
}
|
|
},
|
|
"node_modules/@tauri-apps/cli-darwin-x64": {
|
|
"version": "2.11.4",
|
|
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-2.11.4.tgz",
|
|
"integrity": "sha512-uFsGQAAfuyz1k/yGLmkWfkBlgKAqZfxqlHmLWx81QU27RJWfmbNHCIq8T8w1e+VClleIuZUjpHWfoE4E3DLo3A==",
|
|
"cpu": [
|
|
"x64"
|
|
],
|
|
"dev": true,
|
|
"license": "Apache-2.0 OR MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"darwin"
|
|
],
|
|
"engines": {
|
|
"node": ">= 10"
|
|
}
|
|
},
|
|
"node_modules/@tauri-apps/cli-linux-arm-gnueabihf": {
|
|
"version": "2.11.4",
|
|
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-2.11.4.tgz",
|
|
"integrity": "sha512-IaHZn5CdBL21oUmjiVOS1ctw6Ip1O0pjp70FwOWmYz1myWe0SY96ZIj2FYf7pT0m8bI2h/hrs5ZbEXXh44/MkQ==",
|
|
"cpu": [
|
|
"arm"
|
|
],
|
|
"dev": true,
|
|
"license": "Apache-2.0 OR MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"linux"
|
|
],
|
|
"engines": {
|
|
"node": ">= 10"
|
|
}
|
|
},
|
|
"node_modules/@tauri-apps/cli-linux-arm64-gnu": {
|
|
"version": "2.11.4",
|
|
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-2.11.4.tgz",
|
|
"integrity": "sha512-N41/ukTRVe6XSuUTESuFdGeOW2i7k62tK+6gHK5Kd5/q5RPvvi19GaWAVPPb9u95HSGmTChSolBfzynUsssFaA==",
|
|
"cpu": [
|
|
"arm64"
|
|
],
|
|
"dev": true,
|
|
"license": "Apache-2.0 OR MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"linux"
|
|
],
|
|
"engines": {
|
|
"node": ">= 10"
|
|
}
|
|
},
|
|
"node_modules/@tauri-apps/cli-linux-arm64-musl": {
|
|
"version": "2.11.4",
|
|
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.11.4.tgz",
|
|
"integrity": "sha512-v277UnT/fB64xAfSroL5N3Km3tLmvATWqJJw/wRI+g6o+HkeD0slyE7gOhNs1MbjE41R7bQOTxMVoL3aomUJmw==",
|
|
"cpu": [
|
|
"arm64"
|
|
],
|
|
"dev": true,
|
|
"license": "Apache-2.0 OR MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"linux"
|
|
],
|
|
"engines": {
|
|
"node": ">= 10"
|
|
}
|
|
},
|
|
"node_modules/@tauri-apps/cli-linux-riscv64-gnu": {
|
|
"version": "2.11.4",
|
|
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-riscv64-gnu/-/cli-linux-riscv64-gnu-2.11.4.tgz",
|
|
"integrity": "sha512-qqgNkQ2u1yZHxjhxsZaxUtRDW8dIqIYm33rx/mzwQv0SfY9x1B+iraj8vWeFiXjjSVVhEMepXSOts1TqPzvXNQ==",
|
|
"cpu": [
|
|
"riscv64"
|
|
],
|
|
"dev": true,
|
|
"license": "Apache-2.0 OR MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"linux"
|
|
],
|
|
"engines": {
|
|
"node": ">= 10"
|
|
}
|
|
},
|
|
"node_modules/@tauri-apps/cli-linux-x64-gnu": {
|
|
"version": "2.11.4",
|
|
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-2.11.4.tgz",
|
|
"integrity": "sha512-2VRNWl84FOH0m2giiDkO2h0QXlcMJeX+zJDpI5kDIQAx6s+geF3v48F4DXfJez4GS/FdoDGnPnw1C2iYGbQ7bQ==",
|
|
"cpu": [
|
|
"x64"
|
|
],
|
|
"dev": true,
|
|
"license": "Apache-2.0 OR MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"linux"
|
|
],
|
|
"engines": {
|
|
"node": ">= 10"
|
|
}
|
|
},
|
|
"node_modules/@tauri-apps/cli-linux-x64-musl": {
|
|
"version": "2.11.4",
|
|
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-2.11.4.tgz",
|
|
"integrity": "sha512-o9GyhYor/nc7xarmwDE3ka2szuW3uuZzXjHWh64Q8YX5AtSgxdQkFWzrY4O8KiGtVNvFBI14H3Q49Qj5TOIP/A==",
|
|
"cpu": [
|
|
"x64"
|
|
],
|
|
"dev": true,
|
|
"license": "Apache-2.0 OR MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"linux"
|
|
],
|
|
"engines": {
|
|
"node": ">= 10"
|
|
}
|
|
},
|
|
"node_modules/@tauri-apps/cli-win32-arm64-msvc": {
|
|
"version": "2.11.4",
|
|
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-2.11.4.tgz",
|
|
"integrity": "sha512-ld5Ehb598m0VkYyylRPNeCFsBe/km0jxis6KgMpl3IGY6I/i1RwQXO05I1AsXUXO2WC6AvB/Lw4qTf/asiuEiQ==",
|
|
"cpu": [
|
|
"arm64"
|
|
],
|
|
"dev": true,
|
|
"license": "Apache-2.0 OR MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"win32"
|
|
],
|
|
"engines": {
|
|
"node": ">= 10"
|
|
}
|
|
},
|
|
"node_modules/@tauri-apps/cli-win32-ia32-msvc": {
|
|
"version": "2.11.4",
|
|
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-2.11.4.tgz",
|
|
"integrity": "sha512-12Hxi0XX/H5VFxO/bGgHkFWhml9VMgEOu9CidjeCeTNQ1l6fpUlbiGgSP7CLI3PFtW9/FfbeHieZ+kyWK5H7CA==",
|
|
"cpu": [
|
|
"ia32"
|
|
],
|
|
"dev": true,
|
|
"license": "Apache-2.0 OR MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"win32"
|
|
],
|
|
"engines": {
|
|
"node": ">= 10"
|
|
}
|
|
},
|
|
"node_modules/@tauri-apps/cli-win32-x64-msvc": {
|
|
"version": "2.11.4",
|
|
"resolved": "https://registry.npmjs.org/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-2.11.4.tgz",
|
|
"integrity": "sha512-+vDiqBIU5dMISg/wNvX3sF+ZHfgJGJ5T0AcO+EHNXV9GGAG+P5fzodlDXD3QdKCRgZxMoCm5PPvj3BqLNjBthw==",
|
|
"cpu": [
|
|
"x64"
|
|
],
|
|
"dev": true,
|
|
"license": "Apache-2.0 OR MIT",
|
|
"optional": true,
|
|
"os": [
|
|
"win32"
|
|
],
|
|
"engines": {
|
|
"node": ">= 10"
|
|
}
|
|
},
|
|
"node_modules/@tauri-apps/plugin-dialog": {
|
|
"version": "2.7.2",
|
|
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-dialog/-/plugin-dialog-2.7.2.tgz",
|
|
"integrity": "sha512-pX0IGm1I3I6wc+zeKYcq1GSqogK6okCNX5fOdaNU5ab1AjGS6l1E5wFNjEb7meg7ZFSp0JUs+0jQGQNyOvLrsg==",
|
|
"license": "MIT OR Apache-2.0",
|
|
"dependencies": {
|
|
"@tauri-apps/api": "^2.11.0"
|
|
}
|
|
},
|
|
"node_modules/@tauri-apps/plugin-notification": {
|
|
"version": "2.3.3",
|
|
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-notification/-/plugin-notification-2.3.3.tgz",
|
|
"integrity": "sha512-Zw+ZH18RJb41G4NrfHgIuofJiymusqN+q8fGUIIV7vyCH+5sSn5coqRv/MWB9qETsUs97vmU045q7OyseCV3Qg==",
|
|
"license": "MIT OR Apache-2.0",
|
|
"dependencies": {
|
|
"@tauri-apps/api": "^2.8.0"
|
|
}
|
|
}
|
|
}
|
|
}
|