← Blog··5 min read

Skales v9.3.0: The Stability Release

Mario Simic

After three weeks of rapid releases (v9.1, v9.2 cycles), we took a step back. No new features. No shiny integrations. Just: make everything work. Rock solid. Windows crashes? Fixed. Downloads failing? Fixed. Browser sessions not persisting? Fixed. This is the "everything just works" release.

BOM-Safe JSON: The Windows Crash Fix

Windows was corrupting JSON files with a Byte Order Mark (BOM). A valid JSON file would start with invisible garbage characters, and Skales would crash trying to parse it. Classic Windows.

We built readJsonSafe() and migrated 65+ files across the entire codebase to use it. Every JSON read now strips the BOM before parsing. Windows users stop crashing. Problem solved.

This single fix likely halved crash reports on Windows.

Custom Auto-Updater Rewrite

The auto-updater from v9.2 had bugs:

  • Download button appearing wrong — UI state management was broken.
  • Race condition — multiple concurrent downloads could corrupt the file.
  • Event name mismatch — backend sent events the UI wasn't listening for.

We rewrote it cleanly. Download button appears at the right time. Only one download at a time. All events match between frontend and backend. Updates feel reliable now.

Playground Bridge Rewrite

Playground injects Skales into a sandboxed context. The old code had duplicate injection that sometimes failed. New code uses a unique marker guard to inject exactly once. Playground loads faster and more reliably.

Advisor Model Validation

The advisor strategy picks models. If you choose an invalid model ID (typo, deprecated name), the advisor would crash. Now it auto-corrects OpenRouter model IDs and falls back gracefully on 400/404 errors. The advisor keeps working even if you pick a weird model name.

Memory Timing Fix

Identity Maintenance and Memory Consolidation were running at the same time, causing slowdowns. We staggered them:

  • Identity Maintenance — runs hourly, runs silently, untouched by the user.
  • Memory Consolidation — runs at 3:30 AM, no overlap with other processes.

Memory now processes smoothly without interference. We also added Knowledge Graph hints for better memory organization.

Persistent Browser Sessions

When browser automation restarted, logins were lost. We switched to launchPersistentContext — browser state persists across restarts. You log into Gmail once, it stays logged in. Huge quality-of-life improvement for agents that need to browse authenticated sites.

Playwright Binary Resolution

Playwright (the browser automation library) sometimes couldn't find its binary. We fixed it to resolve from node_modules/.bin/ instead of bare npx. No more "Playwright not found" errors on startup.

Locale Cleanup

v9.2.1 added slash commands. We forgot to remove placeholder text like "Coming in v9.2.1" from 12 locale files. Cleaned that up. Users see clean, final copy now.

140 Tools, All Working

We now have 140 tools across integrations. Each one tested. Each one documented. Version strings are correct everywhere. No placeholder text. No "deprecated — don't use this" warnings. Everything is finished.

The Culmination

v9.3.0 is the culmination of weeks of rapid development. It's the first release where you can just use Skales without hitting friction. Windows doesn't crash. Updates work. Browser sessions persist. Agents reason clearly. Memory consolidates properly.

Frame v9.3.0 as the "everything works" release. It's the payoff for all the foundation work since v9.0. No more surprises. No more "oh, that feature is broken." Just solid, reliable Skales.

This is the release you show to people. They download it, they use it daily, and it just works.

Download Skales — Windows, macOS, and Linux, free forever.

— Mario 🦎