Skip to content

Gengchou v2.4.0

Choose a tag to compare

@github-actions github-actions released this 01 Aug 05:42
· 109 commits to main since this release
Immutable release. Only release title and notes can be modified.

Gengchou v2.4.0

v2.4.0 reworks first-run setup and consolidates two development cycles of
reliability and user-experience work. It builds on the v2.3.4 first-run
consent-window hotfix and keeps settings and cached usage data compatible with
v2.3.4.

Changes

  • Replace the per-provider first-run prompts with a single permission prompt
    covering every provider, then detect which providers are actually signed in
    on this machine and show only those. Nothing is read before permission is
    granted, and revoking access stays per provider. Existing installations keep
    their current selection and permissions and are never prompted again.
  • Distinguish Not detected from Authentication failed. A provider that
    was never signed in no longer claims that authentication failed or asks the
    user to sign in again, and raises no notification; the alert is reserved
    for credentials that exist but expired or were rejected. Both states still
    park polling and recover automatically once a credential appears.
  • Detect providers again periodically and from a new Provider access →
    Detect providers again
    menu entry. The periodic sweep only notifies, once
    per provider, and never changes what is displayed on its own.
  • Read Codex and Antigravity credentials from WSL as well as Windows: Codex
    from $CODEX_HOME/auth.json and Antigravity from
    $HOME/.gemini/antigravity-cli/antigravity-oauth-token. Only distributions
    that are already running are read, so the check never starts a WSL virtual
    machine.
  • Shorten the Simplified Chinese first-run prompt around its three user-facing
    guarantees: quota checks do not consume model allowance, login information
    is not saved, and provider access can be revoked from the context menu.
  • Prevent update prompts and error dialogs from temporarily disabling the
    Windows taskbar, and block duplicate update actions while a prompt is open.
  • Resolve the Windows task-dialog entry point at runtime so a missing or
    temporarily inactive Common Controls v6 assembly can no longer prevent the
    app from starting; the consent prompt falls back to a standard Yes/No dialog.
  • Let the app start normally when a confirmed updater backup (.old) is still
    locked; cleanup is deferred and recorded with the exact path.
  • Resolve Claude credentials from CLAUDE_CONFIG_DIR or the standard path in
    Windows and every known WSL distribution. A later usable source now beats an
    earlier invalid one; renewable access-token expiry gets a silent 90-second
    grace before the UI asks for a Claude Code message, while non-renewable and
    rejected credentials consistently ask for claude auth login.
  • Add an accessible fourth detail control for keeping the popup open. All four
    header controls now share one Windows icon family, 32-DP targets, localized
    accessible names, keyboard operation, native button semantics, and
    keyboard-only focus cues. Refresh is first, state icons show the current
    state, hover owns the button highlight, and the keep-open preference persists
    across restarts.
  • Keep the last valid quota values visible during a manual refresh and show
    only Refreshing in the detail footer instead of replacing the numbers
    with dots.
  • Keep a known reset countdown visible on compact surfaces even when the
    current quota usage is 0%.
  • Use one consistent four-badge status system: Authentication failed,
    Refresh failed, Near limit, and Limit reached. Transient failures
    stay quiet; persistent failures mute old values and show their age, while
    empty authentication and service-failure states now use distinct, direct
    wording.
  • Isolate 429 cooldowns per provider. Fresh data retries silently in the
    background without blocking other providers; a rate-limited provider becomes
    Refresh failed only after its data reaches the stale threshold.
  • Antialias the existing 10-DP segmented progress bars without changing their
    height, radius, proportions, or warning thresholds.
  • Follow the user's provider order in the detail popup and credential alerts,
    show the actual scheduled poll countdown, and add concise connection or
    automatic-retry guidance only when a failure becomes persistent.
  • Harden WinGet updates so they never replace a still-running process, restart
    only the confirmed executable, verify the installed ProductVersion, and
    surface a one-time in-app failure after restart.
  • Compare Start-with-Windows paths with Windows Unicode case rules, reject
    registry commands containing arguments, remove fixed path-length assumptions,
    and report startup-setting failures instead of silently ignoring them.
  • Fall back safely when %APPDATA% is unavailable and show one storage warning
    if settings or the usage cache cannot be persisted. The READMEs now disclose
    credential data flow next to installation as well as in the privacy section.
  • Improve labels, reset notifications, date formatting, and long status badges
    across all 11 languages.
  • Show the in-app brand as 更筹 in Simplified Chinese and 更籌 in
    Traditional Chinese while keeping Gengchou for every other language and
    for the stable executable, package, data-directory, and update identities.
  • Remember what the last update check found, so the version menu entry states
    the current situation (Up to date, or Update to vX.Y.Z) immediately
    after a restart instead of resetting to Check for updates. Acting on a
    remembered update re-checks first, because a stored download URL goes stale.
    A failed check clears the remembered answer rather than leaving a stale
    claim on screen.
  • Remove the Notify when Claude Code is updated switch and always send that
    notification. It reports that Gengchou changed the CLI on this machine rather
    than stating a preference, so it no longer sits among the quota-reset
    notification toggles. DISABLE_UPDATES=1 still stops the update itself.
  • Place Codex first in the default provider order without changing existing
    saved choices. Quota surfaces now use the shared product name Claude,
    while actions specific to the Claude Code CLI keep that precise name.
  • Add a RustSec dependency-advisory and soundness gate to CI and release verification.

Updating

No settings or cache migration is required. Users of v2.3.4 can update
normally or replace the existing executable with gengchou.exe and start it
again.

Do not update an installation older than v2.2.4 directly to this release. The
v2.2.4 release remains available as the required bridge.