Releases: lenny-ts/league_profile_tool
Releases · lenny-ts/league_profile_tool
Release list
League Profile Tool v1.12.0
[1.12.0] - 2026-08-11
Added
- Auto-expanding textareas (#890):
AutoExpandingTextareacomponent that grows/shrinks instantly with content; used in MusicTab and ProfileTab with monospace font for ASCII art. Manual vertical resize preserved. - Bio length 127 → 255 chars (#890): Bios now use the full LCU limit, allowing longer ASCII art.
- Idle-text-as-bio switch (#890): Toggle in ProfileTab to use the Music Sync idle text (more room) as your profile bio without enabling Music Sync.
- Char counter: Live
N/255indicator under all bio textareas. - Zustand store (
src/store.ts): Centralizeslcu/musicBiostate andlcuRequestaction with retry; eliminates prop-drilling. - Retry/backoff utility (
src/utils/retry.ts):withRetry()wraps LCU requests with exponential backoff. - Typed storage layer (
src/utils/storage.ts): Zod-validatedloadJSON/saveJSONand helpers. - Per-tab ErrorBoundary: Each tab isolated so a crash in one doesn't take down the app.
- Settings backup & restore: Export/import all localStorage keys as JSON via Tauri file dialogs.
- Enforcer/music-sync conflict resolution (#890): Enforcer skips
statusMessagewhen Music Sync is active. patchChatLol()mutex: Serializes concurrent patches to/lol-chat/v1/melolfield.- Storage key constants (
src/storageKeys.ts): Named constants replacing string literals.
Fixed
- Reactive textarea resize: Instant resize on content change (removed
ResizeObserverloop). - Stale
presetsstate: Rapid save/delete now reads ref instead of stale state. - Auto-Enforce toggle reactive: Toggling in Settings takes effect without reconnect.
- Overlapping async cycles: Re-entry guards and AbortController/timeout in
useLcu,useProfileEnforcer,useMusicSync. - Rank/Background/Challenge wipes
lolfields: All tabs usepatchChatLol()to merge. - Bio draft loss:
bioDirtyRefpreserves unsaved bio across enforcer cycles. - Music sync disable race:
enabled: falseset before restoring idle bio. - Stale summoner on disconnect: HomeTab clears summoner info on LCU disconnect.
setStateafter unmount:cancelledflags in BackgroundTab and HomeTab.- useToast timer leak, useIcons corrupted-cache crash, SettingsTab Clear All parallelization, Clear All settings coverage (4 missing keys), App close listener race.
Dependencies
- npm: lucide-react 1.24.0 → 1.30.0, react-window 2.2.7 → 2.3.0, react-dom 19.2.7 → 19.2.8, jsdom 29.1.1 → 30.0.1, zustand 5.x (new), zod 4.x (new)
- cargo: base64 0.23.0 → 0.23.1
- github-actions: github/codeql-action v4.37.4 → v4.37.6
League Profile Tool v1.11.0
[1.11.0] - 2026-08-07
Fixed
- Reduced cognitive complexity in
BackgroundTab.tsxby extracting helper functionsgroupChampionsByName,fetchSkinsForId,addUniqueSkins(#897, #899) - Replaced assignment expression with nullish coalescing operator
??=inBackgroundTab.tsx(#898)
Dependencies
- npm: lucide-react 1.21.0 → 1.24.0, react-icons 5.6.0 → 5.7.0, @types/node 26.0.1 → 26.1.1, @vitejs/plugin-react 6.0.1 → 6.0.3, vitest 4.1.9 → 4.1.10, postcss 8.5.15 → 8.5.25
- cargo: base64 0.22.1 → 0.23.0, serde 1.0.228 → 1.0.229, serde_json 1.0.150 → 1.0.151, serde_with 3.19.0 → 3.21.0, tauri-plugin-dialog 2.7.1 → 2.7.2, tauri-plugin-log 2.8.0 → 2.9.0
- github_actions: actions/setup-node v6 → v7, tauri-apps/tauri-action v0 → v1, github/codeql-action v4 → v4.37.4, SonarSource/sonarqube-scan-action 8.2.0 → 8.2.1
League Profile Tool v1.10.2
[1.10.2] - 2026-07-30
Added
- Signature Immortalized Legend Kai'Sa (#891): Added missing Signature Immortalized Legend Kai'Sa background skin (ID
145071) via supplemental skin registry.
Fixed
- Champion Duplication & Mode Skin Unification: Fixed issue where champions appeared multiple times in the selection grid due to game mode IDs (e.g. Swarm/Arena
60000+IDs). Unified duplicate champions into a single card and combined all available background skins under one entry.
League Profile Tool v1.10.1
[1.10.1] - 2026-07-23
Added
- Custom Application Icon (#265): Added custom Draven Spinning Axe app icon design for Windows executable (
.exe), macOS app bundle (.icns), Linux/favicons, and application navigation header logo.
Fixed
- Cargo Configuration Warning: Removed deprecated
http.http2config setting from.cargo/config.toml. - Tauri v2 Config Validation: Removed invalid
iconproperty fromapp.windows[0]intauri.conf.json.
League Profile Tool v1.10.0
What's New in v1.10.0
Added
- Selective Clear All Settings (#434, #436): Replaced the simple Yes/No confirm with a checkbox-based panel — pick exactly what to reset: rank, challenge, background, tokens, icon, status, or auto-enforcer.
- Profile Icon Reset: Clear All now restores your saved icon (or defaults to icon 0).
- Status & Bio Reset: Clear All resets availability to chat and clears the status message.
Fixed
- LCU Override Fields Not Clearing (#434, #436): Deleting fields from chat presence didn't work; now they're set to empty strings.
- CDragon Crash (#434, #436): Array.isArray guard prevents crash on invalid CDragon data.
- Auto-Enforcer OR Logic (#434, #436): Toggling auto-enforce OFF now properly clears the legacy enforce-offline key.
- Background Contrast (#436): Increased danger button hover contrast.
Changed
- Clear All Settings UX (#434, #436): Single PUT /lol-chat/v1/me call + official background/challenge endpoints.
- Dependencies: tauri 2.11.5, sysinfo 0.39.6, vitest 4.1.9, @types/node 26.0.1, @tauri-apps/api/cli 2.11.4, tauri-action 1, actions/setup-node 6, actions/github-script 8 (#422, #423, #424, #425, #426, #427, #431, #433).
League Profile Tool v1.9.9
[1.9.9] - 2026-07-11
Fixed
- Profile Reset After Games (#429): The Auto-Enforcer now continuously polls every 15 seconds to re-apply profile picture, rank (tier/division/queue), challenge points, and crystal level after League resets them post-game. Previously, settings were only applied once per session.
- Rank & Challenge Stats Enforcment: Added support for persisting rank overrides (
rankedLeagueTier,rankedLeagueDivision,rankedLeagueQueue) and challenge stats (challengeCrystalLevel,challengePoints) via chat presence, merged with existinglolobject fields to avoid overwriting unrelated data.
Changed
- Polling Instead of Retry: Replaced the old retry-with-backoff mechanism (10s interval, 60s max) with a simpler 15s continuous polling loop, ensuring settings survive game-induced resets without log spam on subsequent cycles.
League Profile Tool v1.9.8
[1.9.8] - 2026-07-05
Fixed
- GitHub Release Assets: Changed
productNamefrom"League Profile Tool"(with spaces) to"League-Profile-Tool"(with hyphens) intauri.conf.jsonso that the Tauri bundler produces filenames that match the paths expected by the CI release action. Previously, assets were built but silently skipped during upload, resulting in an empty release.
Changed
- Updater URLs: Updated download URL patterns in the CI workflow to use the new hyphenated name, ensuring the auto-updater can locate the correct release assets.
v1.9.7
What's New
- Profile Banner Customization: New dropdown selector in the Regalia customizer lets you choose your profile banner by name (loaded from CommunityDragon)
- Crest Handling: Crest border is now preserved unchanged — no UI, just passthrough
- Title Sentinel Fix: Title ID -1 ("No Title") is filtered out before being sent to the LCU API, preventing invalid title errors
- Copy Button Fix: Fixed overlapping tagline issue in the summoner banner
Changes
- TokensTab: Added banner dropdown with CDragon regalia names, removed unused crest UI
- TokensTab: Code quality improvements — refactored extractFriendlyError, fetchTokens, and related helpers (below SonarCloud CC threshold)
- useProfileEnforcer: Title -1 sentinel filtering, field name mappings (bannerId -> bannerAccent, crestId -> crestBorder)
- PresetsTab: Title -1 sentinel filtering, banner/crest field mapping in preset apply
- storageKeys: Added SAVED_BANNER_ACCENT_KEY and SAVED_CREST_BORDER_KEY
- 14 new tests covering banner dropdown, CDragon cache, apply payload, error handling, title sentinel
- All 140 tests passing, TypeScript compiles cleanly
Notes
- Banner ownership is not available via LCU API (blocked by backend whitelist). All CDragon kBanner items are shown in the dropdown; the user will receive an API error if they don't own the selected banner.
League Profile Tool v1.9.6
[1.9.6] - 2026-06-28
Added
- Supplemental Skin Data: Added a system to include skins missing from CommunityDragon via
src/data/supplemental-skins.json, resolving issue #303. The first entry is Immortalized Legend Ahri (ID: 103086). Extend the JSON file to add more missing skins. - Fallback Splash Placeholder: When a splash image fails to load (404), a styled placeholder with "Preview not available" text is now shown instead of a broken image icon.
- Skin Search by Name: The Direct Skin ID input now accepts skin names with autocomplete suggestions. Search by typing a skin name and select from the dropdown, or enter a numeric ID directly.
Changed
- Skin Name Overlay: The skin name overlay now appears only on hover with a smooth slide-up animation, keeping the splash art fully visible by default.
Fixed
- Minimize to Tray: The close button now correctly hides the window to the system tray instead of force-quitting the app when the "Minimize to Tray" setting is enabled. The app stays running in the background, allowing the Auto-Restore Profile enforcer to re-apply bio and settings on LCU reconnect.
Dependencies
League Profile Tool v1.9.5
[1.9.5] - 2026-06-25
Added
- Test Coverage: Created new comprehensive unit test suites for
FriendManagerTab,LobbyTab,PresetsTab,useProfileEnforcer, anduseAutoRestorehooks, successfully increasing overall statement test coverage to over 80%.
Fixed
- Security Vulnerability: Updated
undicito7.28.0in package-lock.json to resolve multiple CVEs in #315 (TLS validation bypass, cross-origin request routing, HTTP header injection, SameSite downgrade, and HTTP response queue poisoning). - Security Vulnerability: Updated
tarto0.4.46in Cargo.lock to resolve PAX header desynchronization issue in #316. - Security Vulnerability: Updated
opensslto0.10.81in Cargo.lock to resolve potential out-of-bounds write in #317. - Security Vulnerability: Configured NPM
overridesto forcetmpto0.2.7to resolve path traversal vulnerabilities. - SonarQube Quality Refactoring: Resolved code quality and accessibility issues including contrast ratio adjustments for log level badges, adding appropriate ARIA attributes/native button roles to list components, removing duplicate CSS classes, and simplifying regex patterns/cognitive complexity.
Changed
- Dependencies: Updated
taurito2.11.3in #307,tauri-buildto2.6.3in #308,serde_jsonto1.0.150in #301, andsysinfoto0.39.3in #302 in Cargo.lock. - Dependencies: Updated
lucide-reactto1.14.0in #292,vitestto4.1.7in #295,@vitest/coverage-v8to4.1.7in #296,typescriptto6.0.3in #291, and@types/nodeto25.7.0in #294 in package.json. - CI/CD: Updated GitHub Actions workflows in #311 and SonarSource scanner action in #306.
- CI/CD: Added new
ci.ymlworkflow with TypeScript compile check, frontend tests, and Rustcargo check/clippylinting on every push and PR. - CI/CD: Added
test-and-lintprerequisite job torelease.ymlto block broken builds from being released. - TypeScript 6 Migration: Migrated all test files from
global.fetchtoglobalThis.fetchfor TypeScript 6.0 compatibility in #291.