Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 87 additions & 0 deletions CHANGELOG.vscode.md
Original file line number Diff line number Diff line change
@@ -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 <thinking> 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)._
76 changes: 76 additions & 0 deletions scripts/generate-vscode-changelog.js
Original file line number Diff line number Diff line change
@@ -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++
Copy link
Contributor

Choose a reason for hiding this comment

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

The current logic increments versionCount for each version header and breaks when versionCount exceeds maxVersions. This causes versionCount to be one more than the number of versions actually included in the truncated file. If the note is intended to show the total number of releases in the full changelog, consider pre-counting the headers; otherwise, adjust the note for clarity.

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).*`,
Copy link
Contributor Author

Choose a reason for hiding this comment

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

P2: The release count in the footer is inaccurate: versionCount increments before the break, so this often reports 11 when only 10 versions are included, and it doesn't reflect total releases. Either compute a total in a separate pass or avoid the number entirely to prevent misleading output.

Suggested change
`*For the complete changelog with all ${versionCount} releases, please visit the [GitHub repository](https://github.com/RooCodeInc/Roo-Code/blob/main/CHANGELOG.md).*`,
'*For the complete changelog, 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 }
43 changes: 31 additions & 12 deletions src/esbuild.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down Expand Up @@ -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", {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

P3: execSync runs on every build (including watch/dev), adding overhead and blocking the event loop during iterative builds. Consider gating generation behind the existing production flag to avoid doing this work outside release packaging.

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)
})
},
},
Expand Down
Loading