Skip to content

v1.2.8

Choose a tag to compare

@sudoeren sudoeren released this 07 Jul 16:13

What's Changed

🐛 Bug Fixes

  • History & Favorites: File translations now properly distinguished with mode/fileName fields
  • Detail views: File translations show a file card (name + languages + download) instead of raw source text
  • Target content: Hidden in file translation detail views (only file card + Download shown)
  • Open in Translator: Hidden for file translations
  • Floating history panel: Shows file name instead of content for file translations

🔒 Security

  • SSRF: Resolved all CodeQL SSRF alerts — validateProviderUrl now returns the validated URL, breaking the taint chain. All 6 codeql-disable-next-line comments removed
  • Gemini: API key no longer leaked in URL query string (was already in header)
  • Empty URL: Clear error message when custom provider URL is empty
  • FileReader: Type guard added to FileReader.result to prevent binary file crash
  • JSON.parse: All JSON.parse(localStorage) calls wrapped in try-catch via safeJSONParse helper
  • localStorage.setItem: All calls wrapped in try-catch via safeSetItem helper
  • AudioContext: Reused instead of creating a new instance per notification

🧹 Code Quality

  • ESLint: Downgraded to ^9.24.0 to fix crash with eslint-config-next
  • Version: Hardcoded v1.1.1 references replaced with dynamic import from package.json
  • splitIntoChunks: Fixed match.index === 0 falsy condition

📦 Dependencies

  • eslint: ^10^9.24.0