Skip to content

chore(deps): bump diff from 5.2.0 to 9.0.0 - #2

Closed
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/npm_and_yarn/diff-9.0.0
Closed

chore(deps): bump diff from 5.2.0 to 9.0.0#2
dependabot[bot] wants to merge 1 commit into
masterfrom
dependabot/npm_and_yarn/diff-9.0.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github May 13, 2026

Copy link
Copy Markdown

Bumps diff from 5.2.0 to 9.0.0.

Changelog

Sourced from diff's changelog.

9.0.0

(All changes part of PR #672.)

  • ES5 support is dropped. parsePatch now uses TextDecoder and Uint8Array, which are not available in ES5, and TypeScript is now compiled with the "es6" target. From now on, I intend to freely use any features that are deemed "Widely available" by Baseline. Users who need ES5 support should stick to version 8.

  • C-style quoted strings in filename headers are now properly supported.

    When the name of either the old or new file in a patch contains "special characters", both GNU diff and Git quote the filename in the patch's headers and escape special characters using the same escape sequences that are used in string literals in C, including octal escapes for all non-ASCII characters. Previously, jsdiff had very little support for this; parsePatch would remove the quotes, and unescape any escaped backslashes, but would not unescape other escape sequences. formatPatch, meanwhile, did not quote or escape special characters at all.

    Now, parsePatch parses all the possible escape sequences that GNU diff (or Git) ever output, and formatPatch quotes and escapes filenames containing special characters in the same way GNU diff does.

  • formatPatch now omits file headers when oldFileName or newFileName in the provided patch object are undefined, regardless of the headerOptions parameter. (Previously, it would treat the absence of oldFileName or newFileName as indicating the filename was the word "undefined" and emit headers --- undefined / +++ undefined.)

  • formatPatch no longer outputs trailing tab characters at the end of ---/+++ headers.

    Previously, if formatPatch was passed a patch object to serialize that had empty strings for the oldHeader or newHeader property, it would include a trailing tab character after the filename in the --- and/or +++ file header. Now, this scenario is treated the same as when oldHeader/newHeader is undefined - i.e. the trailing tab is omitted.

  • formatPatch no longer mutates its input when serializing a patch containing a hunk where either the old or new content contained zero lines. (Such a hunk occurs only when the hunk has no context lines and represents a pure insertion or pure deletion, which for instance will occur whenever one of the two files being diffed is completely empty.) Previously formatPatch would provide the correct output but also mutate the oldLines or newLines property on the hunk, changing the meaning of the underlying patch.

  • Git-style patches are now supported by parsePatch, formatPatch, and reversePatch.

    Patches output by git diff can include some features that are unlike those output by GNU diff, and therefore not handled by an ordinary unified diff format parser. An ordinary diff simply describes the differences between the content of two files, but Git diffs can also indicate, via "extended headers", the creation or deletion of (potentially empty) files, indicate that a file was renamed, and contain information about file mode changes. Furthermore, when these changes appear in a diff in the absence of a content change (e.g. when an empty file is created, or a file is renamed without content changes), the patch will contain no associated ---/+++ file headers nor any hunks.

    jsdiff previously did not support parsing Git's extended headers, nor hunkless patches. Now parsePatch parses some of the extended headers, parses hunkless Git patches, and can determine filenames (e.g. from the extended headers) when parsing a patch that includes no --- or +++ file headers. The additional information conveyed by the extended headers we support is recorded on new fields on the result object returned by parsePatch. See isGit and subsequent properties in the docs in the README.md file.

    formatPatch now outputs extended headers based on these new Git-specific properties, and reversePatch respects them as far as possible (with one unavoidable caveat noted in the README.md file).

  • Unpaired file headers now cause parsePatch to throw.

    It remains acceptable to have a patch with no file headers whatsoever (e.g. one that begins with a @@ hunk header on the very first line), but a patch with only a --- header or only a +++ header is now considered an error.

  • parsePatch is now more tolerant of "trailing garbage"

    That is: after a patch, or between files/indexes in a patch, it is now acceptable to have arbitrary lines of "garbage" (so long as they unambiguously have no syntactic meaning - e.g. trailing garbage that leads with a +, -, or and thus is interpretable as part of a hunk still triggers a throw).

    This means we no longer reject patches output by tools that include extra data in "garbage" lines not understood by generic unified diff parsers. (For example, SVN patches can include "Property changes on:" lines that generic unified diff parsers should discard as garbage; jsdiff previously threw errors when encountering them.)

    This change brings jsdiff's behaviour more in line with GNU patch, which is highly permissive of "garbage".

  • The oldFileName and newFileName fields of StructuredPatch are now typed as string | undefined instead of string. This type change reflects the (pre-existing) reality that parsePatch can produce patches without filenames (e.g. when parsing a patch that simply contains hunks with no file headers).

8.0.4

  • #667 - fix another bug in diffWords when used with an Intl.Segmenter. If the text to be diffed included a combining mark after a whitespace character (i.e. roughly speaking, an accented space), diffWords would previously crash. Now this case is handled correctly.

8.0.3

  • #631 - fix support for using an Intl.Segmenter with diffWords. This has been almost completely broken since the feature was added in v6.0.0, since it would outright crash on any text that featured two consecutive newlines between a pair of words (a very common case).
  • #635 - small tweaks to tokenization behaviour of diffWords when used without an Intl.Segmenter. Specifically, the soft hyphen (U+00AD) is no longer considered to be a word break, and the multiplication and division signs (× and ÷) are now treated as punctuation instead of as letters / word characters.

... (truncated)

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [diff](https://github.com/kpdecker/jsdiff) from 5.2.0 to 9.0.0.
- [Changelog](https://github.com/kpdecker/jsdiff/blob/master/release-notes.md)
- [Commits](kpdecker/jsdiff@v5.2.0...v9.0.0)

---
updated-dependencies:
- dependency-name: diff
  dependency-version: 9.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels May 13, 2026
alsterg added a commit that referenced this pull request May 22, 2026
Added Gap #1 describing the parser-level pattern → query fallback
in NativeToolCallParser.ts, explaining why models confabulate
'pattern' (cross-tool name collision with sed/find_files) and
how the fix works without schema pollution. Renumbered existing
gaps #2#7 to #3#8.

chore(release): bump version to 0.22.27
alsterg added a commit that referenced this pull request May 25, 2026
…omeView hotfix #2)

Hotfix #1 (08cb900) relocated `syncExperimentContextKeys` out of
`src/shared/experiments.ts` but missed a second offender: `src/shared/
modes.ts` carried `import * as vscode from "vscode"` at line 1, used
only by `getAllModesWithPrompts(context: vscode.ExtensionContext)`.

`src/shared/modes.ts` is imported by the webview bundle through the
`@shofer/shared/modes` alias (see `ExtensionStateContext.tsx`,
`SkillsSettings.tsx`, `CreateSkillDialog.tsx`), so the static `vscode`
import crashes the webview at module load with:

    Uncaught TypeError: Failed to resolve module specifier "vscode"

…leaving WelcomeView (and every other view) blank with no host-side
error. The same pattern bit `vsCodeSelectorUtils.ts`, which used the
value form `import { LanguageModelChatSelector } from "vscode"` for a
symbol that is only ever used as a type.

Fixes:

- Move `getAllModesWithPrompts` inline into its only caller,
  `src/core/prompts/sections/modes.ts` (host-only), with a comment
  pointing at the Shared Module Isolation Rule in AGENTS.md.
- Drop the `vscode` import from `src/shared/modes.ts`.
- Convert `vsCodeSelectorUtils.ts` + its spec to `import type` so the
  symbol is erased at compile time and never appears in the bundle.

Bumps to 0.26.12.
alsterg added a commit that referenced this pull request May 25, 2026
#3)

Hotfixes #1 (08cb900) and #2 (09d3858) purged the static `vscode`
import from `src/shared/experiments.ts` and `src/shared/modes.ts`
respectively. But `src/shared/modes.ts` still re-exported
`getFullModeDetails`, which transitively imported
`addCustomInstructions` from `src/core/prompts/sections/custom-
instructions.ts` — and that module imports `fs/promises`, `path`, and
`os`. The webview bundler cannot resolve Node built-ins any more than
it can resolve `vscode`, so the webview chunk still carried a stale
`shared/modes.ts` source-content reference to a host-only module and
the bundle still crashed at load time with `Uncaught TypeError: Failed
to resolve module specifier "vscode"` — surfaced this time from the
chain modes.ts → custom-instructions.ts.

(The reason the symptom looked identical even though the *direct*
offender had moved: the cached webview build under
`src/webview-ui/build/` was being replayed by turbo because edits to
`src/shared/*` did not invalidate the webview package's per-package
input hash. Fixed in the superproject by f537a95 which wires
`--no-cache` to wipe turbo/vite/tsbuildinfo caches for extension
builds. With that flag in hand a clean rebuild confirmed the bundle no
longer contains `import "vscode"`.)

Fix: move `getFullModeDetails` (the only remaining host-coupled symbol
in `src/shared/modes.ts`) into the new host-only module
`src/core/modes/getFullModeDetails.ts`, alongside its host-only spec
under `src/core/modes/__tests__/getFullModeDetails.test.ts`. Drop the
`addCustomInstructions` import from `src/shared/modes.ts`, and strip
the now-stale `getFullModeDetails` cases out of the webview-side
`src/shared/__tests__/modes.spec.ts`. Update the single host caller in
`src/core/environment/getEnvironmentDetails.ts` to import from the new
location.

Per the "Shared Module Isolation Rule" in AGENTS.md, files under
`src/shared/` MUST NOT statically import host-only modules — that
includes anything reaching `vscode`, `fs/promises`, `path`, `os`, or
host services. This commit closes the last such offender in modes.ts.

Bumps version to 0.26.14.
@alsterg alsterg closed this May 28, 2026
@alsterg
alsterg deleted the dependabot/npm_and_yarn/diff-9.0.0 branch May 28, 2026 14:43
@dependabot @github

dependabot Bot commented on behalf of github May 28, 2026

Copy link
Copy Markdown
Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

alsterg added a commit that referenced this pull request Jun 10, 2026
… narratives

- Update all line-number anchors against HEAD (Task.ts ≈ 7118 lines):
  preloadShoferMessages 2493→3100, saveShoferMessages 1479→1933,
  addToShoferMessages→1835, updateShoferMessage→1902,
  _countTokenBearingMessages→2039, _flushSaveShoferMessages→2061,
  getStateToPostToWebview 2620→3206, createTaskWithHistoryItem→1467,
  writeIndex 391→398, home-screen-flash 2672→3372
- Remove unreachable H9 anchors (1505/3733/4555 — those code blocks
  no longer exist)
- Rewrite Root Cause #2 to reflect current JSONL-append architecture:
  O(1) appendTaskMessage hot path, debounced metadata-only refresh,
  compaction only at turn boundaries
- Rewrite H9 section as historical — postStateToWebviewWithoutTaskHistory
  has zero references in src/; H9 goal achieved by focus-gated
  shoferMessageAppended + messageUpdated deltas
- Update H4/H6/H8 sections to reflect current state (superseded/removed)
- Update Verification section heading to note corrections applied
alsterg added a commit that referenced this pull request Jun 10, 2026
…ypass

Add a dedicated mock scenario matching the architect mode prompt so test #13
passes on the mock provider. Guard test #21 (SIGINT) behind a real-provider
check — the prompt contains "number" which hits the built-in mock scenario
and returns instantly, so SIGINT always lands after rc=0 on mock.

Closes issues #2 and #3 from todos/fixing_tests.md.
alsterg added a commit that referenced this pull request Jun 13, 2026
Gap #7 claimed the schema marks all 10 params required 'for strict:true
mode', contradicting the doc body and the actual grep_search.ts (strict
disabled, required: [path, query] only). Gap #2 claimed the trade-offs
table still said 'post-filter only' when it already documents the dual
--ignore-file + post-filter strategy. Marked both resolved/corrected.
alsterg added a commit that referenced this pull request Jun 13, 2026
- Gap #2 claimed ShoferIgnoreController is dead code; it is now central
  and widely used (Task.ts every-task instantiation, code indexer,
  assistant agent, tree-sitter, ripgrep, context-management). Marked
  resolved.
- PROTECTED_PATTERNS no longer contains .shoferrules* (it's now
  .shofer/**, .vscode/**, *.code-workspace, .shoferprotected, AGENTS.md,
  AGENT.md). Reconciled the stale .shoferrules* gaps (#3, #4, #6) and added
  the missing .shoferprotected row to the write-protected summary table.
- Fixed a ghost 'rules-ask/' example (no Ask mode) -> rules-code-search/.
alsterg added a commit that referenced this pull request Jul 7, 2026
… is open

TaskSelector is a fixed off-canvas drawer that's always mounted (slid off-screen
when closed), so all ~90 task rows sat in the DOM in the normal chat view — heavy
DOM and ~65k-char webview snapshots. Gate the list body on isOpen so rows mount
only when the drawer is open; closed state now carries no history rows. Header
count and slide animation are unaffected. (shofer-ui-known-bugs #2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant