generated from nhcarrigan/template
82061f125b
Implemented intelligent permission batching that detects cancelled sibling tool calls and presents them together in a single modal. This dramatically improves the user experience when multiple tools require permission. Key changes: - Track pending tool uses from Assistant messages in thread-local storage - Capture and batch sibling tools that get cancelled due to permission denials - Clear pending tools on each Result message to prevent accumulation - Use SvelteSet for reactive permission selection in the modal - Update permission modal to display count when multiple permissions requested - Fix check-all.sh to source nvm for pnpm access - Add git commit instructions to CLAUDE.md for this project Technical improvements: - Thread-local storage for cross-message tool tracking - Proper null checking in TypeScript permission handling - Clippy-compliant const initialisation for thread_local - All ESLint, TypeScript, and Rust checks passing The modal now shows both the explicitly denied tool AND any sibling tools that were called in parallel, allowing users to approve all permissions in one go instead of clicking through multiple modals.
56 lines
1.5 KiB
Bash
Executable File
56 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Source nvm to get access to pnpm
|
|
export NVM_DIR="$HOME/.nvm"
|
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Function to run a command and check its status
|
|
run_check() {
|
|
local desc=$1
|
|
local cmd=$2
|
|
|
|
echo -e "\n${YELLOW}Running: ${desc}${NC}"
|
|
echo -e "${YELLOW}Command: ${cmd}${NC}"
|
|
|
|
if eval "$cmd"; then
|
|
echo -e "${GREEN}✓ ${desc} passed${NC}"
|
|
return 0
|
|
else
|
|
echo -e "${RED}✗ ${desc} failed${NC}"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Track if any checks fail
|
|
failed=0
|
|
|
|
echo -e "${YELLOW}🔍 Running all checks for Hikari Desktop...${NC}"
|
|
|
|
# Frontend checks
|
|
run_check "Frontend lint" "pnpm lint" || failed=1
|
|
run_check "Frontend format check" "pnpm format:check" || failed=1
|
|
run_check "Frontend type check" "pnpm check" || failed=1
|
|
run_check "Frontend tests" "pnpm test" || failed=1
|
|
|
|
# Backend checks
|
|
run_check "Backend clippy (strict)" "cd src-tauri && cargo clippy --all-targets --all-features -- -D warnings" || failed=1
|
|
run_check "Backend tests" "cargo test" || failed=1
|
|
|
|
# Summary
|
|
echo -e "\n${YELLOW}========================================${NC}"
|
|
if [ $failed -eq 0 ]; then
|
|
echo -e "${GREEN}✨ All checks passed! The code is looking great!${NC}"
|
|
echo -e "${GREEN} Naomi would be so proud of us! 💖${NC}"
|
|
exit 0
|
|
else
|
|
echo -e "${RED}❌ Some checks failed. Let's fix them together!${NC}"
|
|
echo -e "${RED} Don't worry, we'll get through this! 💪${NC}"
|
|
exit 1
|
|
fi
|