Skip to content

fix: sanitize LLM errors and clean up low-priority findings - #58

Merged
TimInTech merged 6 commits into
mainfrom
fix/llm-error-sanitization-and-i18n-cleanup
Aug 31, 2026
Merged

fix: sanitize LLM errors and clean up low-priority findings#58
TimInTech merged 6 commits into
mainfrom
fix/llm-error-sanitization-and-i18n-cleanup

Conversation

@TimInTech

Copy link
Copy Markdown
Owner

Zusammenfassung

Folge-PR zu #57 (Restpunkte aus dem Sicherheitsaudit nach PR #56):

  • A — Fehlertext-Sanitizing (Fund 3, Niedrig): Externe Fehlertexte aus dem LLM-Workflow werden vor ERROR-Log, Tray und Desktop-Benachrichtigung durch sanitize_external_error() bereinigt: Steuerzeichen entfernt, bekannte Secret-Muster (Bearer-Token inkl. Unicode-verschleierter Trennzeichen, sk--Keys, api_key/token/secret/password-Zuweisungen, URL-Credentials) maskiert, auf 240 Zeichen begrenzt. Der vollständige Rohtext bleibt ausschließlich im DEBUG-Log.
  • B — i18n-Umlaute: Sieben deutsche Übersetzungswerte in app/i18n.py von ASCII-Umschreibungen (verfuegbar, bestaetigt, unterstuetzt, zusammengefuehrt, Moechtest) auf echte Umlaute korrigiert. Keys und Platzhalter unverändert.
  • C — Toter Code: _is_terminal_active() in app/paste_service.py entfernt (nur noch von eigenen Tests genutzt, Produktionspfad nutzt die Logik bereits inline in _ydotool_paste).

Verifikation

  • QT_QPA_PLATFORM=offscreen WHISPER_GUI_TESTS=1 .venv/bin/python -m pytest tests/ -q → 588 passed, 2 skipped, 0 failed
  • git diff --check origin/main...HEAD → sauber
  • Secret-Muster-Scan der geänderten Dateien → keine echten Secrets, nur Dummy-Testwerte

Nicht im Scope

  • Englische Screenshots in README.de.md — erfordert reale GUI-Screenshot-Aufnahme, bleibt offener manueller Punkt.

Kein Merge durch diesen PR-Ersteller-Workflow — Merge-Entscheidung bei Tim.

@TimInTech
TimInTech merged commit 90050d8 into main Aug 31, 2026
9 checks passed
@TimInTech
TimInTech deleted the fix/llm-error-sanitization-and-i18n-cleanup branch August 31, 2026 14:40

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b2b82dbd11

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread app/blitztext_linux.py
def _on_worker_error(self, err_msg: str) -> None:
logger.error("Worker error: %s", err_msg)
self._finish_worker_with_error(err_msg, "worker error")
logger.debug("Raw worker error: %s", err_msg)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid logging unsanitized provider errors in debug mode

When BLITZTEXT_DEBUG is enabled, this writes the complete external exception to stderr before sanitization, including any API keys, bearer tokens, URL credentials, control characters, or unbounded provider response content that the new sanitizer is intended to suppress. Debug output is commonly captured for troubleshooting and shared, so sanitize this record as well (or omit it) rather than preserving the raw error.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant