Files
binect-chrome/dev-helper.sh
tegwick be4377253e Switch to HTTP Basic Auth and improve PDF detection
- Replace token-based auth with HTTP Basic Authentication per Binect API v1 spec
- Improve PDF detection: check current tab first, then background service, fallback to recent downloads
- Add password visibility toggle in login form
- Add extensive debug logging throughout for troubleshooting
- Update manifest with alarms, activeTab permissions and <all_urls> host permission
- Add documentation files and development helper scripts
- Add Binect API specs for reference

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 16:50:57 +01:00

199 lines
5.1 KiB
Bash
Executable File

#!/bin/bash
# Development Helper Script for BinectChrome
# Quick commands for common development tasks
set -e
EXTENSION_NAME="BinectChrome"
DIST_DIR="./dist"
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Print colored message
print_msg() {
local color=$1
local msg=$2
echo -e "${color}${msg}${NC}"
}
# Show usage
usage() {
echo "BinectChrome Development Helper"
echo ""
echo "Usage: ./dev-helper.sh [command]"
echo ""
echo "Commands:"
echo " build - Production build"
echo " dev - Start development mode (watch)"
echo " clean - Clean dist directory and rebuild"
echo " test - Run tests"
echo " check - Run type-check and lint"
echo " open-chrome - Open Chrome extension management"
echo " open-sw - Open Chrome service worker internals"
echo " verify - Verify dist build is valid"
echo " help - Show this help"
echo ""
echo "Quick Test-Fix Loop:"
echo " 1. Run: ./dev-helper.sh dev (in one terminal)"
echo " 2. Make changes in src/"
echo " 3. Run: ./dev-helper.sh verify"
echo " 4. Reload extension in Chrome (chrome://extensions/)"
}
# Build production
build() {
print_msg "$BLUE" "📦 Building extension..."
npm run build
print_msg "$GREEN" "✅ Build complete!"
verify
}
# Start development mode
dev() {
print_msg "$BLUE" "🔧 Starting development mode (watch)..."
print_msg "$YELLOW" "Press Ctrl+C to stop"
print_msg "$YELLOW" "Tip: After changes, reload extension at chrome://extensions/"
npm run dev
}
# Clean and rebuild
clean() {
print_msg "$BLUE" "🧹 Cleaning dist directory..."
rm -rf "$DIST_DIR"
print_msg "$GREEN" "✅ Cleaned!"
build
}
# Run tests
test() {
print_msg "$BLUE" "🧪 Running tests..."
npm test
}
# Type check and lint
check() {
print_msg "$BLUE" "🔍 Running type-check..."
npm run type-check
print_msg "$BLUE" "🔍 Running lint..."
npm run lint
print_msg "$GREEN" "✅ All checks passed!"
}
# Open Chrome extensions page
open_chrome() {
print_msg "$BLUE" "🌐 Opening Chrome extensions page..."
if command -v google-chrome &> /dev/null; then
google-chrome chrome://extensions/ &
elif command -v chromium &> /dev/null; then
chromium chrome://extensions/ &
else
print_msg "$YELLOW" "⚠️ Chrome not found. Please open chrome://extensions/ manually"
fi
}
# Open Chrome service worker internals
open_sw() {
print_msg "$BLUE" "🌐 Opening Chrome service worker internals..."
if command -v google-chrome &> /dev/null; then
google-chrome chrome://serviceworker-internals/ &
elif command -v chromium &> /dev/null; then
chromium chrome://serviceworker-internals/ &
else
print_msg "$YELLOW" "⚠️ Chrome not found. Please open chrome://serviceworker-internals/ manually"
fi
}
# Verify build
verify() {
print_msg "$BLUE" "🔍 Verifying build..."
# Check if dist exists
if [ ! -d "$DIST_DIR" ]; then
print_msg "$RED" "❌ dist/ directory not found. Run build first."
exit 1
fi
# Check required files
REQUIRED_FILES=(
"$DIST_DIR/manifest.json"
"$DIST_DIR/background.js"
"$DIST_DIR/popup.html"
"$DIST_DIR/popup.js"
)
for file in "${REQUIRED_FILES[@]}"; do
if [ ! -f "$file" ]; then
print_msg "$RED" "❌ Missing required file: $file"
exit 1
fi
done
# Check manifest has required permissions
if ! grep -q '"alarms"' "$DIST_DIR/manifest.json"; then
print_msg "$RED" "❌ manifest.json missing 'alarms' permission"
exit 1
fi
# Check background.js is an ES module (should start with export/import)
if ! grep -qE '^(export|import)' "$DIST_DIR/background.js"; then
print_msg "$YELLOW" "⚠️ background.js might not be a proper ES module"
print_msg "$YELLOW" " First line: $(head -n 1 $DIST_DIR/background.js)"
fi
print_msg "$GREEN" "✅ Build verification passed!"
print_msg "$BLUE" "📋 Build info:"
echo " - Manifest version: $(grep -o '"version": "[^"]*"' $DIST_DIR/manifest.json | cut -d'"' -f4)"
echo " - Background size: $(du -h $DIST_DIR/background.js | cut -f1)"
echo " - Popup size: $(du -h $DIST_DIR/popup.js | cut -f1)"
echo ""
print_msg "$YELLOW" "Next steps:"
echo " 1. Go to chrome://extensions/"
echo " 2. Click 'Load unpacked'"
echo " 3. Select: $DIST_DIR"
echo " 4. Or reload if already loaded"
}
# Main
case "${1:-}" in
build)
build
;;
dev)
dev
;;
clean)
clean
;;
test)
test
;;
check)
check
;;
open-chrome)
open_chrome
;;
open-sw)
open_sw
;;
verify)
verify
;;
help|--help|-h)
usage
;;
*)
if [ -n "${1:-}" ]; then
print_msg "$RED" "❌ Unknown command: $1"
echo ""
fi
usage
exit 1
;;
esac