diff --git a/CHANGELOG.vscode.md b/CHANGELOG.vscode.md new file mode 100644 index 0000000000..face870f14 --- /dev/null +++ b/CHANGELOG.vscode.md @@ -0,0 +1,87 @@ +# Roo Code Changelog + +## [3.28.15] - 2025-10-03 + +- Add new DeepSeek and GLM models with detailed descriptions to the Chutes provider (thanks @mohammad154!) +- Fix: properly reset cost limit tracking when user clicks "Reset and Continue" (#6889 by @alecoot, PR by app/roomote) +- Fix: improve save button activation in prompts settings (#5780 by @beccare, PR by app/roomote) +- Fix: overeager 'there are unsaved changes' dialog in settings (thanks @brunobergher!) +- Fix: show send button when only images are selected in chat textarea (thanks app/roomote!) +- Fix: Claude Sonnet 4.5 compatibility improvements (thanks @mrubens!) +- Add UsageStats schema and type for better analytics tracking (thanks app/roomote!) +- Include reasoning messages in cloud tasks (thanks @mrubens!) +- Security: update dependency vite to v6.3.6 (thanks app/renovate!) +- Deprecate free grok 4 fast model (thanks @mrubens!) +- Remove unsupported Gemini 2.5 Flash Image Preview free model (thanks @SannidhyaSah!) +- Add structured data to the homepage for better SEO (thanks @mrubens!) +- Update dependency glob to v11.0.3 (thanks app/renovate!) + +## [3.28.14] - 2025-09-30 + +- Add support for GLM-4.6 model for z.ai provider (#8406 by @dmarkey, PR by @roomote) + +## [3.28.13] - 2025-09-29 + +- Fix: Remove topP parameter from Bedrock inference config (#8377 by @ronyblum, PR by @daniel-lxs) +- Fix: Correct Vertex AI Sonnet 4.5 model configuration (#8387 by @nickcatal, PR by @mrubens!) + +## [3.28.12] - 2025-09-29 + +- Fix: Correct Anthropic Sonnet 4.5 model ID and add Bedrock 1M context checkbox (thanks @daniel-lxs!) + +## [3.28.11] - 2025-09-29 + +- Fix: Correct AWS Bedrock Claude Sonnet 4.5 model identifier (#8371 by @sunhyung, PR by @app/roomote) +- Fix: Correct Claude Sonnet 4.5 model ID format (thanks @daniel-lxs!) + +## [3.28.10] - 2025-09-29 + +- Feat: Add Sonnet 4.5 support (thanks @daniel-lxs!) +- Fix: Resolve max_completion_tokens issue for GPT-5 models in LiteLLM provider (#6979 by @lx1054331851, PR by @roomote) +- Fix: Make chat icons properly sized with shrink-0 class (thanks @mrubens!) +- Enhancement: Track telemetry settings changes for better analytics (thanks @mrubens!) +- Web: Add testimonials section to website (thanks @brunobergher!) +- CI: Refresh contrib.rocks cache workflow for contributor badges (thanks @hannesrudolph!) + +## [3.28.9] - 2025-09-26 + +- The free Supernova model now has a 1M token context window (thanks @mrubens!) +- Experiment to show the Roo provider on the welcome screen (thanks @mrubens!) +- Web: Website improvements to https://roocode.com/ (thanks @brunobergher!) +- Fix: Remove tags from prompts for cleaner output and fewer tokens (#8318 by @hannesrudolph, PR by @app/roomote) +- Correct tool use suggestion to improve model adherence to suggestion (thanks @hannesrudolph!) +- feat: log out from cloud when resetting extension state (thanks @app/roomote!) +- feat: Add telemetry tracking to DismissibleUpsell component (thanks @app/roomote!) +- refactor: remove pr-reviewer mode (thanks @daniel-lxs!) +- Removing user hint when refreshing models (thanks @requesty-JohnCosta27!) + +## [3.28.8] - 2025-09-25 + +- Fix: Resolve frequent "No tool used" errors by clarifying tool-use rules (thanks @hannesrudolph!) +- Fix: Include initial ask in condense summarization (thanks @hannesrudolph!) +- Add support for more free models in the Roo provider (thanks @mrubens!) +- Show cloud switcher and option to add a team when logged in (thanks @mrubens!) +- Add Opengraph image for web (thanks @brunobergher!) + +## [3.28.7] - 2025-09-23 + +- UX: Collapse thinking blocks by default with UI settings to always show them (thanks @brunobergher!) +- Fix: Resolve checkpoint restore popover positioning issue (#8219 by @NaccOll, PR by @app/roomote) +- Add cloud account switcher functionality (thanks @mrubens!) +- Add support for zai-org/GLM-4.5-turbo model in Chutes provider (#8155 by @mugnimaestra, PR by @app/roomote) + +## [3.28.6] - 2025-09-23 + +- Feat: Add GPT-5-Codex model (thanks @daniel-lxs!) +- Feat: Add keyboard shortcut for toggling auto-approve (Cmd/Ctrl+Alt+A) (thanks @brunobergher!) +- Fix: Improve reasoning block formatting for better readability (thanks @daniel-lxs!) +- Fix: Respect Ollama Modelfile num_ctx configuration (#7797 by @hannesrudolph, PR by @app/roomote) +- Fix: Prevent checkpoint text from wrapping in non-English languages (#8206 by @NaccOll, PR by @app/roomote) +- Remove language selection and word wrap toggle from CodeBlock (thanks @mrubens!) +- Feat: Add package.nls.json checking to find-missing-translations script (thanks @app/roomote!) +- Fix: Bare metal evals fixes (thanks @cte!) +- Fix: Follow-up questions should trigger the "interactive" state (thanks @cte!) + +--- + +_For the complete changelog with all 11 releases, please visit the [GitHub repository](https://github.com/RooCodeInc/Roo-Code/blob/main/CHANGELOG.md)._ diff --git a/scripts/generate-vscode-changelog.js b/scripts/generate-vscode-changelog.js new file mode 100644 index 0000000000..aa0c990116 --- /dev/null +++ b/scripts/generate-vscode-changelog.js @@ -0,0 +1,76 @@ +#!/usr/bin/env node + +const fs = require("fs") +const path = require("path") + +/** + * Generate a truncated CHANGELOG for VS Code extension + * This reduces the file size to improve performance when viewing the extension details + */ +function generateVSCodeChangelog() { + const changelogPath = path.join(__dirname, "..", "CHANGELOG.md") + const outputPath = path.join(__dirname, "..", "CHANGELOG.vscode.md") + + if (!fs.existsSync(changelogPath)) { + console.error("CHANGELOG.md not found") + process.exit(1) + } + + const content = fs.readFileSync(changelogPath, "utf8") + const lines = content.split("\n") + + const truncatedLines = [] + let versionCount = 0 + const maxVersions = 10 // Keep only the 10 most recent versions + let inVersion = false + + for (const line of lines) { + // Check if this is a version header + if (line.startsWith("## [")) { + versionCount++ + if (versionCount > maxVersions) { + break + } + inVersion = true + } + + // Skip image lines (they reference release images) + if (line.includes("![") && line.includes("/releases/")) { + continue + } + + // Add the line if we're within the version limit + if (versionCount === 0 || (inVersion && versionCount <= maxVersions)) { + truncatedLines.push(line) + } + } + + // Add a note at the end + truncatedLines.push("") + truncatedLines.push("---") + truncatedLines.push("") + truncatedLines.push( + `*For the complete changelog with all ${versionCount} releases, please visit the [GitHub repository](https://github.com/RooCodeInc/Roo-Code/blob/main/CHANGELOG.md).*`, + ) + + const truncatedContent = truncatedLines.join("\n") + fs.writeFileSync(outputPath, truncatedContent, "utf8") + + const originalSize = Buffer.byteLength(content, "utf8") + const truncatedSize = Buffer.byteLength(truncatedContent, "utf8") + const reduction = (((originalSize - truncatedSize) / originalSize) * 100).toFixed(1) + + console.log(`✅ Generated CHANGELOG.vscode.md`) + console.log(` Original size: ${(originalSize / 1024).toFixed(1)} KB`) + console.log(` Truncated size: ${(truncatedSize / 1024).toFixed(1)} KB`) + console.log(` Size reduction: ${reduction}%`) + + return outputPath +} + +// Run if called directly +if (require.main === module) { + generateVSCodeChangelog() +} + +module.exports = { generateVSCodeChangelog } diff --git a/src/esbuild.mjs b/src/esbuild.mjs index f99b077e9f..6203ba65f7 100644 --- a/src/esbuild.mjs +++ b/src/esbuild.mjs @@ -4,6 +4,7 @@ import * as path from "path" import { fileURLToPath } from "url" import process from "node:process" import * as console from "node:console" +import { execSync } from "child_process" import { copyPaths, copyWasms, copyLocales, setupLocaleWatcher } from "@roo-code/build" @@ -47,18 +48,36 @@ async function main() { name: "copyFiles", setup(build) { build.onEnd(() => { - copyPaths( - [ - ["../README.md", "README.md"], - ["../CHANGELOG.md", "CHANGELOG.md"], - ["../LICENSE", "LICENSE"], - ["../.env", ".env", { optional: true }], - ["node_modules/vscode-material-icons/generated", "assets/vscode-material-icons"], - ["../webview-ui/audio", "webview-ui/audio"], - ], - srcDir, - buildDir, - ) + // Generate truncated CHANGELOG for VS Code extension + let changelogGenerated = false + try { + console.log("[extension] Generating truncated CHANGELOG for VS Code...") + execSync("node ../scripts/generate-vscode-changelog.js", { + cwd: srcDir, + stdio: "inherit" + }) + changelogGenerated = true + } catch (error) { + console.error("[extension] Failed to generate truncated CHANGELOG:", error.message) + console.log("[extension] Falling back to original CHANGELOG.md") + } + + const filesToCopy = [ + ["../README.md", "README.md"], + ["../LICENSE", "LICENSE"], + ["../.env", ".env", { optional: true }], + ["node_modules/vscode-material-icons/generated", "assets/vscode-material-icons"], + ["../webview-ui/audio", "webview-ui/audio"], + ] + + // Use truncated CHANGELOG if it was generated, otherwise use original + if (changelogGenerated && fs.existsSync(path.join(srcDir, "..", "CHANGELOG.vscode.md"))) { + filesToCopy.splice(1, 0, ["../CHANGELOG.vscode.md", "CHANGELOG.md"]) + } else { + filesToCopy.splice(1, 0, ["../CHANGELOG.md", "CHANGELOG.md"]) + } + + copyPaths(filesToCopy, srcDir, buildDir) }) }, },