Software 44852 Published by

WSL Manager 2.0.3 just landed, patching a Microsoft Store pricing bug that accidentally listed the Pro app as free across 240 markets and resolving a silent GitHub API rate-limit crash that broke the community scripts browser. The update also thaws silently frozen distro download URLs and introduces a dozen read-only MCP tools for Kubernetes, Docker, and cloud server management. Eric Trenkel has added a proper Korean locale declaration to the Store metadata, tightened the CI pipeline with stricter pricing guardrails, and fixed Flutter SDK compatibility issues.





WSL Manager 2.0.3 Drops With Community Script Fixes and New Read-Only DevOps Tools

WSL Manager 2.0.3 just landed, and though author Eric Trenkel calls it a "small follow-up" to yesterday's 2.0.2 release, the patch notes quietly cover a lot of ground. The update patches a Microsoft Store pricing bug that accidentally listed the Pro app as free across 240 markets, resolves a silent GitHub API rate-limit crash in the community scripts browser, and adds a dozen read-only tools for Kubernetes and Docker.

For those just tuning in, WSL Manager is a free, open-source Flutter app that lets you manage Windows Subsystem for Linux distros and macOS Linux VMs without typing CLI flags. The base tier handles installation and configuration, while a one-time Pro purchase unlocks an AI chat dock, MCP server, and sandboxed workspaces. The v2.0.x generation marked the first major rewrite since the project's original launch, bringing native Apple Silicon support, remote WSL over SSH, and a full UI audit that closed over 200 design findings. The total commit count for the repository now sits at 1,176.

The Microsoft Store pricing bug actually read like a cautionary tale from early SaaS days. On September 7 and 8, Trenkel's submission pipeline accidentally published WSL Manager as a free app in every single market. The culprit was Microsoft's legacy Partner Center API, which refuses to read products with "Pricing Version 2" and hands back a Base price ID that breaks the submission flow. The publisher's workaround simply stripped the price object entirely, and the API happily accepted it. Back in 2018, I covered a similar case where a developer's automated upload accidentally stripped a subscription tier and published a $15 tool for free for six hours.

Screenshot_from_2026_09_07_08_18_00

The fix added a guardrail to the publish pipeline that refuses to submit when the readback returns "Base", along with a pricing.json file that maps base tiers and per-market overrides into a shape the legacy API actually understands. There's also a dry-run mode that catches mismatches before anything goes live. Trenkel points out that Microsoft's own CLI tool carries the exact same bug, and support has classified it as "by design."

GitHub Rate Limits and Frozen Downloads

Opening the community scripts screen used to trigger 81 sequential API calls before rendering a single row. One request listed the folder, then 80 more fetched info.yml metadata for each entry. That burned through the anonymous api.github.com rate limit (60 requests per hour, split across every unauthenticated user on your IP) and made the screen crawl. Two n8n workflows stepped in to cache the catalogue server-side, and a subsequent commit swapped those workflows for a CI-built static file served from wslmanager.bostrot.com. The app now resolves the entire script catalogue in a single request.

The same caching layer also thawed frozen distro download URLs. An endpoint had been returning empty responses, which the app read as "no data" and silently fell back to whatever shipped with the build. Distro updates just weren't propagating. On macOS, a separate headache involved a Homebrew cask that lost its DMG asset during a rebuild. The tap had already updated its checksum, so every brew install --cask was failing. Trenkel added a guard that refuses to overwrite a published DMG if the tap can't be rewritten, and shipped a companion test script to verify the logic offline.

The MCP server picked up 9 new read-only tools for Kubernetes, plus extended Docker commands and cloud server queries. You get kube_contexts, kube_pods, kube_pod_logs, and a handful of others, alongside docker_volumes, docker_networks, and cloud_servers. Mutation operations stay strictly behind the UI with human confirmation, which is the only sensible way to handle production clusters. Log filtering happens server-side now, so searching for a stack trace is one call instead of scraping 6,000 lines of terminal output.

A complete Korean translation shipped weeks ago, but msix_config.languages never declared ko-KR, so Partner Center buried it in the metadata. The locale is now properly declared, and the rest of the 12 supported languages were already in place. Inside the pipeline, Trenkel pinned Flutter 3.41.6 for CI, since the framework shifts NetworkInterface.addresses types between SDK versions. A stale deployment-age test that broke after seven days was fixed by stamping fixtures relative to now(), and every translated README was rewritten against the current English version.

It's a heavy lift for a utility app, though the polish is undeniable. The pricing bug and GitHub rate-limit fixes prevent the application from quietly breaking under its own popularity. Keep in mind that the macOS build is still officially beta, but the Homebrew cask now actually works. Pro licensing remains a one-time purchase at $9.99 for the base tier, with regional adjustments for 12 premium markets and 64 standard markets.

Head here for the release notes and download on GitHub