diff --git a/README.md b/README.md index d71a236..f2a4c1a 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,8 @@ python -m kindle_zotero_importer run ... --full # ignore incremental; re-proces PDF positioning uses Poppler (`pdftotext`; `pdftohtml`; `pdfinfo`) + `qpdf` fallback; EPUB uses CFI. Zotero writes are only via `Zotero.Annotations`; never direct `zotero.sqlite` writes. +Anonymized sharing is **on by default** to help future development (only `citation key`; hashed highlight; `color`; `has comment` + note; `added_on`; `integrated_at`; never raw highlight text); opt out anytime in `Manager → Settings` → uncheck `Share anonymized annotations` (also `annotation.utkubilen.de`, private, no AI). + ## Releases Stable releases are on `Releases` with `kindle-zotero-importer.xpi` + `updates.json` attached. Pre-releases (`beta`) are marked `Pre-release` on GitHub. Zotero auto-updates from `releases/latest/download/updates.json`. diff --git a/plugin/manager.html b/plugin/manager.html index 26dd5cd..74fc276 100644 --- a/plugin/manager.html +++ b/plugin/manager.html @@ -184,17 +184,16 @@ try { const hasAsked = Services.prefs.getBoolPref("extensions.kindleZoteroImporter.askedAnonymizedShare"); } catch(e) { - // First run: ask - if (results.created > 0 && confirm("Would you like to share anonymized annotations to help future development?\n\nWe would only send: citation key, hashed highlight (not text), color, has comment + note text (if any), and dates — never your highlight text without the note. Notes help understand context. No AI at this stage.\n\nYou can change this anytime in Settings.")) { - Services.prefs.setBoolPref("extensions.kindleZoteroImporter.shareAnonymized", true); - try { - const anonId = Math.random().toString(36).slice(2,10) + Date.now().toString(36); - Services.prefs.setCharPref("extensions.kindleZoteroImporter.anonId", anonId); - } catch(e2) {} - } else { - Services.prefs.setBoolPref("extensions.kindleZoteroImporter.shareAnonymized", false); - } + // First run: default ON, allow opt-out + Services.prefs.setBoolPref("extensions.kindleZoteroImporter.shareAnonymized", true); + try { + const anonId = Math.random().toString(36).slice(2,10) + Date.now().toString(36); + Services.prefs.setCharPref("extensions.kindleZoteroImporter.anonId", anonId); + } catch(e2) {} Services.prefs.setBoolPref("extensions.kindleZoteroImporter.askedAnonymizedShare", true); + if (results.created > 0) { + alert("Anonymized sharing is enabled by default to help future development (only citation key, hashed highlight, color, has comment + note, and dates — never your highlight text alone). You can opt out anytime in Settings → uncheck 'Share anonymized annotations'."); + } } } this.data = data; @@ -1046,7 +1045,7 @@ const shareCheck = document.createElement('input'); shareCheck.type = 'checkbox'; shareCheck.id = 'setting-shareAnonymized'; - try { shareCheck.checked = Services.prefs.getBoolPref("extensions.kindleZoteroImporter.shareAnonymized"); } catch(e) { shareCheck.checked = false; } + try { shareCheck.checked = Services.prefs.getBoolPref("extensions.kindleZoteroImporter.shareAnonymized"); } catch(e) { shareCheck.checked = true; } shareRow.appendChild(shareCheck); const shareLabel = document.createElement('label'); shareLabel.htmlFor = 'setting-shareAnonymized'; diff --git a/plugin/prefs.js b/plugin/prefs.js index ddad9fd..a053964 100644 --- a/plugin/prefs.js +++ b/plugin/prefs.js @@ -2,3 +2,5 @@ pref("extensions.kindleZoteroImporter.projectDir", "/Users/ubd/Library/Mobile Do pref("extensions.kindleZoteroImporter.pythonPath", "/opt/homebrew/bin/python3"); pref("extensions.kindleZoteroImporter.zoteroDbPath", "/Users/ubd/Zotero/zotero.sqlite"); pref("extensions.kindleZoteroImporter.zoteroStorageRoot", "/Users/ubd/Zotero/storage"); +pref("extensions.kindleZoteroImporter.shareAnonymized", true); +pref("extensions.kindleZoteroImporter.askedAnonymizedShare", false);