release: v5.1.1 — plan limits refresh off-screen, reset countdown in chat - #51
Merged
Merged
Conversation
The poll was gated on isShowing, so a collapsed tool window or a chat tab that was not the selected one asked for nothing at all. A quota window is not this plugin's state: other sessions, other devices and claude.ai spend the same windows, and a reset is a wall-clock event that owes nothing to the IDE. So the figure on screen was whatever the last probe happened to catch, and it only moved again when something else triggered one -- a turn, or opening the dashboard. "It only updates when I talk to the agent" is what a visibility-gated poll looks like from outside. The gate is gone and the period is 30s; the event-driven refreshes are unchanged. The bar row now carries the countdown: "Reset time: 4h 18m" on its own line under each window's bar, with the sentence in the tooltip. A percentage alone does not say whether it is urgent -- 90% with eight minutes left and 90% with six hours left are different situations, and only the dashboard was answering that. Under the bar rather than beside it, because the row is already three items wide per window and a fourth made the countdown the first thing to be squeezed out. One implementation in app-core (CC.resetIn/resetInShort), shared with the dashboard card, and RateLimitInfo.resetsAtIso() puts the epoch-to-ISO conversion on the model so an event-sourced window and a report-sourced one are interchangeable to both surfaces. Every get_usage poll now logs the reply verbatim at INFO. The derived per-window lines cannot say whether a number is stale, because a window the reply omits leaves no line and a carried-forward one looks fresh. It earned its place immediately: a live capture showed two of three consecutive polls returning the header-seeded shape (five_hour/seven_day only, no limits[]), which is the degraded reply 5.1.0's merge exists for, and confirmed the binary does not cache the endpoint. The release procedure now states that the release PR is closed to late commits, cosmetic ones above all: a commit pushed onto an open release PR invalidates the gates that passed on it, and main publishes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
chore: sync develop with main after v5.1.0
fix(usage): poll the plan limits even when the chat is not on screen
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v5.1.1 (patch). Merging this publishes to the JetBrains Marketplace:
release.ymlcuts the tag, builds once, attests and publishes.Contents
isShowing, so a collapsed tool window or an unselected tab asked for nothing at all, and a quota window is not this plugin's state: other sessions, other devices and claude.ai spend the same windows, and a reset is a wall-clock event. The figure on screen was whatever the last probe happened to catch, moving again only when a turn or the dashboard triggered one. Gate removed, period 30 s, event-driven refreshes unchanged.Reset time: 4h 18munder each window's bar, sharing one implementation with the dashboard card.get_usagepoll logs its reply verbatim at INFO, which is the only thing that can distinguish a stale number from a server still reporting it. A live capture already used it to show two of three consecutive polls returning the binary's header-seeded fallback.docs/RELEASE_PROCEDURE.md§6 now states that the release PR is closed to late commits, cosmetic ones above all: they invalidate the gates that passed on the earlier tree, andmainpublishes.Full detail in CHANGELOG.md; user-facing summary in RELEASE_NOTES.md.
Verification
Gates run clean locally (
clean … --rerun-tasks): 781 JVM tests,koverVerify/detekt/spotlessCheck,verifyPluginCompatible IC-251 → IU-262,buildPluginwith both artifact assertions, 113 frontend tests, lint/format clean,npm audit --omit=dev0 vulnerabilities. CI green on #50. Manually validated in IntelliJ IDEA 2026.2, including the case that failed: tool window collapsed, different tab selected.🤖 Generated with Claude Code