Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
b7096c1
perf: optimize TF-IDF tokenization
google-labs-jules[bot] Feb 17, 2026
07510d8
Merge pull request #14 from mexicodxnmexico-create/bolt/tfidf-optimiz…
mexicodxnmexico-create Feb 18, 2026
5f4afcb
feat: implement 'Builder AI' philosophy in agent prompts
google-labs-jules[bot] Feb 22, 2026
daf6e63
Merge pull request #29 from mexicodxnmexico-create/builder-ai-philoso…
mexicodxnmexico-create Feb 22, 2026
3096fa8
🎨 Palette: Improve citation accessibility and security in Suggestions…
mexicodxnmexico-create Feb 22, 2026
d4c4b78
Create webpack.yml (#33)
mexicodxnmexico-create Feb 23, 2026
2572cef
fix(security): prevent command injection in openVscodeUri on Windows …
mexicodxnmexico-create Feb 23, 2026
5ecd40a
🛡️ Sentinel: [HIGH] Fix XSS vulnerability in suggestions panel
google-labs-jules[bot] Feb 23, 2026
97d9c4a
🛡️ Sentinel: [CRITICAL] Fix XSS & Attribute Injection + CI Build
google-labs-jules[bot] Feb 23, 2026
b576ffb
🛡️ Sentinel: [CRITICAL] Fix XSS & Attribute Injection + CI Workflow F…
google-labs-jules[bot] Feb 23, 2026
e6e9cf4
🛡️ Sentinel: Fix tabnabbing vulnerability in suggestions panel (#18)
mexicodxnmexico-create Feb 24, 2026
a637d9c
Merge branch 'microsoft:main' into main
mexicodxnmexico-create Feb 24, 2026
9f7c545
Improve accessibility of suggestions panel
google-labs-jules[bot] Feb 25, 2026
634121b
⚡ Optimize findWordInReferences by hoisting RegExp compilation
google-labs-jules[bot] Feb 25, 2026
25a81c9
chore: enable and fix GeminiNativeBYOKLMProvider missing API key test…
mexicodxnmexico-create Feb 25, 2026
a74115e
Merge pull request #43 from mexicodxnmexico-create/perf/findword-rege…
mexicodxnmexico-create Feb 26, 2026
0401c95
Remove deprecated hasSession method from vscode simulation fixture
google-labs-jules[bot] Feb 26, 2026
f4b183b
Merge pull request #53 from mexicodxnmexico-create/remove-deprecated-…
mexicodxnmexico-create Feb 26, 2026
52f9683
Create Caché
mexicodxnmexico-create Feb 26, 2026
4415f8b
Merge branch 'microsoft:main' into main
mexicodxnmexico-create Feb 26, 2026
71ca8c0
Merge branch 'microsoft:main' into main
mexicodxnmexico-create Feb 27, 2026
e447cc1
🛡️ Sentinel: [MEDIUM] Prevent environment variable leakage to child p…
mexicodxnmexico-create Feb 28, 2026
5daefde
Merge branch 'microsoft:main' into main
mexicodxnmexico-create Feb 28, 2026
2e1dfb1
🎨 Palette: Add aria-busy state to webview loading container (#67)
mexicodxnmexico-create Feb 28, 2026
fd9335c
feat(ui): improve citation link accessibility with aria-label (#70)
mexicodxnmexico-create Mar 1, 2026
aadbe3d
Merge branch 'microsoft:main' into main
mexicodxnmexico-create Mar 1, 2026
c344a64
Create tailwind.config.js (#71)
mexicodxnmexico-create Mar 1, 2026
d15eb61
security: sanitize process.env in hookExecutor to prevent leakage
google-labs-jules[bot] Mar 1, 2026
5efb4ff
⚡ Bolt: Optimize large text parsing by replacing matchAll with exec
google-labs-jules[bot] Mar 3, 2026
7eaa118
Merge pull request #75 from mexicodxnmexico-create/bolt-optimize-matc…
mexicodxnmexico-create Mar 3, 2026
bf52204
Merge branch 'microsoft:main' into main
mexicodxnmexico-create Mar 3, 2026
0b90485
Add helpful tooltip to "Accept suggestion" button in suggestions panel
google-labs-jules[bot] Mar 3, 2026
f629975
Merge pull request #76 from mexicodxnmexico-create/palette/fix-redund…
mexicodxnmexico-create Mar 4, 2026
557b9dc
⚡ refactor(replay): convert sequential entryToJson to parallel Promis…
google-labs-jules[bot] Mar 5, 2026
3e3ad3b
refactor: remove legacy BYOK configuration migrations
google-labs-jules[bot] Mar 5, 2026
00063ea
Merge pull request #92 from mexicodxnmexico-create/remove-legacy-byok…
mexicodxnmexico-create Mar 5, 2026
6e8ab32
Merge pull request #89 from mexicodxnmexico-create/jules-231881815220…
mexicodxnmexico-create Mar 5, 2026
8acd0e7
⚡ Bolt: Replace TextEncoder string allocations with Buffer.byteLength
google-labs-jules[bot] Mar 5, 2026
5c1b518
fix(webview): fix innerHTML XSS in suggestions
google-labs-jules[bot] Mar 5, 2026
9266289
Merge pull request #133 from mexicodxnmexico-create/bolt-buffer-byte-…
mexicodxnmexico-create Mar 5, 2026
afbac0f
Merge pull request #140 from mexicodxnmexico-create/jules-21280344630…
mexicodxnmexico-create Mar 6, 2026
e851405
🛡️ Sentinel: [MEDIUM] Replace insecure `Math.random()` with `generate…
google-labs-jules[bot] Mar 6, 2026
9c1b1ef
Bump esbuild in /test/simulation/fixtures/generate/issue-6163
dependabot[bot] Mar 6, 2026
295d1c4
🎨 Palette: [Accessibility] Add aria-label to Accept Suggestion button
google-labs-jules[bot] Mar 8, 2026
24b52e1
🎨 Palette: [Accessibility] Add aria-label to Accept Suggestion button
google-labs-jules[bot] Mar 8, 2026
fc25d41
🎨 Palette: [Accessibility] Add aria-label to Accept Suggestion button
google-labs-jules[bot] Mar 8, 2026
44e4da7
🎨 Palette: [Accessibility] Add aria-label to Accept Suggestion button
google-labs-jules[bot] Mar 9, 2026
5e5607b
🎨 Palette: [Accessibility] Add aria-label to Accept Suggestion button
google-labs-jules[bot] Mar 10, 2026
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
5 changes: 5 additions & 0 deletions .Jules/learnings.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Performance Optimization Learnings

- **RegExp Hoisting**: Hoisting `new RegExp(...)` out of loops when the pattern is constant can yield significant performance improvements (observed ~50% in micro-benchmark).
- **TypeScript**: When updating internal helper functions, ensure all call sites are updated to match the new signature.
- **Verification**: In environments where full test suites cannot run due to missing dependencies, creating standalone micro-benchmarks or verification scripts is a viable alternative to ensure correctness and performance gains.
3 changes: 3 additions & 0 deletions .Jules/palette.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## 2023-10-27 - [Avoid redundant aria-labels or titles on textual buttons]
**Learning:** Adding a title or aria-label that exactly matches the visible text of a button is redundant and can cause screen readers to announce the text twice.
**Action:** Reserve title attributes for icon-only buttons or use them to provide *additional* contextual information (e.g., "Click to insert this suggestion into your code" instead of "Accept suggestion 1").
28 changes: 28 additions & 0 deletions .github/workflows/webpack.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: NodeJS with Webpack

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [22.x]

steps:
- uses: actions/checkout@v4

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: Build
run: |
npm install
npm run build
7 changes: 7 additions & 0 deletions .jules/bolt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## 2024-03-08 - Regex Optimization in TF-IDF
**Learning:** Using `matchAll` with complex regexes containing lookarounds can be significantly slower than a manual scanning loop with simple regexes and `exec`.
**Action:** When parsing large amounts of text (like in TF-IDF tokenization), prefer scanning loops with simple regexes. Also, be careful with global regexes (`/g`) in module scope as they are stateful (`lastIndex`).

## 2024-03-08 - Fast String Truncation
**Learning:** Checking string byte length with `new TextEncoder().encode(text).length` is extremely slow because it allocates massive memory buffers. Node.js's `Buffer.byteLength(text, 'utf8')` is >3.5x faster. Also, truncating a large string to a byte limit is faster by first slicing the string `text.slice(0, maxIndexableFileSize)` (as 1 char >= 1 byte in utf8) before doing the exact byte-wise truncation with `Buffer.from(slicedString, 'utf8')`.
**Action:** Use `Buffer.byteLength(text, 'utf8')` and string slicing before buffer conversion to avoid memory allocation bottlenecks on large strings.
9 changes: 9 additions & 0 deletions .jules/sentinel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
## 2025-02-27 - DOMPurify Configuration Gaps
**Vulnerability:** Found `DOMPurify.sanitize` usage that stripped `target="_blank"` attributes from external links, leading to broken functionality and potentially confusing behavior. Also, the external links lacked `rel="noopener noreferrer"`, which `DOMPurify` would strip if `target` was stripped, but if `target` was allowed, it would be vulnerable to reverse tabnabbing.
**Learning:** `DOMPurify` by default is very strict and strips `target` attributes. To allow them, `ADD_ATTR: ['target']` is needed. However, allowing `target` introduces tabnabbing risks, so `rel="noopener noreferrer"` MUST be added and preserved.
**Prevention:** When using `DOMPurify` for webviews, always check if `target="_blank"` is intended. If so, configure `DOMPurify` to allow `target` and ensure `rel="noopener noreferrer"` is present. Use explicit `DOMPurify` configuration rather than relying on defaults.

## 2025-02-27 - Process Environment Variable Leakage
**Vulnerability:** The `CommandExecutor` class in `src/extension/mcp/vscode-node/util.ts` propagated the full `process.env` to child processes (e.g., via `cp.spawn`), creating a potential security risk for environment variable leakage of extension-specific secrets (e.g., IPC hooks, auth tokens) to external tools and MCP servers.
**Learning:** Blindly passing `{ ...process.env }` to child processes can inadvertently leak sensitive context information, but over-aggressively stripping all environment variables (like `TOKEN` or `PASSWORD`) breaks underlying authorized tool functionality (like custom NuGet sources or GitHub CLI).
**Prevention:** Rather than a blanket filter of all variables matching generic terms, specifically filter out framework/application-specific secrets (e.g., variables starting with `VSCODE_`, `GITHUB_`, or `COPILOT_`). Additionally, APIs that spawn processes should accept an explicit `env` parameter to allow intentional overrides by callers.
20 changes: 20 additions & 0 deletions Caché
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
- nombre: Caché
usos: acciones/cache@v5.0.3
con:
# Una lista de archivos, directorios y patrones comodín para almacenar en caché y restaurar
camino:
# Una clave explícita para restaurar y guardar el caché
llave:
# Una cadena multilínea ordenada que enumera las claves con prefijo coincidente, que se utilizan para restaurar la caché obsoleta si no se produce un acierto de caché para la clave. Nota: `cache-hit` devuelve falso en este caso.
restaurar-claves: # opcional
# El tamaño del fragmento utilizado para dividir archivos grandes durante la carga, en bytes
tamaño del fragmento de carga: # opcional
# Un valor booleano opcional, cuando está habilitado, permite que los ejecutores de Windows guarden o restauren cachés que se pueden restaurar o guardar respectivamente en otras plataformas
enableCrossOsArchive: # opcional, el valor predeterminado es falso
# Falla el flujo de trabajo si no se encuentra la entrada de caché
fail-on-cache-miss: # opcional, el valor predeterminado es falso
# Verifica si existe una entrada de caché para las entradas dadas (clave, claves de restauración) sin descargar el caché
solo búsqueda: # opcional, el valor predeterminado es falso
# Ejecute el paso posterior para guardar el caché incluso si otro paso anterior falla
guardar siempre: # opcional, el valor predeterminado es falso

14 changes: 14 additions & 0 deletions fix_config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
const fs = require('fs');
const path = 'src/platform/configuration/common/configurationService.ts';
let code = fs.readFileSync(path, 'utf8');

// We need to remove these from the Deprecated namespace:
// OllamaEndpoint, AzureModels, CustomOAIModels, AzureAuthType
// Let's use string replacement or regex

code = code.replace(/\s*export const OllamaEndpoint = defineSetting<string>\('chat\.byok\.ollamaEndpoint', ConfigType\.Simple, 'http:\/\/localhost:11434'\);/, '');
code = code.replace(/\s*export const AzureModels = defineSetting<Record<string, \{ name: string; url: string; toolCalling: boolean; vision: boolean; maxInputTokens: number; maxOutputTokens: number; requiresAPIKey\?: boolean; thinking\?: boolean; streaming\?: boolean; zeroDataRetentionEnabled\?: boolean \}>\>\('chat\.azureModels', ConfigType\.Simple, \{\}\);/, '');
code = code.replace(/\s*export const CustomOAIModels = defineSetting<Record<string, \{ name: string; url: string; toolCalling: boolean; vision: boolean; maxInputTokens: number; maxOutputTokens: number; requiresAPIKey\?: boolean; thinking\?: boolean; streaming\?: boolean; requestHeaders\?: Record<string, string>; zeroDataRetentionEnabled\?: boolean \}>\>\('chat\.customOAIModels', ConfigType\.Simple, \{\}\);/, '');
code = code.replace(/\s*export const AzureAuthType = defineSetting<AzureAuthMode>\('chat\.azureAuthType', ConfigType\.Simple, AzureAuthMode\.EntraId\);/, '');

fs.writeFileSync(path, code);
Loading