{"slug": "i-audited-my-own-product-and-found-it-never-actually-worked-for-its-own-core-use", "title": "I audited my own product and found it never actually worked for its own core use case", "summary": "A developer audited Meanwhile, a sponsored status-line tool for Claude Code, Copilot CLI, and VS Code, and found the VS Code extension had been silently broken for its core use case since launch. Two stacked bugs — a 30-second activity-freshness gate tied only to document edits and a server-side check requiring token counts to strictly increase — caused the extension to go dark exactly while an agent was running, and a separate Copilot CLI session-ID assumption meant every turn after the first billed $0. The bugs are fixed in version 0.1.7, live on Open VSX, along with a reworked /network-stats endpoint that replaces a 600+ read KV scan with an O(1) Durable Object counter.", "body_md": "I built [Meanwhile](https://trymeanwhile.online), a status line for Claude Code, Copilot CLI, and VS Code. Most of the time it shows a quiet tip. Sometimes it shows a clearly-labeled \"(sponsored)\" line instead, and when that happens half of what the sponsor paid goes back to the developer.\n\nThis week I actually sat down and audited my own code end to end instead of just checking install counts. What I found wasn't great: the VS Code extension had been silently broken for the exact use case it exists for, since the day it shipped.\n\n``` js\nconst ACTIVITY_FRESHNESS_MS = 30_000;\n\nconst poll = async () => {\n  const windowFocused = vscode.window.state.focused;\n  const recentlyActive = Date.now() - lastActivityAt < ACTIVITY_FRESHNESS_MS;\n  if (!windowFocused || !recentlyActive) return;\n  // ...fetch and bill a line...\n};\n```\n\n`lastActivityAt` only updated on a real document edit. The moment you fire off an agent and take your hands off the keyboard to let it think, `recentlyActive` goes false within 30 seconds and the extension goes completely dark. That's the exact window the whole product exists to monetize.\n\nFix: track presence more broadly (tab switches, cursor movement, regaining window focus, not just edits), and widen the window to 5 minutes to actually match how long an agent turn runs.\n\nIndependently, the server had its own gate:\n\n```\nfunction sessionProgressed(baseline, current) {\n  if (!baseline) return true;\n  if (current.tokens !== null && baseline.tokens !== null && current.tokens > baseline.tokens) return true;\n  // ...\n  return false;\n}\n```\n\nFor VS Code, `tokens` is mapped to the editor's own edit count. Requiring it to strictly increase makes sense for Claude Code (a real session's cost/tokens always climb turn over turn) but is exactly backwards for VS Code: edit count is *supposed* to plateau while you're waiting on an agent. So even after fixing bug 1, a genuinely live poll during a wait still got silently discarded as \"looks like a faked ping.\"\n\nTwo independent bugs, stacked, both silently killing the same use case. Fixed by trusting a live poll within the same session (matched by session ID) instead of requiring a number that has no reason to move.\n\nCopilot CLI's hook payload never sends cost or token data at all, just a `session_id` — and unlike Claude Code, that id doesn't change per turn, it's scoped to the whole CLI session. The server's fallback logic assumed a changing session id was the signal of real progression. Since Copilot's never changes within a session, every turn after the first billed $0, silently, for as long as the extension has existed.\n\nAlso found and fixed while in there:\n\n`/network-stats` was doing a full sequential KV scan (600+ reads) on every request — replaced with a self-seeding Durable Object counter, now O(1)\nNone of this is retroactive marketing spin — if you installed the VS Code extension before this week and it felt dead, that was real, not you. It's fixed now (0.1.7, live on Open VSX).\n\nI don't have big usage numbers to show off here. What I have is a real list of specific, embarrassing bugs, found by actually reading the code instead of trusting a dashboard, and fixed. If that's useful to anyone auditing their own \"is this actually doing what I think it's doing\" assumptions, that's the whole point of writing this up.", "url": "https://wpnews.pro/news/i-audited-my-own-product-and-found-it-never-actually-worked-for-its-own-core-use", "canonical_source": "https://dev.to/nirmeet_trivedi_07bf0d38f/i-audited-my-own-product-and-found-it-never-actually-worked-for-its-own-core-use-case-498l", "published_at": "2026-09-12 04:57:22+00:00", "updated_at": "2026-09-12 05:56:26.132837+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-agents", "ai-products"], "entities": ["Meanwhile", "Claude Code", "Copilot CLI", "VS Code", "Open VSX"], "alternates": {"html": "https://wpnews.pro/news/i-audited-my-own-product-and-found-it-never-actually-worked-for-its-own-core-use", "markdown": "https://wpnews.pro/news/i-audited-my-own-product-and-found-it-never-actually-worked-for-its-own-core-use.md", "text": "https://wpnews.pro/news/i-audited-my-own-product-and-found-it-never-actually-worked-for-its-own-core-use.txt", "jsonld": "https://wpnews.pro/news/i-audited-my-own-product-and-found-it-never-actually-worked-for-its-own-core-use.jsonld"}}