Skip to content

Commit e52d62f

Browse files
Merge branch 'main' into adjust_position_in_context_menu
2 parents 5f7afe6 + a0e4aff commit e52d62f

File tree

362 files changed

+19830
-8476
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

362 files changed

+19830
-8476
lines changed

.dockerignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ src/node_modules
8181
!webview-ui/
8282
!packages/evals/.docker/entrypoints/runner.sh
8383
!packages/build/
84-
!packages/cloud/
8584
!packages/config-eslint/
8685
!packages/config-typescript/
8786
!packages/evals/

CHANGELOG.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,76 @@
11
# kilo-code
22

3+
## [v4.79.1]
4+
5+
- [#1871](https://github.com/Kilo-Org/kilocode/pull/1871) [`fe0b1ce`](https://github.com/Kilo-Org/kilocode/commit/fe0b1ce7141e6fb07f4c4816fd1895a663ce13e7) Thanks [@kevinvandijk](https://github.com/kevinvandijk)! - Include changes from Roo Code v3.25.10
6+
7+
- Improved support for GPT-5 (thanks Cline and @app/roomote!)
8+
- Fix: Use CDATA sections in XML examples to prevent parser errors (#4852 by @hannesrudolph, PR by @hannesrudolph)
9+
- Fix: Add missing MCP error translation keys (thanks @app/roomote!)
10+
- Fix: Resolve rounding issue with max tokens (#6806 by @markp018, PR by @mrubens)
11+
- Add support for GLM-4.5 and OpenAI gpt-oss models in Fireworks provider (#6753 by @alexfarlander, PR by @app/roomote)
12+
- Improve UX by focusing chat input when clicking plus button in extension menu (thanks @app/roomote!)
13+
14+
## [v4.79.0]
15+
16+
- [#1862](https://github.com/Kilo-Org/kilocode/pull/1862) [`43c7179`](https://github.com/Kilo-Org/kilocode/commit/43c71796a58e25805217c520a9d612d56b2f11d5) Thanks [@kevinvandijk](https://github.com/kevinvandijk)! - Include changes from Roo Code v3.25.8
17+
18+
- Fix: Prevent disabled MCP servers from starting processes and show correct status (#6036 by @hannesrudolph, PR by @app/roomote)
19+
- Fix: Handle current directory path "." correctly in codebase_search tool (#6514 by @hannesrudolph, PR by @app/roomote)
20+
- Fix: Trim whitespace from OpenAI base URL to fix model detection (#6559 by @vauhochzett, PR by @app/roomote)
21+
- Feat: Reduce Gemini 2.5 Pro minimum thinking budget to 128 (thanks @app/roomote!)
22+
- Fix: Improve handling of net::ERR_ABORTED errors in URL fetching (#6632 by @QuinsZouls, PR by @app/roomote)
23+
- Fix: Recover from error state when Qdrant becomes available (#6660 by @hannesrudolph, PR by @app/roomote)
24+
- Fix: Resolve memory leak in ChatView virtual scrolling implementation (thanks @xyOz-dev!)
25+
- Add: Swift files to fallback list (#5857 by @niteshbalusu11, #6555 by @sealad886, PR by @niteshbalusu11)
26+
- Feat: Clamp default model max tokens to 20% of context window (thanks @mrubens!)
27+
- Add support for Claude Opus 4.1
28+
- Add code indexing support for multiple folders similar to task history (#6197 by @NaccOll, PR by @NaccOll)
29+
- Make mode selection dropdowns responsive (#6423 by @AyazKaan, PR by @AyazKaan)
30+
- Redesigned task header and task history (thanks @brunobergher!)
31+
- Fix checkpoints timing and ensure checkpoints work properly (#4827 by @mrubens, PR by @NaccOll)
32+
- Fix empty mode names from being saved (#5766 by @kfxmvp, PR by @app/roomote)
33+
- Fix MCP server creation when setting is disabled (#6607 by @characharm, PR by @app/roomote)
34+
- Update highlight layer style and align to textarea (#6647 by @NaccOll, PR by @NaccOll)
35+
- Fix UI for approving chained commands
36+
- Use assistantMessageParser class instead of parseAssistantMessage (#5340 by @qdaxb, PR by @qdaxb)
37+
- Conditionally include reminder section based on todo list config (thanks @NaccOll!)
38+
- Task and TaskProvider event emitter cleanup with new events (thanks @cte!)
39+
- Set horizon-beta model max tokens to 32k for OpenRouter (requested by @hannesrudolph, PR by @app/roomote)
40+
- Add support for syncing provider profiles from the cloud
41+
- Fix: Improve Claude Code ENOENT error handling with installation guidance (#5866 by @JamieJ1, PR by @app/roomote)
42+
- Fix: LM Studio model context length (#5075 by @Angular-Angel, PR by @pwilkin)
43+
- Fix: VB.NET indexing by implementing fallback chunking system (#6420 by @JensvanZutphen, PR by @daniel-lxs)
44+
- Add auto-approved cost limits (thanks @hassoncs!)
45+
- Add Qwen 3 Coder from Cerebras (thanks @kevint-cerebras!)
46+
- Fix: Handle Qdrant deletion errors gracefully to prevent indexing interruption (thanks @daniel-lxs!)
47+
- Fix: Restore message sending when clicking save button (thanks @daniel-lxs!)
48+
- Fix: Linter not applied to locales/\*/README.md (thanks @liwilliam2021!)
49+
- Handle more variations of chaining and subshell command validation
50+
- More tolerant search/replace match
51+
- Clean up the auto-approve UI (thanks @mrubens!)
52+
- Skip interpolation for non-existent slash commands (thanks @app/roomote!)
53+
54+
### Patch Changes
55+
56+
- [#1856](https://github.com/Kilo-Org/kilocode/pull/1856) [`9c8423e`](https://github.com/Kilo-Org/kilocode/commit/9c8423ef902cf68566185dbf96dae92f4fcac9b3) Thanks [@chrarnoldus](https://github.com/chrarnoldus)! - Fixed Enhance Prompt and Commit Generation Message not working with GPT-5 on the OpenAI provider
57+
58+
- [#1822](https://github.com/Kilo-Org/kilocode/pull/1822) [`79efaea`](https://github.com/Kilo-Org/kilocode/commit/79efaeaa3da8881310feb4a711f475810df5f84e) Thanks [@tejaschokhawala](https://github.com/tejaschokhawala)! - Thinking Budget value parsing and boundary handling corrected
59+
60+
- [#1850](https://github.com/Kilo-Org/kilocode/pull/1850) [`b9714db`](https://github.com/Kilo-Org/kilocode/commit/b9714dbbdde7e6ec628d32657329fe82c01cfb42) Thanks [@chrarnoldus](https://github.com/chrarnoldus)! - Fixed "Failed to load Kilo Code provider model list" error
61+
62+
- [#1829](https://github.com/Kilo-Org/kilocode/pull/1829) [`2bdeaa0`](https://github.com/Kilo-Org/kilocode/commit/2bdeaa05074e5e87ffa2af1bbed149864dbd3785) Thanks [@catrielmuller](https://github.com/catrielmuller)! - Improve memory allocation on webview
63+
64+
## [v4.78.0]
65+
66+
- [#1836](https://github.com/Kilo-Org/kilocode/pull/1836) [`1cc5edd`](https://github.com/Kilo-Org/kilocode/commit/1cc5edd003434fcd3d1fd66e652099165b077ac6) Thanks [@hassoncs](https://github.com/hassoncs)! - The task timeline now scrolls horizontally using the mouse wheel (thanks @ABODFTW!)
67+
68+
### Patch Changes
69+
70+
- [#1814](https://github.com/Kilo-Org/kilocode/pull/1814) [`3e7290e`](https://github.com/Kilo-Org/kilocode/commit/3e7290e49974d26ee55bcaef743edb527e214735) Thanks [@chrarnoldus](https://github.com/chrarnoldus)! - Removed "Press Ctrl+Shift+G to generate terminal commands" message
71+
72+
- [#1832](https://github.com/Kilo-Org/kilocode/pull/1832) [`80b0f20`](https://github.com/Kilo-Org/kilocode/commit/80b0f209ad823ac23f30838ba3989dbf877fce73) Thanks [@chrarnoldus](https://github.com/chrarnoldus)! - Add GPT-5 model support to OpenAI provider
73+
374
## [v4.77.1]
475

576
- [#1792](https://github.com/Kilo-Org/kilocode/pull/1792) [`ee300bc`](https://github.com/Kilo-Org/kilocode/commit/ee300bcd9138049182f9979ea9794996c96ee3d1) Thanks [@kevinvandijk](https://github.com/kevinvandijk)! - Fix infinite spinning initial API request

apps/playwright-e2e/helpers/notification-helpers.ts

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,44 @@ import { type Page } from "@playwright/test"
44
/**
55
* Closes all visible notification toasts in VSCode
66
* @param page - The Playwright page instance
7-
* @param timeout - Maximum time to wait for notifications
87
*/
9-
export async function closeAllToastNotifications(page: Page, timeout: number = 0): Promise<void> {
8+
export async function closeAllToastNotifications(page: Page): Promise<void> {
109
try {
11-
await page.waitForSelector(".notification-list-item", { timeout })
10+
let closedCount = 0
1211

13-
// Handle notification-list-item notifications (the ones we found working)
14-
const notificationItems = page.locator(".notification-list-item")
15-
const notificationCount = await notificationItems.count()
16-
console.log(`🔍 Found ${notificationCount} notifications to close...`)
12+
// Keep closing notifications until none are found
13+
while (true) {
14+
const notificationItems = page.locator(".notification-list-item")
15+
const notificationCount = await notificationItems.count()
16+
if (notificationCount === 0) {
17+
return
18+
}
1719

18-
// Close notifications by hovering and clicking their close buttons
19-
for (let i = 0; i < notificationCount; i++) {
20-
const notification = notificationItems.nth(i)
20+
const notification = notificationItems.first()
2121
const isVisible = await notification.isVisible().catch(() => false)
2222
if (isVisible) {
2323
await notification.hover()
2424
const closeButton = notification.locator(".codicon-notifications-clear")
25-
await closeButton.click()
25+
const closeButtonExists = (await closeButton.count()) > 0
26+
27+
if (closeButtonExists) {
28+
await closeButton.click()
29+
closedCount++
30+
console.log(`✅ Closed notification #${closedCount}`)
31+
await page.waitForTimeout(100)
32+
} else {
33+
// No close button found, break to avoid infinite loop
34+
console.log(`⚠️ No close button found for notification, stopping`)
35+
break
36+
}
37+
} else {
38+
// Notification not visible, break to avoid infinite loop
39+
console.log(`⚠️ Notification not visible, stopping`)
40+
break
2641
}
2742
}
28-
} catch {
29-
return // No notifications found! That's ok
43+
} catch (_error) {
44+
console.log(`Ignoring error in closeAllToastNotifications`, _error)
45+
return
3046
}
3147
}

apps/playwright-e2e/playwright.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export default defineConfig<void, TestOptions>({
1616
timeout: 120_000,
1717
expect: { timeout: 30_000 },
1818
reporter: process.env.CI ? "html" : "list",
19-
workers: process.env.CI ? 2 : 1,
19+
workers: 1,
2020
retries: process.env.CI ? 2 : 0, // Retry in CI, never locally
2121
globalSetup: "./playwright.globalSetup",
2222
testDir: "./tests",

apps/playwright-e2e/tests/chat-with-response.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
verifyExtensionInstalled,
77
configureApiKeyThroughUI,
88
getChatInput,
9+
closeAllToastNotifications,
910
} from "../helpers"
1011

1112
test.describe("E2E Chat Test", () => {
@@ -14,6 +15,8 @@ test.describe("E2E Chat Test", () => {
1415
await waitForWebviewText(page, "Welcome to Kilo Code!")
1516

1617
await page.waitForTimeout(1000) // Let the page settle to avoid flakes
18+
19+
await closeAllToastNotifications(page)
1720
await takeScreenshot("welcome")
1821

1922
await configureApiKeyThroughUI(page)

apps/playwright-e2e/tests/playwright-base-test.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as fs from "fs"
77
import { fileURLToPath } from "url"
88
import { camelCase } from "change-case"
99
import { setupConsoleLogging, cleanLogMessage } from "../helpers/console-logging"
10-
import { closeAllTabs, closeAllToastNotifications, waitForAllExtensionActivation } from "../helpers"
10+
import { waitForAllExtensionActivation, closeAllTabs } from "../helpers"
1111

1212
// ES module equivalent of __dirname
1313
const __filename = fileURLToPath(import.meta.url)
@@ -195,7 +195,6 @@ export const test = base.extend<TestFixtures>({
195195
await use(async (name?: string) => {
196196
await waitForAllExtensionActivation(page)
197197
await closeAllTabs(page)
198-
await closeAllToastNotifications(page)
199198

200199
// Extract test suite from the test file name or use a default
201200
const testInfo = test.info()

apps/playwright-e2e/tests/settings-screenshots.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { test, expect, type TestFixtures } from "./playwright-base-test"
22
import { verifyExtensionInstalled, findWebview, upsertApiConfiguration } from "../helpers/webview-helpers"
3+
import { closeAllToastNotifications } from "../helpers"
34

45
test.describe("Settings", () => {
56
test("settings tab screenshot", async ({ workbox: page, takeScreenshot }: TestFixtures) => {
@@ -35,7 +36,7 @@ test.describe("Settings", () => {
3536
const testId = await tabButton.getAttribute("data-testid")
3637
const sectionId = testId?.replace("tab-", "") || `section-${i}`
3738

38-
console.log(`📸 Taking screenshot of tab: ${tabName} (${sectionId})`)
39+
await closeAllToastNotifications(page)
3940
await takeScreenshot(`${i}-settings-${sectionId}-${tabName.toLowerCase().replace(/\s+/g, "-")}`)
4041
}
4142

apps/storybook/stories/Badge.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { createTableStory } from "../src/utils/createTableStory"
55
const BADGE_VARIANTS = ["default", "secondary", "destructive", "outline"] as const
66

77
const meta = {
8-
title: "Component/Badge",
8+
title: "Components/Badge",
99
component: Badge,
1010
parameters: {
1111
layout: "centered",

apps/storybook/stories/Button.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const BUTTON_SIZES = ["default", "sm", "lg", "icon"] as const
88
const STORY_TABLE_SIZES = ["default", "sm", "lg"] as const
99

1010
const meta = {
11-
title: "Component/Button",
11+
title: "Components/Button",
1212
component: Button,
1313
parameters: {
1414
layout: "centered",

apps/storybook/stories/KiloModeSelector.stories.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useState } from "react"
22
import type { Meta, StoryObj } from "@storybook/react-vite"
3-
import KiloModeSelector from "../../../webview-ui/src/components/chat/KiloModeSelector"
3+
import KiloModeSelector from "../../../webview-ui/src/components/kilocode/KiloModeSelector"
44
import { Mode } from "@roo/modes"
55
import { DEFAULT_MODES } from "@roo-code/types"
66
import { withI18n } from "../src/decorators/withI18n"
@@ -32,7 +32,7 @@ const KiloModeSelectorWrapper = (props: WrapperProps) => {
3232
}
3333

3434
const meta: Meta<typeof KiloModeSelectorWrapper> = {
35-
title: "Components/KiloModeSelector",
35+
title: "Chat/KiloModeSelector",
3636
component: KiloModeSelectorWrapper,
3737
decorators: [withI18n, withTheme, withTooltipProvider],
3838
}

0 commit comments

Comments
 (0)