diff --git a/MARKETPLACE_LISTING.md b/MARKETPLACE_LISTING.md index 4c02f8d..0f0c3f2 100644 --- a/MARKETPLACE_LISTING.md +++ b/MARKETPLACE_LISTING.md @@ -1,6 +1,6 @@ # JetBrains Marketplace Listing Copy -This file contains release-ready copy and an asset checklist for AI Error Log Purifier 1.0.0. Verify every link and replace the marked support-email placeholder before submission. +This file contains release-ready copy and an asset checklist for AI Error Log Purifier 1.0.2. ## Short description @@ -27,7 +27,7 @@ Supported IDE: IntelliJ IDEA 2026.2 or later (build 262 or later). ## Privacy disclosure -With explicit user consent, selected console text—or the full console log when nothing is selected—plus filtered project metadata is sent to the backend configured by the user for best-effort masking, repeated-log compression, and prompt preparation. The prepared prompt and analysis-mode instruction are then sent directly from the IDE to the selected LLM provider. A persistent device UUID and usage or user-submitted feedback metadata are sent to the configured backend. +With explicit user consent, up to 1,000,000 characters of selected console text—or the full console log when nothing is selected—plus filtered project metadata is sent to the backend configured by the user for best-effort masking, repeated-log compression, error-focused trimming, and prompt preparation. Larger log payloads are rejected before transmission. The prepared prompt and analysis-mode instruction are then sent directly from the IDE to the selected LLM provider. A persistent device UUID and usage or user-submitted feedback metadata are sent to the configured backend. The provider API key is stored in IntelliJ PasswordSafe and is sent to the selected LLM provider, not to the Error Purifier backend. Masking is best-effort, so users should review logs and avoid submitting data they are not authorized to disclose. diff --git a/PRIVACY.md b/PRIVACY.md index 6409b30..cf4ce12 100644 --- a/PRIVACY.md +++ b/PRIVACY.md @@ -1,6 +1,6 @@ # AI Error Log Purifier Privacy Policy -Effective date and policy version: August 31, 2026 (`2026-08-31`) +Effective date and policy version: September 8, 2026 (`2026-09-08`) This policy describes the data handled by the AI Error Log Purifier IntelliJ plugin. The plugin has no central vendor-operated backend by default. Its default backend URL is local, and users configure and operate the separate [self-hosted Error Purifier backend](https://github.com/Seongbin-Choo/errorPurifier) or use one operated by an organization they trust. @@ -8,9 +8,9 @@ This policy describes the data handled by the AI Error Log Purifier IntelliJ plu When a user starts an analysis after granting consent: -1. If console text is selected, only the selected text is used as the log payload. If nothing is selected, the full console content is used. In either case, a log payload over 100,000 characters is rejected and is not sent. +1. If console text is selected, only the selected text is used as the log payload. If nothing is selected, the full console content is used. In either case, a log payload up to 1,000,000 characters may be sent to the configured backend. A larger payload is rejected by the plugin and is not sent. 2. The plugin sends that log payload to the configured self-hosted backend together with filtered metadata from supported Gradle or Maven build files, the presence of supported Spring configuration files, and basic environment tags identifying IntelliJ and the plugin. -3. The backend applies sensitive-value masking and repeated-log compression, then returns a prepared prompt. Masking is best-effort and may not detect every secret or personal identifier. Users should avoid submitting data that they are not authorized to disclose. +3. The backend applies sensitive-value masking and repeated-log compression, then focuses the result around an error anchor and limits the refined log to 12,000 characters before returning a prepared prompt. Masking is best-effort and may not detect every secret or personal identifier. Users should avoid submitting data that they are not authorized to disclose. 4. The plugin appends the selected analysis-mode instruction and sends the prepared prompt directly from the IDE to the LLM provider selected by the user: OpenAI, Google Gemini, or Anthropic. 5. The provider's response is streamed back to the IDE. In the ordinary analysis flow, the AI answer body is not sent to or stored by the Error Purifier backend. diff --git a/README.md b/README.md index 038498b..039e1f8 100644 --- a/README.md +++ b/README.md @@ -1,101 +1,129 @@ # AI Error Log Purifier -AI Error Log Purifier is an IntelliJ IDEA plugin that prepares console errors for analysis by a user-selected LLM provider. It uses a separately running, self-hosted Error Purifier backend to mask sensitive values, compress repeated log entries, and prepare a focused prompt. LLM requests are made by the plugin from the user's IDE. +IntelliJ IDEA 콘솔 오류를 정제해 사용자가 선택한 LLM으로 분석하는 플러그인입니다. 별도로 실행되는 셀프 호스팅 Error Purifier 백엔드가 민감정보 마스킹, 반복 로그 압축, 프롬프트 준비를 담당하고, 플러그인은 사용자의 IDE에서 OpenAI, Google Gemini 또는 Anthropic 모델을 직접 호출합니다. -## Features +> GitHub README는 국내 포트폴리오 독자를 위해 한국어를 기본으로 합니다. JetBrains Marketplace 공개 설명, 심사 가이드, 개인정보 처리방침은 국제 배포 기준에 맞춰 영어로 제공합니다. -- Analyze selected console output or the full console log. -- Mask sensitive values and compress repeated retry or stack-trace content through the configured backend. -- Stream responses from supported OpenAI, Google Gemini, and Anthropic models. -- Store the provider API key in IntelliJ PasswordSafe. -- Choose between fast, precise, and deep analysis modes. -- Review the AI response, prepared log, usage totals, response time, and compression savings in the tool window. -- Surface validation warnings when an answer lacks evidence references or may misinterpret an environment exit code. +## 주요 기능 -## Requirements +- Run/Debug 콘솔에서 선택한 로그 또는 전체 로그 분석 +- 최대 1,000,000자의 콘솔 로그를 백엔드에서 마스킹·압축한 뒤 오류 중심 최대 12,000자로 정제 +- 셀프 호스팅 백엔드를 통한 민감정보 마스킹과 반복 재시도·스택 트레이스 압축 +- OpenAI, Google Gemini, Anthropic 모델의 스트리밍 응답 지원 +- IntelliJ PasswordSafe 기반 LLM API 키 보관 +- 빠른 분석, 정밀 분석, 심층 분석 모드 +- AI 답변, 정제 로그, 실제 토큰 사용량, 응답 시간, 압축 절감량 확인 +- 답변의 근거 로그 인용 누락과 IDE 종료 코드 오해석 가능성 경고 +- 영어 기본 UI와 IntelliJ 한국어 로케일용 한국어 UI 제공 + +## 구성 + +```mermaid +flowchart LR + IDE[IntelliJ 플러그인] -->|콘솔 로그·필터링된 프로젝트 메타데이터| API[셀프 호스팅 백엔드] + API -->|마스킹·반복 압축·준비된 프롬프트| IDE + IDE -->|사용자 API 키·준비된 프롬프트| LLM[OpenAI / Gemini / Claude] + LLM -->|스트리밍 답변| IDE + IDE -->|토큰·응답 시간·피드백 메타데이터| API +``` -- IntelliJ IDEA 2026.2 or later (build 262 or later). -- A separately deployed, self-hosted [Error Purifier backend](https://github.com/Seongbin-Choo/errorPurifier). The backend is not bundled with this plugin. -- Credentials for the LLM provider selected by the user. -- JDK 25 only when building the plugin from source. +- 백엔드는 플러그인에 포함되지 않으며 사용자가 별도로 실행합니다. +- LLM API 키와 실제 모델 호출은 사용자의 IDE에서 처리합니다. +- API 키는 Error Purifier 백엔드로 전송되지 않습니다. +- 일반 분석 흐름에서 AI 답변 본문은 백엔드로 전송하거나 저장하지 않습니다. -## Data flow +## 요구 사항 -1. Console log content, filtered metadata from supported Gradle or Maven build files, the presence of supported Spring configuration files, and basic plugin environment tags are sent to the backend URL configured by the user. When console text is selected, only that selection is sent as log content. -2. The backend masks sensitive values, compresses repeated log content, and returns a prepared prompt. -3. The plugin sends that prepared prompt directly from the IDE to the LLM provider selected by the user. -4. After the request, usage metrics such as provider, model, token counts, latency, character counts, prompt hash, and user-submitted feedback are reported to the configured backend. +- IntelliJ IDEA 2026.2 이상(빌드 262 이상) +- 별도로 실행되는 [Error Purifier 백엔드](https://github.com/Seongbin-Choo/errorPurifier) +- OpenAI, Google Gemini 또는 Anthropic 중 사용할 제공자의 API 자격 증명 +- 소스에서 플러그인을 빌드할 때만 JDK 25 필요 -The provider API key is stored in IntelliJ PasswordSafe. It is sent to the selected LLM provider when making a request, but it is not sent to or stored by the Error Purifier backend. +LLM 제공자 사용량은 사용자의 계정 정책에 따라 비용이 발생할 수 있습니다. -During client synchronization, the plugin sends its version and any previously issued device UUID to the backend. The backend-issued UUID is stored persistently under the IntelliJ configuration directory and is included in subsequent backend requests, including usage and feedback requests, so those records can be associated with the same plugin installation. +## 데이터 흐름 -## Privacy and consent +1. 콘솔에서 텍스트를 선택하면 선택 영역만 로그로 사용하고, 선택하지 않으면 전체 콘솔 내용을 사용합니다. +2. 최대 1,000,000자의 콘솔 로그, 지원되는 Gradle·Maven 빌드 파일에서 필터링한 메타데이터, Spring 설정 파일 존재 여부, 기본 플러그인 환경 태그를 사용자가 설정한 백엔드로 전송합니다. 더 큰 로그는 전송 전에 거부합니다. +3. 백엔드는 민감정보를 최선의 방식으로 마스킹하고 반복 로그를 압축한 뒤 오류 중심으로 최대 12,000자까지 줄여 준비된 프롬프트를 반환합니다. +4. 플러그인은 분석 모드 지시문을 추가하고 사용자가 선택한 LLM 제공자로 IDE에서 직접 요청합니다. +5. 요청이 끝나면 제공자, 모델, 토큰 수, 응답 시간, 문자 수, 프롬프트 해시와 사용자가 제출한 피드백 메타데이터를 설정된 백엔드에 기록합니다. -The plugin requires explicit consent before scheduling any backend or LLM network operation, including analysis, provider connection tests, usage-summary requests, and feedback. Every HTTP transmission also checks the current consent version immediately before sending, so declining, revoking consent, or a policy-version change blocks future backend and LLM transfers. The accepted policy version is stored in IntelliJ application settings so a policy update can require consent again. Consent can be reviewed, granted, or revoked under `Settings > Tools > AI Error Purifier`; revocation does not delete data already sent to the self-hosted backend or an LLM provider. +클라이언트 동기화 시 플러그인 버전과 기존 디바이스 UUID를 백엔드로 전송합니다. 백엔드가 발급한 UUID는 IntelliJ 설정 디렉터리의 `error-purifier/device-uuid`에 저장되며, 같은 플러그인 설치의 사용량과 피드백을 연결하기 위해 이후 백엔드 요청에 포함됩니다. -Read the complete [Privacy Policy](PRIVACY.md) for the exact transferred fields, backend retention behavior, third-party providers, and deletion responsibilities. +## 개인정보 및 동의 -## Setup and use +플러그인은 분석, LLM 연결 테스트, 사용량 조회, 피드백처럼 백엔드 또는 LLM 네트워크 요청이 필요한 작업을 예약하기 전에 명시적인 동의를 요청합니다. 각 HTTP 요청을 보내기 직전에도 현재 정책 버전에 대한 동의를 다시 확인하므로 다음 상황에서는 이후 전송이 차단됩니다. -Deploy the self-hosted backend with the Docker Compose [Self-hosted Quick Start](https://github.com/Seongbin-Choo/errorPurifier#self-hosted-quick-start), then configure its URL, the LLM provider, model, analysis mode, and API key under `Settings > Tools > AI Error Purifier`. Connection-test results appear directly in the settings screen. +- 사용자가 동의를 거절한 경우 +- 설정에서 동의를 철회한 경우 +- 개인정보 처리방침 버전이 변경된 경우 -Select console output, then run `Analyze Error Log with AI (Cost Optimized)` from the console context menu. The `Prepared Log` tab shows the masked and compressed content prepared for the AI provider, while the `My Usage` tab shows accumulated usage and compression savings. +동의는 `Settings > Tools > AI Error Purifier`에서 검토, 승인 또는 철회할 수 있습니다. 철회는 이후 전송을 차단하지만 이미 셀프 호스팅 백엔드나 LLM 제공자로 전송된 데이터를 자동으로 삭제하지 않습니다. -English is the default UI language. When IntelliJ IDEA uses the Korean locale, the action, settings, analysis modes, consent dialog, tool window, and user-facing errors are displayed in Korean, and the selected analysis mode explicitly asks the LLM to answer in Korean. +전송 필드, 백엔드 보존 방식, 제3자 제공자, 삭제 책임은 [개인정보 처리방침(영문)](PRIVACY.md)을 확인하세요. 마스킹은 최선의 방식으로 수행되므로 권한 없이 공개할 수 없는 로그는 전송하지 않아야 합니다. -Marketplace reviewers can follow the complete, credential-safe [Marketplace Review Guide](MARKETPLACE_REVIEW.md), which includes backend startup, a sample exception, consent behavior, and expected results. +## 설치 및 사용 -## 한국어 안내 +### 1. 백엔드 실행 -IntelliJ IDEA 콘솔 로그를 정제해 사용자가 선택한 LLM에 분석을 요청하는 플러그인입니다. 별도로 실행되는 셀프호스팅 백엔드는 민감정보 마스킹·반복 로그 압축·프롬프트 준비를 담당하고, LLM API 키 보관과 실제 모델 호출은 사용자의 IDE에서 처리합니다. +[백엔드 Docker Compose 빠른 시작](https://github.com/Seongbin-Choo/errorPurifier#self-hosted-quick-start)에 따라 로컬 백엔드를 실행합니다. 기본 플러그인 백엔드 주소는 `http://localhost:8080`입니다. -## 주요 기능 +### 2. 플러그인 설치 -- Console 창에서 선택한 로그 또는 전체 로그 분석 -- 민감정보 마스킹 및 반복 재시도 로그 압축 -- OpenAI, Gemini, Claude 스트리밍 응답 지원 -- IntelliJ PasswordSafe 기반 API 키 보관 -- 빠른/정밀/심층 분석 모드 -- AI 답변·정제 로그·내 사용량 탭 제공 -- 실제 입력·출력·추론 토큰, 응답 시간, 반복 압축 절감량 표시 -- 누락된 근거 인용과 실행 환경 종료 코드의 오해석 가능성을 답변 검증 경고로 표시 -- LLM 사용량과 정제 품질 피드백 전송 +[GitHub v1.0.0 Release](https://github.com/Seongbin-Choo/error-purifier-plugin/releases/tag/v1.0.0)에서 서명된 ZIP을 내려받습니다. -## 요구 사항 +1. IntelliJ에서 `Settings > Plugins`를 엽니다. +2. 톱니바퀴 메뉴의 `Install Plugin from Disk...`를 선택합니다. +3. `error-purifier-plugin-1.0.0-signed.zip`을 선택합니다. +4. 안내가 표시되면 IntelliJ를 재시작합니다. + +### 3. 플러그인 설정 -- IntelliJ IDEA 2026.2 이상 (빌드 262 이상) -- JDK 25 (플러그인을 소스에서 빌드하는 경우) -- 실행 중인 Error Purifier 백엔드 +`Settings > Tools > AI Error Purifier`에서 다음 값을 설정합니다. -## 설정 +- 백엔드 URL +- LLM 제공자와 모델 +- 분석 모드 +- 제공자 API 키 +- 개인정보 전송 동의 -`Settings > Tools > AI Error Purifier`에서 백엔드 URL, LLM 제공자, 모델, 분석 모드, API 키를 설정합니다. 연결 테스트 결과는 설정 창을 닫지 않아도 바로 표시됩니다. API 키는 프로젝트 파일이나 백엔드에 저장되지 않으며 IntelliJ PasswordSafe에 보관됩니다. +API 키는 프로젝트 파일이나 Error Purifier 백엔드에 저장되지 않고 IntelliJ PasswordSafe에 보관됩니다. 연결 테스트 결과는 설정 화면에 바로 표시됩니다. -비용 없는 로컬 백엔드는 [Docker Compose 빠른 시작](https://github.com/Seongbin-Choo/errorPurifier#self-hosted-quick-start)으로 실행할 수 있습니다. Marketplace 검토 절차는 [MARKETPLACE_REVIEW.md](MARKETPLACE_REVIEW.md)를 참고하세요. +### 4. 오류 분석 -IntelliJ IDEA가 한국어 로케일을 사용하면 메뉴와 도구 창도 한국어로 표시됩니다. 콘솔에서 로그를 선택한 뒤 우클릭 메뉴의 `에러 로그 AI 분석 (비용 최적화)`을 실행합니다. 도구 창의 `정제 로그` 탭에서는 AI에 전달된 마스킹·압축 완료 로그를, `내 사용량` 탭에서는 누적 사용량과 반복 압축 절감량을 확인할 수 있습니다. +1. Run/Debug 콘솔에서 분석할 로그를 선택합니다. 선택하지 않으면 전체 콘솔을 사용합니다. +2. 콘솔 컨텍스트 메뉴에서 `Analyze Error Log with AI (Cost Optimized)`를 실행합니다. 한국어 로케일에서는 `에러 로그 AI 분석 (비용 최적화)`으로 표시됩니다. +3. 도구 창에서 `AI Answer`, `Prepared Log`, `My Usage`를 확인합니다. 한국어 로케일에서는 `AI 답변`, `정제 로그`, `내 사용량`으로 표시됩니다. -## 빌드 +## 소스 빌드 ```bash -JAVA_HOME=/path/to/jdk-25 ./gradlew buildPlugin +JAVA_HOME=/path/to/jdk-25 ./gradlew test verifyPluginProjectConfiguration verifyPluginStructure verifyPlugin buildPlugin -x buildSearchableOptions ``` -생성된 ZIP 파일은 `build/distributions`에 위치합니다. +생성된 ZIP은 `build/distributions`에 위치합니다. + +IntelliJ Platform 2026.2.1의 searchable-options 생성기가 일부 비영어 로케일에서 `Locale must be default`로 종료될 수 있어 위 로컬 검증 명령은 해당 작업만 제외합니다. 자동 테스트, 프로젝트 설정, 플러그인 구조, 바이너리 호환성, ZIP 패키징 검증은 그대로 실행됩니다. + +## 검증 및 CI -## 로컬 IntelliJ 설치 +GitHub Actions는 push와 pull request마다 JDK 25 환경에서 다음 항목을 검증합니다. -1. `buildPlugin`으로 ZIP을 생성합니다. -2. IntelliJ의 `Settings > Plugins > 톱니바퀴 > Install Plugin from Disk...`에서 ZIP을 선택합니다. -3. IntelliJ를 재시작합니다. +- 자동 테스트 +- 플러그인 프로젝트 설정과 패키지 구조 +- IntelliJ IDEA 2026.2.1 바이너리 호환성 +- Marketplace ZIP 패키징 -백엔드와 플러그인 프로토콜이 변경된 경우에는 백엔드를 먼저 재시작한 뒤 최신 ZIP을 설치하세요. +`v1.0.0`은 자동 테스트 33개, `verifyPluginProjectConfiguration`, `verifyPluginStructure`, Plugin Verifier 호환성 검사, 공식 JetBrains Marketplace ZIP Signer CLI 서명 검증을 통과했습니다. -## CI +## 관련 문서 -GitHub Actions는 push와 pull request마다 JDK 25 환경에서 `./gradlew test verifyPluginProjectConfiguration verifyPluginStructure verifyPlugin buildPlugin`을 실행합니다. 테스트, 프로젝트 설정·플러그인 구조·IntelliJ 2026.2.1 바이너리 호환성과 ZIP 패키징이 함께 확인되며, 성공한 실행의 ZIP은 Actions artifact로 내려받을 수 있습니다. +- [Marketplace 공개 문안 및 미디어 체크리스트(영문)](MARKETPLACE_LISTING.md) +- [Marketplace 심사 재현 가이드(영문)](MARKETPLACE_REVIEW.md) +- [개인정보 처리방침(영문)](PRIVACY.md) +- [셀프 호스팅 백엔드](https://github.com/Seongbin-Choo/errorPurifier) -## License +## 라이선스 -This project is available under the [MIT License](LICENSE). +이 프로젝트는 [MIT License](LICENSE)로 배포됩니다. diff --git a/build.gradle.kts b/build.gradle.kts index 1fa4118..becc6af 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } group = "com.errorpurifier" -version = "1.0.0" +version = "1.0.2" repositories { mavenCentral() diff --git a/src/main/java/com/errorpurifier/action/PurifyErrorLogAction.java b/src/main/java/com/errorpurifier/action/PurifyErrorLogAction.java index da511d0..d593485 100644 --- a/src/main/java/com/errorpurifier/action/PurifyErrorLogAction.java +++ b/src/main/java/com/errorpurifier/action/PurifyErrorLogAction.java @@ -29,6 +29,8 @@ public class PurifyErrorLogAction extends AnAction { + static final int MAX_LOG_PAYLOAD_CHARACTERS = 1_000_000; + private final ApiService apiService = new ApiService(); private final LlmClientService llmClientService = new LlmClientService(); @@ -51,7 +53,7 @@ public void actionPerformed(@NotNull AnActionEvent event) { ErrorPurifierBundle.message("plugin.title")); return; } - if (rawLog.length() > 100_000) { + if (exceedsLogPayloadLimit(rawLog)) { Messages.showWarningDialog(project, ErrorPurifierBundle.message("action.warning.logTooLong"), ErrorPurifierBundle.message("plugin.title")); return; @@ -144,6 +146,10 @@ static AnalysisInput selectAnalysisInput(String fullLog, String selectedText) { return new AnalysisInput(fullLog, null); } + static boolean exceedsLogPayloadLimit(String log) { + return log != null && log.length() > MAX_LOG_PAYLOAD_CHARACTERS; + } + record AnalysisInput(String rawLog, String selectedText) { } diff --git a/src/main/java/com/errorpurifier/service/ApiService.java b/src/main/java/com/errorpurifier/service/ApiService.java index b84dfa9..d27bc00 100644 --- a/src/main/java/com/errorpurifier/service/ApiService.java +++ b/src/main/java/com/errorpurifier/service/ApiService.java @@ -22,7 +22,7 @@ public class ApiService { - private static final String PLUGIN_VERSION = "1.0.0"; + private static final String PLUGIN_VERSION = "1.0.2"; private final ConsentAwareHttpSender httpSender; public ApiService() { diff --git a/src/main/java/com/errorpurifier/service/PrivacyConsentService.java b/src/main/java/com/errorpurifier/service/PrivacyConsentService.java index 930b77b..7b0705b 100644 --- a/src/main/java/com/errorpurifier/service/PrivacyConsentService.java +++ b/src/main/java/com/errorpurifier/service/PrivacyConsentService.java @@ -10,7 +10,7 @@ public final class PrivacyConsentService { - public static final String CURRENT_POLICY_VERSION = "2026-08-31"; + public static final String CURRENT_POLICY_VERSION = "2026-09-08"; public static final String POLICY_URL = "https://github.com/Seongbin-Choo/error-purifier-plugin/blob/main/PRIVACY.md"; private PrivacyConsentService() { diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 29a2725..4cfa1f1 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -13,11 +13,21 @@
  • Show the prepared log, token usage, response time, and compression savings in the tool window.
  • Requirements: IntelliJ IDEA 2026.2 or later, a separately deployed self-hosted Error Purifier backend, and credentials supplied by the user for the selected LLM provider. The backend is not bundled and no vendor-operated service is provided. Follow the Docker Compose Quick Start, then configure the backend URL, LLM provider, model, analysis mode, and API key under Settings | Tools | AI Error Purifier. Marketplace reviewers can use the review guide.

    -

    Data flow: console log content, filtered build-file metadata, and basic plugin environment tags are sent to the backend configured by the user for masking, compression, and prompt preparation. When console text is selected, only that selection is sent as log content. The prepared prompt is then sent directly from the IDE to the LLM provider selected by the user. Request usage and user-submitted feedback metrics are reported to the configured backend. A server-issued persistent device UUID is stored in the IntelliJ configuration directory. Client synchronization includes that identifier and the plugin version; subsequent backend requests use the UUID to associate usage and feedback. The provider API key is stored in IntelliJ PasswordSafe and is not sent to the Error Purifier backend.

    +

    Data flow: up to 1,000,000 characters of console log content, filtered build-file metadata, and basic plugin environment tags are sent to the backend configured by the user for masking, compression, focusing, and prompt preparation. When console text is selected, only that selection is sent as log content. The prepared prompt is then sent directly from the IDE to the LLM provider selected by the user. Request usage and user-submitted feedback metrics are reported to the configured backend. A server-issued persistent device UUID is stored in the IntelliJ configuration directory. Client synchronization includes that identifier and the plugin version; subsequent backend requests use the UUID to associate usage and feedback. The provider API key is stored in IntelliJ PasswordSafe and is not sent to the Error Purifier backend.

    The plugin requires explicit consent before backend or LLM network operations, including analysis, provider connection tests, usage-summary requests, and feedback. Current consent is checked again immediately before each HTTP transmission. See the Privacy Policy for the complete data, storage, retention, and revocation details.

    Users are responsible for running the self-hosted backend and for supplying credentials for their selected LLM provider.

    ]]> 1.0.2 + +

    1.0.1

    +

    1.0.0