Repository navigation
Upstream batch: reconnect refresh, absolute reset times, pet size ceiling, Fable 5.1 pricing - #30
Merged
Merged
Conversation
…d weekly) (chattymin#263) * feat: enhance 5-hour reset display with reset time aside countdown * feat: enhance weekly reset display with reset date and time aside countdown (with weekday if not near) * chore: update staled comment about weekly relative-only display
…min#267) The desktop pet slider topped out at 192px. Double the maximum so the companion can be sized up to 384px. Sprites render with `.interpolation(.none)`, so the extra scale stays crisp pixel art instead of blurring, and `FloatingPetController` already observes `floatingPetSize`, so the panel resizes with the sprite as the slider moves. Also cover the other branch of `max(petSize, bubbleMinWidth)`, where the pet drives the panel width rather than the bubble column. Only 184 and 192 reached it before; now it is most of the range. Claude-Session: https://claude.ai/code/session_01X91ErNfhphSw9gC1pqjjjN Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Takes upstream chattymin#252 (refresh on network reconnection), chattymin#263 (absolute reset times) and chattymin#267 (floating pet size ceiling) as cherry-picks, all of which applied cleanly. From chattymin#279 takes only the claude-fable-5-1 price row. Without it the fable family fallback applies Fable 5's $1.00 cache read instead of $0.25 and overstates cost 4x. Verified by injection. The rest of that commit changes how Codex total-only turns are counted, which is usage attribution rather than pricing, and is left for a separate decision. Declines chattymin#264 and chattymin#275, both with reasons that should stop them resurfacing. chattymin#264 adds a second IV implementation to a model that already has one. chattymin#275's help text is accurate, and independently confirms our own diagnosis of the Keychain grant dying, but its remedy is the session key declined as chattymin#241. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Four upstream changes taken, two declined with reasons recorded.
Taken
chattymin#252, refresh on network reconnection.
NWPathMonitor, no entitlements, debounced with a cooldown. I checked the interaction with the 429 backoff added in #28: it calls the automatic refresh path, which already skips the Claude fetch while a backoff is live, so it cannot worsen rate limiting.chattymin#263, absolute reset time next to countdowns. Pairs with the Rare Candy fix in #29, which now relies on those same reset times to detect a window rolling unobserved. Surfacing them closes the loop for the user.
chattymin#267, floating pet ceiling 192px to 384px. Their test covers panel geometry, not energy, and a 384px animated sprite costs meaningfully more than 192px. Acceptable because the size is opt-in and we now have the animation-quality setting (chattymin#212) and the layer-swap perf work (chattymin#255).
chattymin#279, the price row only. Fable 5.1 shares Fable 5's base rates but its cache read dropped from $1.00 to $0.25. Without an explicit row the
fablefamily fallback silently applies the old rate and overstates cost 4x, which matters because cache reads dominate real usage. Injection-checked: removing the row makes the test report 1.00 against the expected 0.25.What I did not take from chattymin#279: the other 77 lines change how Codex total-only turns are counted, which is usage attribution rather than pricing. Codex is present on this machine so it may well be wanted, but it is a different kind of change and is recorded as still needing a decision.
Declined
chattymin#264, persistent IVs and a Pokédex detail page. 1651 insertions across 16 files. This fork already has IVs (
MonState.ivs/evs,StatCalc, clamped insanitizedMon), built independently rather than taken from upstream. Applying this would run a second parallel implementation into a model that already has one: the same structural fork as the representative pin (chattymin#158) and the Raising badge (chattymin#211), at roughly ten times the size. If the Pokédex detail page is wanted later, that piece should be ported alone against our model.chattymin#275, ambient Keychain help popover. Its explanation is correct, and worth noting it independently confirms our own root-cause diagnosis of the grant dying on token rotation. But the remedy it offers is the session key we declined as chattymin#241: the help body's payoff is "register a session key", and the button is gated on
store.sessionKeyConfigured, which does not exist here. Taking the meaningful part would steer users toward a full account cookie stored in plaintext, reversing a recorded security decision. The safe half already shipped in our own revocation notice, which tells users to re-authorise instead.Verification
1015 tests, 0 failures, 90.04% coverage. All 22 hardening checks pass. All three cherry-picks applied without conflicts.
Ledger now records 40 decisions with 10 still unreviewed, including the difficulty chain (chattymin#244, chattymin#287, chattymin#284) which is awaiting a call.
🤖 Generated with Claude Code