You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,7 @@
1
1
# Agents
2
2
3
+
See [CLAUDE.md](./CLAUDE.md) for project-wide conventions (code style, file naming, API route handlers, auth, PR workflow, etc.). Follow it as if it were part of this file.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+16-3Lines changed: 16 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,12 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## [Unreleased]
9
9
10
-
### Changed
11
-
-Redesigned the app layout with a new collapsible sidebar navigation, replacing the previous top navigation bar. [#1097](https://github.com/sourcebot-dev/sourcebot/pull/1097)
12
-
-Expired offline license keys no longer crash the process. An expired key now degrades to the unlicensed state. [#1109](https://github.com/sourcebot-dev/sourcebot/pull/1109)
10
+
### Added
11
+
-Added warning message that fires on startup when host environment contains env vars that simple-git flags as unsafe. [#1193](https://github.com/sourcebot-dev/sourcebot/pull/1193)
12
+
-Added a loading skeleton to the latest commit info bar in the code browser. [#1195](https://github.com/sourcebot-dev/sourcebot/pull/1195)
13
13
14
14
### Fixed
15
15
- Add missing schema changes introduced in [#1170](https://github.com/sourcebot-dev/sourcebot/pull/1170). [#1176](https://github.com/sourcebot-dev/sourcebot/pull/1176)
16
+
- Fixed blame gutter commit navigation to use the file path as it existed at the attributing commit, so clicking a blame line whose commit predates a rename resolves to the correct historical path. [#1178](https://github.com/sourcebot-dev/sourcebot/pull/1178)
17
+
- Bumped transitive `fast-uri` dependency to `^3.1.2`. [#1181](https://github.com/sourcebot-dev/sourcebot/pull/1181)
18
+
- Upgraded `simple-git` to `3.36.0` to address CVE-2026-6951. [#1183](https://github.com/sourcebot-dev/sourcebot/pull/1183)
19
+
- Upgraded `hono` to `^4.12.18` to address CVE-2026-44455, CVE-2026-44456, CVE-2026-44457, CVE-2026-44458. [#1186](https://github.com/sourcebot-dev/sourcebot/pull/1186)
20
+
- Upgraded `ip-address` to `^10.2.0` to address CVE-2026-42338. [#1189](https://github.com/sourcebot-dev/sourcebot/pull/1189)
21
+
- Upgraded `fast-xml-builder` to `^1.2.0` to address CVE-2026-44664, CVE-2026-44665. [#1184](https://github.com/sourcebot-dev/sourcebot/pull/1184)
22
+
23
+
### Changed
24
+
- Reduced the log verbosity of the worker by changing various log messages from info to debug. [#1179](https://github.com/sourcebot-dev/sourcebot/pull/1179)
25
+
-[EE] Switched symbol hover detection to use Lezer highlight tags, broadening identifier coverage. [#1194](https://github.com/sourcebot-dev/sourcebot/pull/1194)
26
+
- Improved git history and blame performance on large repositories. [#1198](https://github.com/sourcebot-dev/sourcebot/pull/1198)
27
+
- Redesigned the app layout with a new collapsible sidebar navigation, replacing the previous top navigation bar. [#1097](https://github.com/sourcebot-dev/sourcebot/pull/1097)
28
+
- Expired offline license keys no longer crash the process. An expired key now degrades to the unlicensed state. [#1109](https://github.com/sourcebot-dev/sourcebot/pull/1109)
Copy file name to clipboardExpand all lines: CLAUDE.md
+83Lines changed: 83 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -263,6 +263,89 @@ Images added to `.mdx` files in `docs/` should be wrapped in a `<Frame>` compone
263
263
</Frame>
264
264
```
265
265
266
+
## Fixing CVEs
267
+
268
+
When fixing a CVE in a transitive dependency, prefer a real top-level upgrade over a forced `resolutions` override.
269
+
270
+
1.**Trace the dependency chain to a package in your own `package.json`.** Run:
271
+
272
+
```bash
273
+
yarn why <vulnerable-package> --recursive
274
+
```
275
+
276
+
"Top-level" means a package **literally listed in this repo's root or workspace `package.json`** under `dependencies`, `devDependencies`, or `peerDependencies` — not just any ancestor in the chain. If the chain is `vulnerable-pkg → mid-pkg → top-pkg`, do not stop at `mid-pkg`; keep walking until you reach `top-pkg`.
277
+
278
+
2.**Check whether the existing ranges already allow a patched version.** Often the lockfile is just stale: every `^x.y.z` range in the chain still admits the patched version, but `yarn.lock` was written before that version existed. In that case, refresh the lockfile entry — no `package.json` change, no `resolutions` override:
279
+
280
+
```bash
281
+
yarn up <intermediate-or-vulnerable-pkg>
282
+
# or, to refresh many at once:
283
+
yarn dedupe
284
+
```
285
+
286
+
This is the lightest-weight fix: it doesn't force a version, it just bumps the lock to the latest version that satisfies the constraints already in the tree. Verify with `yarn why <vulnerable-package>` afterward — if every instance is now patched, you're done.
287
+
288
+
3.**If a refresh isn't enough, bump the top-level dependency** to a version whose transitive tree no longer includes the vulnerable version. This is also a real, supported upgrade. Verify the upgrade actually removes the vulnerable version with `yarn why <vulnerable-package>` after running `yarn install`.
289
+
290
+
4.**Fall back to a `resolutions` override** only if neither a refresh nor a top-level bump resolves it (no compatible version exists in the existing ranges, or a top-level upgrade would require a breaking major). Use the **qualified** form keyed to the existing source range (not a bare key, which overrides every requester unnecessarily), and pin with `^`, not `>=`:
291
+
292
+
```json
293
+
"resolutions": {
294
+
"<pkg>@npm:<existing-source-range>": "^<patched>"
295
+
}
296
+
```
297
+
298
+
The `<existing-source-range>` is whatever range is currently requesting the vulnerable version (find it in `yarn.lock`, e.g. `^2.8.3`). Avoid the bare-key form `"<pkg>": "^x.y.z"`.
299
+
300
+
### Branch naming for CVE fixes
301
+
302
+
Use a **package-keyed** branch name, not a CVE-keyed one:
303
+
304
+
```
305
+
cursor/cve/<package>
306
+
```
307
+
308
+
Multiple CVEs against the same package commonly land in one upstream release, so package-keyed branches let sibling work join the same PR (see "Batching CVEs" below). Do not include the CVE ID or a Linear issue ID in the branch name.
309
+
310
+
### Batching CVEs that share a package
311
+
312
+
CVEs often arrive in clusters because one package release fixes several at once. Before opening a new PR, check whether a sibling PR is already addressing the same package.
313
+
314
+
1.**Extract**`<package>` and `<min-patched-version>` from the Linear issue (the Dependabot-sourced body lists both — affected package and fixed version).
315
+
316
+
2.**Look for a sibling PR**:
317
+
318
+
```bash
319
+
gh pr list --state open --search '<package> in:title' --json number,title,headRefName
320
+
```
321
+
322
+
3.**Decide based on the result**:
323
+
324
+
-**Sibling PR exists and its branch already pins ≥ `<min-patched-version>`**:
325
+
-`gh pr checkout <number>`
326
+
-**Edit** the existing CHANGELOG line for this PR — append this CVE ID to the comma-separated list. Do not add a new CHANGELOG line.
327
+
-`gh pr edit <number>` to append the CVE ID to the title and body, and add a `Fixes <LINEAR-ID>` line to the PR body alongside any existing `Fixes` lines (this auto-links the Linear issue and Linear will mark it Done when the PR merges).
328
+
- Do not transition the Linear issue manually — leave it for the merge to close.
329
+
-**Do not open a new PR.**
330
+
331
+
-**Sibling PR exists but its pin is too low to cover this CVE**:
332
+
- Check out the branch.
333
+
- Bump the resolution / package version higher to cover both.
334
+
-**Edit** the existing CHANGELOG line — append this CVE and update the version. Update the PR title and body, and add `Fixes <LINEAR-ID>` to the PR body.
335
+
- Do not transition the Linear issue manually — leave it for the merge to close.
336
+
337
+
-**No sibling PR exists**:
338
+
- Create a new `cursor/cve/<package>` branch and open the PR as usual.
339
+
340
+
4.**Post-flight (race-window backstop)**: After opening a new PR, re-run step 2. If a competing PR with a *lower* number appeared while you were working, close yours, push your CHANGELOG entry and Linear link onto the older PR.
341
+
342
+
### CHANGELOG and PR conventions for CVE fixes
343
+
344
+
- CHANGELOG entry (under `[Unreleased] → Fixed`): `Upgraded \`<pkg>\` to \`^x.y.z\` to address CVE-A, CVE-B, .... [#<PR>]`
345
+
-**One CHANGELOG line per PR**, not per CVE. When the PR addresses multiple CVEs (batched), list all of them comma-separated on a single line.
346
+
- PR title format: `chore: upgrade <pkg> to ^x.y.z to address CVE-A, CVE-B, ...` (list every CVE the PR resolves).
347
+
- Keep entries short. The CVE IDs are enough.
348
+
266
349
## Branches and Pull Requests
267
350
268
351
When creating a branch or opening a PR, ask the user for:
0 commit comments