All checks were successful
ci / gate (push) Successful in 11m44s
tauri-plugin-updater with a minisign public key in tauri.conf.json (the private key and its password are repository secrets, generated for this and never in the repo), the manifest endpoint on the same host as the dnf repo, and updater:default plus process:allow-restart granted with their reasons. app_info now says how the binary was installed; the rpm and deb opt out because dnf and apt own their updates, the AppImage, NSIS and dmg opt in. The shell shows an offer three seconds after settling, with the two versions, and applies it only on "Update and restart". The release workflow signs the bundles (createUpdaterArtifacts), writes latest.json for linux-x86_64 pointing at the release asset with its signature, and the publish job rsyncs it to rpm.lair.cafe last, so a manifest never names an asset that is not yet released. Windows and macOS entries come with #34; the run-N-then-N+1 check waits on two published releases. The secret handling audit is a test, secrets_do_not_leak.rs: create a wallet from a known phrase, open it, unlock, sign, derive the wormhole keys, use both caches, lock, all under trace logging into a sink; then assert the log, every file in the data directory and the Debug output of every secret-holding type contain none of the words, the seed, the secret key or the wormhole secret, as hex, as raw bytes or as the decimal list a derived Debug prints. OpenedWallet and Session gain redacting Debug impls so the test can log them. The sample of the secret key starts inside K: an ML-DSA secret key opens with rho, which is also the public key's first 32 bytes, and the first draft of this test flagged the public key for it. Closes #50 Refs #35 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014ftBXYuba8ARhQeF74oUgW
45 lines
1.2 KiB
JSON
45 lines
1.2 KiB
JSON
{
|
|
"name": "wallet-ui",
|
|
"private": true,
|
|
"version": "0.1.0",
|
|
"type": "module",
|
|
"packageManager": "pnpm@10.30.3",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc -b && vite build",
|
|
"preview": "vite preview",
|
|
"lint": "eslint .",
|
|
"format": "prettier --write src",
|
|
"format:check": "prettier --check src",
|
|
"typecheck": "tsc -b --noEmit"
|
|
},
|
|
"dependencies": {
|
|
"@tanstack/react-query": "^5.102.8",
|
|
"@tauri-apps/api": "^2.9.0",
|
|
"@tauri-apps/plugin-clipboard-manager": "^2.3.3",
|
|
"@tauri-apps/plugin-dialog": "^2.7.3",
|
|
"@tauri-apps/plugin-opener": "^2.5.5",
|
|
"@tauri-apps/plugin-process": "^2.3.1",
|
|
"@tauri-apps/plugin-updater": "^2.11.0",
|
|
"qrcode-generator": "^2.0.4",
|
|
"react": "^19.1.1",
|
|
"react-dom": "^19.1.1",
|
|
"react-router-dom": "^7.8.0"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.32.0",
|
|
"@types/node": "^26.4.1",
|
|
"@types/react": "^19.1.9",
|
|
"@types/react-dom": "^19.1.7",
|
|
"@vitejs/plugin-react-swc": "^4.0.0",
|
|
"eslint": "^9.32.0",
|
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
"eslint-plugin-react-refresh": "^0.4.20",
|
|
"globals": "^16.3.0",
|
|
"prettier": "^3.4.2",
|
|
"typescript": "~5.8.3",
|
|
"typescript-eslint": "^8.39.0",
|
|
"vite": "^7.1.0"
|
|
}
|
|
}
|