Skip to content

Release v6.7.6: Happy Eyeballs connection fallback, condense indicator, KiloCode logout, overage banner - #121

Merged
code-crusher merged 1 commit into
mainfrom
release/v6.7.6
Aug 6, 2026
Merged

Release v6.7.6: Happy Eyeballs connection fallback, condense indicator, KiloCode logout, overage banner#121
code-crusher merged 1 commit into
mainfrom
release/v6.7.6

Conversation

@code-crusher

Copy link
Copy Markdown
Member

Release v6.7.6

Changes

  • Happy Eyeballs (RFC 8305) connection fallback: Added IPv4/IPv6 address-family racing to the OpenRouter and KiloCode fetch agents (undici.Agent / EnvHttpProxyAgent with autoSelectFamily: true, autoSelectFamilyAttemptTimeout: 250). Prevents connection hangs when one address family is broken (e.g. carrier DNS64-synthesized IPv6 on mobile hotspots).
  • Condense context in-progress indicator: Both the manual condense tool (condenseTool.ts) and the auto-condense paths in Task.ts (checkAndCondenseContext and attemptApiRequestUnlocked) now emit a partial condense_context say before the summarization call and finalize it on completion, so the user sees a live indicator during condensation.
  • KiloCode logout flow: New kilocodeLogout webview message handler clears kilocodeToken, kilocodeOrganizationId, and kilocodeModel from the active profile and navigates to the chat tab so the WelcomeView (login) renders. Logout button added to the KiloCode settings panel.
  • Overage active banner: New OverageActiveBanner component shown in ChatView when profileData.overage.enabled is true, replacing the out-of-credits banner. Displays overage spend, budget percentage, and reset date with a Manage Overage link.
  • View Analytics link: Added a View My Analytics button in KiloCode settings linking to app.matterai.so/orbital?tab=my.
  • Validation message update: Changed API key validation to You must be logged in to continue.
  • Version bump: 6.7.56.7.6.

Files changed

src/api/providers/kilocode/fetchWithTimeout.ts          | Happy Eyeballs connect config
src/api/providers/openrouter.ts                        | Happy Eyeballs agent + fetch wrapper
src/api/providers/__tests__/fetch-with-timeout.spec.ts   | Test: assert connect config
src/api/providers/__tests__/openrouter.spec.ts           | Test: assert fetch passed to OpenAI client
src/core/task/Task.ts                                   | Condense in-progress indicator (manual + auto)
src/core/tools/condenseTool.ts                          | Condense in-progress indicator + payload
src/core/webview/webviewMessageHandler.ts               | kilocodeLogout handler
src/shared/WebviewMessage.ts                             | kilocodeLogout type, AxonCodeOverage types
src/package.json                                        | Version bump 6.7.6
webview-ui/src/App.tsx                                  | fromLogout tab-switch bypass
webview-ui/src/components/chat/ChatView.tsx             | OverageActiveBanner vs OutOfCreditsBanner
webview-ui/src/components/kilocode/chat/OverageActiveBanner.tsx | New component
webview-ui/src/components/kilocode/common/WeeklyResetButton.tsx | Minor styling
webview-ui/src/components/kilocode/settings/providers/KiloCode.tsx | Logout button, View Analytics link
webview-ui/src/components/settings/ApiOptions.tsx       | Remove unused currentApiConfigName destructure
webview-ui/src/i18n/locales/en/kilocode.json            | viewAnalytics key
webview-ui/src/i18n/locales/en/settings.json            | Validation message update

Checklist

  • Lint passes (pnpm lint)
  • Type checks pass (pnpm check-types)
  • Version bumped in src/package.json

…r, KiloCode logout, overage banner

- Add Happy Eyeballs (RFC 8305) IPv4/IPv6 connection fallback to OpenRouter
  and KiloCode fetch agents to prevent hangs on broken address-family paths
- Add in-progress condense_context indicator for both manual and auto-condense
  paths in Task.ts and condenseTool.ts
- Add KiloCode logout flow: new kilocodeLogout message handler, logout button
  in KiloCode settings, tab switch to chat/welcome on logout
- Add OverageActiveBanner component shown when overage is enabled, replacing
  the out-of-credits banner in ChatView
- Add AxonCodeOverage/AxonCodeOverageUsage types to WebviewMessage
- Add 'View My Analytics' link in KiloCode settings
- Update validation message to 'You must be logged in to continue'
- Bump version to 6.7.6
@matterai-app

matterai-app Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Summary By MatterAI MatterAI logo

🔄 What Changed

This release (v6.7.6) introduces Happy Eyeballs connection fallback for Undici HTTP requests, adds an in-progress indicator for context condensation, implements KiloCode account logout functionality, and introduces an overage active usage banner.

🔍 Impact of the Change

Improves network resilience on dual-stack networks prone to hanging, enhances UX during context window condensation, allows proper session termination for KiloCode users, and ensures uninterrupted workflows when reaching monthly limits with overage enabled.

📁 Total Files Changed

Click to Expand
File ChangeLog
src/api/providers/__tests__/fetch-with-timeout.spec.ts Test Update
Added Happy Eyeballs configuration assertions.
src/api/providers/__tests__/openrouter.spec.ts Test Update
Verified custom fetch dispatcher assignment.
src/api/providers/kilocode/fetchWithTimeout.ts Network Config
Enabled autoSelectFamily for Happy Eyeballs connection racing.
src/api/providers/openrouter.ts Network Config
Implemented happyEyeballsAgent and custom fetch wrapper for OpenRouter.
src/core/task/Task.ts Lifecycle UI
Added in-progress status handling for context condensation events.
src/core/tools/condenseTool.ts Task Tool
Integrated condense progress indicators and robust error cleanup.
src/core/webview/webviewMessageHandler.ts Message Handler
Added kilocodeLogout case to clear tokens and redirect to chat.
src/package.json Version Bump
Updated release version to 6.7.6.
src/shared/WebviewMessage.ts Type Definitions
Added kilocodeLogout message type and overage usage interfaces.
webview-ui/src/App.tsx Navigation
Bypassed unsaved-changes check during logout tab switches.
webview-ui/src/components/chat/ChatView.tsx UI Banner
Conditionally rendered OverageActiveBanner when usage is exhausted.
webview-ui/src/components/kilocode/chat/OverageActiveBanner.tsx New Component
Created UI banner for active overage status and budget tracking.
webview-ui/src/components/kilocode/common/WeeklyResetButton.tsx Styling
Updated button layout classes.
webview-ui/src/components/kilocode/settings/providers/KiloCode.tsx Settings UI
Added logout button handler and analytics/reset links.
webview-ui/src/components/settings/ApiOptions.tsx Settings Refactor
Removed unused translation hook.

🧪 Test Added/Recommended

Added

  • Updated fetch-with-timeout.spec.ts to assert Happy Eyeballs options.
  • Updated openrouter.spec.ts to verify custom fetch dispatcher.

Recommended

  • Add component tests for OverageActiveBanner currency formatting and reset date rendering.
  • Add integration tests for kilocodeLogout state clearing.

🔒 Security Vulnerabilities

  • N/A

@matterai-app matterai-app Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧪 PR Review is completed: Release v6.7.6 adds Happy Eyeballs connection fallback, condense context indicators, KiloCode logout, and overage banner. One defensive coding gap in the error-path cleanup of Task.ts where the condense indicator finalization is not protected against rejection, unlike the matching pattern in condenseTool.ts.

Skipped files
  • webview-ui/src/i18n/locales/en/kilocode.json: Skipped file pattern
  • webview-ui/src/i18n/locales/en/settings.json: Skipped file pattern

Comment thread src/core/task/Task.ts
Comment on lines +1621 to +1630
// Finalize the in-progress row (renders nothing since there is no result)
await this.say(
"condense_context",
undefined /* text */,
undefined /* images */,
false /* partial */,
undefined /* checkpoint */,
undefined /* progressStatus */,
{ isNonInteractive: true } /* options */,
)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Error Handling

Issue: In the error path (if (error)), the cleanup await this.say("condense_context", ...) call is not protected against rejection. If this.say throws, the subsequent condense_context_error message at line 1631 will never execute, leaving the user without error feedback. The matching error handler in condenseTool.ts (lines 100-110) correctly uses .catch(() => {}) for this exact cleanup pattern.

Fix: Add .catch(() => {}) to the cleanup say call, matching the defensive pattern used in condenseTool.ts.

Impact: Ensures the condense error is always reported to the user even if the indicator cleanup fails.

Suggested change
// Finalize the in-progress row (renders nothing since there is no result)
await this.say(
"condense_context",
undefined /* text */,
undefined /* images */,
false /* partial */,
undefined /* checkpoint */,
undefined /* progressStatus */,
{ isNonInteractive: true } /* options */,
)
// Finalize the in-progress row (renders nothing since there is no result)
await this.say(
"condense_context",
undefined /* text */,
undefined /* images */,
false /* partial */,
undefined /* checkpoint */,
undefined /* progressStatus */,
{ isNonInteractive: true } /* options */,
).catch(() => {})

@code-crusher
code-crusher merged commit 9a28400 into main Aug 6, 2026
3 of 9 checks passed
@code-crusher
code-crusher deleted the release/v6.7.6 branch August 6, 2026 09:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant