diff --git a/Makefile b/Makefile index f730f4c..3d8e347 100644 --- a/Makefile +++ b/Makefile @@ -147,7 +147,7 @@ install: build stop-worker @echo "Installation complete!" # Uninstall -uninstall: +uninstall: stop-worker @echo "Uninstalling..." @./scripts/unregister-plugin.sh rm -rf $(HOME)/.claude/plugins/marketplaces/claude-mnemonic diff --git a/scripts/unregister-plugin.sh b/scripts/unregister-plugin.sh index 421227b..d709f3e 100755 --- a/scripts/unregister-plugin.sh +++ b/scripts/unregister-plugin.sh @@ -4,19 +4,65 @@ set -e PLUGINS_FILE="$HOME/.claude/plugins/installed_plugins.json" +SETTINGS_FILE="$HOME/.claude/settings.json" +MARKETPLACES_FILE="$HOME/.claude/plugins/known_marketplaces.json" +CACHE_DIR="$HOME/.claude/plugins/cache/claude-mnemonic" PLUGIN_KEY="claude-mnemonic@claude-mnemonic" - -if [ ! -f "$PLUGINS_FILE" ]; then - echo "No plugins file found, nothing to unregister" - exit 0 -fi +MARKETPLACE_NAME="claude-mnemonic" # Check if jq is available -if command -v jq &> /dev/null; then - # Use jq to remove the plugin entry +if ! command -v jq &> /dev/null; then + echo "Warning: jq not found, please manually remove plugin entries from:" + echo " - $PLUGINS_FILE (remove $PLUGIN_KEY)" + echo " - $SETTINGS_FILE (remove from enabledPlugins and statusLine)" + echo " - $MARKETPLACES_FILE (remove $MARKETPLACE_NAME)" + echo " - $CACHE_DIR (remove directory)" + echo " - $HOME/.claude-mnemonic (remove data directory)" + exit 1 +fi + +# Remove from installed_plugins.json +if [ -f "$PLUGINS_FILE" ]; then jq --arg key "$PLUGIN_KEY" 'del(.plugins[$key])' "$PLUGINS_FILE" > "${PLUGINS_FILE}.tmp" \ && mv "${PLUGINS_FILE}.tmp" "$PLUGINS_FILE" - echo "Plugin unregistered successfully" + echo "Plugin removed from installed_plugins.json" else - echo "Warning: jq not found, please manually remove $PLUGIN_KEY from $PLUGINS_FILE" + echo "No plugins file found, skipping" fi + +# Remove from settings.json (enabledPlugins and statusLine if it points to our plugin) +if [ -f "$SETTINGS_FILE" ]; then + # Remove from enabledPlugins and clear statusLine if it references our plugin + jq --arg key "$PLUGIN_KEY" ' + del(.enabledPlugins[$key]) | + if .statusLine.command and (.statusLine.command | contains("claude-mnemonic")) then + del(.statusLine) + else + . + end + ' "$SETTINGS_FILE" > "${SETTINGS_FILE}.tmp" \ + && mv "${SETTINGS_FILE}.tmp" "$SETTINGS_FILE" + echo "Plugin removed from settings.json" +fi + +# Remove from known_marketplaces.json +if [ -f "$MARKETPLACES_FILE" ]; then + jq --arg key "$MARKETPLACE_NAME" 'del(.[$key])' "$MARKETPLACES_FILE" > "${MARKETPLACES_FILE}.tmp" \ + && mv "${MARKETPLACES_FILE}.tmp" "$MARKETPLACES_FILE" + echo "Marketplace removed from known_marketplaces.json" +fi + +# Remove cache directory +if [ -d "$CACHE_DIR" ]; then + rm -rf "$CACHE_DIR" + echo "Cache directory removed" +fi + +# Remove data directory (database, embeddings, etc.) +DATA_DIR="$HOME/.claude-mnemonic" +if [ -d "$DATA_DIR" ]; then + rm -rf "$DATA_DIR" + echo "Data directory removed ($DATA_DIR)" +fi + +echo "Plugin unregistered successfully" diff --git a/ui/package-lock.json b/ui/package-lock.json index fdce3f2..3023d9e 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -1,12 +1,12 @@ { "name": "claude-mnemonic-dashboard", - "version": "v0.6.1-10-g6c28ecb-dirty", + "version": "v0.6.1-11-g7fe679f-dirty", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "claude-mnemonic-dashboard", - "version": "v0.6.1-10-g6c28ecb-dirty", + "version": "v0.6.1-11-g7fe679f-dirty", "dependencies": { "vue": "^3.5.13" }, diff --git a/ui/package.json b/ui/package.json index 6da0d64..216071c 100644 --- a/ui/package.json +++ b/ui/package.json @@ -1,6 +1,6 @@ { "name": "claude-mnemonic-dashboard", - "version": "v0.6.1-10-g6c28ecb-dirty", + "version": "v0.6.1-11-g7fe679f-dirty", "private": true, "type": "module", "scripts": {