Skip to content

Releases: eightmouse/Innkeeper

Innkeeper v2.4.0

10 Mar 05:40

Choose a tag to compare

Release Note - Performance & Stability

After the v2.3.0 release, I found remaining performance issues:
8 backend commands block the Python stdin loop (freezing all IPC while API calls complete), listener accumulation on talent sidebar buttons, a stale closure in housing search, a redundant full grid re-render on equipment responses, remaining sync filesystem calls in main.js startup and more.

Non-blocking IPC

All data-fetching commands (equipment, vault, professions, talent trees, spec refresh, health check) now run in background threads. The backend stdin loop stays responsive while API calls complete — no more UI freezes when loading data for multiple characters.

Blizzard API throttling

A global concurrency limit prevents API request floods when multiple fetches run simultaneously, eliminating the timeout storms that occurred when switching between characters quickly.

Talent build persistence fix

Build strings are now held in memory and written to disk through a serialized save queue, fixing an issue where saved talent builds could revert on restart due to file corruption from concurrent writes.

Async startup I/O

All synchronous filesystem calls during app startup have been replaced with async equivalents, preventing brief hangs while the window loads.

Frontend fixes

  • Fixed talent sidebar button handlers stacking duplicate listeners on repeated tab opens
  • Fixed housing search rendering results for the wrong character when switching during the debounce window
  • Removed an unnecessary full grid re-render when equipment data arrives

Innkeeper v2.3.0

09 Mar 09:22

Choose a tag to compare

Release Note - Performance & Stability

Past days I've been looking into optimizing as much as possible before moving into implementing new features.
I realized there were some leaks in the index and other BIG issues causing CPU and memory spikes.

Performance

  • Paginated housing grid: Housing tab now loads 50 items at a time with infinite scroll instead of rendering all 500+
    at once. Eliminates the freeze and massive memory spike when opening housing.
  • Async startup I/O: All JSON files (talent builds, talent tree cache, housing catalogs, housing sources) now load
    asynchronously, keeping the UI responsive during startup.
  • Async build saves: Talent build string writes no longer block the main thread, especially noticeable during Wowhead
    auto-fetch (3 rapid saves).
  • Housing search debounce: Grid only re-renders after 250ms of typing pause instead of on every keystroke.
  • Housing IPC coalescing: Multiple rapid housing data updates from the backend are debounced into a single re-render.

Memory

  • Talent tree cache eviction: Cache is now capped at 20 entries (was unbounded), preventing gradual memory growth
    when browsing many specs.
  • Event delegation: Housing grid and talent tree tooltips use delegated event listeners instead of per-element
    listeners, reducing thousands of listeners to a handful.
  • Detail panel cleanup: Closing the detail panel now fully clears all character references and in-progress fetch
    flags, preventing stale data processing.

Stability

  • Backend crash notification: If the Python backend crashes, a toast now alerts you instead of the app silently
    breaking.
  • Stdout buffer safety cap: 1MB limit on the Python stdout buffer prevents unbounded memory growth from malformed
    output.
  • Thread-safe character lookup: find_character now takes a snapshot under lock, preventing race conditions from
    concurrent API calls.

Innkeeper v2.2.0

08 Mar 13:20

Choose a tag to compare

Release Note - Auto-Fetch Talent Builds

The "Refresh" button on the Talents tab now automatically fetches the latest recommended talent builds from WoWHead's
class guides.
Raid, Mythic+, and Delves presets update with a single click.

Improvements

  • Powered by WoWHead's PvE talent guide for each class/spec (all 40 specs supported)
  • Automatically detects the correct role (DPS, Tank, or Healer) for the right guide page
  • Persists fetched builds locally so they survive app restarts
  • Handles spec changes gracefully, if your spec changed in-game, Refresh detects it and fetches the correct builds
    for your new spec.

Innkeeper v2.1.3

08 Mar 06:37

Choose a tag to compare

Release Note - Stability & Performance

Added HTTP connection pooling across all Blizzard API calls. Instead of opening a fresh TCP connection for every request (DNS + TCP + TLS handshake each time), connections are now reused automatically.

Improvements

  • Connection pooling: Reuses HTTP connections instead of opening a new one for every request, reducing latency and
    overhead on all Blizzard API calls.
  • Thread safety: Character data mutations (add, auto-add, delete) are now protected by a lock, preventing potential
    data corruption from concurrent operations.
  • Save debouncing: Rapid changes (e.g. toggling multiple KP checkboxes, updating housing materials) are now batched
    into a single disk write after 2 seconds of idle, significantly reducing disk I/O. Data is always flushed on app exit
    so nothing is lost.

Impact:

  • Equipment icon loading (12 concurrent fetches), noticeably faster
  • Talent tree loading (100+ spell icon fetches), significantly faster
  • Sequential lookups (character → media → equipment), connections stay warm between calls
  • Server/token requests also pooled

No functional changes, same behavior, just faster network I/O.

Innkeeper v2.1.1

08 Mar 04:43

Choose a tag to compare

Release Note - Housing Catalog Fix

Fixed an issue where housing decorations appeared as "Uncategorized" with missing icons.

What happened?

The v2.1.0 architecture change made the housing background check succeed for the first time (it previously failed silently due to server overload). In packaged builds, the background check couldn't find the bundled enriched catalog, so it fetched raw data from Blizzard's API which lacks icons and categories for most items and overwrote the good pre-loaded data.

What's fixed:

  • The background check now skips entirely when no enriched baseline is loaded, preserving the pre-loaded catalog from
    the app
  • Stale disk caches with missing icons are automatically deleted on launch, no manual cleanup needed
  • Tightened cache validation to reject any previously-saved bad data (requires 50%+ of items to have icons)

Upgrade notes

Just update and launch, any bad cache from v2.1.0 is cleaned up automatically on first start.

Innkeeper v2.1.0

08 Mar 03:31

Choose a tag to compare

Release Note - Thin Token Architecture

The Render server no longer proxies Blizzard API calls. Instead, the app fetches a short-lived Blizzard OAuth token
from the server and then talks to Blizzard directly. The server goes from ~1,000 lines of proxy logic to ~80 lines
that only serve tokens.

  • Before: App → Render Server → Blizzard API
  • After: App → Blizzard API (server only hands out tokens)

Why

After launching, I realized (too late if you wish) that the 0.5-CPU Render instance was buckling under load, equipment icon fetches (12 threads per user), auto-add realm scans, and housing catalog checks all ran server-side. Multiple users online at once meant 100% CPU spikes and failed requests. Now the server does almost nothing, and the PC handles the API calls effortlessly.

Improvements

  • Server CPU near 0%: only serves cached token strings, no more proxy bottleneck
  • Faster responses: one fewer network hop (no Render roundtrip for every API call)
  • Automatic token refresh: if a Blizzard token expires mid-session, the app detects the 401, fetches a new token, and
    retries transparently
  • Auto-add no longer blocks: realm scanning runs in a background thread so the app stays responsive
  • No UI changes: everything looks and works exactly the same

Technical details

  • All Blizzard helper functions moved to shared scope (usable by both server and client)
  • New /token/{region} server endpoint returns a cached OAuth token + TTL
  • Client caches tokens locally with a 5-minute safety margin before expiry
  • _call_with_token() wrapper handles token expiry detection and retry
  • Server proxy endpoints removed (realms, character, equipment, talent-tree, vault, professions, decor)

TL;DR

  • You can't fit a car into a shoe apparently

Innkeeper v2.0.3

07 Mar 17:00

Choose a tag to compare

Server Stability Hotfix

Fixed:

  • Fixed critical issue where the housing catalog background check would trigger mass API enrichment calls on the
    server, causing 100% CPU spikes and making character lookups fail
  • Housing background check no longer calls /decor/enrich — new items are added with basic info from the pre-packaged
    catalog instead

Improved:

  • Server-side caching for realm lists and housing decor index (30-min TTL) — reduces redundant Blizzard API calls
  • Reduced decor enrichment thread pool from 20 to 3 workers as a safety net
  • Added /decor/enrich to strict rate limiting (5 req/60s)
  • Blizzard API errors are now logged instead of silently swallowed, making future issues easier to diagnose

Innkeeper v2.0.2

07 Mar 16:23

Choose a tag to compare

What's new:

  • Server-side caching for realm lists and housing decor catalog (30-min TTL) , previously every app launch triggered a
    full Blizzard API fetch and 1668-item normalization on the server
  • Added /decor/enrich to heavy rate limiting to prevent API abuse
  • Improved error logging for Blizzard API failures, non-404 errors are no longer silently swallowed, making issues
    easier to diagnose

What this fixes:

  • High CPU usage on the server causing slow realm fetches, character lookup failures, and general sluggishness since
    v2.0.0
  • Root cause: every client startup hit the decor index endpoint, which parsed 238KB of JSON and normalized 1668 items, now cached after the first call

Innkeeper v2.0.1

07 Mar 11:31

Choose a tag to compare

Fixes

  • Fixed a typo on the backend preventing proper connection to server

Innkeeper v2.0.0

07 Mar 06:31

Choose a tag to compare

Release Note - Housing Tab

Innkeeper v2.0.0 is here, and my most ambitious update yet. This release kinda transforms the app from a simple data viewer into a more complex management suite. Not perfect yet, the new tab still requires some work before I consider it 'done'.
After that? I have plans to expand 'Professions' tab ~

New Features

Housing Tab: Explore over 1,600+ Midnight decorations.

  • Track & Collect: Track both craftable and non-craftable decorations, mark them as completed when obtained
  • Acquisition Sources: Every decoration now shows where to get it: Vendor, Quest, Achievement, Drop, or Treasure, color-coded for quick scanning
  • Completed Category: Dedicated filter to view all your collected decorations
  • Improved Sidebar: Tracked items show crafting materials (craftable) or source info (non-craftable) in the
    sidebar
  • Performance: Pre-bundled database for instant, zero-latency browsing. (Cause it would be a nightmare to do so with API lol)

Performance & Security

  • API Rate Limiting: I’ve implemented custom server-side throttling. This protects rendering backend from being overwhelmed and ensures the app remains fast and responsive for everyone. Still, using a free instance has its limits!
  • Stable Sync: Optimized the communication between the Python backend and Electron frontend to prevent timeouts during heavy data processing.

UI & Polish

  • Themed Backgrounds: Each tab now features subtle, themed backgrounds to replace flat colors, increasing immersion while maintaining readability.
  • Equipment Tab: Larger item icons that scale with your window size, from compact to fullscreen
  • Light Theme: Major improvements across the board: character cards, talent tooltips, equipment slots, modals,
    and more
  • Info Modal: Redesigned with Ko-fi support link
  • Images: No longer draggable outside the app window
  • App Title: Now shows "Innkeeper" in the taskbar/task manager

Settings

  • Resolution Selector: Pick your preferred resolution from a dropdown, saved between sessions
  • Show Data Folder: Quickly open the folder where your character data is stored
  • Language: Language selector added (English only for now, more to come!)

Fixes

  • Fixed item level not saving between sessions after refresh

  • Fixed app update check not working


    Housing source data powered by WoWHead