All notable changes to Steam Achievement Localizer will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Steam Integration: Fixed process handling for killing and starting Steam on Linux, especially within an AppImage (now properly strips
LD_LIBRARY_PATHandQT_PLUGIN_PATHto prevent Steam crashes). - Steam Integration: Fixed UI freeze during Steam restart. The restart logic now runs in an asynchronous background thread (
QThread) with a responsive UI message in the status bar. - Steam Integration: Refactored Linux restart logic to smartly detect and support Flatpak, Snap, and Native Steam installations, including a robust 10-second graceful shutdown loop before force-killing.
- Icons: Fixed an issue where the last fields in chunks using the old format were silently skipped due to lacking trailing null bytes, which caused achievement icons to not render.
- Icons: Added stripping of invisible formatting characters (like
\x08and\r\n) from extracted icon hashes. - Networking: Updated
HTTPClientUser-Agent to masquerade as a standard browser. This bypasses Cloudflare CDN blocks (HTTP 403 or Captchas) when downloading missing app icons in Linux builds.
- Binary Parser: Added smart detection and support for parsing parallel chunk structures using numeric keys (0, 1, 2...) when standard 'bit' delimiters are missing, improving compatibility with various file formats.
- UI: Added a "Store" button to the main window that opens the Steam store page for the currently loaded game.
- Localization: Added translations for the new store button in English, Ukrainian, and Polish.
- UX: Updated "Open in Steam Store" links (both in main window and game list) to use the
steam://protocol, opening directly in the Steam client instead of the web browser. - UI: Redesigned "File Search" header, replacing the previous checkbox-style toggle with a standard push button for improved consistency and theming.
- Drag & Drop: Added support for dragging and dropping CSV files to import translations or auto-load games.
- Networking: Added
HttpClientfor centralized and robust HTTP handling.
- CSV: Updated export format signatures (headers) to include
game_idfor better compatibility. - UI: Changed table language headers format to "Native (English)" (e.g., "Українська (Ukrainian)") with improved capitalization.
- UX: Unified the import success message to include game loading confirmation and import statistics.
- UX: Enhanced Drag & Drop overlay to display the specific game name and ID when auto-loading from CSV.
- UI: Fixed an issue where newline characters in headers were displayed as literal text (e.g., "Language\n(Native)").
- UI: Added a context menu to the game list dialog with a "Copy" option.
- UI: The game list in the "Find by name" dialog is now read-only to prevent accidental edits.
- File Manager: Fixed a bug that caused the application to freeze when opening a file in the file manager.
- Data Integrity: Fixed an issue where old data was restored after changing the interface language.
- UI: Optimized the "Find by name" dialog behavior to close immediately after selection, preventing window focus confusion.
- Themes: Fixed the alignment of group box titles in the "Dark Femboy" theme.
- UI: Added "Find by name" button to the main window for quick access to the game list.
- UI: Added total file count display in the game list dialog.
- UX: Added support for double-clicking a game row to select it immediately.
- Shortcuts: Added keyboard shortcuts:
Ctrl+Ofor game list andCtrl+Rfor restarting Steam. - Localization: Added translations for new UI elements (English, Ukrainian, Polish).
- Export: Export dialogs now automatically suggest a filename based on the current game name (e.g., "Cyberpunk 2077.csv").
- UI: Removed the 'icon' column from the Export/Import combination dialogs to prevent accidental selection.
- Icons: Fixed an issue where achievement icons were replaced by their file hash string after CSV imports or language changes.
- Safety: Added a safeguard to strictly prevent the 'icon' column from being overwritten during CSV imports.
- Shortcuts: Added keyboard shortcuts for saving:
Ctrl+S(Save to Steam) andCtrl+Shift+S(Save As / Manual Save).
- Auto-Updater: Restored proper changelog fetching logic and fixed the issue where the release body was being used incorrectly.
- Auto-Updater: The application now explicitly asks for confirmation ("Yes" to restart and install, "No" to wait) after downloading an update.
- Auto-Updater: Now fetches and displays the full changelog history from GitHub for all missed versions instead of just the latest release notes.
- UI: Increased the update dialog size for better readability of release notes.
- Localization: Added English, Ukrainian, and Polish translations for the new update confirmation dialog.
- Steam Logic: Improved restart functionality to check if Steam is running before attempting to restart.
- Localization: Updated binary deletion confirmation dialog to explicitly show the game name.
- Localization: Refined error messages for rate limits and failed fetches to be more precise ("game names" instead of "games").
- Restart Steam: Added functionality to restart the Steam client directly from the application via the File menu or Save confirmation dialog.
- Localization: Added translation keys for the new restart functionality in English, Ukrainian, and Polish.
- AppImage: Fixed "Open in Steam Store" button functionality on Linux AppImage builds by sanitizing the environment variables before launching the browser.
- Auto-Updater: Fixed an issue where the auto-updater would not initialize or show update notifications on startup.
- Icon Loader: Fixed a bug where the icon loading progress bar would not disappear, and issues with loading icons and game names.
- Localization: Added Polish and Ukrainian translations for "games could not be fetched" and rate limit messages in
UserGameStatsListDialog. - Safety: Added fallback for
requestsimport ingame_name_fetch_worker.pyanduser_game_stats_list_dialog.pyto prevent crashes on systems with missing dependencies.
- Performance: Resolved an issue causing excessively long loading times for achievement icons.
- Icons: Optimized asynchronous icon loading to prevent UI delays.
- Icons: Added achievement icon support with local caching and display in table.
- Icons: Added "Load achievement icons" toggle in File menu and startup dialog.
- UI: Added dynamic window title showing the currently loaded game name.
- Game List: Added "Open in Steam Store" and "Open in File Manager" buttons to game list dialog.
- UI: Enhanced "Get Achievements" buttons visibility (bold, default action).
- UI: Implemented theme-aware zebra striping for achievement rows to improve readability.
- UX: Improved progress bar text formatting to eliminate duplicate counters.
- Safety: Binary file saving now prevents overwriting of
iconandicon_graycolumns, preserving original file hashes. - Performance: Optimized icon loading to prioritize local cache and skip network requests when possible.
- Auto-Updater: Added automatic update check on application startup
- Auto-Updater: Fixed AppImage path detection using
APPIMAGEenvironment variable (was showing "Not running as AppImage" error)
- Game List Dialog: Added "Open in Steam Store" button to open game's Steam Store page in browser
- Game List Dialog: Added "Open in File Manager" button to open achievements file folder
- Translations: Added new UI strings for Steam Store and File Manager buttons (English, Ukrainian, Polish)
- Translations: Added tooltips for new buttons in all supported languages
- Linux Build: Fixed
ModuleNotFoundError: No module named 'requests'in Nuitka builds by adding--include-package=requeststo build configuration - SSL Certificates: Fixed SSL certificate verification errors in Linux builds by ensuring
certifipackage data is properly bundled - GitHub Actions: Added
ca-certificatesto system dependencies for reliable SSL support in CI builds - Localization: Fixed merge conflict errors in
lang_en.json(incorrect "Pomoc" translation) - Localization: Removed duplicate keys and tooltip entries in
lang_pl.json
- Build System: Updated local Linux build script (
build_linux_local.sh) to use Python 3.12 explicitly - CI/CD: Enhanced GitHub Actions workflow with certifi verification checks
- Build System: Added
.gitignoreentry forSteamAchievementLocalizer.AppDir/temporary build directory
- Auto-updater plugin for automatic updates.
- Auto-updater: Migrated from
urllibtorequestslibrary for better SSL/HTTPS handling in AppImage and macOS builds. - Steam API: Migrated Steam game name fetching from
urllibtorequestsfor improved reliability. - Updated build workflow procedures in GitHub Actions.
- Linux/macOS: Fixed SSL certificate verification issues by using
requestslibrary which has superior certificate management. - Import urllib.request for Nuitka and py2app builds.
- Game name fetching worker for async Steam game name fetching (
game_name_fetch_worker.py). - Steam API all game names cache file (
steam.api.allgamenames.json). - Progress bar to status bar for visual feedback during long Steam API operations.
- Batch progress tracking for loading multiple games from Steam API.
- Progress helper methods:
show_progress(),update_progress(),hide_progress(). get_steam_game_name_without_progress()method for batch operations.- Progress dialog plugin to build configuration.
- Updated Ukrainian, English, and Polish localization files.
- Updated binary parser, drag-drop overlay, and user stats dialog.
- Calculate total count before loading to show accurate progress (e.g., "Loading 1/101").
- Updated tooltips to warn about internet requirement for Steam API names.
- Updated setup.py and plugin initialization.
- Fixed infinite recursion in
load_json_with_fallback. - Fixed
force_manual_pathflag handling.
- Removed
progress_dialog.py(replaced with new implementation).
- Critical: Fixed
gamename()andversion()functions re-reading files instead of using already loaded data, causing incorrect game information display when switching between manual and Steam ID file loading modes. - Fixed Game ID field being overwritten when loading files manually. Game ID from manual files is now stored separately in
manual_file_game_idvariable. - Fixed "Available Files" dialog not resetting
force_manual_pathflag on parent window, causing wrong file to be loaded after selecting game from dialog. - Fixed "Get Achievements" button not resetting
force_manual_pathflag when loading by Game ID, potentially loading wrong file after manual file selection.
- Updated build workflow procedures in GitHub Actions.
- Refined build metadata and versioning configuration.
- Changed author name in LICENSE file to Latin characters for better compatibility.
- Fixed duplicate "unsaved changes" prompt appearing multiple times when loading files via drag-and-drop.
- Fixed row height explosion on save when hidden columns are present.
- Fixed file manager not opening on Linux Nuitka builds by clearing
LD_LIBRARY_PATH. - Removed debug print from highlight delegate.
- Universalized column control and automated language mapping.
- Implemented dynamic mandatory column determination based on selected translation language.
- Automated
ui_to_steam_langmapping using available locales. - Updated UI builder to respect dynamic mandatory columns.
- Changed storage logic to save
VisibleColumnsinstead ofHiddenColumns, with automatic migration. - New columns in games are now automatically visible.
- Added "Select All" / "Deselect All" buttons to columns menu with translations (ua, en, pl).
- Tools menu is now macOS-only; Windows/Linux have stats action directly in menubar.
- Changed icon for find/replace action in context menu.
- Fixed formatting in
_create_about_actionmethod. - Fixed row heights skipping hidden columns during calculation.
- Removed system language dependency; default fallback is now Ukrainian.
- Refactored CSV error handling for localization.
- Added and fixed Ukrainian translations.
- Prepared diagnostics for Linux file manager opening.
- Fixed crash on save due to missing
context_lang_comboattribute (now usestranslation_lang_combowith fallback).
- Full macOS support with native menu bar integration
- py2app build system for macOS application packaging
- ContextMenuManager plugin for unified context menus with icons
- Updated about message with new contributors in Polish and Ukrainian localizations
- Themes not working on Windows
- Windows build switched from Nuitka to PyInstaller for better compatibility
- ICU libraries bundling for Qt on Windows
- Tooltips for all interactive UI elements
- Status bar showing application state and messages
- Help dialog with documentation
- Collapsible file search section for cleaner UI
- Steam game names database for auto-detection of games
- System accent color handling for theme highlights
- Accent color selection feature with localization support
- CHANGELOG.md for tracking version history
- Build System: Switched from single executable (onefile) to ZIP archive for Windows
- Build System: Switched to AppImage for Linux distribution
- Build System: Include all assets (themes, locales, game database) in builds
- Major UI improvements and plugin restructuring
- Enhanced user feedback system
- Improved search function
- License change
- Various bug fixes and stability improvements
- Plugin restructuring fixes
- Collapsible file search section for cleaner UI
- Tooltips for all interactive elements
- Status bar showing application state
- Help dialog with documentation
- Plugin-based architecture improvements
- Refactored UI components into separate plugins
- Improved file search functionality
- Enhanced user feedback system
- Steam game names database for auto-detection
- Theme management system with multiple themes:
- System (follows OS accent color)
- Dark
- Light
- Catppuccin Mocha
- Femboy
- Dark Femboy
- Accent color selection feature
- File manager plugin
- Steam integration plugin
- Language codes plugin
- UI builder plugin
- Major plugin restructuring
- Translation controls now only show for English UI
- Dynamic locale loading system
- Polish localization (lang_pl.json)
- Ukrainian localization (lang_ua.json)
- Improved Steam language codes and mappings
- Better font application logic
- Find and Replace dialog
- Context language dialog
- User game stats list dialog
- Highlight delegate for search results
- CSV handler plugin
- Binary parser plugin
- Improved overall stability
- Better error handling
- Initial public release
- Binary file parsing for Steam achievement files
- CSV import/export functionality
- Multi-language UI support
- Windows and Linux support
For older versions, see the GitHub Releases page.