Skip to content

v1.1.1 — Bug Fix Update

Choose a tag to compare

@ThoriaDevelopment ThoriaDevelopment released this 12 Jun 19:27

Kleos v1.1.1 — Comprehensive Bug Fix Update

Critical Fixes

  • C3: Uninstaller now asks for confirmation before deleting user data; added running-instance check before install

High Fixes

  • H1: Fix _write rollback race — rollback now inside same lock scope as write
  • H2: Wrap all Twitch API resp.json() calls in try/except for JSONDecodeError
  • H3: Add error handling to get_channel_id (network + JSON errors)
  • H4: Guard thread pool callback against destroyed widget (sip.isdeleted check)
  • H5: Disconnect before reconnecting in _on_profile_switch to prevent signal accumulation
  • H6: Defer profile import on drop until fetch worker finishes
  • H7: Add delete_profile() method with validation; settings dialog uses it instead of raw file deletion
  • H8: Preserve existing API key on validation failure instead of overwriting with empty string
  • H9: Add sip.isdeleted guards for _bg_canvas._anim in closeEvent

Medium Fixes

  • M1: Remove per-URL download lock release (was causing race condition)
  • M2: Add _safe_parse_platforms() helper for robust JSON parsing
  • M3: Clamp Twitch token expiry to at least 60s from now
  • M4: Classify zero-duration strings (e.g. 'PT') as not-short
  • M5: Only mark first-run wizard complete on Accepted, not on rejection
  • M6: initialize_app_data returns bool; show QMessageBox on failure
  • M7: Add _validate_profile_name() to prevent path traversal
  • M8: Add clarifying comment on backup WAL race (acceptable behavior)
  • M9: Add force parameter to ensure_thumbnail; refresh uses it
  • M10: Replace f-string SQL interpolation with parameterized conditions
  • M11: Replace geometry press animation with opacity effect (no layout flicker)
  • M12: YouTube key length check is now warning-only, not a hard block

Low Fixes

  • L1: Batch _fetch_stats requests in groups of 50
  • L3: Add public get_all_thumbnail_paths() method
  • L4: Remove redundant import re as _re
  • L7: Pause/restore refresh timer on window show/hide
  • L8: Wrap QPainter in try/finally in _circular_pixmap
  • L9: Add running-instance check in NSIS installer
  • L10: Add IfFileExists guard before RMDir in uninstaller
  • L11: Validate dark_question default button is in buttons set
  • L13: Only hide tooltips on spontaneous Leave events

Dialog Minimize Fix

  • Fix minimize button on History and Analytics dialogs restoring the dialog itself immediately — now only restores the parent window, allowing the dialog to stay minimized as intended