संदर्भ

डेटा और गोपनीयता

Reviews आपके प्रोजेक्ट फ़ोल्डर में रहते हैं। सेटिंग्स ~/.ferret/ में रहती हैं, और keys व अकाउंट OS के user-data फ़ोल्डर में। Developer तक सिर्फ़ crash reports पहुँचती हैं, Sentry के ज़रिए, और आप उन्हें बंद कर सकते हैं। ऐप से जो feedback आप भेजना चुनते हैं, वह एक सार्वजनिक GitHub issue बन जाता है।

#.ferret/reviews/ के अंदर

<project>/.ferret/reviews/20261003-104500/
├── feedback.md      # what the agent reads
├── 01.png, 02.png…  # one or more images per finding
├── session.json     # review state and edit history
├── events.jsonl     # action log (built-in browser only)
├── recording.webm   # the video
└── work/            # intermediate audio and frames

नाम बदलने से पहले बने reviews .ade-movie/reviews/ में रहते हैं। वे अब भी सूची में दिखते हैं और खुलते हैं, और नए reviews .ferret/reviews/ में जाते हैं।

रिकॉर्डिंग शुरू होने पर .ferret/ को .git/info/exclude में जोड़ा जाता है। Worktrees और submodules का भी ध्यान रखा जाता है। .gitignore कभी नहीं बदला जाता। बीच में रुका review, अगर उसके records बचे हों, तो history से वापस लाया जा सकता है। तब ऐप चेतावनी देता है कि आख़िरी कुछ सेकंड गायब हो सकते हैं।

#कितने समय तक रखा जाता है

रिकॉर्डिंग रखें (डिफ़ॉल्ट 7 दिन, 30 दिन, या हमेशा): ऐप शुरू होने पर, इससे पुराने पूरे हो चुके reviews से recording.webm और work/ हटा दिए जाते हैं। feedback.md और findings की इमेज रखी जाती हैं। अधूरे reviews कभी नहीं हटाए जाते। यह सफ़ाई launch पर, आख़िरी बार खोले गए प्रोजेक्ट के लिए चलती है।

#आपकी मशीन से क्या बाहर जाता है

कबकहाँडेटा
ट्रांसक्रिप्शन: डिवाइस पर (मुफ़्त)कहीं नहीं—
ट्रांसक्रिप्शन: OpenAI / compatibleOpenAI या आपका Base URLऑडियो के chunks
मॉडल डाउनलोडHugging Faceफ़ाइल की request
व्यवस्थित करेंआपका Claude Code / Codex CLI, या organizer में आपका सेट किया LLM endpointसिर्फ़ टेक्स्ट और action log (कोई इमेज, ऑडियो या वीडियो नहीं)
स्वीकृति जाँच (decision model, डिफ़ॉल्ट रूप से बंद)आपका agent, local relay से होकर, Ollama / Cloudflare / AI Gateway / TypeSafe / आपके URL तकजो agent भेजता है: finding का टेक्स्ट, "Done when", और BEFORE/AFTER screenshots (सिर्फ़ इमेज मॉडल के लिए)
Agent को भेजेंआपके टर्मिनल का agentfeedback.md की ओर इशारा करने वाला एक निर्देश
GitHub पर भेजेंgh के ज़रिए GitHubसिर्फ़ body का टेक्स्ट (कोई इमेज नहीं)
फ़ुटर का usage (सिर्फ़ Claude Code और Codex)Anthropic, ChatGPTआपके अपने login के साथ usage की request
GitHub स्टार का अनुरोधआपके gh के ज़रिए GitHubजाँचता है कि आपने repo को स्टार दिया है या नहीं, और सिर्फ़ तभी स्टार देता है जब आप GitHub पर स्टार दें पर क्लिक करें
अपडेट जाँचें (हाथ से)डाउनलोड server (Cloudflare R2)latest.json की request
ऐप से feedback भेजना (सिर्फ़ जब आप भेजें; जल्द आ रहा है)Developer का feedback relay (एक Cloudflare Worker), जो JapanMarketing-Dev/ferret में एक सार्वजनिक issue खोलता हैआपका टेक्स्ट, bug या idea, ऐप / OS version और CPU, और आपके जोड़े गए अधिकतम 3 screenshots। Keys, tokens, ईमेल पते और home-folder paths छिपा दिए जाते हैं। Relay आपका IP address सेव नहीं करता (ऐप से feedback देखें)
कोई crash या error (Crash reports भेजें चालू)SentryStack trace और OS / CPU / ऐप के versions (Crash reports देखें)
  • ऐप में कोई analytics, performance tracing या session replay नहीं है। आपके पूछे बिना यह सिर्फ़ crash reporting भेजता है: errors, हर launch पर एक session, और धीमी शुरुआत व freeze की चेतावनियाँ, जिनका वर्णन नीचे है और जो सब Crash reports भेजें से नियंत्रित होती हैं।
  • URLs में secret जैसे दिखने वाले मान (tokens, keys) feedback.md में लिखे जाने से पहले छिपा दिए जाते हैं।
  • पेज से लिया गया टेक्स्ट feedback.md में डेटा के रूप में चिह्नित होता है, इसलिए agent को बताया जाता है कि उसमें मिले निर्देशों का पालन न करे।
  • यह वेबसाइट (ऐप नहीं) Cloudflare Web Analytics से पेज views गिनती है: बिना cookies के, बिना cross-site tracking के, और बिना किसी निजी डेटा के।

#ऐप से feedback

जल्द आ रहा है

ऐप के अंदर का feedback form और उसका relay अभी रिलीज़ नहीं हुए हैं। यह सेक्शन बताता है कि वे कैसे काम करेंगे।

आप GitHub अकाउंट के बिना Ferret के अंदर से bug report या कोई idea भेज सकेंगे। यह सिर्फ़ तभी भेजा जाता है जब आप भेजें, और JapanMarketing-Dev/ferret (नए टैब में खुलता है) में from-app label वाला एक सार्वजनिक issue बन जाता है। ऐसा कुछ भी शामिल न करें जिसे आप सार्वजनिक रूप से पोस्ट नहीं करेंगे।

  • ऐप इसे आपके कंप्यूटर से एक छोटे relay (developer द्वारा चलाया जाने वाला एक Cloudflare Worker) को भेजता है, जो अपने GitHub token से issue खोलता है। Developer का यही एकमात्र server है जिसे आपका लिखा कुछ भी मिलता है।
  • भेजा जाता है: आपका शीर्षक और टेक्स्ट, यह bug है या idea, ऐप का version, और आपके जोड़े गए अधिकतम 3 PNG या JPEG screenshots। OS का नाम और version, CPU architecture, और random install ID सिर्फ़ तभी भेजे जाते हैं जब आप उन्हें शामिल रहने दें। नहीं भेजा जाता: आपका नाम, ईमेल, GitHub अकाउंट, प्रोजेक्ट की फ़ाइलें, रिकॉर्डिंग या findings।
  • Issue बनने से पहले relay keys या tokens जैसे दिखने वाले टेक्स्ट, ईमेल पतों और home-folder paths में user name को छिपा देता है, और @mentions से किसी को notification जाने से रोकता है। यह screenshots से location और दूसरा metadata भी हटा देता है। फिर भी अपना टेक्स्ट जाँच लें: छिपाने की प्रक्रिया सब कुछ नहीं पकड़ सकती।
  • Relay आपका IP address सेव नहीं करता। एक भेजने वाला कितनी बार पोस्ट कर सकता है, इसे सीमित करने के लिए (हर घंटे 5, हर दिन 20), यह IP address का (और भेजा गया हो तो install ID का) एक keyed hash अधिकतम 24 घंटे तक गिनता है, फिर उसे डिलीट कर देता है। दोनों में से कुछ भी issue में नहीं दिखता।
  • Screenshots relay द्वारा Cloudflare R2 में अनुमान न लगाए जा सकने वाले नामों से रखे जाते हैं और issue में दिखाए जाते हैं। कोई issue या उसके screenshots हटवाने के लिए issue पर comment करें या नया issue खोलें।
  • Relay का code repository में workers/feedback-relay में है।

#Crash reports

जब ऐप crash होता है या किसी unhandled error से टकराता है, तो Ferret Sentry (नए टैब में खुलता है) को एक crash report भेजता है ताकि bug ठीक किया जा सके। यह डिफ़ॉल्ट रूप से चालू है। इसे Settings → गोपनीयता → Crash reports भेजें में, या पहली बार launch पर दिखने वाली सूचना में बंद करें से बंद करें। बंद करना तुरंत लागू होता है। फिर से चालू करना अगले launch पर लागू होता है। Development builds (pnpm dev) भी development tag के साथ भेजते हैं, ताकि developers काम करते समय आए crashes ठीक कर सकें। E2E runs और unit tests कभी नहीं भेजते।

भेजा जाता हैनहीं भेजा जाता
  • Error का प्रकार और संदेश, home-folder paths को ~ के रूप में दिखाकर
  • Stack trace (Ferret के code में यह कहाँ हुआ)
  • Native crashes के लिए: सिर्फ़ कौन-सा process crash हुआ, वह क्यों बंद हुआ (जैसे crashed या oom), और ऐप का version
  • OS का नाम और version, CPU architecture, Electron / Chrome / Node के versions, ऐप का version, स्क्रीन का size, memory का size
  • Error से ठीक पहले के ऐप lifecycle events (जैसे app.ready), और startup की विफलताएँ
  • ऐप का कौन-सा हिस्सा fail हुआ: स्क्रीन का कोई हिस्सा जो render नहीं हो सका (और उसके React component नाम), कोई IPC call, कोई टर्मिनल जो शुरू नहीं हो सका, कोई crash हुआ या अटका process, या ऐप का कोई पेज जो लोड नहीं हो सका
  • आप ऐप में कहाँ थे: editor या feedback मोड, खुला टैब (Browser, Findings, Settings, या सिर्फ़ file), और क्या कोई रिकॉर्डिंग चल रही थी
  • हर launch पर एक session (शुरू हुआ, सामान्य रूप से खत्म हुआ, या crash हुआ), ताकि हर version की crash-free दर मापी जा सके
  • एक random install ID (पहले launch पर बनाई जाती है और ऐप के settings फ़ोल्डर में रखी जाती है), ताकि प्रभावित installs की संख्या गिनी जा सके। यह आपके नाम, ईमेल या डिवाइस से जुड़ी नहीं होती
  • सिर्फ़ JavaScript crashes के लिए: Ferret की अपनी log की आख़िरी 50 लाइनें (जैसे [startup] और [recording]), छोटी करके और paths, URLs, ईमेल व keys हटाकर
  • आपके प्रोजेक्ट फ़ोल्डर का path और फ़ाइल नाम (<project> से बदले जाते हैं)
  • बिल्ट-इन ब्राउज़र में खोले गए URLs, और कोई भी दूसरा वेब पता (<url> से बदला जाता है)
  • टर्मिनल का output, transcripts, findings, पेज का टेक्स्ट, screenshots
  • ईमेल पते और API keys या tokens (बदल दिए जाते हैं)
  • आपका नाम, डिवाइस का नाम, IP address (सेव नहीं होता), cookies, local variables
  • Native crashes के memory dumps (minidumps)। इनमें memory में मौजूद कुछ भी हो सकता है, इसलिए ये आपके कंप्यूटर पर ही रहते हैं
  • Clicks, network requests, और कोई भी log लाइन जो Ferret की अपनी न हो

इंस्टॉल किया गया ऐप हर launch पर अधिकतम 10 reports भेजता है, और JavaScript errors में से सिर्फ़ आधे (native crashes हमेशा भेजे जाते हैं)। Development builds हर error भेजते हैं, हर launch पर अधिकतम 50। एक ही error हर launch पर सिर्फ़ एक बार भेजा जाता है। धीमी शुरुआत (5 सेकंड से ज़्यादा) और ऐप के लंबे freeze (1 सेकंड से ज़्यादा) चेतावनियों के रूप में भेजे जाते हैं, हर 10 मिनट में अधिकतम एक बार। कोई performance tracing या session replay इस्तेमाल नहीं होता। ऐप Sentry का मुफ़्त plan इस्तेमाल करता है। अगर वह भर जाए, तो अतिरिक्त reports छोड़ दी जाती हैं और किसी से पैसे नहीं लिए जाते।

Ferret खुद build कर रहे हैं? FERRET_SENTRY_DSN (पुराना नाम MOVIE_ADE_SENTRY_DSN भी काम करता है) को अपने Sentry DSN पर सेट करें, या कुछ भी न भेजने के लिए खाली string पर। Code src/main/telemetry.ts और src/shared/telemetry.ts में है।

GitHub पर इस पेज के अनुवाद में मदद करें (नए टैब में खुलता है)