Releases: Taczer/valorant-picker
Releases · Taczer/valorant-picker
Release list
v0.1.3
What's Changed
🌐 Internationalization (EN / PL)
Full two-language support across the entire CLI — menus, live screen, manual mode, status, recommendations, warnings, problems, advice and normalizer errors. Default language is English; Polish can be selected in Settings and is saved to %APPDATA%\ValoPicker\settings.json.
All visible strings are managed through a central i18n.py module with a t(language, key, **params) helper and a guaranteed fallback chain (lang → en → key), so the app never crashes on a missing translation.
🏗️ Code Quality
- Extracted all recommendation scoring weights into named constants at the top of
recommender.pywith a comment clarifying their nature as heuristic ranking weights, not probabilities. Previously every magic number (e.g. the controller bonus, the third-duelist penalty) was scattered inline with no explanation. - Pre-compute base role and utility counters once per
recommend()call instead of rebuilding them from scratch for every agent candidate (~20 iterations)._team_score_afternow receives the pre-built counters and copies them rather than re-iterating the team. - Added an explanatory comment next to
ssl._create_unverified_context()clarifying that Riot's local client uses a self-signed certificate and that the context is intentionally scoped to local lockfile-derived endpoints only. - Fixed settings file read to use
utf-8-sigencoding, preventing JSON parse errors caused by a BOM on Windows. - Added
requirements.txtdocumenting that the application has no runtime dependencies beyond the standard library.
✅ Tests
Added tests/test_i18n.py with 6 tests:
- EN and PL dictionaries have an identical set of keys (checked symmetrically in both directions)
- All translation values are non-empty strings
normalize_language()correctly falls back toenfor unknown orNoneinputt()correctly formats parametrised messages in both languages
Total test count: 72 tests, all passing.
Full Changelog: https://github.com/Taczer/valorant-picker/commits/main
v0.1.2
Profil gracza
- Dodano zapis profilu gracza w ustawieniach aplikacji.
- Profil jest używany w trybie ręcznym i live.
- Style profilu wpisuje się cyframi, np.
4,7albo4,7,8. - Usunięto import i eksport profilu z JSON, żeby ustawianie profilu było prostsze.
- Usunięto osobne pytanie o beginner mode. Teraz tryb początkujący włącza się numerem
8. - Teksty profilu w menu ustawień są zapisane bez polskich znaków, żeby CMD nie psuł wyświetlania na starszych czcionkach.
Ustawienia aplikacji
- Dodano menu
Settings. - Dodano zapis
refresh_secondsw zakresie 2-10 sekund. - Dodano zapis domyślnego trybu startu:
Live,ManualalboStatus. - Dodano zapis ustawień do
%APPDATA%\ValoPicker\settings.json. - Dodano obsługę
--live, żeby jednorazowo wymusić tryb live niezależnie od ustawień. - Argument
--refreshmoże jednorazowo nadpisać zapisany interwał odświeżania.
Terminal i EXE
- Poprawiono obsługę kodowania konsoli dla polskich znaków.
- Dodano ustawianie tytułu okna i próbę ustawienia czcionki konsoli na
Consolas. - Potwierdzono, że problem z brakującymi polskimi znakami może wynikać z czcionki CMD.
- Dodano build samodzielnego pliku
dist\ValoPicker.exe. - Dodano
ValoPicker.spec,build_exe.ps1,requirements-build.txti instrukcjęBUILD_EXE.md. - Po zmianach przebudowano
dist\ValoPicker.exe.
Live i menu
- Uproszczono menu live.
- Usunięto osobną opcję
View Recommendation, bo dublowała widokView Pre-Game (Agent Select) Players. - Ekran live jest mniej przeładowany i mocniej eksponuje rekomendację w Agent Select.
- Manual mode nie kończy już od razu pracy po pokazaniu wyniku, więc da się spokojnie odczytać rekomendację.
Rekomendacje
- Wzmocniono priorytet controllera i smoke'ów jako najważniejszego braku w kompozycji.
- Wzmocniono priorytet inicjatora, gdy team nie ma info, flasha albo cleara pod execute.
- Profil gracza ma teraz mniejszy wpływ na wynik niż krytyczne braki kompozycji.
- Trzeci duelist jest mocniej karany.
- Selfish duelist przy istniejącym dueliście jest mocniej karany.
- Drugi sentinel bez smoke'ów albo inicjatora jest mocniej karany.
- Breeze, Icebox i Abyss mocniej premiują wall controllera.
- Bind, Split, Lotus i Sunset mocniej premiują clear, flash, stun i suppress.
- Powody rekomendacji są porządkowane tak, żeby najpierw pokazywać powód kompozycyjny lub mapowy, a dopiero potem profil gracza.